用scapy指定数据包长度

时间:2013-02-02 00:14:43

标签: python networking scapy

我正在尝试使用scapy发送特定的数据包大小(100字节),但似乎无法获得它。

我正在用它开始。

sr(IP(dst="192.168.1.1")/TCP(dport=443))

查看文档/帮助我无法判断是否可以使用PacketLenField来指定数据包的长度。我可以用NMAP& NSE但是想在NMAP之外做。

关于这个的任何想法?

谢谢!

3 个答案:

答案 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)