# binhop
`binhop` is a **file carving visualizer**, powered by `binwalk`.
It makes clear what parts of a blob can be extracted, so you can
take action on the parts that didn't.
`binhop` relies entirely on a functioning installation of `binwalk`.
[Installation and Usage](#installation) •
[FAQ](#faq) •
[Contributing](#contributing) •
[License](#license)
## Installation and Usage
### Build with Docker (recommended)
Assuming you have Docker installed and running, you can serve binhop locally with something like:
```
git clone https://github.com/darrylnixon/binhop.git
cd binhop
docker build . -t csc842/binhop
docker run --name binhop -e PORT=3050 -p 3050:3050 --restart=always csc842/binhop
```
Then browse to [http://localhost:3050](http://localhost:3050) and upload a blob.
### Manually
To use this script, you need Python 3 and a functioning and "recent" version of `binwalk` installed on your system. In practice, this means you're *probably* going to need to be on an x86/x86_64 Linux, but maybe you have better karma than I do.
You'll probably also want to install optional `binwalk` dependencies such as `sasquatch`, `jefferson`, and others, depending on the binaries you want to submit. You can learn how to do that in [binwalk's INSTALL.md](https://github.com/ReFirmLabs/binwalk/blob/master/INSTALL.md). `binhop` only "requires" `binwalk`, but it'll fail on binaries for which `binwalk` is dependent on optional modules.
When that's done, get `binhop` running with something like:
```
git clone https://github.com/darrylnixon/binhop.git
cd binhop
pip install -r requirements.txt
./binhop.py [--port