scapy.layers.http module

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 

(Defaults to True)

You can also turn auto-chunking/dechunking off with:

>>> conf.contribs["http"]["auto_chunk"] = False 

(Defaults to True)

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 = 0classmethod 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