Verifica Green Pass API

Salve a tutti,
Se il decreto legge dovesse passare avrei necessità di validare il Green Pass di un cittadino senza utilizzare l’APP ma magari con il suo CF.
Qualcuno sa se è in programma la realizzazione di un servizio come questo?
penso che molte aziende dovranno controllare se un cittadino ha o meno un Green Pass e farlo sempre e comunque a in presenza non è cosa banale

3 Mi Piace

Buonasera.
Non credo sia in previsione una modalità di verifica del Green Pass alternativa all’App.
Tenga conto inoltre che, per motivi di privacy, non credo sia nemmeno consentita l’associazione tra il CF e il certificato (salvo che per la generazione e il download): lo stesso, infatti, riporta in chiaro solamente il codice univoco identificativo (nel QR-code) dati personali strettamente necessari alla verifica dell’identità (nome, cognome e data di nascita).
L’unica modalità “tecnicamente” accettabile credo possa essere la verifica da remoto tramite codice identificativo ma, ripeto, non mi risulta vi siano le piattaforme per farlo né sia in progetto una loro realizzazione.

1 Mi Piace

Si il suo punto di vista mi è chiaro, sono anch’io dell’idea che non si cercherà per CF ma che, mi auguro, si possa validare il codice univoco e spero che venga restituita la data di scadenza dell Pass.
Se qualcuno di voi dovesse avere notizie di come poter fare questo tipo di validazione, vi sarei molto grato se mi aiutate a reperire informazioni.

Grazie Mille

Al momento, il Garante per la Protezione dei Dati Personali ha autorizzato solamente l’app VerificaC19 del ministero in quanto permette la validazione del pass in locale e mostrando i dati strettamente necessari al controllore.

Molto probabilmente non verrà mai realizzata la soluzione da te descritta e comunque, da quel che ricordo, solo le forze dell’ordine sono autorizzate ad usare l’app. Ai gestori di eventi, ristoranti… basta verificare che l’utente sia in possesso del pass.

e come potrebbero verificare il possesso del PASS senza l’APP ?

Nel PASS non è presente alcuna data di scadenza, sono presenti solo dati oggettivi Data e numero delle vaccinazioni, vaccino usato e composizione del ciclo vaccinale, oltre ai dati anagrafici.
E’ possibile scrivere un app che mostri tutti i dati contenuti nel pass che non sono ovviamente criptati (ma sono firmati), ma solo encoded Base-45 e compressi con ZLIB.

La scadenza è una scelta politica.

Ettore grazie mille,
mi son fatto un’idea molto più precisa ma adesso arriva il bello.
Prima va fatta decodifica Base-45 e successivamente decompresso con ZLIB o il contrario?
Sa dirmi dove posso trovare tale info?
Grazie Mille

Qui c’è un ottimo articolo.

C’è molto anche su GitHub

Qualcuno ha un idea?
Lavoro in C#
Leggo il QR code
tolgo il preambolo HC1:
Poi faccio decode Base-45
e cerco di fare unzip, ma non riesco ho sempre l’errore che il testo non è encodato con il giusto formato…
Suggerimenti?

string encoded = “6BFOXN%TS3DHPVO13J …”;

string Dec = encoded.FromBase45();
byte[] bb = Encoding.ASCII.GetBytes(Dec);
var Unzip = Decompress(bb);

public static Stream Decompress(byte[] data)
{
var outputStream = new MemoryStream();
using (var compressedStream = new MemoryStream(data))
using (var inputStream = new InflaterInputStream(compressedStream))
{
inputStream.CopyTo(outputStream);
outputStream.Position = 0;
return outputStream;
}
}

Il problema è con il QRcode del sito DDAy, io sono riuscito con questo:

HC1:6BFNX1:HM*I0PS3TLU.NGMU5AG8JKM:SF9VN1RFBIKJ:3AXL1RR+ 8::N$OAG+RC4NKT1:P4.33GH40HD*98UIHJIDB 4N*2R7C*MCV+1AY3:YP*YVNUHC.G-NFPIR6UBRRQL9K5%L4.Q*4986NBHP95R*QFLNUDTQH-GYRN2FMGO73ZG6ZTJZC:$0$MTZUF2A81R9NEBTU2Y437XCI9DU 4S3N%JRP:HPE3$ 435QJ+UJVGYLJIMPI%2+YSUXHB42VE5M44%IJLX0SYI7BU+EGCSHG:AQ+58CEN RAXI:D53H8EA0+WAI9M8JC0D0S%8PO00DJAPE3 GZZB:X85Y8345MOLUZ3+HT0TRS76MW2O.0CGL EQ5AI.XM5 01LCWBA.RE.-SUYH+S7SBE0%B-KT+YSMFCLTQQQ6LEHG.P46UNL6DA2C$AF-SQ00A58HYO5:M8 7S$ULGC-IP49MZCSU8ST3HDRJNPV3UJADJ9BVV:7K13B4WQ+DCTEG4V8OT09797FZMQ3/A7DU0.3D148IDZ%UDR9CYF

Eccomi di nuovo,
perdona il mio disturbo…
Ho controllato e a codifica e decodifica Base-45 funziona correttamente…
Quindi quello che posso immaginare è che la procedure di deflating non sia corretta, cosa hai usato per scompattare il dato?
Ho provato sia la tua stringa che il mio Green Pass ma nulla da fare
Confermi che il primo passaggio è il decode tolto il preambolo HC1: e successivamente il deflating?
Grazie Mille

Qui sotto puoi trovare sia la versione in JS che in Python, ci sono un mucchio di moduli da installare per entrambi.
Devi personalizzare il percorso del QR code in quello in JS.
Quello in Python lo prende dalla linea di comando.

Javascript

	

	const base45 = require('base45');
	const cbor = require('cbor');
	const fs = require('fs')
	const jpeg = require('jpeg-js');
	const jsQR = require("jsqr");
	const pako = require('pako');

	const greenpassJpeg = fs.readFileSync( '/mnt/c/Users/ettor/Desktop' + '/Pass.jpg');
	const greenpassImageData = jpeg.decode(greenpassJpeg, {useTArray: true});
	const decodedGreenpass = jsQR(greenpassImageData.data, greenpassImageData.width, greenpassImageData.height);


	const greenpassBody = decodedGreenpass.data.substr(4);

	const decodedData = base45.decode(greenpassBody);

	const output = pako.inflate(decodedData);

	const results = cbor.decodeAllSync(output);
	[headers1, headers2, cbor_data, signature] = results[0].value;
	const greenpassData = cbor.decodeAllSync(cbor_data);
	console.log (greenpassData);
	console.log (JSON.stringify(greenpassData[0].get(-260).get (1), null, 2));

Python

#python3 Pass.py Pass.jpg

#!/usr/bin/env python

import sys
import zlib
import pprint

import PIL.Image
import pyzbar.pyzbar
import base45
import cbor2

data = pyzbar.pyzbar.decode(PIL.Image.open(sys.argv[1]))
cert = data[0].data.decode()

b45data = cert.replace("HC1:", "")

zlibdata = base45.b45decode(b45data)

cbordata = zlib.decompress(zlibdata)

decoded = cbor2.loads(cbordata)

pprint.pprint(cbor2.loads(decoded.value[2]))

1 Mi Piace

Vuoi dire inflating!!! Forse è questo il tuo errore.

Perdonatemi ma leggere i dati del Green pass senza conoscerne lo status la vedo come un puro esercizio di stile, l’utilità è nulla senza conoscerne la validità.
Immagino che con la APP approvata dal Garante, in caso di ritiro del Green pass, venga segnalata la sua nullità.
Credo che a valle del decreto sia necessaria una verifica con altri mezzi, non è pensabile poter usare solo una APP scevra da altri processi (vedi bigliettazione di aerei, treni…)
RIccardo

Buongiorno a tutti,

Siccome sono passati diversi giorni (e norme) dalle ultime risposte volevo chiedere se c’era un modo ufficiale per verificare che un QR code sia vero e attivo mediante API.

Io ho un app e vorrei inserire la verifica del gree pass dentro l’app (o con codice qr, ma meglio con il codice univoco).

è possibile?

GRAZIE!

Ciao,
prova questo codice (a me funziona):

    public static Byte[] Unzip(byte[] bytes)
    {
        using (MemoryStream msi = new MemoryStream(bytes))
        using (MemoryStream mso = new MemoryStream())
        {
            using (ZlibStream gs = new ZlibStream(msi, CompressionMode.Decompress))
            {
                byte[] tempBytes = new byte[4096];
                int cnt;

                while ((cnt = gs.Read(tempBytes, 0, tempBytes.Length)) != 0)
                    mso.Write(tempBytes, 0, cnt);
            }
            return mso.ToArray();
        }
    }

Salve,
quindi se ho capito bene non esiste nessun modo (oltre alla app VerificaC19) per poter verificare se un Green Pass sia valido o meno. Nessun webservice, servizio o magari tramite API? Zero totale??

Grazie mille
Ciao DF

No. L’unico metodo, autorizzato dal Garante, è VerificaC19 perchè rispetta i requisiti in materia di Privacy.

BuonGiorno a tutti,
Abbiate pazienza ma attualmente la cosa sembra essere assolutamente inconsistente.
Mi spiego meglio l’app C19 NON sembra abbia nessun requisito di controllo On LIne proprio in virtù della fantomatica Privacy. ( Quindi se guardate i sorgenti delle due APP non troverete nessuna connessione live)
Ora immagino ma non è scritto da nessuna parte che se il certificato venga revocato sparisca dalle APP come Immuni i IO…
Ho letto nei vari form che dovrebbero mettere in piedi un servizio che passato ID univoco ( leggibile solo da QR Code ) si possa sapere se è ancora valido oppure no.
Ma attualmente non è stato ne confermato ne rilasciato.
Questa a causa dell’evidente falla di sicurezza che si ha nel momento in cui si faccia foto, copia, pdf etc etc del certificato.
Capisco lo sforzo che posso condividere ma allo stato dell’arte a mio avviso è solo un bel pasticcio.
Se avete maggiori info postate… Ma sarete d’accordo con me che questo modo di controllare non ha senso, va bene per un bar ma non certo per centri come palestre, piscine treni, etc etc

Buongiorno Simone,
in realtà la APP non fa nessuna verifica online sul singolo QRCODE ma quel che ho letto (molto velocemente) vengono aggiornate le chiavi di cifratura una volta al giorno e se non erro una lista dei codici scaduti.

Nella circolare che trovi nel seguente sito, viene spiegato leggermente meglio…leggermente!

Informazioni per gli operatori - Certificazione verde COVID-19 (dgc.gov.it)

Riccardo