【发布时间】:2018-04-08 23:46:15
【问题描述】:
我正在尝试发送和接收 scapy 数据包。我这样做是通过使用 scapy 构建一个数据包,使用 scapy 提供的send 函数发送它,接收数据包
使用套接字的recvfrom 函数作为原始字节。
看起来像 scapy 的 build 函数 - 将 scapy 数据包转换为十六进制字符串,有时会在数据包中添加“新”DNS 层。
我举个例子:
当使用build 将此数据包IP()/UDP()/"hello" 转换为十六进制字符串,然后使用IP(hex_str) 重新组装它时,我收到了预期的数据包:
<IP version=4L ihl=5L tos=0x0 len=33 id=1 flags= frag=0L ttl=64 proto=udp chksum=0x7cc9 src=127.0.0.1 dst=127.0.0.1 options=[] |<UDP sport=domain dport=domain len=13 chksum=0xbd95 |<Raw load='hello' |>>>
但是,当使用 build 将此数据包 IP()UDP()/"ab" 转换为十六进制字符串,然后使用 IP(hex_string) 重新组合时,我收到的数据包与预期不同:
<IP version=4L ihl=5L tos=0x0 len=30 id=1 flags= frag=0L ttl=64 proto=udp chksum=0x7ccc src=127.0.0.1 dst=127.0.0.1 options=[] |<UDP sport=domain dport=domain len=10 chksum=0xa00b |<DNS id=24930 |>>>
任何帮助都将受到高度评价! 谢谢
【问题讨论】: