Note that this layer ISN’T loaded by default, as quite experimental for now.
To follow HTTP packets streams = group packets together to get the whole request/answer, use TCPSession as:
>>> sniff(session=TCPSession) # Live on-the-flow session >>> sniff(offline="./http_chunk.pcap", session=TCPSession) # pcap
This will decode HTTP packets using Content_Length or chunks, and will also decompress the packets when needed. Note: on failure, decompression will be ignored.
You can turn auto-decompression/auto-compression off with:
>>> conf.contribs["http"]["auto_compression"] = False
You can also turn auto-chunking/dechunking off with:
>>> conf.contribs["http"]["auto_chunk"] = False
classmethod dispatch_hook ( _pkt = None , * args , ** kargs ) [source] fields_desc guess_payload_class ( payload ) [source]
Decides if the payload is an HTTP Request or Response, or something else.
hdr = b'HTTP' reqmethods = b'OPTIONS|GET|HEAD|POST|PUT|DELETE|TRACE|CONNECT' show_indent = 0 classmethod tcp_reassemble ( data , metadata , _ ) [source] class scapy.layers.http. HTTPRequest ( _pkt , / , * , Method = b'GET' , Path = b'/' , Http_Version = b'HTTP/1.1' , A_IM = None , Accept = None , Accept_Charset = None , Accept_Datetime = None , Accept_Encoding = None , Accept_Language = None , Access_Control_Request_Headers = None , Access_Control_Request_Method = None , Authorization = None , Cache_Control = None , Connection = None , Content_Length = None , Content_MD5 = None , Content_Type = None , Cookie = None , DNT = None , Date = None , Expect = None , Forwarded = None , From = None , Front_End_Https = None , HTTP2_Settings = None , Host = None , If_Match = None , If_Modified_Since = None , If_None_Match = None , If_Range = None , If_Unmodified_Since = None , Keep_Alive = None , Max_Forwards = None , Origin = None , Permanent = None , Pragma = None , Proxy_Authorization = None , Proxy_Connection = None , Range = None , Referer = None , Save_Data = None , TE = None , Upgrade = None , Upgrade_Insecure_Requests = None , User_Agent = None , Via = None , Warning = None , X_ATT_DeviceId = None , X_Correlation_ID = None , X_Csrf_Token = None , X_Forwarded_For = None , X_Forwarded_Host = None , X_Forwarded_Proto = None , X_Http_Method_Override = None , X_Request_ID = None , X_Requested_With = None , X_UIDH = None , X_Wap_Profile = None , Unknown_Headers = None ) [source]
aliastypes do_dissect ( s ) [source]
From the HTTP packet string, populate the scapy object
fields_desc Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | METHOD | PATH | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | HTTP VERSION | A IM | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ACCEPT | ACCEPT CHARSET | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ACCEPT DATETIME | ACCEPT ENCODING | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ACCEPT LANGUAGE | ACCESS CONTROL REQUEST HEADERS| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ACCESS CONTROL REQUEST METHOD | AUTHORIZATION | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CACHE CONTROL | CONNECTION | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CONTENT LENGTH | CONTENT MD5 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CONTENT TYPE | COOKIE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DNT | DATE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | EXPECT | FORWARDED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | FROM | FRONT END HTTPS | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | HTTP2 SETTINGS | HOST | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IF MATCH | IF MODIFIED SINCE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IF NONE MATCH | IF RANGE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IF UNMODIFIED SINCE | KEEP ALIVE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MAX FORWARDS | ORIGIN | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PERMANENT | PRAGMA | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PROXY AUTHORIZATION | PROXY CONNECTION | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RANGE | REFERER | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SAVE DATA | TE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | UPGRADE | UPGRADE INSECURE REQUESTS | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | USER AGENT | VIA | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | WARNING | X ATT DEVICEID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | X CORRELATION ID | X CSRF TOKEN | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | X FORWARDED FOR | X FORWARDED HOST | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | X FORWARDED PROTO | X HTTP METHOD OVERRIDE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | X REQUEST ID | X REQUESTED WITH | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | X UIDH | X WAP PROFILE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | UNKNOWN HEADERS | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. HTTPRequest
Method
Path
Http_Version
A_IM
Accept
Accept_Charset
Accept_Datetime
Accept_Encoding
Accept_Language
Access_Control_Request_Headers
Access_Control_Request_Method
Authorization
Cache_Control
Connection
Content_Length
Content_MD5
Content_Type
Cookie
DNT
Date
Expect
Forwarded
From
Front_End_Https
HTTP2_Settings
Host
If_Match
If_Modified_Since
If_None_Match
If_Range
If_Unmodified_Since
Keep_Alive
Max_Forwards
Origin
Permanent
Pragma
Proxy_Authorization
Proxy_Connection
Range
Referer
Save_Data
TE
Upgrade
Upgrade_Insecure_Requests
User_Agent
Via
Warning
X_ATT_DeviceId
X_Correlation_ID
X_Csrf_Token
X_Forwarded_For
X_Forwarded_Host
X_Forwarded_Proto
X_Http_Method_Override
X_Request_ID
X_Requested_With
X_UIDH
X_Wap_Profile
Unknown_Headers
mysummary ( ) [source] class scapy.layers.http. HTTPResponse ( _pkt , / , * , Http_Version = b'HTTP/1.1' , Status_Code = b'200' , Reason_Phrase = b'OK' , Accept_Patch = None , Accept_Ranges = None , Access_Control_Allow_Credentials = None , Access_Control_Allow_Headers = None , Access_Control_Allow_Methods = None , Access_Control_Allow_Origin = None , Access_Control_Expose_Headers = None , Access_Control_Max_Age = None , Age = None , Allow = None , Alt_Svc = None , Cache_Control = None , Connection = None , Content_Disposition = None , Content_Encoding = None , Content_Language = None , Content_Length = None , Content_Location = None , Content_MD5 = None , Content_Range = None , Content_Security_Policy = None , Content_Type = None , Date = None , Delta_Base = None , ETag = None , Expires = None , IM = None , Keep_Alive = None , Last_Modified = None , Link = None , Location = None , P3P = None , Permanent = None , Pragma = None , Proxy_Authenticate = None , Public_Key_Pins = None , Refresh = None , Retry_After = None , Server = None , Set_Cookie = None , Status = None , Strict_Transport_Security = None , Timing_Allow_Origin = None , Tk = None , Trailer = None , Transfer_Encoding = None , Upgrade = None , Vary = None , Via = None , WWW_Authenticate = None , Warning = None , X_Content_Duration = None , X_Content_Security_Policy = None , X_Content_Type_Options = None , X_Correlation_ID = None , X_Frame_Options = None , X_Powered_By = None , X_Request_ID = None , X_UA_Compatible = None , X_WebKit_CSP = None , X_XSS_Protection = None , Unknown_Headers = None ) [source]
aliastypes answers ( other ) [source] do_dissect ( s ) [source]
From the HTTP packet string, populate the scapy object
fields_desc Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | HTTP VERSION | STATUS CODE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | REASON PHRASE | ACCEPT PATCH | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ACCEPT RANGES |ACCESS CONTROL ALLOW CREDENTIAL| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ACCESS CONTROL ALLOW HEADERS | ACCESS CONTROL ALLOW METHODS | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ACCESS CONTROL ALLOW ORIGIN | ACCESS CONTROL EXPOSE HEADERS | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ACCESS CONTROL MAX AGE | AGE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ALLOW | ALT SVC | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CACHE CONTROL | CONNECTION | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CONTENT DISPOSITION | CONTENT ENCODING | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CONTENT LANGUAGE | CONTENT LENGTH | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CONTENT LOCATION | CONTENT MD5 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CONTENT RANGE | CONTENT SECURITY POLICY | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CONTENT TYPE | DATE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DELTA BASE | ETAG | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | EXPIRES | IM | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | KEEP ALIVE | LAST MODIFIED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LINK | LOCATION | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | P3P | PERMANENT | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PRAGMA | PROXY AUTHENTICATE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PUBLIC KEY PINS | REFRESH | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RETRY AFTER | SERVER | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SET COOKIE | STATUS | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | STRICT TRANSPORT SECURITY | TIMING ALLOW ORIGIN | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TK | TRAILER | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TRANSFER ENCODING | UPGRADE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | VARY | VIA | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | WWW AUTHENTICATE | WARNING | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | X CONTENT DURATION | X CONTENT SECURITY POLICY | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | X CONTENT TYPE OPTIONS | X CORRELATION ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | X FRAME OPTIONS | X POWERED BY | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | X REQUEST ID | X UA COMPATIBLE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | X WEBKIT CSP | X XSS PROTECTION | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | UNKNOWN HEADERS | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. HTTPResponse
Http_Version
Status_Code