2017-02-21 11 views
0

scapyでTCPパケットを分析したい。そして、私はpkt.sprintf( '%Raw.load%')を使ってtcpデータを抽出します。しかし、出力文字列には長さに問題があります。 '\'はエスケープ文字の代わりにstrとみなされます。 '\ x11'はASCII文字の代わりに4つの異なる文字列と見なされます。ここscapy.sprintfの出力は生の文字列ですか?なぜ長さが間違っていますか?

は私のコードである:

from scapy.all import * 
def findTCPdata(pkt): 
    raw = pkt.sprintf("%Raw.load%") 
    print raw 
    print 'length of TCP data: '+ str(len(raw)) 
def main(): 
    pkts = rdpcap('XXX.pcap') 
    for pkt in pkts: 
     findTCPdata(pkt) 
if __name__ == '__main__': 
    main() 

enter image description here

各TCPデータの長さが17の代わりに、画面内の値(53,52,46,52)であるべきです。 4 TCPデータは以下のとおりです。

'U\x11\x04\x92\x02\x03\x1e\[email protected]\x03\xf8q=e\xcb\x15\r' 
'U\x11\x04\x92\x02\x03.\[email protected]\x03\xf8q=e\xcb\xb8\x05' 
'U\x11\x04\x92\x02\x03X\[email protected]\x03\xf8q=e\xcbiO' 
'U\x11\x04\x92\x02\x03n\[email protected]\x03\xf8q=e\xcb\xdb\xe3' 

私はproblem.Thankあなたを解決する助けてください!

答えて

0

です。私は文字列にrawstringを変換する関数が必要です。 ので、私は次のように行3(生= pkt.sprintf( "%Raw.load%"))の後にコードを追加し、出力は右

ある

raw = raw.replace('\'','') 
string = raw.decode('string_escape') 

関連する問題