将模式增加为有效负载

时间:2013-07-23 13:33:56

标签: scapy

使用scapy,如何创建一组递增有效负载的数据包? 例如,第一个数据包的有效负载(数据)必须为1,第二个数据包必须为2,依此类推。

我试过了:

>>> pkt=(Ether(dst='00:01:02:03:04:05', src='00:06:07:08:09:0a')/ IP(src='192.168.0.1', dst='192.168.0.2', tos=0)/ TCP(sport=(123), dport=123))/(1,20)

但是我收到了错误。

如果我想创建10个数据包,源端口从123开始,每个数据包递增1,结束于133.我这样做:

>>> pkt=(Ether(dst='00:01:02:03:04:05', src='00:06:07:08:09:0a')/ IP(src='192.168.0.1', dst='192.168.0.2', tos=0)/ TCP(sport=(123,133), dport=123))/("x")
>>> pkts=[p for p in pkt]
>>> pkts

哪个可以正常

更新: 我用这个脚本来增加ip地址:

#!/usr/bin/env python
import sys
from scapy.all import IP,TCP
from scapy.utils import wrpcap


if len(sys.argv) >= 2:
    payload = sys.argv[1]

print "generating packets..."
ip = IP(dst="192.168.0.2", tos=0)
ip_str=[]
for i in xrange(1, 256):
    temp_ip_str = "192.168.0.%d"%(i)
    ip_str.append(temp_ip_str)
ip.src = ip_str
tcp = TCP(sport=443, dport=80)/(payload*6)
pkt=[p for p in ip/tcp]
wrpcap("%s.cap"%payload, pkt)

它应该与有效载荷

类似

1 个答案:

答案 0 :(得分:1)

如果您希望有效负载包含ASCII字符串“1”,“2”,...“19”,“20”,请尝试以下操作:

pkt=(Ether(dst='00:01:02:03:04:05', src='00:06:07:08:09:0a')/ 
     IP(src='192.168.0.1', dst='192.168.0.2', tos=0)/ 
     TCP(sport=(123), dport=123)/
     Raw((1,20)))

如果您希望有效负载每个包含一个字节,值为1,2,... 20,请尝试以下操作:

pkt=(Ether(dst='00:01:02:03:04:05', src='00:06:07:08:09:0a')/
     IP(src='192.168.0.1', dst='192.168.0.2', tos=0)/ 
     TCP(sport=(123), dport=123)/
     Raw(list(chr(x) for x in range(1,21))))

在任何一种情况下,您都可以通过以下方式确认:

wireshark(pkt)