The Binary String Toolkit or BST for short is a rather simple utility to convert binary strings to various formats suitable for later inclusions in source codes, such as those used to develop exploits in the security field.

  • Dump files content to standard output in a binary string format.
  • Convert a plain hexadecimal input to an escaped binary string.
  • Output a sequence of bad characters for testing proof of concept code.
  • Limit the width of binary strings for better readability in source codes.
  • Format output in your favorite programming language’s syntax.
  • Perform binary variable block indentation.


  • POSIX C Library
  • C Compiler
    • GCC
    • LLVM Clang
  • GNU Make
  • Git

To build and install the ‘bstrings’ binary, simply do:

$ git clone
$ cd bst
$ make
# by default, bstrings is installed in /usr/local/bin.
$ make install

The below example show how an assembled shellcode can be quickly dumped (-D) to standard output in a hexadecimal escaped (-x) binary string of 16 hexadecimal digits width (or 8 bytes), with Python syntax formatting and an indentation of 4 space characters:

$ 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 += "x31xc0x48x89xc7x48x89xc6"
shellcode += "x48x89xc2xb0x71x0fx05x31"
shellcode += "xc0x50x48xbbx2fx62x69x6e"
shellcode += "x2fx2fx73x68x53x48x89xe7"
shellcode += "x50x48x89xe6x57x48x89xe2"
shellcode += "xb0x3bx0fx05"

You can also use bstrings to output an automatically indented bad character sequence, and thus in your favorite programming language:

$ bstrings --verbose -b -w12 -i 4 --syntax=c -n badchar
[*] Generating bad character binary string.
[+] Binary string width is limited to 12 bytes.
unsigned char badchar[] =

For a list of supported command-line options, simply execute bstrings with the ‘–help’ switch:

$ 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 Dump content of file FILE in hexadecimal format
-x, --hex-escape Escape input hexadecimal string
-b, --gen-badchar Generate a bad character sequence string

The below switches are optional:
-f, --file=FILE Read input from file FILE instead of stdin
-w, --width=BYTES Break binary strings to specified length in bytes
-s, --syntax=LANG Output variable using language syntax of LANG
-i, --indent=LENGTH Perform indentation for given character length
-n, --var-name=VAR Specify binary string variable name (verbose)
-h, --help Display this help
--interactive Enter interactive mode
--verbose Enable verbose output
--version Print version information

The below languages are supported (case-sensitive):
C C Programming language
python Python Programming language