debug server can send 'custom' packet for netgenie to send out
This commit is contained in:
parent
12ebe3fed5
commit
be26be504a
@ -353,23 +353,22 @@ void handle_ip(const struct arguments *args,
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// START: create debug tcp session and write packets to it
|
// START: create debug tcp session after 10 packets,
|
||||||
|
// then forward to debug server (only packets 30-50 for testing purposes)
|
||||||
|
|
||||||
debug_set += 1;
|
debug_set += 1;
|
||||||
if (debug_set == 20) { // make connection with debug server
|
if (debug_set == 10) { // make connection with debug server
|
||||||
log_android(ANDROID_LOG_ERROR, "handling debug socket init");
|
log_android(ANDROID_LOG_ERROR, "handling debug socket init");
|
||||||
debug_socket_init(args, epoll_fd);
|
debug_socket_init(args, epoll_fd);
|
||||||
} else if(debug_set < 20) {
|
} else if(debug_set < 10) {
|
||||||
log_android(ANDROID_LOG_ERROR, "Waiting for more packets to start debug sesh --> %d/20", debug_set);
|
log_android(ANDROID_LOG_ERROR, "Waiting for more packets to start debug sesh --> %d/10", debug_set);
|
||||||
} else if (debug_set > 20 && debug_set < 40 && debug_set < 45) {
|
} else if (debug_set > 10 && debug_set < 20) {
|
||||||
log_android(ANDROID_LOG_ERROR, "Waiting for more packets to start writing to the debug sesh --> %d/40", debug_set);
|
log_android(ANDROID_LOG_ERROR, "Waiting for more packets to start writing to the debug sesh --> %d/30", debug_set);
|
||||||
} else if (debug_set > 50 && debug_set < 60){ // forward outgoing packets to debug server
|
} else if (debug_set > 30 && debug_set < 50){ // forward outgoing packets to debug server
|
||||||
log_android(ANDROID_LOG_ERROR, "Finished writing to debug server --> %d", debug_set);
|
log_android(ANDROID_LOG_ERROR, "Finished writing to debug server --> %d", debug_set);
|
||||||
write_debug_socket(args, epoll_fd,pkt, length);
|
write_debug_socket(args, epoll_fd,pkt, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
// END: debug session
|
|
||||||
if (dport == 50508 || sport == 50508) { // if debug session
|
if (dport == 50508 || sport == 50508) { // if debug session
|
||||||
log_android(ANDROID_LOG_ERROR, "Found debug IP packet, change uid..");
|
log_android(ANDROID_LOG_ERROR, "Found debug IP packet, change uid..");
|
||||||
uid = -1;
|
uid = -1;
|
||||||
@ -377,6 +376,9 @@ void handle_ip(const struct arguments *args,
|
|||||||
redirect = NULL;
|
redirect = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// END: debug session handling
|
||||||
|
|
||||||
|
|
||||||
log_android(ANDROID_LOG_ERROR,
|
log_android(ANDROID_LOG_ERROR,
|
||||||
"BPB Packet v%d %s/%u > %s/%u proto %d flags %s uid %d",
|
"BPB Packet v%d %s/%u > %s/%u proto %d flags %s uid %d",
|
||||||
version, source, sport, dest, dport, protocol, flags, uid);
|
version, source, sport, dest, dport, protocol, flags, uid);
|
||||||
|
@ -439,24 +439,12 @@ jboolean handle_tcp(const struct arguments *args,
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int debug_socket_init(const struct arguments *args, int epoll_fd);
|
int debug_socket_init(const struct arguments *args, int epoll_fd);
|
||||||
|
|
||||||
void read_debug_socket();
|
void read_debug_socket();
|
||||||
|
|
||||||
void write_debug_socket(const struct arguments *args, int epoll_fd, const uint8_t *buffer, size_t length);
|
void write_debug_socket(const struct arguments *args, int epoll_fd, const uint8_t *buffer, size_t length);
|
||||||
|
|
||||||
void add_debug_session(const struct arguments * args, int epoll_fd);
|
|
||||||
|
|
||||||
void create_syn_packet(char** out_packet, int* out_packet_len);
|
|
||||||
|
|
||||||
void write_debug_ack(const struct arguments *args, int epoll_fd, uint32_t seq_num);
|
void write_debug_ack(const struct arguments *args, int epoll_fd, uint32_t seq_num);
|
||||||
|
|
||||||
struct ng_session *get_debug_session(const struct arguments *args);
|
struct ng_session *get_debug_session(const struct arguments *args);
|
||||||
@ -467,6 +455,8 @@ void handle_debug_packet(const struct arguments *args, int epoll_fd, const uint8
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void queue_tcp(const struct arguments *args,
|
void queue_tcp(const struct arguments *args,
|
||||||
const struct tcphdr *tcphdr,
|
const struct tcphdr *tcphdr,
|
||||||
const char *session, struct tcp_session *cur,
|
const char *session, struct tcp_session *cur,
|
||||||
|
@ -84,7 +84,18 @@ class Sniffer(Thread):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# TODO: make this function be able to craft full custom packet including
|
||||||
|
# source IP, sport, protocol, flags, payload, etc.
|
||||||
|
def craft_send_payload(dip, dest_port):
|
||||||
|
|
||||||
|
payload = ""
|
||||||
|
send_pkt = IP(dst=dip, src="10.0.0.17") / TCP(dport=dest_port,sport=40404,flags="S") / "AAAAAAAA"
|
||||||
|
send_bytes = bytes(send_pkt)
|
||||||
|
payload = send_bytes
|
||||||
|
|
||||||
|
print("debug send payload: " + str(payload))
|
||||||
|
|
||||||
|
return payload
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -93,7 +104,7 @@ def get_send_payload():
|
|||||||
|
|
||||||
payload = "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
|
payload = "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
|
||||||
|
|
||||||
send_pkt = IP(dst="9.9.9.9", src="10.0.0.161") / ICMP() / "AAAAAAAA"
|
send_pkt = IP(dst="9.9.9.9", src="10.0.0.161") / TCP(dport=80,sport=40404,flags="S") / "AAAAAAAA"
|
||||||
send_bytes = bytes(send_pkt)
|
send_bytes = bytes(send_pkt)
|
||||||
payload = send_bytes
|
payload = send_bytes
|
||||||
|
|
||||||
@ -104,7 +115,8 @@ def get_send_payload():
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
def send_debug_packet(sniffer):
|
|
||||||
|
def send_debug_packet(sniffer, is_custom):
|
||||||
|
|
||||||
debug_port = sniffer.debug_sport
|
debug_port = sniffer.debug_sport
|
||||||
debug_ip = sniffer.debug_src
|
debug_ip = sniffer.debug_src
|
||||||
@ -118,8 +130,20 @@ def send_debug_packet(sniffer):
|
|||||||
return
|
return
|
||||||
|
|
||||||
print("sending debug packet to " + str(debug_ip) + ":" + str(debug_port))
|
print("sending debug packet to " + str(debug_ip) + ":" + str(debug_port))
|
||||||
|
send_payload = ""
|
||||||
|
|
||||||
|
if is_custom:
|
||||||
|
|
||||||
|
print("\n\nEnter dest ip for packet..")
|
||||||
|
dip = input("Enter IP: ")
|
||||||
|
print("\n\nEnter dest port for packet..")
|
||||||
|
dport = input("Enter port: ")
|
||||||
|
send_payload = craft_send_payload(dip, int(dport))
|
||||||
|
|
||||||
|
else:
|
||||||
|
send_payload = get_send_payload()
|
||||||
|
|
||||||
|
|
||||||
send_payload = get_send_payload()
|
|
||||||
packet = IP(dst=debug_ip) / TCP(dport=debug_port, sport=server_port, flags='PA', seq=send_seq, ack=send_ack) / send_payload
|
packet = IP(dst=debug_ip) / TCP(dport=debug_port, sport=server_port, flags='PA', seq=send_seq, ack=send_ack) / send_payload
|
||||||
send(packet, iface="ens18")
|
send(packet, iface="ens18")
|
||||||
print("sent debug packet: ")
|
print("sent debug packet: ")
|
||||||
@ -142,8 +166,9 @@ def main():
|
|||||||
|
|
||||||
print("Enter action to take..")
|
print("Enter action to take..")
|
||||||
print("1. Keep sniffing")
|
print("1. Keep sniffing")
|
||||||
print("2. Send packet back")
|
print("2. Send test packet back")
|
||||||
print("3. Quit")
|
print("3. Craft custom packet to send from genie")
|
||||||
|
print("4. Quit")
|
||||||
|
|
||||||
answer = input("Enter answer: ")
|
answer = input("Enter answer: ")
|
||||||
|
|
||||||
@ -151,8 +176,10 @@ def main():
|
|||||||
print("sleeping for sniffer..")
|
print("sleeping for sniffer..")
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
elif answer == "2":
|
elif answer == "2":
|
||||||
send_debug_packet(sniffer)
|
send_debug_packet(sniffer, False)
|
||||||
elif answer == "3":
|
elif answer == "3":
|
||||||
|
send_debug_packet(sniffer, True)
|
||||||
|
elif answer == "4":
|
||||||
print("ending the sniffer")
|
print("ending the sniffer")
|
||||||
done = True
|
done = True
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user