使用 scapy 从 pcap 发送数据包时,它以十六进制值发送应用层值

问题描述 投票:0回答:1
        print(f"sending pcap packets to {self.dst_ip}:{self.dst_port}")
        packs = scp.rdpcap(self.pcap)

        new_src_mac = get_mac_address(ip="0.0.0.0")
        new_dst_mac = self.dstmac

        for pkt in packs:
            pkt[scp.Ether].src = new_src_mac
            pkt[scp.Ether].dst = new_dst_mac
            pkt[scp.IP].src= self.src_ip 
            pkt[scp.IP].dst= self.dst_ip
            pkt[scp.TCP].sport = self.src_port
            pkt[scp.TCP].dport = self.dst_port
            pkt[scp.TCP].ack = ack_num
            pkt[scp.TCP].seq = seq_num
            scp.sendp(pkt, iface=self.iface)

如上面的代码所示,我正在读取 pcap 数据包并将其发送到服务器。

当我使用wireshark时可以看到数据包的数据是十六进制值

在原始文件中,数据包如图所示。 所以我的问题是如何发送像原始文件一样的数据包而不是十六进制值。

scapy
1个回答
0
投票

这是因为我没有使用默认端口,wireshark上的自动解码适用于默认端口(MMS:102),所以我需要在默认端口上发送pcap数据包或使用wireshark的“解码为”功能手动解码。

© www.soinside.com 2019 - 2024. All rights reserved.