Skip to main content

Firegex client

Project description

Firegex Python Library and CLI

This is the Python library for Firegex. It is used to get additional features of Firegex and use the feature of the command fgex.

Installation

pip install -U firegex

fgex is an alias of firegex. You can use fgex instead of firegex.

Command line usage:

➤ fgex nfproxy -h

 Usage: fgex nfproxy [OPTIONS] FILTER_FILE ADDRESS PORT

 Run an nfproxy simulation

╭─ Arguments ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *    filter_file      TEXT     The path to the filter file [default: None] [required]                                                               │
│ *    address          TEXT     The address of the target to proxy [default: None] [required]                                                        │
│ *    port             INTEGER  The port of the target to proxy [default: None] [required]                                                           │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --proto                 [tcp|http]  The protocol to proxy [default: tcp]                                                                            │
│ --from-address          TEXT        The address of the local server [default: None]                                                                 │
│ --from-port             INTEGER     The port of the local server [default: 7474]                                                                    │
│                 -6                  Use IPv6 for the connection                                                                                     │
│ --help          -h                  Show this message and exit.                                                                                     │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Library usage:

NfProxy decorator

from firegex.nfproxy import pyfilter

This decorator is used to create a filter for the nfproxy. Example:

@pyfilter
def my_filter(raw_packet: RawPacket): #Logging filter
    print(raw_packet.data)

Data handlers

RawPacket

from firegex.nfproxy import RawPacket

This handler will be called every time arrives a packet from the network. It will receive a RawPacket object with the following properties:

  • is_input: bool - It's true if the packet is an input packet, false if it's an output packet
  • is_ipv6: bool - It's true if the packet is an ipv6 packet, false if it's an ipv4 packet
  • is_tcp: bool - It's true if the packet is a tcp packet, false if it's an udp packet
  • data: bytes - The data of the packet assembled and sorted from TCP
  • l4_size: int - The size of the layer 4 data
  • raw_packet_header_len: int - The size of the original packet header
  • l4_data: bytes - The layer 4 payload of the packet
  • raw_packet: bytes - The raw packet with IP and TCP headers

TCPInputStream

Alias: TCPClientStream

from firegex.nfproxy import TCPInputStream

This handler will be called every time a TCP stream is assembled in input. It will receive a TCPInputStream object with the following properties:

  • data: bytes - The data of the packets assembled and sorted from TCP
  • is_ipv6: bool - It's true if the packet is an ipv6 packet, false if it's an ipv4 packet
  • total_stream_size: int - The size of the stream

TCPOutputStream

Alias: TCPServerStream

from firegex.nfproxy import TCPOutputStream

This handler will be called every time a TCP stream is assembled in output. It will receive a TCPOutputStream object with the following properties:

  • data: bytes - The data of the packets assembled and sorted from TCP
  • is_ipv6: bool - It's true if the packet is an ipv6 packet, false if it's an ipv4 packet
  • total_stream_size: int - The size of the stream

HttpRequest

from firegex.nfproxy import HttpRequest

This handler will be called twice: one for the request headers and one for the request body. It will receive a HttpRequest object with the following properties:

  • method: bytes - The method of the request
  • url: str - The url of the request
  • headers: dict - The headers of the request
  • user_agent: str - The user agent of the request
  • content_encoding: str - The content encoding of the request
  • body: bytes - The body of the request
  • headers_complete: bool - It's true if the headers are complete
  • message_complete: bool - It's true if the message is complete
  • http_version: str - The http version of the request
  • keep_alive: bool - It's true if the request should keep alive
  • should_upgrade: bool - It's true if the request should upgrade
  • content_length: int - The content length of the request
  • get_header(header: str, default=None): str - Get a header from the request without caring about the case
  • total_size: int - The total size of the stream
  • stream: bytes - The stream of the request

HttpRequestHeader

from firegex.nfproxy import HttpRequestHeader

This handler will be called only when the request headers are complete. It will receive a HttpRequestHeader object with the same properties as HttpRequest.

HttpResponse

from firegex.nfproxy import HttpResponse

This handler will be called twice: one for the response headers and one for the response body. It will receive a HttpResponse object with the following properties:

  • status_code: int - The status code of the response
  • url: str - The url of the response
  • headers: dict - The headers of the response
  • user_agent: str - The user agent of the response
  • content_encoding: str - The content encoding of the response
  • body: bytes - The body of the response
  • headers_complete: bool - It's true if the headers are complete
  • message_complete: bool - It's true if the message is complete
  • http_version: str - The http version of the response
  • keep_alive: bool - It's true if the response should keep alive
  • should_upgrade: bool - It's true if the response should upgrade
  • content_length: int - The content length of the response
  • get_header(header: str, default=None): str - Get a header from the response without caring about the case
  • total_size: int - The total size of the stream
  • stream: bytes - The stream of the response

HttpResponseHeader

from firegex.nfproxy import HttpResponseHeader

This handler will be called only when the response headers are complete. It will receive a HttpResponseHeader object with the same properties as HttpResponse.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

firegex-3.2.12.tar.gz (18.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

firegex-3.2.12-py3-none-any.whl (20.2 kB view details)

Uploaded Python 3

File details

Details for the file firegex-3.2.12.tar.gz.

File metadata

  • Download URL: firegex-3.2.12.tar.gz
  • Upload date:
  • Size: 18.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for firegex-3.2.12.tar.gz
Algorithm Hash digest
SHA256 2cef2f27e44afeb46457f862af8fdc2f326874e0294dea41408a690555c7b172
MD5 344be89a3b2eb6c5a9b5d9712e98040b
BLAKE2b-256 2fce7d43b1da84d44d41f07f4387c828debba28fc6ddedd938370b1d25008097

See more details on using hashes here.

File details

Details for the file firegex-3.2.12-py3-none-any.whl.

File metadata

  • Download URL: firegex-3.2.12-py3-none-any.whl
  • Upload date:
  • Size: 20.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for firegex-3.2.12-py3-none-any.whl
Algorithm Hash digest
SHA256 050a7590bb1a2373a8c281e040db993aa3d55fdab990217faead33a56e20b088
MD5 3067c6cc42498539b5bff5197ad73b12
BLAKE2b-256 98d98036ac111ece0f00bdc7d81ceb39092ad8a6264c3b96a8114e8c7a24192e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page