Skip to content

Instantly share code, notes, and snippets.

@remi
Last active March 2, 2022 14:32
Show Gist options
  • Save remi/e3aa2f78845ee13f706ed83aead5145f to your computer and use it in GitHub Desktop.
Save remi/e3aa2f78845ee13f706ed83aead5145f to your computer and use it in GitHub Desktop.
Extract JSON object from https://smarthealth.cards QR code
// Extract JSON payload from SHC QR code (without any kind of private/public key verification)
// Credits + inspiration
// https://github.com/dvci/health-cards-walkthrough/blob/main/SMART%20Health%20Cards.ipynb
// Usage
// $ node shc.js "shc:/01234569…"
const zlib = require("zlib");
// Extract the QR data from arguments
const data = process.argv[2];
// Convert the data to a JWT and extract its base64-encode payload
const payload = data
.split("/")[1]
.match(/(..?)/g)
.map((number) => String.fromCharCode(parseInt(number, 10) + 45))
.join("")
.split(".")[1];
// Decode the payload
const buffer = Buffer.from(payload, "base64");
// Uncompress the payload and print the result
zlib.inflateRaw(buffer, (err, result) => {
console.log(result.toString("utf8"));
});
@sylvainfilteau
Copy link

docker run -it --rm --name shc -v `pwd`/shc.js:/usr/src/app/shc.js node:16 node /usr/src/app/shc.js <qr code content>

@gregsadetsky
Copy link

Merci @remi! :-)

@007Quebec
Copy link

Salut jai le string jwt jaimerais le convertir en format shc :/ pour cree un code QR pouvez vous maidez

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment