2013-02-02 149 views
4

我試圖用scapy發送特定的數據包大小(100字節),但似乎無法得到它。用scapy指定數據包長度

我正在使用它來啓動。在文檔/幫助下,我不能告訴我是否可以使用PacketLenField來指定數據包的長度

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

展望。我可以用NMAP & NSE來做,但想在NMAP之外做。

對此有何意見?

謝謝!

回答

3

各具特色的包例如爲:時,你可以在需要的字節數增加爲String

payload = 'ZZZZZZZZZZZZZZZZZZZZZ' 
pkt = Ether()/IP()/TCP()/payload 

會工作。您只需根據需要調整有效負載的長度。

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) 
0

Scapy的的Raw()功能填充包的有效載荷。如果你知道你的頭部大小,你只需要用隨機數據填寫剩餘的字節。

您可以使用RandString()來生成隨機填充。以下命令發送長度爲100的數據包(並偵聽響應):

sr(IP(dst="192.168.1.1")/TCP(dport=443)/Raw(RandString(size=72))