2016-11-09 61 views
1

我有下面的代碼讓我發送到我的機器的所有IP數據包:從原始套接字接收IP分組

import socket 

rs = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP) 
    while True: 
     print rs.recvfrom(65565) 

我得到的東西多行這樣打印出來給我的控制檯

('E \x004tC\x00\x007\x06\x99\x97\xd8:\xdb\xee\xc0\xa8\x00\xf8\x01\xbb\xa3\xb6\xb9\x1cmavT\x14\xbd\x80\x10\x01^\xa6W\x00\x00\x01\x01\x08\n,k\xe0*\x01+\xf4{', ('216.58.219.238', 0)) 

我gussing這是一個IP數據包,但我不知道如何解釋這個數據收到。我想知道如何剖析這個?

回答

1

您可以使用scapy解剖包,低於解剖IP包爲您的數據。例如:

>>> b = 'E\x004tC\x00\x007\x06\x99\x97\xd8:\xdb\xee\xc0\xa8\x00\xf8\x01\xbb\xa3\xb6\xb9\x1cmavT\x14\xbd\x80\x10\x01^\xa6W\x00\x00\x01\x01\x08\n,k\xe0*\x01+\xf4{' 
>>> c = IP(b) 
>>> c.show() 
###[ IP ]### 
    version= 4L 
    ihl= 5L 
    tos= 0x20 
    len= 52 
    id= 29763 
    flags= 
    frag= 0L 
    ttl= 55 
    proto= tcp 
    chksum= 0x9997 
    src= 216.58.219.238 
    dst= 192.168.0.248 
    \options\ 
###[ TCP ]### 
    sport= https 
    dport= 41910 
    seq= 3105647969 
    ack= 1985221821 
    dataofs= 8L 
    reserved= 0L 
    flags= A 
    window= 350 
    chksum= 0xa657 
    urgptr= 0 
    options= [('NOP', None), ('NOP', None), ('Timestamp', (745267242, 19657851))]