2013-07-23 48 views
3

使用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) 

,它可能應該工作有效載荷

相似
+0

我沒有一個答案,但這裏有一條線索:'p = sr(IP(ds t =「rob.example.com」)/ ICMP()/ Raw((1,5)),timeout = 1)'做些什麼。 –

+0

下面是另一條線索:'p = Raw(list(「hello%d」%i for i in range(3)))''做了些什麼。 –

回答

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) 
相關問題