Hallo Nobuddy,
ich habe vor ein paar Wochen ein wenig mit QRCodes & Python gespielt und für das Decodieren eines QR-Code das Modul pyzbar genutzt.
Der Code sieht so aus:
Code: Alles auswählen
from PIL import Image
from pyzbar.pyzbar import decode
result = decode(Image.open('code.png'))
#print(f"QRCode Daten: {result}\n\n")
data_utf8 = result[0][0]
data = data_utf8.decode("utf-8")
print(f"QRCode UTF8 Daten: {data}")
Um aus Daten ein QRCode zu machen, habe ich einen andere Modul genutzt: qrcode
Geht dann so:
Code: Alles auswählen
import qrcode
test_qrcode_data = "..."
test_qr_code = qrcode.make(test_qrcode_data)
test_qr_code.save("code1.png")
Mein kleines Projekt war das Auslesen des QRCodes auf dem Impfzertifikat. Ich hatte gelesen, daß das mit Python geht und dann habe ich das anhand ein paar Artikel im Internet versucht nachzuvollziehen und die Technik dahinter zu verstehen (zlib, base45, cbor2, cose). Hat ein paar Stunden gedauert, aber dann konnte ich den Inhalt in Klartext lesen - ist ja kein Geheimnis, was da drin steht und auch nicht verboten...
Am nächsten Tag habe ich probiert den QRCode aus den verschiedenen entkomptimierten und tw. entschlüsselten Teilen wieder zu erzeugen und auch das hat mit viel recherchieren und probieren wieder geklappt, d.h. die CovPass App hat den neuen QRCode als gütiges Zertifikat erkannt.
ABER, alle die jetzt meinen, man könnte damit sein digitales Zertifikat fälschen, die muss ich enttäuschen

Wenn man beim Zusammenbauen 1 Ziffer ändert, erkennt die App das Zertifikat als ungültig. Dazu bräuchte man neben nem öffentlichen Schlüssel auch einen privaten Schlüssel und die sind halt ... geheim. So soll es ja auch sein. Es gibt ne interessante und längere Diskussion auf Github darüber.
Falls Interesse besteht und die Moderatoren nix dagegeben haben, kann ich beide vollständigen Codes posten.
Grüße Andy