You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Animation 2 - Smart Card Access tool in action (on asciiname https://asciinema.org/a/475797)
256
+
257
+
## 5. Documentation
258
+
The documentation of the project is available in the `docs` folder. The documentation is written in Markdown format
259
+
and can be read directly on GitHub pages at the following link: [Smart Card Contactless Raspberry Pi GitHub Pages](https://amusarra.github.io/smartcard-contactless-raspberry-pi/)
260
+
261
+
Also, the documentation is available in PDF format at the following link: [eBook - Smart Card Contactless Raspberry Pi](https://bit.ly/3LkpkOt).
262
+
The source code of the documentation is available in the `docs/asciidoc` folder of the project.
263
+
264
+
The GitHub Pages are generated using the [MkDocs](https://www.mkdocs.org/) tool and the
265
+
[Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) theme using the GitHub Actions workflow
266
+
defined in the `.github/workflows/publish_doc_to_gh_pages.yml` file.
267
+
268
+
The eBook is generated using the [Asciidoctor](https://asciidoctor.org/) tool and in particular the Asciidoctor PDF.
269
+
The requirement to generate the PDF is to have the Asciidoctor PDF; the instructions for installing this tool are
270
+
available at the following link: [Asciidoctor PDF](https://docs.asciidoctor.org/pdf-converter/latest/install/).
271
+
272
+
The command to generate the PDF is as follows:
273
+
274
+
```bash
275
+
# Generate the PDF. The command must be executed from the root of the project.
276
+
# The output file is saved in the docs/asciidoc folder.
277
+
# The <ebook-file-name.pdf> must be replaced with the desired name of the PDF file.
Copy file name to clipboardExpand all lines: docs/asciidoc/chapters/02_descrizione_scenario.adoc
+1
Original file line number
Diff line number
Diff line change
@@ -25,6 +25,7 @@ Il processo di figura 3 mostra invece cosa succede quando l'ospite chiede di ent
25
25
26
26
image::room_access_process.jpg[title="Figura 3 - Processo di accesso alla stanza"]
27
27
28
+
<<<
28
29
Credo che tutti i processi illustrati (in figura 2 e figura 3) in notazione BPMN siano abbastanza esplicativi da non richiedere ulteriori approfondimenti. I Service Task sono gli elementi che saranno oggetto di nostro interesse per l'implementazione del software che fin da questo momento possiamo dividere in due macro componenti le cui responsabilità devono essere:
29
30
30
31
1. il setup della Smart Card (o chiave elettronica) in fase di registrazione dell'ospite presso la struttura alberghiera. All'interno della Smart Card sarà memorizzato l'identificativo di un documento di riconoscimento dell'ospite, sul database del sistema di gestione dell'albergo saranno invece memorizzati i dati anagrafici insieme ad altri dati necessari per associare la chiave elettronica all'ospite e alla stanza a lui assegnata;
La prima risposta di una Smart Card inserita in un lettore si chiama https://en.wikipedia.org/wiki/Answer_to_reset[ATR] (*Answer to reset*). Lo scopo dell'ATR è descrivere i parametri di comunicazione supportati, la natura e lo stato della carta. L'ottenimento di un ATR viene spesso utilizzato come prima indicazione che questa sia operativa, e il suo contenuto viene esaminato come prima prova che sia del tipo appropriato per un determinato utilizzo. Il lettore di Smart Card, il driver del lettore e il sistema operativo utilizzeranno questi parametri per stabilire una comunicazione con la scheda.
4
+
La prima risposta di una Smart Card inserita in un lettore si chiama https://en.wikipedia.org/wiki/Answer_to_reset[ATR] (*Answer to reset*). Lo scopo dell'ATR è descrivere i parametri di comunicazione supportati, la natura e lo stato della carta.
5
+
6
+
L'ottenimento di un ATR viene spesso utilizzato come prima indicazione che questa sia operativa, e il suo contenuto viene esaminato come prima prova che sia del tipo appropriato per un determinato utilizzo. Il lettore di Smart Card, il driver del lettore e il sistema operativo utilizzeranno questi parametri per stabilire una comunicazione con la scheda.
5
7
6
8
L'ATR è descritto dallo standard https://it.wikipedia.org/wiki/ISO/IEC_7816[ISO/IEC 7816-3]. I primi byte dell'ATR descrivono i parametri elettrici, seguiti da byte che descrivono le interfacce di comunicazione disponibili e i rispettivi parametri. Questi byte di interfaccia sono quindi seguiti da byte storici che non sono standardizzati e sono utili per trasmettere informazioni proprietarie come il tipo di scheda, la versione del software integrato o lo stato della scheda. Infine questi byte storici sono eventualmente seguiti da un byte di checksum.
7
9
8
-
Potremmo riassumere che l'**ATR contiene "un sacco di dati" che ci dicono vita morte e miracoli della Smart Card**. Per esempio, scopriamo di più sull'ATR `3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A` utilizzando il tool https://smartcard-atr.apdu.fr/parse?ATR=3B8F8001804F0CA000000306030001000000006A[Smart card ATR parsing] sviluppato da https://ludovicrousseau.blogspot.com[Ludovic Rousseau]. La figura a seguire mostra le informazioni estratte alcune delle quali:
10
+
Potremmo riassumere che l'**ATR contiene "un sacco di dati" che ci dicono vita morte e miracoli della Smart Card**.
11
+
12
+
Per esempio, scopriamo di più sull'ATR `3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A` utilizzando il tool https://smartcard-atr.apdu.fr/parse?ATR=3B8F8001804F0CA000000306030001000000006A[Smart card ATR parsing] sviluppato da https://ludovicrousseau.blogspot.com[Ludovic Rousseau]. La figura a seguire mostra le informazioni estratte alcune delle quali:
9
13
10
14
- tipo di Smart Card e in questo caso si tratta della MIFARE Classic 1K;
11
15
- produttore della Smart Card e in questo caso NXP;
@@ -14,6 +18,8 @@ Potremmo riassumere che l'**ATR contiene "un sacco di dati" che ci dicono vita m
Ludovic Rousseau ha fatto un ottimo lavoro tracciando dal 2002 un http://ludovic.rousseau.free.fr/softwares/pcsc-tools/smartcard_list.txt[gran numero di ATR] costruendo un vero e proprio database. Così facendo è possibile identificare una Smart Card dato il suo ATR. All'interno della lista sono presenti anche le "nostrane Smart Card" come la **TS-CNS** (https://www.agid.gov.it/it/piattaforme/carta-nazionale-servizi[Tessera Sanitaria - Carta Nazionale Servizi]) e **CIE** (https://developers.italia.it/it/cie[Carta d'Identità Elettronica]). È possibile utilizzare il comando `pcsc_scan` per ottenere informazioni di dettaglio sulla Smart Card, le stesse illustrate in figura 11. La figura 12 mostra l'output del comando menzionato da cui è possibile dedurre che la Smart Card analizzata è una CIE.
21
+
Ludovic Rousseau ha fatto un ottimo lavoro tracciando dal 2002 un http://ludovic.rousseau.free.fr/softwares/pcsc-tools/smartcard_list.txt[gran numero di ATR] costruendo un vero e proprio database. Così facendo è possibile identificare una Smart Card dato il suo ATR. All'interno della lista sono presenti anche le "nostrane Smart Card" come la **TS-CNS** (https://www.agid.gov.it/it/piattaforme/carta-nazionale-servizi[Tessera Sanitaria - Carta Nazionale Servizi]) e **CIE** (https://developers.italia.it/it/cie[Carta d'Identità Elettronica]).
22
+
23
+
È possibile utilizzare il comando `pcsc_scan` per ottenere informazioni di dettaglio sulla Smart Card, le stesse illustrate in figura 11. La figura 12 mostra l'output del comando menzionato da cui è possibile dedurre che la Smart Card analizzata è una CIE.
18
24
19
25
image::output_of_pcsc_scan_smart_card_cie.png[title="Figura 12 - Esempio di output del comando pcsc_scan che mostra le informazioni estratte dalla Smart Card, in questo caso CIE"]
4. https://packages.debian.org/bullseye/build-essential[Development Tools (make, gcc) (install or update via `sudo apt install build-essential`)]
10
9
11
10
Per questo genere di scenari non è assolutamente necessario provvedere all'installazione del sistema operativo in versione Desktop, consiglio pertanto di preparare e usare l'immagine di https://www.raspberrypi.com/software/operating-systems/[Raspberry Pi OS Lite (64bit)]. Per coloro che avessero bisogno di una guida su come installare questo sistema operativo, consiglio di seguire la guida ufficiale https://www.raspberrypi.com/documentation/computers/getting-started.html#installing-the-operating-system[Installing the Operating System].
12
11
13
12
L'installazione di Docker potrebbe essere anche opzionale; personalmente preferisco installare il database in forma di container. Più in avanti vedremo quale database ho scelto per questa soluzione.
14
13
15
-
Per approfondimenti sul tema Docker, consiglio la lettura del libro https://amzn.to/3tiyO1W[Docker:Sviluppare e rilasciare software tramite container] di https://www.linkedin.com/in/serena-sensini/[Serena Sensini] e la visione delle https://www.youtube.com/watch?v=wAyUdtQF05w[Pillole di Docker] sul canale YouTube di https://www.linkedin.com/in/mauro-cicolella-0b107076/[Mauro Cicolella].
14
+
Per approfondimenti sul tema Docker, consiglio la lettura del libro https://amzn.to/3tiyO1W[Docker:Sviluppare e rilasciare software tramite container] di https://www.linkedin.com/in/serena-sensini/[Serena Sensini] e la visione delle https://www.youtube.com/watch?v=wAyUdtQF05w[Pillole di Docker] sul canale YouTube di https://www.linkedin.com/in/mauro-cicolella-0b107076/[Mauro Cicolella].
0 commit comments