Skip to content
SDK for reading the NIS code from an Italian Electronic Identity Card (CIE) using Python
Python Shell
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
pkg Documentation Oct 8, 2017
.gitignore Aggiornato .gitignore e riordinata OpenCV/ Oct 8, 2017
.travis.yml Travis#3 Oct 8, 2017
LICENSE Initial commit Oct 4, 2017
README.md
main.py Merge branch 'master' of https://github.com/afilini/cie-nis-sdk Oct 8, 2017
requirements.txt Aggiunto README.md Oct 8, 2017
run_tests.sh Add asn1libTest Oct 8, 2017
test_requirements.txt

README.md

Python CIE3 SDK Build Status Open Source Love

Libreria leggera e portabile in Python per l'estrazione delle informazioni contenute nella CIE 3.0, con e senza autenticazione EAC.

Installazione

Per iniziare installa tutte le dipendenze tramite il gestore di pacchetti pip, con il comando:

pip install -r requirements.txt

Esempio

Il file main.py contiene un brevissimo esempio che mostra l'estrazione dei dati dalla CIE tramite autenticazione EAC.

Struttura

L'intera libreria è strutturata attorno alla classe CIEInterface che espone molti metodi utili per inviare comandi alla CIE.

Al momento della creazione di un'istanza di CIEInterface, il costruttore tenterà di aprire una connessione con un lettore NFC compatibile e si metterà in attesa di rilevare una carta. Il massimo tempo di attesa è attualmente di 3 secondi.

Una volta rilevata la carta il costruttore termina l'esecuzione.

I metodi a disposizione dell'utilizzatore sono i seguenti:

  • CIEInterface.readNIS(): Legge la sezione EF.ID_Servizi della carta, ovvero l'id univoco della carta.
  • CIEInterface.randomNumber(): Invia un APDU alla carta chiedendo al microprocessore di generare un numero casuale.
  • CIEInterface.mrtdAuth(birthStr, expireStr, pnStr): esegue l'autenticazione tramite i dati contenuti nell'MRZ, per poter accedere alle informazioni aggiuntive presenti sulla carta. I parametri sono stringhe, nel caso delle date in formato YYMMDD, mentre pnStr è semplicemente il numero della CIE.
  • CIEInterface.extractData(): estrae i dati aggiuntivi disponibili dopo l'unlock della carta. A secodna delle informazioni disponibili vengono estratti:
    • mrz: Stringa identica all'MRZ stampato sulla carta
    • additional_details: Informazioni aggiuntive sul cittadino, come ad esempio l'indirizzo di residenza
    • photo: bytearray contenete l'immagine in formato JPEG2000. Per comodità l'immagine viene anche salvata su disco nel file img.jpeg.

Supporto

La libreria è stata testata con successo su Python 2.7.14 su sistema macOS, ma vista la semplicità è molto probabile che funzioni nativamente anche su altre versioni.

You can’t perform that action at this time.