def filter_ip(): s_in = sm.get_and_bind_socket(5006) s_in.listen(1) conn, address = s_in.accept() s_out = sm.get_socket() s_out.connect((sm.TCP_IP, 5007)) while 1: try: pkt = conn.recv(sm.BUFFER_SIZE) if not pkt: pc.chart_ip_route() pc.chart_ip_aux() conn.close() s_out.close() break eth = dpkt.ethernet.Ethernet(pkt) ip = eth.data pc.data_ip_route(print_packets.ip_to_str(ip.src), print_packets.ip_to_str(ip.dst)) pc.data_ip_aux(str(ip.len), str(ip.ttl)) s_out.send(pkt) except AttributeError: pass
def process_tcp(): s_in = sm.get_and_bind_socket(5007) s_in.listen(1) conn, address = s_in.accept() tcp_packets = [] while 1: try: pkt = conn.recv(sm.BUFFER_SIZE) if not pkt: conn.close() break tcp_packets.append(pkt) except AttributeError: pass temp_str = '' # variable used in joining tcp.data http_packets = [] for p in tcp_packets: eth = dpkt.ethernet.Ethernet(p) ip = eth.data tcp = ip.data # length = len(tcp.data) # print ("\nThis packet's sequence number: %d" % tcp.seq) # print ("Next packet's sequence number: %d" % (tcp.seq + length)) temp_str += tcp.data if is_push_set(tcp): http_packets.append(temp_str) temp_str = '' for h in http_packets: try: http = dpkt.http.Response(h) print http.status body = zlib.decompress(http.body, 16+zlib.MAX_WBITS) with open("Output.txt", "w") as text_file: text_file.write("\nHttp body: \n{0}".format(body)) except dpkt.dpkt.UnpackError as e: print (e.message) except zlib.error as e: print e.message
def filter_eth(): s_in = sm.get_and_bind_socket() s_in.listen(1) conn, address = s_in.accept() s_out = sm.get_socket() s_out.connect((sm.TCP_IP, 5006)) while 1: pkt = conn.recv(sm.BUFFER_SIZE) if not pkt: pc.chart_eth_route() pc.chart_eth_type() conn.close() s_out.close() break eth = dpkt.ethernet.Ethernet(pkt) pc.data_eth_route(print_packets.mac_addr(eth.src), print_packets.mac_addr(eth.dst)) pc.data_eth_type(str(eth.type)) s_out.send(pkt)