diff --git a/docs/cli.md b/docs/cli.md index beb5cc4..06f9065 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -104,33 +104,44 @@ To run again after installing, just do the following: ### Linux -1. Install the dependencies - - Ubuntu / Debian: `sudo apt install cmake make python3 python3-pip git ninja-build python3-venv build-essential` - - Arch: `sudo pacman -S cmake make python3-pip git ninja base-devel` +Install the dependencies + - Ubuntu / Debian: + `sudo apt install git cmake build-essential python3-venv` + - Arch: + `sudo pacman -S git cmake base-devel python3` -2. Clone the Repository by typing `git clone https://github.com/RfidResearchGroup/ChameleonUltra.git` +Run the following script to clone the Repository, compile the tools and install Python dependencies in a virtual environment. -3. Now go into the newly created folder with `cd ChameleonUltra/software/src` +```sh +#!/bin/bash -4. Build the required config by running `cmake .` +git clone https://github.com/RfidResearchGroup/ChameleonUltra.git +( + cd ChameleonUltra/software/src + mkdir -p out + ( + cd out + cmake .. + cmake --build . --config Release + ) +) +( + cd ChameleonUltra/software/script + python3 -m venv venv + source venv/bin/activate + pip3 install -r requirements.txt + deactivate +) +``` -5. And the binaries with `cmake --build .` +To run the client after installing, do the following: -6. Go into the script folder with `cd ../script/` - -7. Create a virtual enviroment with `python3 -m venv venv` - -8. Activate it with `source venv/bin/activate` - -9. Install python requirements with `pip3 install -r requirements.txt` - -10. Finally run the CLI with `python3 chameleon_cli_main.py` - -To run again after installing, just do the following: - -1. Activate venv by running `source venv/bin/activate` - -2. Run the CLI with `python3 chameleon_cli_main.py` +```sh +cd ChameleonUltra/software/script +source venv/bin/activate +python3 chameleon_cli_main.py +deactivate +``` ### MacOS @@ -140,31 +151,41 @@ To run again after installing, just do the following: When in the CLI, plug in your Chameleon and connect with `hw connect`. If autodetection fails, get the Serial Port used by your Chameleon and run `hw connect -p COM11` (Replace `COM11` with your serial port, on Linux it may be `/dev/ttyACM0`) -### Common activities - -- Connect to the CLI: `hw connect` -- Change slot: `hw slot change -s [1-8]` - -*More examples coming soon* - ### MFKEY32v2 walk-through Make sure to be in the `software/` directory and run the Python CLI from there. -- Connect to the CLI: `hw connect` -- Check which slot can be used: `hw slot list` -- Change the slot type, here using slot 8 for a MFC 1k emulation: `hw slot type -s 8 -t MIFARE_1024` -- Init the slot content: `hw slot init -s 8 -t MIFARE_1024` - - or load an existing dump and set UID and anticollision data, cf `hf mf eload -h` and `hf mf econfig -h` -- Enable the slot: `hw slot enable -s 8 --hf` -- Change to the new slot: `hw slot change -s 8` -- Activate the authentication logs: `hf mf econfig --enable-log` - +```sh +# Connect to the CLI +hw connect +# Check which slot can be used +hw slot list +# Change the slot type, here using slot 8 for a MFC 1k emulation +hw slot type -s 8 -t MIFARE_1024 +# Init the slot content +hw slot init -s 8 -t MIFARE_1024 +# or load an existing dump and set UID and anticollision data, +# cf 'hf mf eload' and 'hf mf econfig' +# Enable the slot +hw slot enable -s 8 --hf +# Change to the new slot +hw slot change -s 8 +# Activate the authentication logs +hf mf econfig --enable-log +``` Now disconnect, go to a reader and swipe it a few times -- Come back and connect to the CLI: `hw connect` -- See if nonces were collected: `hf mf elog` - - We need 2 nonces per key to recover -- Recover the key(s) based on the collected nonces: `hf mf elog --decrypt`. +Come back + +```sh +# connect to the CLI +hw connect +# See if nonces were collected. We need 2 nonces per key to recover +hf mf elog +# Recover the key(s) based on the collected nonces +hf mf elog --decrypt +# Clean the logged detection nonces +hf mf econfig --disable-log +``` Output example: ``` - MF1 detection log count = 6, start download. @@ -178,8 +199,5 @@ Now disconnect, go to a reader and swipe it a few times ``` -- To clean the logged detection nonces: `hf mf econfig --disable-log` then `hf mf econfig --enable-log` - - *More examples coming soon*