iCopy-X v1.1.6 Released

Firmware v1.1.6 is out for the open-source iCopy-X. Contributors amec0e and Vost02 are behind this release: dumps can now be transferred directly to a ChameleonUltra/Tiny, renamed on the device or on a PC without breaking them, the card-size and UID handling behind Tag Info, Simulate, Write and Verify has been reworked to read from the dump files themselves, and two new plugins arrive alongside a text input field for the plugin UI. Grab it from the v1.1.6 release page.

Notable changes

Quality of Life

  • Added on-device dump renaming through a new KeyboardInput widget, reached from Dump Files then Tag Info by pressing DOWN (the button is not shown on the button bar).
  • Added an uppercase keyboard set of A-Z, 0-9, - and _, with characters not allowed in filenames refused and DEL always present.
  • Added rename_dump_set() so every file sharing a dump’s name (.bin, .json, .eml and others) is renamed together, with duplicate names refused and already-renamed files restored if any rename fails.
  • Changed Tag Info to read the values it needs from the dump contents when a dump no longer carries its device-generated name, keeping the previous filename-based behaviour when a file cannot supply a value.
  • Added public dump readers to appfiles (dump_uid, dump_mf1_size, dump_mf1_card, dump_mf1_block0, dump_mfu_uid, dump_t55xx_b0, dump_hf14a_uid, dump_json_card) so plugins can reuse them.
  • Fixed the Dump Files list shortening renamed files, for example FRONT-DOOR_2 listed as DOOR(2); device-created names keep their existing short labels.
  • Renaming is not offered for ICODE, Legic and FeliCa dumps, whose Tag Info still depends on the filename, or for old single-line LF dumps.

HF (High Frequency)

  • Fixed MIFARE Plus 2K dumps being handled as 1K, so only 16 of 32 sectors were written; they are now type 26 and written in full.
  • Changed the type 26 label in template.py from “M1 Mini 0.3K” to “M1 Plus 2K”.
  • Fixed renamed MIFARE Classic dumps taking their card size from the filename, which caused a renamed 4K dump to be treated as 1K; size now comes from the .bin length.
  • Fixed the loss of UID, SAK and ATQA for MIFARE Classic dumps without a matching .json, now taken from block 0.
  • Fixed Ultralight and NTAG dumps losing their UID, which made Verify report a failure even after a successful write.
  • Fixed Tag Info showing a blank UID for HF14A dumps, now read from the saved .txt.

LF (Low Frequency)

  • Fixed Tag Info showing T55xx block 0 as 00000000, now read from the 48-byte .bin.

Localisation

  • Added a _keyboard entry to data/lang/<code>.json so the keyboard layout comes from the language pack, falling back to English and then to the built-in layout.
  • Added the new rename strings to the English, French and Chinese language packs, and get_keyboard_layout() to resources.py.
  • Changed tools/plugin_i18n.py to extract the hint field.

Plugins

  • Added the input_text content type for plugin ui.json, a full-width word-wrapped editor with a reverse-video cursor, length, placeholder, value and hint options, wrapping by display width so full-width CJK text fits; input:delete, input:charset and input:clear now act in place, and input_hex is unchanged.
  • Added lib/card_notes.py, a note store keyed by family and UID at /mnt/upan/card_notes.json, resolving a card’s UID from the dump contents when the filename is no longer in device format.
  • Fixed a plugin whose entry_class is a BaseActivity subclass without a ui.json rendering a blank screen, by detaching the PluginActivity wrapper instead of calling finish().

Two new plugins ship with this release:

  • card_notes: browses dumps under /mnt/upan/dump/ and attaches or clears a note per card, showing list rows as NAME (note), with English, French and Chinese language files.
  • chameleon_dump: writes a dump into a slot on a Chameleon Ultra or Tiny and reads a slot back out as a dump over USB, auto-detecting the connected device and covering MIFARE Classic, NTAG213/215/216 and EM410x.

← All Proxmark News