druserx/lector

GitHub: druserx/lector

Stars: 0 | Forks: 0

# Lector **Analisador e dumper de cartões NFC** focado em MIFARE Classic, escrito em C com libnfc. O nome vem do latim *lector* — "aquele que lê". A ferramenta foi desenvolvida para testes de segurança em sistemas de controle de acesso, catracas e cartões de transporte que usam MIFARE Classic com chaves fracas ou padrão de fábrica. _ _ | | ___ ___| |_ ___ _ __ | |/ _ \/ __| __/ _ \| '__| | | __/ (__| || (_) | | |_|\___|\___|\__\___/|_| nfc card analyzer | v0.2.7 ## O que faz - **Detecção automática** do tipo de cartão pelo SAK/ATQA (MIFARE Classic 1K/4K, Mini, Ultralight, DESFire, SmartMX) - **Brute-force de chaves** com banco de 64 chaves padrão coletadas em campo (NXP factory, MAD, NDEF, sistemas de transporte) - **Dump completo** de todos os setores do MIFARE Classic — Key A e Key B independentemente - **Análise do MAD** (MIFARE Application Directory) com identificação de AIDs conhecidos - **Parser NDEF** para Text Records, URI Records e Smart Posters (NFC Forum RTD) - **Identificação de chaves conhecidas** — mostra a origem quando reconhece uma chave default - **Hex dump** formatado com dump ASCII inline - Suporte a leitores via libnfc: ACR122U, PN532 (USB/UART), SCL3711 ## Requisitos # Debian/Ubuntu sudo apt install libnfc-dev libnfc-bin # Arch sudo pacman -S libnfc # hardware suportado (libnfc) # - ACR122U (mais comum, funciona bem) # - PN532 via USB ou UART # - SCL3711 # - qualquer leitor com driver CCID generico ## Compilando git clone https://github.com/druserx/lector cd lector make ## Uso # analise basica — detecta o cartao e tenta dump sudo ./lector # verbose: mostra hex dump de cada setor sudo ./lector -v # salva dump em arquivo sudo ./lector -o dump_cartao.bin # tenta parsear NDEF depois do dump sudo ./lector -n # forca tipo (util se o SAK estiver adulterado) sudo ./lector -1 # forca MIFARE Classic 1K sudo ./lector -4 # forca MIFARE Classic 4K ## Exemplo de saída [ CARTAO DETECTADO ] ───────────────────────────────────────── Tipo : MIFARE Classic 1K UID : A3:B2:C1:D0 (4 bytes) ATQA : 00 04 SAK : 08 [*] iniciando dump — 16 setores, 64 chaves no dicionario setor 00 [trailer: bloco 3] KeyA:ok KeyB:ok setor 01 [trailer: bloco 7] KeyA:ok KeyB:? setor 02 [trailer: bloco 11] KeyA:ok KeyB:? ... setor 15 [trailer: bloco 63] KeyA:? KeyB:? [ MAD - MIFARE Application Directory ] ───────────────────────────────────────── GPB versao : 1 InfoByte : 0x01 (publisher sector: 1) Setores com aplicacao: setor 01 AID: 0003 NFC Forum setor 02 AID: E001 NFC NDEF v2 [ RESUMO DO DUMP ] ═════════════════════════════════════════ Tipo : MIFARE Classic 1K UID : A3:B2:C1:D0 ATQA : 00 04 SAK : 08 Setores : 16 total / 14 lidos / 2 protegidos Setor Key A Key B Status ───── ────────────── ────────────── ────── 00 A0A1A2A3A4A5 ???????????? lido (4/4 blocos) [MAD Key A (NXP)] 01 D3F7D3F7D3F7 ???????????? lido (4/4 blocos) [NDEF Key A] ... 14 ???????????? ???????????? protegido 15 ???????????? ???????????? protegido ## Estrutura do projeto lector/ ├── src/ │ ├── main.c # CLI, fluxo principal │ ├── nfc_scan.c # init do leitor, polling, identificacao do tipo │ ├── mifare.c # dump MIFARE Classic, brute-force, MAD │ ├── ndef.c # parser NDEF (Text, URI, Smart Poster) │ ├── chaves.c # banco de 64 chaves default coletadas em campo │ └── relatorio.c # hex dump, tabela de setores, salvar em arquivo ├── include/ │ └── *.h └── Makefile ## Banco de chaves O banco em `src/chaves.c` inclui: - Chaves padrão NXP (factory, MAD Key A/B, NDEF) - Chaves de sistemas de transporte público pesquisadas - Chaves de controle de acesso comuns - Variações coletadas em testes de campo Identificação automática mostra a origem de chaves conhecidas (ex: `[MAD Key A (NXP)]`, `[ASCII: 123456]`). ## Limitações - MIFARE DESFire: detectado mas não há suporte a dump (usa ISO 7816-4 APDUs, trabalho futuro) - MIFARE Ultralight: detecção ok, dump de páginas em desenvolvimento - Nested attack e PRNG attack não implementados — chaves não encontradas no dicionário continuarão como `????????????` - Requer execução como root ou permissão no udev para acessar o leitor ## Aviso legal Esta ferramenta é para **testes autorizados** em dispositivos que você possui ou tem permissão explícita para testar. O uso em sistemas de terceiros sem autorização é ilegal. ## Referências - [libnfc — NFC Library](https://github.com/nfc-tools/libnfc) - [AN10833 — NXP MIFARE Type Identification](https://www.nxp.com/docs/en/application-note/AN10833.pdf) - [AN10787 — MIFARE Application Directory](https://www.nxp.com/docs/en/application-note/AN10787.pdf) - [NFC Forum NDEF Specification](https://nfc-forum.org/specs/) ## Licença MIT
标签:客户端加密