Packet Handler Class

The PacketHandler class is responsible for creating, parsing, and processing packets for agent-server communication. This includes encrypting/decrypting packets, extracting metadata, and routing tasking.


  • agent: An instance of the main agent.

  • key: Encryption key for the current session.

  • staging_key: Key used during the staging process.

  • session_id: Unique identifier for the current session.

  • missedCheckins: Counter for failed check-ins.

  • language_list: Dictionary linking programming languages to unique IDs.

  • meta: Defines metadata types for packets.

  • additional: Empty dictionary, can be populated with additional metadata.


rc4(key, data)

Encrypts or decrypts the input data with the given key using the RC4 algorithm.

parse_routing_packet(staging_key, data)

Parses the encrypted agent data from a routing packet, which includes session ID, language, metadata type, and the encrypted data. The function returns a dictionary with session IDs as keys and tuples (language, metadata, additional data, encrypted data) as values.

build_routing_packet(staging_key, session_id, meta, additional, enc_data)

Builds a packet for agent communication, including a unique session ID, metadata, and encrypted data.


Parses all routing packets and processes packets specific to the agent's session ID.

build_response_packet(tasking_id, packet_data, result_id)

Constructs a task packet for the agent, which includes packet type, task ID, and the actual data.

parse_task_packet(packet, offset)

Parses a packet to extract various details such as packet type, task ID, and data. Returns a tuple with all the extracted details.


Processes an encrypted packet by decrypting it, extracting the packets, and directing the agent to execute them.


Processes job data packets, mainly sending results back to the Command & Control server.

Last updated