Tidak Ada Deskripsi

Eric Betts 4ece979e10 PULL_REQUEST_TEMPLATE 7 bulan lalu
.catalog f06097e57d sync readme 7 bulan lalu
.github 4ece979e10 PULL_REQUEST_TEMPLATE 7 bulan lalu
images 0939786adf Save epassport logos 8 bulan lalu
lib 7238894af2 Add com reading and asn1 parsing 9 bulan lalu
reference 37b252d2a2 reference material 9 bulan lalu
scenes a193ddf9a2 uppercase all letters in passport number 8 bulan lalu
.clang-format 9fe02b0a3e Clear history 9 bulan lalu
.gitignore 9fe02b0a3e Clear history 9 bulan lalu
CODE_OF_CONDUCT.md 16e0bfa0f8 CODE_OF_CONDUCT 7 bulan lalu
CONTRIBUTING.md 2472d5f5f4 Create CONTRIBUTING.md 7 bulan lalu
LICENSE b8c7803b36 Create LICENSE 8 bulan lalu
README.md 5c14da87b3 copilot readme 7 bulan lalu
SECURITY.md 8c3b9715df Create SECURITY.md 7 bulan lalu
application.fam 7581bc2191 more changelog items 8 bulan lalu
bsearch.c 88e7f838eb trying to use asn1c to decode DG1 9 bulan lalu
eMRTD.asn1 7238894af2 Add com reading and asn1 parsing 9 bulan lalu
memmem.c 89e36f2e4e Look for jpeg header in first 100 bytes of DG2 9 bulan lalu
passy.c 194c9778d1 For all other DG, grab the header and show that 9 bulan lalu
passy.h 9ea747ecc9 restructure UI 9 bulan lalu
passy.png 36d65b1f64 new icon 8 bulan lalu
passy_common.c 6c42d1b981 Fix for document numbers containing Q-Z 9 bulan lalu
passy_common.h 68c87dcbe2 Fix calculation of file length 9 bulan lalu
passy_i.h 80348d61d7 Restart NFC scanner is unhandled protocol is found 9 bulan lalu
passy_reader.c 81360b90d7 Correct fallback when dg2 image header can't be found 8 bulan lalu
passy_reader.h 8611f0508c Accept 4A protocol 9 bulan lalu
secure_messaging.c 7c05345f96 DRY up key diversification 9 bulan lalu
secure_messaging.h 633e3da57d handle dynamic passport number length 9 bulan lalu

README.md

Passy: Flipper Zero Passport Reader

Passy is a tool for reading electronic passports (ePassports/eMRTDs) using the Flipper Zero device. It extracts and decodes data securely stored in modern passports, designed for hobbyists, researchers, and security professionals.


Features

  • Reads and decodes ePassport data from a wide range of countries
  • Utilizes MRZ (Machine Readable Zone) information for secure access
  • Extensible for new country support—contribute your flag!
  • Advanced menu for debugging and exploring additional data groups (DGs)

Tested with the following countries

🇺🇸 🇨🇱 🇫🇷 🇬🇧 🇵🇭 🇷🇺 🇹🇼 🇺🇦 🇦🇿 🇨🇦 🇮🇹 🇪🇸 🇪🇪 🇨🇭

If it works for yours, submit a PR to add your country flag!


Usage

eMRTDs are secured to prevent unauthorized reading. The key for accessing the data is derived from:

  • Passport number
  • Date of birth
  • Date of expiry

Use the Flipper Zero to scan your passport’s NFC chip and enter the required information.


Limitations

  • Advanced menu is hidden unless Debug mode is enabled
  • Some data groups (DGs) are not fully parsed under "advanced" menu
  • Country coverage is limited (see above)

Development

Prerequisites

  • Flipper Zero device (updated firmware recommended)
  • ufbt for building
  • asn1c ASN.1 compiler (for protocol/data parsing)

Installation

Clone this repository:

git clone https://github.com/bettse/passy.git
cd passy

Build the ASN.1 code (optional, required for development):

asn1c -D ./lib/asn1 -no-gen-example -pdu=all eMRTD.asn1

Roadmap / To Do

  • Support PACE protocol
  • Add support for more countries' passports
  • Improve parsing of additional DGs

Contributing

Contributions are welcome! If Passy works with a new country, feel free to:

  1. Add your country’s flag to the list above
  2. Submit a pull request

License

MIT License


Acknowledgments

  • Inspired by the global ePassport community
  • Powered by Flipper Zero and open-source tooling