我正在尝试使用scapy
发送特定的数据包大小(100字节),但似乎无法获得它。
我正在用它开始。
sr(IP(dst="192.168.1.1")/TCP(dport=443))
查看文档/帮助我无法判断是否可以使用PacketLenField
来指定数据包的长度。我可以用NMAP& NSE但是想在NMAP之外做。
关于这个的任何想法?
谢谢!
答案 0 :(得分:3)
您可以在制作数据包时将所需的字节数添加为字符串,例如:
payload = 'ZZZZZZZZZZZZZZZZZZZZZ'
pkt = Ether() / IP() / TCP() / payload
会奏效。您只需根据需要调整有效负载的长度。
答案 1 :(得分:1)
Scapy的Raw()
函数填充了数据包的有效负载。如果你知道你的标题大小,你只需要用随机数据填写剩余的字节。
您可以使用RandString()
生成随机填充。以下命令发送长度为100的数据包(并侦听响应):
sr(IP(dst="192.168.1.1")/TCP(dport=443)/Raw(RandString(size=72))
答案 2 :(得分:0)
您可以使用inet.Padding()
库中的scapy
:
packet = IP(dst="192.168.1.1")/TCP(dport=443)
if len(packet)<100"
#"\x00" is a single zero byte
myString = "\x00"*(100 - len(packet))
packet = packet/inet.Padding(myString)