129 Commits
Author SHA1 Message Date
dxl f597e18ab3 Rollback LF Emulate. 2024-01-17 18:26:13 +08:00
Philippe TeuwenandGitHub fefcde542b Merge pull request #189 from p-l-/enh-hf-mf-elog-skip-used-items
CLI: skip already used items in `hf mf elog --decrypt`
2023-12-20 23:20:37 +01:00
Pierre Lalet e3cbd598ec CLI: skip already used items in hf mf elog --decrypt
This (often largely) improves the speed of the decrypt process. On my
laptop, with the same logs (37 records for one block and 37 records
for another block), here are the performances, as measuerd using a
simple command:

```bash
time echo -e "hw connect\nhf mf elog --decrypt\nhw disconnect" | ./chameleon_cli_main.py
```

- Before parallelisation (#187): 14m59,277s
- With parallelisation (current main): 6m13,513s
- With item skipping (this PR): 2m42,491s
2023-12-20 22:37:47 +01:00
Philippe TeuwenandGitHub 0124709067 Merge pull request #187 from p-l-/enh-hf-mf-elog-parallel
CLI: parallelize mfkey32v2 processes
2023-12-20 16:29:08 +01:00
Pierre Lalet cc674f1669 CLI: fix mfkey32v2 call for Windows 2023-12-20 16:20:12 +01:00
Pierre Lalet 42317a7bc4 CLI: parallelize mfkey32v2 processes 2023-12-20 16:20:12 +01:00
GameTec-liveandGitHub 05ea03d31c doc: Add box net and vectortraced boxart and troubleshooting entry (#186)
* doc: Add box net and vectortraced boxart
* doc: add troubleshooting entry and python notice
* fix: compress images
2023-12-05 16:06:56 +08:00
dxl 7fdb358e8b Merge branch 'main' of https://github.com/RfidResearchGroup/ChameleonUltra 2023-11-15 18:53:42 +08:00
dxl 3b14270976 Staticnested results quite poor compared to pm3 implem #183 2023-11-15 18:53:02 +08:00
Philippe Teuwen af91ddcda9 CLI: Do not execute a command if help is printed
Previously, for example `hf 14a raw -b 7 -d 26 -h` was printing help but it was also executing the command.
2023-11-15 09:44:37 +01:00
Philippe TeuwenandGitHub 5b67a895eb Merge pull request #180 from taichunmin/taichunmin
Added support for mifare classic value block operations
2023-11-15 09:38:45 +01:00
Philippe TeuwenandGitHub 494735a07d Merge pull request #184 from GameTec-live/main
doc: Add CUGUI troubleshooting entry
2023-11-15 08:35:55 +01:00
GameTec_live 12fd5f23f7 doc: Add CUGUI troubleshooting entry 2023-11-14 19:43:55 +01:00
taichunmin e79568298f Added support for mifare classic value block operations 2023-11-13 23:38:56 +08:00
Philippe Teuwen 4d670f051a Be robust to some argparse string variants 2023-11-06 22:45:48 +01:00
Philippe Teuwen ecf3c06886 add regression tests 2023-10-25 00:32:31 +02:00
Philippe Teuwen 7d851d2a22 reorganize a bit cli to allow autotests 2023-10-24 23:46:34 +02:00
Philippe Teuwen d973ee6671 add hw disconnect (for autotests) 2023-10-24 23:45:42 +02:00
Philippe Teuwen ece5e79060 typechecking fixes 2023-10-24 23:44:56 +02:00
Philippe Teuwen d77e166249 pep287 2023-10-24 00:57:44 +02:00
Philippe Teuwen ff3df15278 misc lint 2023-10-23 23:57:23 +02:00
Philippe Teuwen 55cd19f0db Move bins to simplify pyinstaller paths 2023-10-23 22:54:37 +02:00
Philippe Teuwen bb47bd5159 make style 2023-10-23 19:16:42 +02:00
Philippe Teuwen 7ea8cc1f98 check_file_encoding 2023-10-23 19:12:42 +02:00
Philippe Teuwen 55228d1489 fix encoding 2023-10-23 17:40:25 +02:00
Philippe Teuwen 299562bbdd changelog 2023-10-21 10:55:39 +02:00
Philippe TeuwenandGitHub c2f0f0d408 Merge pull request #178 from taichunmin/taichunmin
Change git version to version tag instead of dev tag.
2023-10-21 10:55:05 +02:00
taichunmin c91514efa1 Change git version to version tag instead of dev tag. 2023-10-21 16:40:15 +08:00
dxl 74f4eb8822 Changelog updated. 2023-10-19 22:54:47 +08:00
dxl f04943f59b Merge remote-tracking branch 'origin/main' 2023-10-19 22:51:55 +08:00
dxl 771e6ded54 Fixed a bug that will not reset the state machine after DEC. 2023-10-19 22:51:02 +08:00
dxl ab07dff904 Function has been renamed 2023-10-19 22:50:08 +08:00
dxl 980960c43d Fixed a bug that affected 14A simulation. 2023-10-19 22:48:53 +08:00
Philippe Teuwen 6e19d078f4 oops, missed sth when solving the merge conflicts 2023-10-17 23:56:28 +02:00
Philippe TeuwenandGitHub eac246fc0c Merge pull request #174 from augustozanellato/ats_error_fixes
Fix ATS handling in tags that NAK RATS
2023-10-17 23:52:50 +02:00
Philippe TeuwenandGitHub 83583075c4 Merge branch 'main' into ats_error_fixes 2023-10-17 23:52:35 +02:00
Philippe Teuwen fa0754aed2 cli: make status an enum. rename some status for consistency 2023-10-17 23:43:25 +02:00
Augusto Zanellato aa3fe711af Fix hf 14a raw always raising AttributeError 2023-10-17 23:33:19 +02:00
Augusto Zanellato cb1878440d Fix ATS handling in tags that NAK RATS
pcd_14a_reader_ats_request didn't check for NAK so in case the tag NAKd
the RATS it would return a zero length ATS which would cause an
underflow in pcd_14a_reader_scan_once, that in turn resulted in
HF_ERR_ATS being returned due to an invalid ATS length.
2023-10-17 23:32:51 +02:00
Philippe Teuwen 2beb8f74a3 cli: check if helper tools are available 2023-10-17 22:08:34 +02:00
Philippe Teuwen 82fcc76286 Changed battery level curves based on experimental measures, thanks @spp2000 ! 2023-10-17 21:25:16 +02:00
Philippe Teuwen 652ee4768d doc 2023-10-17 21:19:23 +02:00
dxl 1e134f1bcd ChangeLog update 2023-10-17 16:34:47 +08:00
dxl 15698fb338 Nested(And StaticNested) multithreaded decryption. 2023-10-17 16:34:22 +08:00
dxl 1ec025a24b Merge remote-tracking branch 'origin/main' 2023-10-17 16:30:47 +08:00
dxl 0e3144c994 Fixed bug where the 'i' variable was incorrectly used on printf 2023-10-17 16:25:48 +08:00
Philippe TeuwenandGitHub 363ff4f345 Merge pull request #172 from GameTec-live/main
doc: finally add linux
2023-10-16 21:16:17 +02:00
GameTec_live 070db3d773 fix: escape sequence 2023-10-16 21:09:26 +02:00
GameTec_live 3456d4c15d doc: remove unnescesary cp 2023-10-16 21:09:14 +02:00
GameTec_live d5187d3017 doc: finally add linux 2023-10-16 20:01:42 +02:00
Philippe TeuwenandGitHub 372bcf2460 technical_whitepaper : prevent github hallucinating email addresses 2023-10-15 23:34:51 +02:00
Philippe Teuwen 324dc578e5 cli: prepare comm debug 2023-10-15 01:39:00 +02:00
Philippe Teuwen 830ba98721 cli: move enums to new file 2023-10-15 01:17:34 +02:00
Philippe Teuwen 8ef42c705c cli: hw slot list: avoid unnecessary slot changes 2023-10-15 01:17:34 +02:00
Philippe Teuwen 43a6e822e6 cli: move color shortcuts to chameleon_util 2023-10-15 01:17:29 +02:00
Philippe TeuwenandGitHub f9be867029 Merge pull request #170 from augustozanellato/fix_factory_reset
Fix factory reset hang/wdt reset
2023-10-13 09:13:15 +02:00
Augusto Zanellato b35c1fadd9 Add changelog entry 2023-10-13 00:28:44 +02:00
Augusto Zanellato c1c10e9ba3 Fix factory reset hang/wdt reset
fds_util event handler was ignoring all the events related to
peer_manager files and that was causing a deadlock while waiting for
record deletion that in turn caused a wdt reset, usually this resulted in
a partially done factory reset.
The fix adds a `ignore_pm` flag to op_info struct that gets cleared by
fds_wipe allowing for a true reset to happen.
2023-10-13 00:26:32 +02:00
Philippe Teuwen 15bcae78be cli: atqa disambiguation 2023-10-12 20:39:18 +02:00
Philippe Teuwen 446b57e89f Changed fds_write_sync to take length in bytes instead of next multiple of 4 2023-10-11 23:08:25 +02:00
Philippe Teuwen 6236fdd4cf just in case, turn tag field off on exiting reader mode 2023-10-11 19:32:37 +02:00
Philippe Teuwen bac3552d85 fix field LED in LF reading and in HF cloning 2023-10-11 19:22:29 +02:00
Philippe Teuwen ea6576c567 renaming of slot into cloned when having cloned an ID/UID with a button, cf issue #166. Removed the goto 2023-10-11 18:49:59 +02:00
Philippe Teuwen 4fe9e1ea5b docs 2023-10-11 10:28:45 +02:00
Philippe Teuwen ffb6e00f1e fix spurious LED in battery level, assign battery level to long press B 2023-10-10 20:25:17 +02:00
Philippe Teuwen c4aef7e373 Changed hw slot list to display LF ID & HF anticol data, and names in the --short version too 2023-10-10 20:10:18 +02:00
Philippe Teuwen f512cbdbee cli: fix hw slot init 2023-10-10 10:57:53 +02:00
Philippe Teuwen f93418b7d8 cli: skip empty lines when several cmd lines are copy/pasted 2023-10-10 10:57:26 +02:00
Philippe Teuwen 89aa8c48f1 remove NRF_LOG_UART_ON_SWO_ENABLED committed by mistake 2023-10-10 10:56:49 +02:00
Philippe TeuwenandGitHub ab7592e7be Merge pull request #168 from RfidResearchGroup/rework_cli
Rework cli
2023-10-10 02:03:37 +02:00
Philippe Teuwen 61cc4f5891 cli: color help and add epilog example 2023-10-10 01:58:26 +02:00
Philippe Teuwen b6d2badab4 cli: simplify exit conditions 2023-10-10 00:21:31 +02:00
Philippe Teuwen 4927e0166c cli: one root CLITree, enhance dump_help 2023-10-10 00:17:17 +02:00
Philippe Teuwen 9106dea953 clean args classes 2023-10-09 21:37:54 +02:00
Philippe Teuwen 75e368da62 cli: hf mf econfig, hf mfu econfig (wip), fix dumphelp 2023-10-09 21:23:17 +02:00
dxl c9e4507d8f Use fastselect to improve the success rate of decryption. 2023-10-09 15:18:59 +08:00
dxl a9f775ff19 14443-a fast select implemented. 2023-10-09 15:17:54 +08:00
Philippe Teuwen a2121de79e cli: hf mf elog 2023-10-09 00:49:11 +02:00
Philippe Teuwen 336ec82e49 cli: hf mf eload/esave 2023-10-09 00:31:11 +02:00
Philippe Teuwen 2d3538f4c2 cli: add support for after_exec 2023-10-09 00:15:25 +02:00
Philippe Teuwen 8080c9b259 lf em 410x econfig 2023-10-08 23:57:02 +02:00
Philippe Teuwen 2f4d84ed2c cli: clean enums 2023-10-08 21:17:57 +02:00
Philippe Teuwen deb6684c0d cli: enum for key type A/B, prepare hf mf auth args 2023-10-08 21:12:52 +02:00
Philippe Teuwen dd5ff244d3 hf mf nested 2023-10-08 20:56:57 +02:00
Philippe Teuwen 8fc45a67a4 cli: hf 14a raw 2023-10-08 17:38:14 +02:00
Philippe Teuwen 831c401b5d cli: hw raw 2023-10-08 17:20:50 +02:00
Philippe Teuwen dcebc89654 cli: Command enum 2023-10-08 16:48:29 +02:00
Philippe Teuwen 1da470b8fe cli: hw settings btnpress 2023-10-08 14:20:09 +02:00
Philippe Teuwen 45deb30d4a cli: hw settings btnpress WIP 2023-10-08 13:55:18 +02:00
Philippe Teuwen efd7405bd8 cli: hw settings btnpress WIP 2023-10-08 13:44:06 +02:00
Philippe Teuwen a47e9b8b03 cli: remove unused TagSenseType list 2023-10-08 12:46:24 +02:00
Philippe Teuwen cd51061bb0 cli: hw slot enable: bugfix default slot 2023-10-08 12:46:01 +02:00
Philippe Teuwen d127f0a641 cli: blepair fix bug 2023-10-08 12:37:28 +02:00
Philippe Teuwen 47742d5984 cli: hw settings blepair, hw settings reset + --force, hw settings animation/btnpress/blekey/blepair: reminder to store settings 2023-10-08 12:23:29 +02:00
Philippe Teuwen 18a1770c80 cli: hw settings animation/bleclearbonds, hw factory_reset and hw settings bleclearbonds with --force 2023-10-08 12:02:28 +02:00
Philippe Teuwen 0f730affa7 Activate automatically reader mode 2023-10-08 00:15:37 +02:00
Philippe Teuwen 6cad966e7a cli: hw slot enable/disable/store 2023-10-08 00:02:43 +02:00
Philippe Teuwen 3aa73a2def cli: metavar, simplify enums, replace tag types int by keywords 2023-10-07 23:54:13 +02:00
Philippe Teuwen 0c6abbea9d cli: -s mandatory for slot change, sense_type now --hf/--lf, slot optional for hw slot init/type/delete 2023-10-07 11:21:39 +02:00
Philippe Teuwen 3022e0550c help_str 2023-10-07 01:11:03 +02:00
Philippe Teuwen 1ce506a5ad cli: change hw slot list 2023-10-07 01:05:46 +02:00
Philippe Teuwen 7ae3820913 cli: change hw slot kick 2023-10-07 00:56:57 +02:00
Philippe Teuwen 465ada3544 cli: change hw chipid, hw address and hw mode 2023-10-07 00:21:28 +02:00
Philippe Teuwen bb0ad66a78 cli: reorder args 2023-10-07 00:05:46 +02:00
Philippe Teuwen be7fad4906 cli: colors shortcuts 2023-10-05 01:09:15 +02:00
Philippe Teuwen 707b0c6d4a Changed CLI help:
- visually closer to pm3 (differenciate groups and commands)
- "dumphelp" allows to quickly dump all cmds and their options
- now all commands support '-h', so e.g. `hw settings store -h` will print help instead of storing
- no more command description in decorator, it is now taken from argparse description
2023-10-05 00:48:50 +02:00
Philippe Teuwen 702dba0d93 Added button action to show battery level 2023-10-04 19:36:33 +02:00
Philippe Teuwen 0d2c3fae89 hw settings btnpress set: tolerate A/B/a/b for button 2023-10-04 18:53:55 +02:00
Philippe Teuwen eac1b31b3c fix links 2023-10-02 10:23:35 +02:00
Philippe Teuwen 5ea6519577 cugui typos 2023-10-02 09:56:37 +02:00
GameTec-liveandGitHub 8f552773f1 doc: expand CU GUI docs (#158)
* doc: add entry to troubleshooting

* whoops a typo

* Add images part 1

* doc: explain first two pages

* doc: finished page docs except read page

* doc: Changelog
2023-10-02 09:55:55 +02:00
Philippe Teuwen 42b715575c Changed CLI threads polling into blocking reads, to reduce CPU usage 2023-10-01 22:13:46 +02:00
Philippe Teuwen 606ec02e30 Added support for timestamped comments in CLI via rem, ;, % or # 2023-10-01 00:34:18 +02:00
Philippe Teuwen 226efbc3d5 Fixed watchdog trigger during hw factory_reset 2023-10-01 00:30:05 +02:00
DXLandGitHub 7efe23edb2 Update README.md 2023-09-28 17:28:09 +08:00
DXLandGitHub 48bf852465 Update README.md 2023-09-28 17:27:43 +08:00
DXLandGitHub 5519715c10 Update README.md 2023-09-28 16:43:50 +08:00
Philippe Teuwen 4a94db10bf fix bug in default slot config 2023-09-27 23:23:39 +02:00
Philippe Teuwen 6915ee19a4 New DELETE_SLOT_TAG_NICK 2023-09-27 23:09:59 +02:00
Philippe TeuwenandGitHub 43cadeb84d Merge pull request #159 from augustozanellato/pyinstaller
Add client PyInstaller support
2023-09-27 18:19:37 +02:00
Augusto Zanellato 55b4053acb Changelog entry 2023-09-27 13:53:20 +02:00
Augusto Zanellato 4347cd9048 Add PyInstaller support for client 2023-09-27 13:52:26 +02:00
Philippe Teuwen e757c58a20 Notes from issue #1 to technical whitepaper 2023-09-27 09:52:14 +02:00
DXLandGitHub 4e1dec06ad Update README.md 2023-09-27 15:50:50 +08:00
DXLandGitHub ef1ccb40d8 Update README.md 2023-09-27 15:45:28 +08:00
DXLandGitHub db3f8ce1d7 Update README.md 2023-09-27 15:37:11 +08:00
Philippe Teuwen ac1f518f0a battery info 2023-09-26 23:43:01 +02:00
Philippe Teuwen 3fc985973c protocol.md 2023-09-26 22:41:57 +02:00
Philippe Teuwen e52b0302bf tip for GUI font scaling issues 2023-09-26 19:20:09 +02:00
100 changed files with 18968 additions and 2338 deletions
+19 -4
View File
@@ -19,32 +19,47 @@ jobs:
pre_command: |
? .
bundle_command: |
Compress-Archive -Path software\* -DestinationPath client-windows.zip
Compress-Archive -Path software\dist\* -DestinationPath client-windows.zip
- name: linux
os: ubuntu-latest
pre_command: |
true
bundle_command: |
(cd software && zip -r "$OLDPWD/client-linux.zip" .)
(cd software/dist && zip -r "$OLDPWD/client-linux.zip" .)
- name: macos
os: macos-latest
pre_command: |
true
bundle_command: |
(cd software && zip -r "$OLDPWD/client-macos.zip" .)
(cd software/dist && zip -r "$OLDPWD/client-macos.zip" .)
runs-on: ${{ matrix.os }}
steps:
- name: Check out the repo
uses: actions/checkout@v3
with:
ref: ${{ inputs.checkout-sha == null && github.sha || inputs.checkout-sha }}
- name: Install PyInstaller and client dependencies
run: |
pip3 install pyinstaller
pip3 install -r software/script/requirements.txt
- name: Run OS specific setup
run: ${{ matrix.pre_command }}
- name: Compile native code
run: |
cd software/src
mkdir out
cd out
cmake ..
cmake --build . --config Release
- name: Run PyInstaller
run: |
cd software
pyinstaller pyinstaller.spec
- name: Upload built client
uses: actions/upload-artifact@v3
with:
name: client-${{ matrix.name }}
path: software/*
path: software/dist/*
- name: Zip up client for release
run: ${{ matrix.bundle_command }}
- name: Upload release artifacts
+26
View File
@@ -3,8 +3,34 @@ All notable changes to this project will be documented in this file.
This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log...
## [unreleased][unreleased]
- Skip already used items `hf mf elog --decrypt` (@p-l-)
- Parallelize mfkey32v2 processes called from CLI (@p-l-)
- Added support for mifare classic value block operations (@taichunmin)
- Added regression tests (@doegox)
- Changed git version to version tag instead of dev tag (@taichunmin)
- Fixed 14A emulate bug and MF1 emulate bug (@spp2000 and @xianglin1998)
- Fixed `hf 14a raw` command raising `AttributeError` (@augustozanellato)
- Fixed ATS handling in tags that NAK RATS (@augustozanellato)
- Changed battery level curves based on experimental measures (@spp2000)
- Added multithreading on Nested and StaticNested (@xianglin1998)
- Fixed factory reset hanging (@augustozanellato)
- Changed fds_write_sync to take length in bytes instead of next multiple of 4 (@doegox)
- Fixed field LED when LF reading and HF cloning (@doegox)
- Added renaming of slot into "cloned" when having cloned an ID/UID with a button (@doegox)
- Fixed spurious LED in battery level, assigned battery level to long press B (@doegox)
- Changed `hw slot list` to display LF ID & HF anticol data, and names in the --short version too (@doegox)
- Added colors to CLI help (@doegox)
- Changed massively CLI, cf https://github.com/RfidResearchGroup/ChameleonUltra/issues/164#issue-1930580576 (@doegox)
- Changed CLI help: lists display and now all commands support `-h` (@doegox)
- Added button action to show battery level (@doegox)
- Added GUI Page docs (@GameTec-live)
- Changed CLI threads polling into blocking reads, to reduce CPU usage (@doegox)
- Added support for timestamped comments in CLI via `rem`, `;`, `%` or `#` (@doegox)
- Fixed watchdog trigger during `hw factory_reset` (@doegox)
- Added PyInstaller support for CLI client (@augustozanellato)
## [v2.0.0][2023-09-26]
- Added `hw slot nick delete` and DELETE_SLOT_TAG_NICK (@doegox)
- Changed APP_FW_VER now deduced from git tag vx.y.z (@doegox)
- Changed initial button wakeup from 4 to 8 seconds (@aramova)
- Added MIFARE Ultralight reading features (@FlUxIuS & @doegox)
+22
View File
@@ -14,6 +14,28 @@ Anywhere else: [Sneaktechnology](https://sneaktechnology.com) / [Aliexpress by R
Read the [available documentation](docs/README.md).
# Public Roadmap with reference to [Here](https://github.com/RfidResearchGroup/ChameleonUltra/wiki/Public-Roadmap)
Table for future functionality progress
---------------------------------
|No.|Functionality to achieve| Date | In Progress / Achieved ? | Contributors | RRG will reward |
|:--------------:|:--------------:|:--------:|:------------:|:------------:|:------------:|
|1| Adding DESfire Support|28/09/2023|:--------------:|:--------------:|:------------:|
|2| Adding Indala Emulation|28/09/2023|:--------------:|:--------------:|:------------:|
|3| Adding HID Prox 26 bit Emulation|28/09/2023|:--------------:|:--------------:|:------------:|
|4| Adding custom keys for t5577 read|28/09/2023|:------------:|:------------:|:------------:|
|5|:--------------:|:--------------:|:------------:|:------------:|:------------:|
|6|:--------------:|:--------------:|:------------:|:------------:|:------------:|
|7|:--------------:|:--------------:|:------------:|:------------:|:------------:|
|8|:--------------:|:--------------:|:------------:|:------------:|:------------:|
|9|:--------------:|:--------------:|:------------:|:------------:|:------------:|
|10|:--------------:|:--------------:|:------------:|:------------:|:------------:|
|11|:--------------:|:--------------:|:------------:|:------------:|:------------:|
|12|:--------------:|:--------------:|:------------:|:------------:|:------------:|
|13|:--------------:|:--------------:|:------------:|:------------:|:------------:|
|14|:--------------:|:--------------:|:------------:|:------------:|:------------:|
# Compatible applications
* [ChameleonUltraGUI](https://github.com/GameTec-live/ChameleonUltraGUI)
+139 -4
View File
@@ -1,15 +1,150 @@
## Get ChameleonUltraGUI
- [on Google Play](https://play.google.com/store/apps/details?id=io.chameleon.ultra) / [APK](https://nightly.link/GameTec-live/ChameleonUltraGUI/workflows/buildapp/main/apk.zip)
- [on Google Play](https://play.google.com/store/apps/details?id=io.chameleon.ultra) / [APK](https://nightly.link/GameTec-live/ChameleonUltraGUI/workflows/build-app/main/apk.zip)
- [on iOS](https://apps.apple.com/dk/app/chameleon-ultra-gui/id6462919364)
- [on Windows](https://nightly.link/GameTec-live/ChameleonUltraGUI/workflows/buildapp/main/windows-installer.zip) ([or without installer](https://nightly.link/GameTec-live/ChameleonUltraGUI/workflows/buildapp/main/windows.zip))
- [on Linux](https://nightly.link/GameTec-live/ChameleonUltraGUI/workflows/buildapp/main/linux.zip)
- [on Windows](https://nightly.link/GameTec-live/ChameleonUltraGUI/workflows/build-app/main/windows-installer.zip) ([or without installer](https://nightly.link/GameTec-live/ChameleonUltraGUI/workflows/build-app/main/windows.zip))
- [on Linux](https://nightly.link/GameTec-live/ChameleonUltraGUI/workflows/build-app/main/linux.zip)
- [on macOS](https://apps.apple.com/app/chameleon-ultra-gui/id6462919364)
## Page Breakdown
### Homepage
![CUGUI Homepage](./images/cugui-homepage.png)
Starting from the top left, you find
- the *Device Name*: `Chameleon Ultra` or `Chameleon Lite` depending on the device connected ;
- the *Disconnect* button: pressing this icon cleanly disconnects the Chameleon. It is recommended to use this button whenever possible ;
- the *Connected Port*: it tells you where and how the chameleon is connected, followed by how it is connected (*Connection Method*), which displays a USB or Bluetooth icon ;
- the *Battery Charge* icon: you can press it long to get more details. Note that it is refreshed only when reopening the Homepage ;
- the *Used Slots*: it displays how many out of the 8 slots are used ;
- the *Slot Changer*: the currently selected slot is highlighted with a red circle, while enabled slots are filled in. Everything else is a hollow circle. The arrows left and right allow you to change the currently selected slot ;
- the *Firmware version*: the version is pulled from the device displayed, as well as git commit information ;
- the *Check for updates* button: it compares the firmware with the one available on GitHub and then updates if a newer version is available ;
- the *Switch mode* button: use it to switch between reader and emulator modes. The icon will update accordingly ;
- the *Device Setting* button: it allows you to change settings concerning the device, like changing the animation mode.
### Device settings
![Device Settings](./images/cugui-devicesettings1.png)
![Device Settings2](./images/cugui-devicesettings2.png)
Top to bottom:
- *Enter DFU mode*: to enter the device DFU mode. Allows the user to take over ;
- *Flash latest FW via DFU*: download the newest firmware from GitHub, disregarding if the device is already up to date, and flash it ;
- *Flash .zip FW via DFU*: it allows the user to select a zip they would like to flash to the device ;
- *Animations*: choose if the device should play the boot-up animation when woken up by an external RFID field ;
- *Button config*: it allows you to define both short-press and long-press actions
- *BLE pairing* toggle: you can decide whether pairing with a BLE PIN is required or not. Enabling PIN increases security at the loss of convenience. You can define a *BLE PIN* once pairing is enabled and you can force forgetting about existing pairings with the *Clear bounded devices* option.
- *Reset settings*: it resets all device settings but does not wipe user data.
- *Factory reset*: **IT WIPES ALL USER DATA** and resets the device to factory settings.
### Slot Manager
![Slot Manager](./images/cugui-slotmanager.png)
The *Slot Manager* consists of 8 cards representing the 8 slots on the device.
The *RFID icon* in the top left corner can either be green or red, meaning the slot is enabled and disabled respectively.
The *Credit Card icon* displays the name and card type of the HF card in the slot.
The *Wi-Fi icon*, on the other hand, displays the name and card type of the LF card in the slot.
The *Gear icon* opens the slot settings. These settings can be changed per slot.
The entire card is also one big button, pressing anywhere on the card opens the select dialog for loading a card.
### Slot Settings
![Slotsettings](./images/cugui-slotsettings1.png)
![Slotsettings2](./images/cugui-slotsettings2.png)
The two rows at the top, labeled HF and LF respectively, display the names of the currently loaded cards. Next to them, the *X* clears them out of the slot. If both are empty, the slot will automatically be disabled.
Under *Slot Status* you can set if the slot is enabled or disabled.
The *Mifare Classic emulator settings* section allows you to toggle various behaviors:
- *Gen1A Magic Mode*: behaves like a gen1a magic card and allows writing to it using magic commands like the Proxmark3 `cload` ;
- *Gen2 Magic Mode*: behaves like a gen2 magic card, makes Block 0 writable ;
- *Use UID/SAK/ATQA from 0 block*: the Chameleon Ultra stores the UID and other anti-collision data independently of the card content. Enabling this setting tells the Chameleon to derive them from card content block 0. Only for MFC with 4-byte UID ;
- *Collect nonces (Mfkey32)*: it toggles nonce collection for mfkey32. When enabled you will be prompted to present the Chameleon to a reader. After you have collected nonces the *Present Chameleon to reader* message will change into a *Recover Keys from x nonces* button. Pressing this will start the recovery process ;
- *Write mode*: Please refer to the [firmware docs](./firmware.md).
### Search dialog
![Search Dialog](./images/cugui-searchdialog.png)
When using the GUI you may encounter a *Search* dialog. The dialog is structured as follows:
Top left you find the *Back* button, this will abort the selection and bring you back.
Near the end of the row, if it is a card search dialog, a filter option will show. This allows you to filter between *HF*, *LF* and *All* cards.
At the end you find a *X*, this X will clear the query.
You enter the query into the *textbox* on the top with the placeholder text "Search"
The search results get listed below. The Card or Wi-Fi symbol indicates if it is LF/HF. The color of the Icon is the user-defined color.
Listed also are the name and type.
Selecting the entry automatically closes the search.
### Saved Cards
![Saved Cards](./images/cugui-savedcards.png)
The *Saved Cards* page allows you to manage your cards and dictionaries.
You import a card or dictionary by clicking the *+* button in their respective half. This opens a select dialog. You may then either select a CUGUI Json file or a Bin file. A Json file gets imported immediately while a Bin file asks if the supplied data is correct before saving.
Once again, we got a card per card or dictionary. At the left you find the Icon for HF/LF with the user-defined color. To the left of that the card name, type and quick actions for edit, export and delete.
The Card is again one Big button, pressing it brings up the Slot info. It displays info about the selected item and also has the quick actions present at the bottom.
![Card Info](./images/cugui-savedcardinfo.png)
### Card Edit Menu
![HF Card edit](./images/cugui-editcard-HF.png)
![LF Card edit](./images/cugui-editcard-LF.png)
Depending on the selected card type the menu only displays options applicable to it.
At the top of the menu is the name and icon. Pressing on the icon allows you to change the color.
Right below is the drop-down for the type. You may switch between any type at will.
A bit lower again you find the UID, SAK, ATQA, ATS and all other options for the selected type. This form auto-validates, so you should not be able to save a invalid config.
And finally at the bottom are the save and cancel options, to save the changes and exits, or to cancel the operation with no changes.
### Settings
![Settings](./images/cugui-settings.png)
The App settings have their own page and consist of a few simple settings:
- *Sidebar Expansion*: Whether or not the sidebar shall be expanded or if the windows size should decide that
- *Theme*: Light/Dark or get it from the System
- *Color Scheme*: Allows you to choose a color you like for the app
- *Language*: Choose any of the languages available. Translating is done via our Crowding project.
- *About*: Displays simple info about the app, such as build number, contributors and people who have donated on Opencollective
- *Activate debug mode*: Don't, just Don't
## How to use MFKEY32
- set slot to mifare classic (by uploading an empty dump)
- set slot to MIFARE Classic (by uploading an empty dump)
- enable mfkey32 for that slot (toggle in slot settings)
- select slot and present ultra repeatedly to the reader in order to collect nonces
- after collecting some nonces, go back into slot settings and click recover keys
## Troubleshooting
### Font scaling issues on HiDPI screens
If you have font scaling issues (tiny fonts) with the Linux desktop app and a HiDPI screen, you can solve it by running the app as
```
GDK_SCALE=2 GDK_DPI_SCALE=0.5 /usr/local/lib/chameleonultragui/chameleonultragui
```
### Key recovery from this card is not yet supported
This error may occur when the card you are trying to recovery keys from is requiring a not yet supported recovery technology. You cannot tell the required recovery method from the outside.
You may be able to solve this issue by dumping the card with a Proxmark3 or Mifare Classic Tool (Mobile App) and then importing a bin file.
### Error: Invalid data length
This error may occur on windows devices and seems to be a deeper bug in the serial library.
Reconnecting the device may solve it, also make sure that the App and Firmware are up to date.
+75 -30
View File
@@ -40,13 +40,11 @@ Using ProxSpace to build the CLI is the easiest and most comfortable way to get
12. And the binaries with `cmake --build .`
13. Copy the binaries by running `cp -r ~/ChameleonUltra/software/bin/* ~/ChameleonUltra/software/script/`
13. Go into the script folder with `cd ~/ChameleonUltra/software/script/`
14. Go into the script folder with `cd ~/ChameleonUltra/software/script/`
14. Install python requirements with `pip install -r requirements.txt`
15. Install python requirements with `pip install -r requirements.txt`
16. Finally run the CLI with `python chameleon_cli_main.py`
15. Finally run the CLI with `python chameleon_cli_main.py`
To use after installing, just do the following:
@@ -76,7 +74,7 @@ Building natively is a bit more advanced and not recommended for beginners
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)
5. Download and install [python](https://www.python.org/downloads/). When asked, add to your path (small checkbox in the bottom left). Python 3.9 or above is required.
6. Choose a suitable location and open a terminal. Clone the repository with `git clone https://github.com/RfidResearchGroup/ChameleonUltra.git`
@@ -106,7 +104,46 @@ To run again after installing, just do the following:
### Linux
*Coming Soon*
Install the dependencies
- Ubuntu / Debian:
`sudo apt install git cmake build-essential python3-venv`
- Arch:
`sudo pacman -S git cmake base-devel python3`
Python 3.9 or above is required.
Run the following script to clone the Repository, compile the tools and install Python dependencies in a virtual environment.
```sh
#!/bin/bash
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
)
```
To run the client after installing, do the following:
```sh
cd ChameleonUltra/software/script
source venv/bin/activate
python3 chameleon_cli_main.py
deactivate
```
### MacOS
@@ -116,31 +153,42 @@ 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 -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`
```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 detection count`
- We need 2 nonces per key to recover
- Recover the key(s) based on the collected nonces: `hf detection decrypt`. Output example:
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.
- Download done (144bytes), start parse and decrypt
@@ -153,8 +201,5 @@ Now disconnect, go to a reader and swipe it a few times
```
- To clean the logged detection nonces: `hf detection enable -e0` then `hf detection enable -e1`
*More examples coming soon*
+2 -2
View File
@@ -65,7 +65,7 @@ The Chameleon can be awaken:
The white LED labeled RF lights up when it detects a field, again only if the active slot supports it.
In some situations, it can be cumbersome to wait for the boot-up animation. This is configurable, cf e.g. the CLI command `hw settings animation set -h`.
In some situations, it can be cumbersome to wait for the boot-up animation. This is configurable, cf e.g. the CLI command `hw settings animation -h`.
On a new Chameleon (or after a factory reset), 3 slots are defined, slot 1 holding both a HF and a LF:
@@ -116,5 +116,5 @@ We are using the [SoftDevice S140](https://infocenter.nordicsemi.com/index.jsp?t
## The User Data
The Chameleon has a reserved space of memory and flash where it stores application settings, active slot and slots configurations and data. This will not be overwritten by DFU updates and the data will only be reset by either issuing `hw factory_reset --i-know-what-im-doing` in the CLI or clicking `Factory reset` in a GUI.
The Chameleon has a reserved space of memory and flash where it stores application settings, active slot and slots configurations and data. This will not be overwritten by DFU updates and the data will only be reset by either issuing `hw factory_reset --force` in the CLI or clicking `Factory reset` in a GUI.
*Warning:* Settings and/or data might be reset to defaults if you downgrade the firmware version up to a version not supporting the newer format.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 32 KiB

Some files were not shown because too many files have changed in this diff Show More