【问题标题】:How to get payload from a packet with dpkt?如何使用 dpkt 从数据包中获取有效负载?
【发布时间】:2022-08-17 04:26:44
【问题描述】:

我很容易使用 scapy 获取 tcp 数据包的有效负载:

def handle_pkt(pkt):
    try :
        pay_load_tcp = pkt[IP].load
    except :
        pay_load_tcp = \"\"


for packet in PcapReader(filename):
    if TCP in packet and packet[IP].dst == \'192.168.1.1\':
        handle_pkt(packet)

如何使用 dpkt 库获得相同的有效负载(只是数据包上的文本信息)?

    标签: python ip scapy packet dpkt


    【解决方案1】:

    也许不是完美的方式,但我们可以使用 dpkt 库获取有效载荷,如下所示:

    f = open(pcap_file,'rb')
    pcap = dpkt.pcap.Reader(f)
    
    for _, buf in pcap:
        eth = dpkt.ethernet.Ethernet(buf)
    
        if not isinstance(eth.data,dpkt.ip.IP):
            #print("NOT IP Packet")
            continue
    
        ip = eth.data
    
        if isinstance(ip.data, dpkt.tcp.TCP):
            if inet_to_str(ip.src)!='192.168.1.2' :
                continue
            tcp = ip.data
            counter = counter + 1
            #seq_num = tcp.seq
            payload = bytes(ip.data)
            print("counter = {} , Payload = {} ".format(counter,payload[32:]))
            #if seq_num > cur_seq and 
            if payload[32:] != b'':
                #cur_seq = seq_num  
                handle_pkt(payload[32:])
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-06
      • 2019-07-08
      • 1970-01-01
      • 1970-01-01
      • 2019-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多