从原始服务器接收IP数据包

2024-04-26 12:36:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码来获取发送到我的计算机的所有IP包:

import socket

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

我可以在控制台上打印出多行类似的内容

^{pr2}$

我说这是一个IP包,但我不知道如何解释收到的数据。我想知道怎么解剖这个?在


Tags: 代码importiptrueraw计算机sockettcp
1条回答
网友
1楼 · 发布于 2024-04-26 12:36:42

您可以使用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))]

相关问题 更多 >