2013-07-12 48 views
0

我希望能夠在scapy中顯示來自StreamSocket的十六進制數據。這是我目前Scapy的代碼顯示scapy StreamSocket數據

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之間是混合的,它們被轉換成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) 

回答

0

你可以從Python: print a string as hex bytes?

嘗試採取一個網頁,並在您OUTPT使用encode('hex')作爲my_show的一部分:

return ':'.join(x.encode('hex') for x in fvalue)