BST: Advanced Binary String Code Format Conversion Utility

About BST

BST serves as a comprehensive utility for converting binary string code into various formats compatible with different programming languages. This tool transforms binary strings into source code representations suitable for security research, penetration testing, and exploit development scenarios.

Feature Overview

  1. Transform binary files into binary string format for standard output dumping;

  2. Convert raw hexadecimal input strings into escaped hexadecimal versions;

  3. Generate character detection sequences for buffer analysis;

  4. Control binary string width to enhance exploit code readability;

  5. Format binary strings using multiple programming languages including C/C++, Python, and PowerShell;

  6. Apply automated code block indentation for seamless copy/paste operations;

Required Dependencies

  1. POSIX C library;

  2. C compiler: GCC or LLVM Clang;

  3. GNU Make;

  4. Git;

Installation Process

Clone the repository to your local system using the following command:

$ git clone https://github.com/e3prom/bst

Navigate to the project directory and build the code using make. By default, BST will be installed to the /usr/local/bin path:

$ cd bst

$ make

$ sudo make install

Usage Examples

Display help information with the following command:

$ bstrings --help

Usage: bstrings [OPTION]...

 Convert input to specified binary string format.

 At least one of the below options must be given:
   -D, --dump-file=FILE    Restore and dump file metadata content
   -x, --hex-escape        Escape input hexadecimal string
   -b, --gen-badchar       Generate malicious sequence string

 The below switches are optional:
   -f, --file=FILE          Read hexadecimal input from file
   -w, --width=BYTES       Split binary string at specified byte length
   -s, --syntax=LANG       Output variable using specified programming language
   -i, --indent=LENGTH     Perform indentation for given character length
   -n, --var-name=VAR      Specify string variable name (Verbose mode)
   -h, --help             Display tool help information
      --interactive        Enter interactive mode
      --verbose           Enable Verbose output
      --version           Print tool version information

 The below languages are supported (case-sensitive):
   C                     C language
   python               Python language
   powershell           PowerShell automation script language

In the following demonstration, we'll use BST to compile shellcode with Python syntax formatting and 4-space character indentation. The shellcode will be dumped (-D) as hex-escaped (-x) binary string output with 8-byte width:

$ bstrings --verbose -x -D lnx-execve-setreuid-x86_64 -w8 -i 4 --syntax=python

[*] Convert hexadecimal input to an escaped binary string.
[+] Binary string width is limited to 8 bytes.
[+] Output binary string using python language syntax.
[+] Indentation level set to 4 space character(s).

    shellcode = ""
    shellcode += "\x31\xc0\x48\x89\xc7\x48\x89\xc6"
    shellcode += "\x48\x89\xc2\xb0\x71\x0f\x05\x31"
    shellcode += "\xc0\x50\x48\xbb\x2f\x62\x69\x6e"
    shellcode += "\x2f\x2f\x73\x68\x53\x48\x89\xe7"
    shellcode += "\x50\x48\x89\xe6\x57\x48\x89\xe2"
    shellcode += "\xb0\x3b\x0f\x05"

BST can also automatically generate malicious character sequences in familiar programming lagnuage formats:

$ bstrings --verbose -b -w12 -i 4 --syntax=c -n badchars

[*] Generating bad character binary string.
[+] Binary string width is limited to 12 bytes.

    unsigned char badchars[] =
        "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c"
        "\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18"
        "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24"
        "\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
        "\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c"
        "\x3d\x3e\x3f\x40\x41\x42\x43\x44\x45\x46\x47\x48"
        "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54"
        "\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
        "\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c"
        "\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78"
        "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80\x81\x82\x83\x84"
        "\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
        "\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c"
        "\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
        "\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4"
        "\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
        "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc"
        "\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
        "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4"
        "\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0"
        "\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc"
        "\xfd\xfe\xff"

License Agreement

This project is developed and distributed under the GPL-2.0 open source license agreement.

Tags: binary-conversion exploit-development security-tools shellcode hexadecimal

Posted on Fri, 21 Aug 2026 16:32:34 +0000 by ali_mac1