Quentin
Quentin

Reputation: 455

How to extract Raw of TCP packet using Scapy

I use the sniff function of scapy module. My filter and prn function are doing a great job. But now, I would like to extract the Raw of the TCP packet and handle it using hexadecimal or binary format.

Here is the documentation of Packet Class in scapy.

How can I do that ?

I tried print packet[Raw] but it seems to be converted as ASCII or something like that. I want to keep it in hexadecimal or binary.

Upvotes: 9

Views: 37327

Answers (1)

Yoel
Yoel

Reputation: 9614

You can get the raw bytes of the packet using scapy.compat.raw1:

from scapy.all import raw
raw(packet)

The former is cross-version compatible, but if you are guaranteed to run with Python 3 and support for Python 2 is not needed, you can simply invoke bytes, which doesn't require an ad-hoc import statement (and is actually how scapy.compat.raw is implemented behind the scenes):

bytes(packet)

You can print the raw bytes of the packet in a readable format using scapy.compat.bytes_hex2:

from scapy.all import bytes_hex
print(bytes_hex(packet))

1 scapy.compat.raw's implementation can be found here.
2 scapy.compat.bytes_hex's implementation can be found here.

Upvotes: 17

Related Questions