Skip to content

druserx/lector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Precisa de sudo no Linux para acessar o leitor USB diretamente via libnfc. Alternativamente configure udev rules para seu usuário.


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


Licença

MIT

About

Analisador e dumper de cartoes NFC — MIFARE Classic brute-force, dump, NDEF parser

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors