如何将[Raw].load字符串转换为DNS层?(使用python和scapy)

2024-09-30 04:39:14 发布

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

我有一个学校项目,其中我需要创建一个DNS服务器。 (我只能用scapy,不能用其他libs。我有32位的Python2.7,我使用有线以太网电缆)。 如果我的数据库中有请求的域名,我只需将其发送回我的客户。 如果没有,我需要询问8.8.8.8(或其他服务器),然后将响应发送到客户端,然后将答案存储在缓存中。发送答案是完美的,但是存储信息是个问题。 8.8.8.8的应答包是这样发送给我的:Ether()/IP()/UDP()/Raw()。为了将答案发送到客户机,我只需更改IP和UDP的地址和端口,只需发送它们上面的原始层,就可以了。但是,应答包的[Raw].load是以我不理解的方式编码的(而且.decode('utf-8'/16/32)不起作用)。 例如:

###[ Raw ]###
        load      = '\x007\x81\x80\x00\x01\x00\x02\x00\x00\x00\x00\x03www\x03aeo
\x03com\x00\x00\x01\x00\x01\xc0\x0c\x00\x01\x00\x01\x00\x00/\xab\x00\x04\xa5\xa0
\x0f\x14\xc0\x0c\x00\x01\x00\x01\x00\x00/\xab\x00\x04\xa5\xa0\r\x14'

{[str}使用DNS{3]时,可能会给出错误的DNS{str}(但可能会使用以下DNS}进行转换):

^{pr2}$

所以我的问题是-如何将“\x0x0x0x0”字符串转换为可以从中获取信息的DNS层?在


Tags: 答案ip服务器rawdnsloadudpxa0
1条回答
网友
1楼 · 发布于 2024-09-30 04:39:14

这看起来像是scapy中在Windows机器上触发的bug(http://permalink.gmane.org/gmane.comp.security.scapy.general/4733)。不幸的是,在scapy的最新版本中似乎没有修复错误。在

这篇文章的建议是直接编辑scapy的来源。在您的例子中,编辑C:\Python27\lib\site-packages\scapy\pton_ntop.py,并将第66行改为:

return inet_ntoa(addr)

收件人:

^{pr2}$

相关问题 更多 >

    热门问题