diff --git a/debugServer/sniffer.py b/debugServer/sniffer.py index c55fb02..8b24e87 100644 --- a/debugServer/sniffer.py +++ b/debugServer/sniffer.py @@ -8,6 +8,7 @@ import os recv_count = 0 +server_port = 50508 @@ -17,18 +18,15 @@ class Sniffer(Thread): super().__init__() self.daemon = True - self.vpn_addr = None - - self.current_phase = 1 - self.spoof_count = 0 - self.spoof_port = 0 - self.recv_count = 0 - self.socket = None self.iface = iface self.stop_sniffer = Event() + self.debug_src = "" + self.debug_sport = 0 + + def run(self): self.socket = conf.L2listen( type=ETH_P_ALL, @@ -46,37 +44,10 @@ class Sniffer(Thread): self.stop_sniffer.set() super().join(timeout) - def get_vpn_addr(self): - return self.vpn_addr - - def set_phase(self, phase): - self.current_phase = phase - - - - def check_for_req(self, packet): - - ip_layer = packet.getlayer(IP) - - # for phase 1 (on ubuntu 19) we wanna look for a reset - # with source of private vpn address and dest of gateway - - if self.current_phase == 1: - - if "10." in ip_layer.src: - - if ip_layer.src == self.vpn_addr: - print("multiple matches for: " + str(self.vpn_addr)) - # could make the scan stop after this point but - # only takes a second or two to finish up - - print("Victim private ip is: " + str(ip_layer.src)) - self.vpn_addr = ip_layer.src - def handle_debug_packet(self, payload): some_packet = IP(bytes(payload)) - print("some genie debug packet..") + print("genie debug packet..") some_packet.show() @@ -90,7 +61,7 @@ class Sniffer(Thread): tcp_sport = packet[TCP].sport tcp_dport = packet[TCP].dport - if tcp_dport == 50508: + if tcp_dport == server_port: print("sniffed a debug packet..") #packet.show() @@ -98,11 +69,30 @@ class Sniffer(Thread): some_payload = packet[TCP].payload self.handle_debug_packet(some_payload) + + self.debug_src = packet[IP].src + self.debug_sport = tcp_sport + self.recv_count += 1 - if (tcp_sport != 2222 and tcp_dport != 2222) or (tcp_sport != 22 and tcp_dport != 22): - self.check_for_req(packet) + +def send_debug_packet(sniffer): + + debug_port = sniffer.debug_sport + debug_ip = sniffer.debug_src + + if debug_port == 0 or debug_ip == '': + print("There was no debug source connection to send to") + return + + print("sending debug packet to " + str(debug_ip) + ":" + str(debug_port)) + + packet = IP(dst=debug_ip) / TCP(dport=debug_port, sport=server_port, flags='R') + send(packet, iface="ens18") + print("sent debug packet: ") + packet.show() + def main(): @@ -110,9 +100,37 @@ def main(): sniffer = Sniffer(iface='ens18') print('starting sniffer..') sniffer.start() + time.sleep(3) + + + done = False + + + while not(done): + + print("Enter action to take..") + print("1. Keep sniffing") + print("2. Send packet back") + print("3. Quit") + + answer = input("Enter answer: ") + + if answer == "1": + print("sleeping for sniffer..") + time.sleep(5) + elif answer == "2": + send_debug_packet(sniffer) + elif answer == "3": + print("ending the sniffer") + done = True + + print("user answer was: " + str(answer)) + print("\n") + time.sleep(1) + + - - time.sleep(30) + print("\n\nFinished sniffing for debug packets") if __name__ == '__main__':