Skip to content
This repository has been archived by the owner on Sep 7, 2023. It is now read-only.

primitive scanner for EHC on raspberry PI 4 (documentation incomplete!)

Notifications You must be signed in to change notification settings

importPI19fromDHGE/emb-impf-public

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Über

Mit diesem Projekt wird ein primitiver Scanner von EU-Health-Certificates auf einem Raspberry PI realisiert. Dieses Dokument erhebt (noch!) keinen Anspruch auf vollständige Dokumentation.

Hardware

Raspberry PI 4 B, PI Camera v2, Ethernet, Monitor, Tastatur
Image: PI OS Lite via Raspberry Pi Imager
Alles als Root-User durchführen.

Software

Die Dateien wurden folgendermaßen angelegt:
verify-ehc/ wurde geklont (MIT-LICENSE).

Dabei wurde verify-ehc.py geringfügig manipuliert (siehe unten.) Denn, wichtig zu wissen:

verify_ehc.py only does the cryptographic verification and does not understand the payload

Quelle

Ordnerstruktur

path_to_folder/
├── verify-ehc/ #geklontes Repository
│   ├── requirements.txt
│   ├── trustlist-cbor.schema.json
│   ├── trustlist-json.schema.json
│   ├── verify_ehc.py #verändert
│   └── trust_list.cbor #heruntergeladen via command
└── emb-impf/ #geklontes Repository
    └── barcodescanner.py
etc/
└── init.d/
    └── impfe.sh

Im konkreten Fall gilt hier:

path_to_folder/=home/pi/

Konfigurationsschritte

Aktualisierung und Tools holen

apt update
apt upgrade
apt install python3-pip git -y

Installation Repositories

cd /home/pi
git clone https://github.com/panzi/verify-ehc
cd /home/pi/verify-ehc
pip3 install -r requirements.txt
cd /home/pi/
git clone https://[email protected]/nukerxy/emb-impf.git
pip3 install opencv-python

(oder apt install python3-opencv) ?

Änderungen an verify-ehc/

Modifikationen verify_ehc.py

verify_ehc.py wurde verändert. Diese Änderungen stehen so in der vorhandenen Datei. Dies nur zur Nachvollziehbarkeit:

Zu Beginn

from gpiozero import LED

in verify_ehc([...]]) -> bool:

Zu Beginn, timedelta wurde hinzugefügt, Zeile 1684
Dadurch ist ein Zertifikat erst 14 Tage nach Erstellung gültig (Hintergedanke: Impfzertifikat)
!!Vorsicht, möglicher Bug bei anderen Zertifikatstypen!!

if cert.not_valid_before is not None and issued_at + timedelta(seconds=1209600) < cert.not_valid_before:
        cert_expired = True

Ende der Funktion, Zeile 1700 ff.
Damit wird geprüft, dass die vorgesehene Anzahl Impfungen erfolgt ist

    fully_vaccinated=True
    if 'v' in ehc and 'vaccination' in usage:
       sd=ehc['v'][0]['sd']
       dn=ehc['v'][0]["dn"]
       if sd != dn:
           fully_vaccinated=False
    print(f'Valid Key Usage: {usage_valid}')
    print(f'Signature Valid: {valid}')

    return valid and not cert_expired and not revoked and usage_valid and fully_vaccinated

Am Ende der Datei, LED-Steuerung, Z 2450 ff.

        if certs is not None:
            ok=verify_ehc(ehc_msg, issued_at, certs, args.print_exts)
            led=LED(22)
            if ok:
                print("certificate valid, not expired")
                led.on()
                sleep(5)
                led.off()
            else:
                print("certificate not valid or expired or wrong key usage")
                for i in range(0,10):
                    led.on()
                    sleep(0.1)
                    led.off()
                    sleep(0.1)

Weitere Konfigurationsschritte

ausführbar machen, z.B.

cd path_to_folder/verify-ehc
chmod +x verify_ehc.py

Mit Internetverbindung, für Offline-Nutzung: Zertifikate speichern

cd path_to_folder/verify-ehc
./verify_ehc.py --certs-from AT,DE --save-certs trust_list.cbor

Dependencies nachinstallieren

apt install libqt4-test python3-sip python3-pyqt5 libqtgui4 libjasper-dev libatlas-base-dev

und noch dazu:

pip3 install opencv-contrib-python==4.1.0.25
apt install libzbar0

Kamera einrichten

raspi-config

Mit grafischen Menü Kamera aktivieren.

ggf ist

modprobe bcm2835_v4l2 / modprobe bcm2835-v4l2

nötig

Es gab eine komische Fehlermeldung bei modprobe bcm2835_v4l2

modprobe: ERROR: ../libkmod/libkomd.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/5.10.17-71+/modules.dep.bin'
modprobe: FATAL: MOdule bcm3825_v4l2 not found in directory /lib/modules/5.10.17-v71+

daher wurde

apt install --reinstall raspberrypi-bootloader
apt install --reinstall raspberrypi-kernel

ausgeführt, das hat es soweit repariert.

Autostart

cd /etc/init.d
nano impfe.sh
chmod 777 impfe.sh
sudo update-rc.d impfe.sh defaults

hilfreiche Git-Befehle

Initial

- git init
- git checkout branch
- git clone
- git pull
git config --global user.name "Jonathan"
git config --global user.email "[email protected]"
git push

wenn schon ein commit mit falschen Daten vorhanden war:

git commit --amend --reset-author

Aktuellen Stand speichern

git checkout branch
<Make some changes>
git add .
git commit -m "message"
git push [-f]

Sonstige (Zeilen einzeln lesen)

git status
git reset
git checkout -- file.extension
git push --set-upstream origin branchname
history > history.txt

About

primitive scanner for EHC on raspberry PI 4 (documentation incomplete!)

Resources

Stars

Watchers

Forks

Packages

No packages published