scapy.layers.http¶
HTTP 1.0 layer.
Load using:
from scapy.layers.http import *
Or (console only):
>>> load_layer("http")
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)
-
class
scapy.layers.http.HTTP(*args, **kargs)¶ Bases:
scapy.packet.Packet-
aliastypes¶
-
classmethod
dispatch_hook(_pkt=None, *args, **kargs)¶
-
fields_desc¶
-
guess_payload_class(payload)¶ Decides if the payload is an HTTP Request or Response, or something else.
-
show_indent= 0¶
-
classmethod
tcp_reassemble(data, metadata)¶
-
-
class
scapy.layers.http.HTTPRequest(*args, **kargs)¶ Bases:
scapy.layers.http._HTTPContent-
aliastypes¶
-
do_dissect(s)¶ 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 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. HTTPRequestHTTPRequest fields¶ Method
_HTTPHeaderFieldb'GET'Path
_HTTPHeaderFieldb'/'Http_Version
_HTTPHeaderFieldb'HTTP/1.1'A_IM
_HTTPHeaderFieldNoneAccept
_HTTPHeaderFieldNoneAccept_Charset
_HTTPHeaderFieldNoneAccept_Datetime
_HTTPHeaderFieldNoneAccept_Encoding
_HTTPHeaderFieldNoneAccept_Language
_HTTPHeaderFieldNoneAccess_Control_Request_Headers
_HTTPHeaderFieldNoneAccess_Control_Request_Method
_HTTPHeaderFieldNoneAuthorization
_HTTPHeaderFieldNoneCache_Control
_HTTPHeaderFieldNoneConnection
_HTTPHeaderFieldNoneContent_Length
_HTTPHeaderFieldNoneContent_MD5
_HTTPHeaderFieldNoneContent_Type
_HTTPHeaderFieldNoneCookie
_HTTPHeaderFieldNoneDNT
_HTTPHeaderFieldNoneDate
_HTTPHeaderFieldNoneExpect
_HTTPHeaderFieldNoneForwarded
_HTTPHeaderFieldNoneFrom
_HTTPHeaderFieldNoneFront_End_Https
_HTTPHeaderFieldNoneHTTP2_Settings
_HTTPHeaderFieldNoneHost
_HTTPHeaderFieldNoneIf_Match
_HTTPHeaderFieldNoneIf_Modified_Since
_HTTPHeaderFieldNoneIf_None_Match
_HTTPHeaderFieldNoneIf_Range
_HTTPHeaderFieldNoneIf_Unmodified_Since
_HTTPHeaderFieldNoneKeep_Alive
_HTTPHeaderFieldNoneMax_Forwards
_HTTPHeaderFieldNoneOrigin
_HTTPHeaderFieldNonePermanent
_HTTPHeaderFieldNonePragma
_HTTPHeaderFieldNoneProxy_Authorization
_HTTPHeaderFieldNoneProxy_Connection
_HTTPHeaderFieldNoneRange
_HTTPHeaderFieldNoneReferer
_HTTPHeaderFieldNoneSave_Data
_HTTPHeaderFieldNoneTE
_HTTPHeaderFieldNoneUpgrade
_HTTPHeaderFieldNoneUpgrade_Insecure_Requests
_HTTPHeaderFieldNoneUpgrade_Insecure_Requests
_HTTPHeaderFieldNoneUser_Agent
_HTTPHeaderFieldNoneVia
_HTTPHeaderFieldNoneWarning
_HTTPHeaderFieldNoneX_ATT_DeviceId
_HTTPHeaderFieldNoneX_Correlation_ID
_HTTPHeaderFieldNoneX_Csrf_Token
_HTTPHeaderFieldNoneX_Forwarded_For
_HTTPHeaderFieldNoneX_Forwarded_Host
_HTTPHeaderFieldNoneX_Forwarded_Proto
_HTTPHeaderFieldNoneX_Http_Method_Override
_HTTPHeaderFieldNoneX_Request_ID
_HTTPHeaderFieldNoneX_Requested_With
_HTTPHeaderFieldNoneX_UIDH
_HTTPHeaderFieldNoneX_Wap_Profile
_HTTPHeaderFieldNoneUnknown_Headers
_HTTPHeaderFieldNone
-
mysummary()¶
-
-
class
scapy.layers.http.HTTPResponse(*args, **kargs)¶ Bases:
scapy.layers.http._HTTPContent-
aliastypes¶
-
answers(other)¶
-
do_dissect(s)¶ 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 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. HTTPResponseHTTPResponse fields¶ Http_Version
_HTTPHeaderFieldb'HTTP/1.1'Status_Code
_HTTPHeaderFieldb'200'Reason_Phrase
_HTTPHeaderFieldb'OK'Accept_Patch
_HTTPHeaderFieldNoneAccept_Ranges
_HTTPHeaderFieldNoneAccess_Control_Allow_Credentials
_HTTPHeaderFieldNoneAccess_Control_Allow_Headers
_HTTPHeaderFieldNoneAccess_Control_Allow_Methods
_HTTPHeaderFieldNoneAccess_Control_Allow_Origin
_HTTPHeaderFieldNoneAccess_Control_Expose_Headers
_HTTPHeaderFieldNoneAccess_Control_Max_Age
_HTTPHeaderFieldNoneAge
_HTTPHeaderFieldNoneAllow
_HTTPHeaderFieldNoneAlt_Svc
_HTTPHeaderFieldNoneCache_Control
_HTTPHeaderFieldNoneConnection
_HTTPHeaderFieldNoneContent_Disposition
_HTTPHeaderFieldNoneContent_Encoding
_HTTPHeaderFieldNoneContent_Language
_HTTPHeaderFieldNoneContent_Length
_HTTPHeaderFieldNoneContent_Location
_HTTPHeaderFieldNoneContent_MD5
_HTTPHeaderFieldNoneContent_Range
_HTTPHeaderFieldNoneContent_Security_Policy
_HTTPHeaderFieldNoneContent_Type
_HTTPHeaderFieldNoneDate
_HTTPHeaderFieldNoneDelta_Base
_HTTPHeaderFieldNoneETag
_HTTPHeaderFieldNoneExpires
_HTTPHeaderFieldNoneIM
_HTTPHeaderFieldNoneKeep_Alive
_HTTPHeaderFieldNoneLast_Modified
_HTTPHeaderFieldNoneLink
_HTTPHeaderFieldNoneLocation
_HTTPHeaderFieldNoneP3P
_HTTPHeaderFieldNonePermanent
_HTTPHeaderFieldNonePermanent
_HTTPHeaderFieldNonePragma
_HTTPHeaderFieldNoneProxy_Authenticate
_HTTPHeaderFieldNonePublic_Key_Pins
_HTTPHeaderFieldNoneRefresh
_HTTPHeaderFieldNoneRetry_After
_HTTPHeaderFieldNoneServer
_HTTPHeaderFieldNoneSet_Cookie
_HTTPHeaderFieldNoneStatus
_HTTPHeaderFieldNoneStrict_Transport_Security
_HTTPHeaderFieldNoneTiming_Allow_Origin
_HTTPHeaderFieldNoneTk
_HTTPHeaderFieldNoneTrailer
_HTTPHeaderFieldNoneTransfer_Encoding
_HTTPHeaderFieldNoneUpgrade
_HTTPHeaderFieldNoneVary
_HTTPHeaderFieldNoneVia
_HTTPHeaderFieldNoneWWW_Authenticate
_HTTPHeaderFieldNoneWarning
_HTTPHeaderFieldNoneX_Content_Duration
_HTTPHeaderFieldNoneX_Content_Security_Policy
_HTTPHeaderFieldNoneX_Content_Type_Options
_HTTPHeaderFieldNoneX_Correlation_ID
_HTTPHeaderFieldNoneX_Frame_Options
_HTTPHeaderFieldNoneX_Powered_By
_HTTPHeaderFieldNoneX_Request_ID
_HTTPHeaderFieldNoneX_UA_Compatible
_HTTPHeaderFieldNoneX_WebKit_CSP
_HTTPHeaderFieldNoneX_XSS_Protection
_HTTPHeaderFieldNoneUnknown_Headers
_HTTPHeaderFieldNone
-
mysummary()¶
-
-
scapy.layers.http.http_request(host, path='/', port=80, timeout=3, display=False, verbose=0, iptables=False, iface=None, **headers)¶ Util to perform an HTTP request, using the TCP_client.
- Parameters
host – the host to connect to
path – the path of the request (default /)
port – the port (default 80)
timeout – timeout before None is returned
display – display the resullt in the default browser (default False)
iface – interface to use. default: conf.iface
iptables – temporarily prevents the kernel from answering with a TCP RESET message.
headers – any additional headers passed to the request
- Returns
the HTTPResponse packet