【发布时间】:2014-08-21 17:15:05
【问题描述】:
我想将 DNS 数据包转换为 DNS(packet).show() 那样的字符串。然而,show 方法所做的只是打印出信息。我想将完全相同的信息存储在一个字符串中。有什么具体的方法吗?
【问题讨论】:
-
我看过类的方法。似乎没有任何方法可以做 show() 方法所做的事情
我想将 DNS 数据包转换为 DNS(packet).show() 那样的字符串。然而,show 方法所做的只是打印出信息。我想将完全相同的信息存储在一个字符串中。有什么具体的方法吗?
【问题讨论】:
以下代码 sn-p 会有所帮助:
>>> from scapy.all import *
>>> import sys
>>> from cStringIO import StringIO
>>> old_stdout = sys.stdout
>>> sys.stdout = mystdout = StringIO()
>>> pkt = DNS()
>>> pkt.show()
>>> sys.stdout = old_stdout
>>> mystdout.getvalue()
'###[ DNS ]###\n id = 0\n qr = 0\n opcode = QUERY\n aa = 0\n tc = 0\n rd = 0\n ra = 0\n z = 0\n rcode = ok\n qdcount = 0\n ancount = 0\n nscount = 0\n arcount = 0\n qd = None\n an = None\n ns = None\n ar = None\n'
>>>
【讨论】: