예제 #1
0
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
예제 #2
0
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
예제 #3
0
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)