0

我希望能够在 scapy 中显示来自 StreamSocket 的十六进制数据。这是我当前的 scapy 代码

from scapy.all import socket, StreamSocket, Raw
import data_packets, returned_data

data    = data_packets.client_to_server_init()

mysocket = socket.socket()
mysocket.connect((args.IP_Address, args.dPort))

myStream = StreamSocket(mysocket)

result=myStream.sr1(Raw(data))

result.show()

结果类似于下图

###[ Raw ]###
load      = '\x00\x00\x02\x99R\x92\x05R\xec\x02R\xe9\x02R...

基本上我希望一切都是十六进制的,而目前返回的数据是作为十六进制和 ASCII 字符的混合返回,正如您从上面的输出中看到的那样(注意大写的 R 混合在两者之间,那些是 \x52 被转换为ASCII)

注意:我尝试创建自己的 show() 函数,但它没有改变任何东西。该代码如下

def my_show(packet):


    for f in packet.fields_desc:

        fvalue = packet.getfieldval(f.name)
        reprval = f.i2repr(packet,fvalue)
        return "%s" % (reprval)   
4

1 回答 1

0

您可以尝试从Python 中获取页面:将字符串打印为十六进制字节?

并将encode('hex')您的输出用作 my_show 的一部分:

return ':'.join(x.encode('hex') for x in fvalue)
于 2013-07-12T16:30:23.833 回答