mirror of
https://github.com/RfidResearchGroup/ChameleonUltra.git
synced 2026-03-30 23:35:43 +00:00
161 lines
5.4 KiB
Markdown
161 lines
5.4 KiB
Markdown
# CLI
|
|
|
|
The CLI (**C**ommand **L**ine **I**nterface) is the official way to control your Chameleon.
|
|
|
|
It requires at least **Python 3.9** version.
|
|
|
|
## Installing
|
|
|
|
There are multiple ways to install the CLI, depending on your OS.
|
|
|
|
### Windows
|
|
|
|
Windows users have the choice of 4 options:
|
|
|
|
#### ProxSpace
|
|
|
|
Using ProxSpace to build the CLI is the easiest and most comfortable way to get started.
|
|
|
|
1. Download ProxSpace from the [official GitHub](https://github.com/Gator96100/ProxSpace/releases/latest)
|
|
|
|
2. [Download 7zip](https://www.7-zip.org/) to extract the archive
|
|
|
|
3. Install 7zip by double clicking the Installer and clicking `Install`
|
|
|
|
4. Right-click on the downloaded archive and select `7zip -> Unpack to "ProxSpace"`
|
|
|
|
5. Open a terminal in the proxspace folder. If you are on a new Windows install, you should be able to just right-click and select `Open in Terminal`. If that option is not visible and the ProxSpace folder is still in your downloads folder, press `win+r` and type `powershell` followed by enter. In Powershell now type `cd ~/Downloads/ProxSpace`
|
|
|
|
6. Run the command `.\runme64.bat`. After successful completion, you should be dropped to the `pm3 ~ $` shell.
|
|
|
|
7. Clone the Repository by typing `git clone https://github.com/RfidResearchGroup/ChameleonUltra.git`
|
|
|
|
8. Now go into the newly created folder with `cd ChameleonUltra/software/src`
|
|
|
|
9. Prepare for package installation with `pacman-key --init; pacman-key --populate; pacman -S msys2-keyring --noconfirm; pacman-key --refresh`
|
|
|
|
10. Proceed by installing Ninja with `pacman -S ninja --noconfirm`
|
|
|
|
11. Build the required config by running `cmake .`
|
|
|
|
12. And the binaries with `cmake --build .`
|
|
|
|
13. Copy the binaries by running `cp -r ~/ChameleonUltra/software/bin/* ~/ChameleonUltra/software/script/`
|
|
|
|
14. Go into the script folder with `cd ~/ChameleonUltra/software/script/`
|
|
|
|
15. Install python requirements with `pip install -r requirements.txt`
|
|
|
|
16. Finally run the CLI with `python chameleon_cli_main.py`
|
|
|
|
To use after installing, just do the following:
|
|
|
|
1. Run `runme64.bat`
|
|
|
|
2. Go into the script folder with `cd ~/ChameleonUltra/software/script/`
|
|
|
|
3. Run the CLI with `python chameleon_cli_main.py`
|
|
|
|
#### WSL2
|
|
|
|
Coming Soon
|
|
|
|
#### WSL1
|
|
|
|
Coming Soon
|
|
|
|
#### Build Natively
|
|
|
|
Building natively is a bit more advanced and not recommended for beginners
|
|
|
|
1. Download and install [Visual Studio Community](https://visualstudio.microsoft.com/de/downloads/)
|
|
|
|
2. On the workload selection screen, choose the `Desktop development with C++` workload. Click `Download and Install`
|
|
|
|
3. Download and install [git](https://git-scm.com/download). When asked, add to your path
|
|
|
|
4. Download and install [cmake](https://cmake.org/download/). Again, when asked, add to your path
|
|
|
|
5. Download and install [python](https://www.python.org/downloads/). When asked, add to your path (small checkbox in the bottom left)
|
|
|
|
6. Choose a suitable location and open a terminal. Clone the repository with `git clone https://github.com/RfidResearchGroup/ChameleonUltra.git`
|
|
|
|
7. Change into the binaries folder with `cd ChameleonUltra/software/src`
|
|
|
|
8. Build the required config by running `cmake .`
|
|
|
|
9. And the binaries with `cmake --build .`
|
|
|
|
10. Copy the binaries by running `cp -r ../bin/Debug/* ../script/`
|
|
|
|
11. Go into the script folder with `cd ../script/`
|
|
|
|
12. Create a python virtual environment with `python -m venv venv`
|
|
|
|
13. Activate it by running `.\venv\Scripts\Activate.ps1`
|
|
|
|
14. Install python requirements with `pip install -r requirements.txt`
|
|
|
|
15. Finally run the CLI with `python chameleon_cli_main.py`
|
|
|
|
To run again after installing, just do the following:
|
|
|
|
1. Activate venv by running `.\venv\Scripts\Activate.ps1`
|
|
|
|
2. Run the CLI with `python chameleon_cli_main.py`
|
|
|
|
### Linux
|
|
|
|
*Coming Soon*
|
|
|
|
### MacOS
|
|
|
|
*Coming Soon*
|
|
|
|
## Usage
|
|
|
|
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 -s8 -t3`
|
|
- Init the slot content: `hw slot init -s8 -t3`
|
|
- or load an existing dump and set UID and anticollision data, cf `hf mf eload -h` and `hf mf sim -h`
|
|
- Enable the slot: `hw slot enable -s8 -e1`
|
|
- Change to the new slot: `hw slot change -s8`
|
|
- Activate the detection: `hf detection enable -e1`
|
|
|
|
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 detection count`
|
|
- We need 2 nonces per key to recover
|
|
- Recover the key(s) based on the collected nonces: `hf detection decrypt`. Output example:
|
|
```
|
|
- MF1 detection log count = 6, start download.
|
|
- Download done (144bytes), start parse and decrypt
|
|
- Detection log for uid [DEADBEEF]
|
|
> Block 0 detect log decrypting...
|
|
> Block 1 detect log decrypting...
|
|
> Result ---------------------------
|
|
> Block 0, A key result: ['a0a1a2a3a4a5', 'aabbccddeeff']
|
|
> Block 1, A key result: ['010203040506']
|
|
|
|
```
|
|
|
|
- To clean the logged detection nonces: `hf detection enable -e0` then `hf detection enable -e1`
|
|
|
|
|
|
|
|
*More examples coming soon*
|