Skip to main content

A set of functions useful in reverse engineering.

Project description

Info

ReverseBox is a Python package with a set of functions useful in software reverse engineering.

Why ReverseBox?
It's designed to help with:

  1. Decompressing / compressing data
  2. Decrypting / encrypting data
  3. Tedious reverse engineering tasks e.g. testing different checksum algorithms to find the one that was used in the software or file format
  4. Figuring out file formats
  5. Parsing data structures
  6. Wrapping functions for input/output operations

Who should use ReverseBox?
Mostly developers and reverse engineers (e.g. file format researchers or software researchers).

List of functionalities

  • Checksum

    • CRC8 (TODO) ❌
    • CRC16 (ARC) ✔️
    • CRC16 (Modbus) ✔️
    • CRC16 (Sick) ✔️
    • CRC16 (DNP) ✔️
    • CRC16-CCITT (XModem) ✔️
    • CRC16-CCITT (0xFFFF) ✔️
    • CRC16-CCITT (0x1D0F) ✔️
    • CRC16-CCITT (Kermit) ✔️
    • CRC32 (ISO/HDLC) ✔️
    • CRC32 (Asobo) (TODO) ❌
  • Compression

    • Asobo (TODO) ❌
    • BZE/BZZ (TODO) ❌
    • BZIP2 (TODO) ❌
    • GZIP (TODO) ❌
    • JCALG1 (TODO) ❌
    • LZMA (TODO) ❌
    • LZO1X (TODO) ❌
    • LZSS (TODO) ❌
    • NitroSDK (TODO) ❌
    • Oodle (TODO) ❌
    • Refpack (EA) (TODO) ❌
    • RNC (TODO) ❌
    • ZLIB ✔️ (wrapper only)
  • Encryption

    • AES (TODO) ❌
    • DES (TODO) ❌
    • Lucifer / DTD-1 (TODO) ❌
    • XOR Cipher (Basic) ✔️
    • (game-specific) XOR Cipher (Retro64 ECO) ✔️
    • (game-specific) XOR Cipher (Giana’s Return ZDA) (TODO) ❌
  • Hash

    • SHA-1 (TODO) ❌
    • MD5 ✔️ (wrapper only)
    • (game-specific) Hercules (TODO) ❌
    • (game-specific) E-racer (TODO) ❌
  • Image

    • PS2 Swizzling/Twiddling (TODO) ❌
    • PSP Swizzling/Twiddling (TODO) ❌
  • IO

    • File Reader ✔️
    • File Writer ✔️
    • File extension checking ✔️

Checksum calculation - example

// CRC16 (Kermit) calculation

from reversebox.checksum import checksum_crc16_kermit
from reversebox.common import common

test_data = b'123456789'
crc16_handler = checksum_crc16_kermit.CRC16KermitHandler()
crc16 = crc16_handler.calculate_crc16_kermit(test_data)
print("CRC16_INT: ", crc16)
print("CRC16_STR: ", common.convert_int_to_hex_string(crc16))

// CRC16 (Kermit) output

CRC16_INT:  35105
CRC16_STR:  0x8921

XOR encryption - example

// XOR Cipher (Basic)

from reversebox.encryption.encryption_xor_basic import xor_cipher_basic


test_data = b'abcd'
test_key = b'\x3D'
xor_result = xor_cipher_basic(test_data, test_key)
print(xor_result)

// XOR Cipher output

b'\\_^Y'

File Reader - example

// File Reader Usage

from reversebox.io_files.file_reader import FileReader


file_path = os.path.join(os.path.dirname(__file__), "data\\file.bin")
file_reader = FileReader(file_path, "rb")
file_reader.open()
value = file_reader.read_str(4, "utf8")
print(value)

// File Reader Output

ABCD

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

ReverseBox-0.3.0.tar.gz (20.1 kB view hashes)

Uploaded Source

Supported by

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