Machine Learning Binaries

Train a machine learning classifier to identify architectures.


We see huge benefits of machine learning in the field of computer security. Do you?

Much of the work we do on a daily basis can be automated and classified by a machine, leaving us to focus on more interesting and challenging problems. One stunning example is the automated binary exploitation and patching research funded by DARPA for the Cyber Grand Challenge. Problems like these are the stepping stones that will lead us to a future of automated computer security.

The crux of the challenge is to build a classifier that can automatically identify and categorize the instruction set architecture of a random binary blob. Train a machine learning classifier to identify the architecture of a binary blob given a list of possible architectures. We currently support twelve architectures, including: avr, alphaev56, arm, m68k, mips, mipsel, powerpc, s390, sh4, sparc, x86_64, and xtensa.

Need some help? Read our Machine Learning Tutorial.


When your classifier has solved 500 challenges in a row, send your resume along with all hash values you collected and any code used in the challenges to: careers@praetorian.com.


Please remember to document your solutions and provide code where applicable.

Explore Sample

The challenge API is documented below and all requests are sent to https://mlb.praetorian.com/. You'll receive a 'session' cookie in your first request. Use this to track your progress while solving the challenge.


Method Action Details
GET /challenge

Retrieve a new challenge. Consists of a binary blob and six possible target architectures.


Response:

{"binary": "__base64_encoded_blob__", "target": ["arm", "avr", ... ] }

POST /solve

Attempt to solve a challenge by guessing the instruction set architecture of the binary blob. The server will respond with your current consecutive wins and the actual architecture of the binary. If you have solved over 500 challenges, the server will also send a hash for submission to careers@praetorian.com


Request:

{"target": "arm"}

Response:

{"correct": 17, "target": "arm", "hash": "R0VUIC9lYXN0ZXItZWdnIEhUVFAvMS4w"}

To help get you started, we've included this example code to help you communicate with the "Machine Learning Binaries" technical challenge.