Aucune description

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

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