DHCP Decoding Class

class bloxone.dhcp_decode[source]

Class to assist with Hex Encoding of DHCP Options and sub_options

check_data_type(optcode, sub_defs=[])[source]

Get data_type for optcode from sub optino definitions

Parameters
  • optcode (int) – Option code to check

  • sub_defs (list of dict) – sub option definitions to cross reference

Returns

data_type as str

decode_data(data, data_type='string', padding=False, pad_bytes=1, array=False)[source]
decode_dhcp_option(hex_string, sub_opt_defs=[], padding=False, pad_bytes=1, encapsulated=False, id=None, prefix='')[source]

Attempt to decode DHCP options from hex representation

Parameters
  • sub_opt_defs (list) – List of Sub Option definition dictionaries

  • padding (bool) – Whether extra ‘null’ termination bytes are req.

  • pad_bytes (int) – Number of null bytes to append

  • encapsulate (bool) – Add id and total length as prefix

  • id (int) – option code to prepend

  • prefix (str) – String value to prepend to encoded options

Returns

Encoded suboption as a hex string

get_name(optcode, sub_defs=[])[source]

Get data_type for optcode from sub optino definitions

Parameters
  • optcode (int) – Option code to check

  • sub_defs (list of dict) – sub option definitions to cross reference

Returns

name as str

guess_data_type(subopt, padding=False)[source]
hex_length(hex_string)[source]

Encode Option Length in hex (1-octet)

Parameters

hex_string (str) – Octet Encoded Hex String

Returns

Number of Hex Octects as hex encoded string

hex_string_to_list(hex_string)[source]

Take a hex string and convert in to a list

Parameters

hex_string (str) – Hex represented as string

Returns

list of hex bytes

hex_to_array_of_ip(hex_string)[source]

Decode array of IPv4 or IPv6 addresses to CSV string

Parameters

hex_string (str) – Hex representation of an array of IPv4 or IPv6

Returns

IP Addresses in a CSV string

hex_to_binary(data)[source]

Format hex string of binary/hex encoded data

Parameters

data (str) – data to format

Returns

hex encoding as string

hex_to_boolean(hex_string)[source]

Decode Hex value as a string to ‘true’ or ‘false’

Parameters

hex_string (str) – Hex value as a str

Returns

string representation of a boolean

hex_to_empty(data)[source]

Return empyt hex string ‘’

Parameters

data (str) – Data not to encode (should be empty)

Returns

Empty String ‘’

hex_to_fqdn(hex_string)[source]

Decode RFC 1035 Section 3.1 formatted hexa to fqdn

Parameters

hex_string (str) – hex encoded fqdn

Returns

fqdn as string

hex_to_int(hex_string, size=8)[source]

Decode hex to signed integer of defined size

Parameters
  • hex_string (str) – hex value as string

  • size (int) – size in bits [8, 16, 32]

Returns

integer

hex_to_ip(hex_string)[source]

Decode a 4 or 16 octect hex string to an IPv4 or IPv6 string

Parameters

hex_string (str) – Hex representation of an IPv4 or IPv6 address

Returns

IP Address as a string

hex_to_ipv4_address(hex_string)[source]

Decode a hex string to an IPv4 Address as a string

Parameters

hex_string (str) – Hex representation of an IPv4 address

Returns

IPv4 Address as a string

hex_to_ipv6_address(hex_string)[source]

Decode a hex string to an IPv6 address as a string

Parameters

hex_string (str) – Hex representation of an IPv6 address

Returns

IPv6 Address as a string

hex_to_optcode(hex_string)[source]

Encode Option Code in hex (1-octet)

Parameters

optcode (str/int) – Option Code

Returns

hex encoding as string

hex_to_string(hex_string)[source]

Decode a string of hex values to a text string

Parameters

hex_string (str) – Hex representation of a string

Returns

text string (str)

hex_to_suboptions(hex_string, encapsulated=False)[source]

Extract the sub-options from the hex data

hex_to_uint(hex_string, size=8)[source]

Encode integer of specified size as unsigned int in hex Uses 2’s compliment if supplied with negative number

Parameters
  • i (int) – integer value to encode

  • size (int) – size in bits [8, 16, 32]

Returns

hex encoding as string

output_decoded_options(decoded_opts=[], output='pprint')[source]

Simple output for decode_dhcp_options() data

Parameters
  • decoded_opts (list) – List of dict

  • output (str) – specify format [pprint, csv, yaml]

tests()[source]

Run through encoding methods and output example results

validate_ip(ip)[source]

Validate input data is a valid IP address (Supports both IPv4 and IPv6)

Parameters

ip (str) – ip address as a string

Returns

Return True for valid and False otherwise

Return type

bool