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.11.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.11-py3-none-any.whl (20.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: firegex-3.2.11.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.11.tar.gz
Algorithm Hash digest
SHA256 f7ca20264870c6a6abb57fec8a560a2532de24c8b3c70f5940c0d365029ba0ab
MD5 ecacbe46f2835e21fa8e03f8769c1423
BLAKE2b-256 fa3e1dffc11c7a66eeba0ff5c2a11572fa0b79571933723b22e9d9d1d7dcd935

See more details on using hashes here.

File details

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

File metadata

  • Download URL: firegex-3.2.11-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.11-py3-none-any.whl
Algorithm Hash digest
SHA256 3019a0ac9ca6f44e9ac83c544a1b4eb6679a1f7f18da94b2522de4341edd0437
MD5 0389567555d527f2eab2469ba7f8a133
BLAKE2b-256 582832e8daba1a3e12699732753d0c9fce827c22f664f4cda7ec1c20b7b2f486

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