37C3

Ohne Computer: Entwickler teilen Anleitung zum Lesen von QR-Codes

Marc Stöckel
31 Kommentare
Ohne Computer: Entwickler teilen Anleitung zum Lesen von QR-Codes
Bild: pixabay.com / artvizual

Für einen Workshop auf der Ende Dezember 2023 abgehaltenen Hackerkonferenz 37C3 hatten zwei Entwickler eine interaktive Anleitung zum händischen Dekodieren von QR-Codes erstellt. Diese ist nun für jedermann zugänglich und verdeutlicht auf spielerische Art und Weise, wie die quadratischen Codes aufgebaut sind.

Der Beispielcode ist wählbar

QR-Codes von Hand und ohne Einsatz eines Computers, Tablets oder Smartphones zu dekodieren mag zwar im Alltag unpraktisch erscheinen, für einige technisch interessierte Anwender kann das aber dennoch eine spannende Erfahrung sein. Zwei unter den Pseudonymen Piko und blinry auftretende Entwickler haben kürzlich eine interaktive Anleitung ins Netz gestellt, mit der genau das gelingt. Den Inhalt des QR-Codes, an dem der Vorgang erläutert wird, können Besucher der zugehörigen Webseite frei wählen. Alternativ lässt sich der Inhalt aber auch per Zufall generieren, ohne dass er dem Anwender vorab verraten wird. Damit verleihen die Entwickler ihrer Plattform sogar einen Hauch von Rätselspaß.

Der grundlegende Aufbau von QR-Codes

Zu Beginn der Anleitung wird zunächst auf ein paar Grundelemente eingegangen, die einen QR-Code auszeichnen. Dazu zählen beispielsweise die drei großen Blöcke, die in den Ecken jedes QR-Codes zu finden sind. Diese sind lediglich dafür da, QR-Code-Scannern die Erkennung zu erleichtern, beherbergen jedoch sonst keine kodierten Informationen. Sie sind durch leere Bereiche von den Datenfeldern abgegrenzt.

Darüber hinaus weist die Anleitung auf die gängigen Größen hin: Kleine QR-Codes bestehen aus 21 × 21 Pixeln, die als Module bezeichnet werden. Werden mehr Datenfelder benötigt, um die gewünschten Informationen zu kodieren, so steigt die Anzahl der Module in jeder Dimension jeweils in 4er Schritten. Der nächst größere QR-Code besteht also aus 25 × 25 Modulen, danach folgen 29 × 29 Module.

Daten werden im Zickzack gelesen

Um die Daten aus dem QR-Code dekodieren zu können, muss zunächst eine von acht verschiedenen Masken bestimmt werden. Einen Überblick über die verfügbaren Masken liefern die Entwickler in einem Cheat Sheet (PDF). Welche davon verwendet werden muss, lässt sich anhand spezieller Module aus dem jeweiligen QR-Code ablesen. Gelesen wird daraufhin in einem Zickzack-Muster, das immer zwei Spalten erfasst, beginnend in der unteren rechten Ecke. Die einzelnen Datenbits werden durch logische XOR-Verknüpfungen zwischen dem QR-Code und der zugehörigen Maske bestimmt.

Lesepfad eines QR-Codes
Lesepfad eines QR-Codes (Bild: qr.blinry.org / Screenshot)

Die daraus resultierende Zeichenkette enthält zu Beginn Informationen über die jeweils verwendete Kodierung sowie den Umfang der in dem QR-Code enthaltenen Informationen. In der interaktiven Anleitung kommt eine ASCII-Kodierung zum Einsatz, die anhand der am Ende eingeblendeten ASCII-Tabelle dekodiert werden kann.

Fehlerkorrektur zur Vereinfachung ausgeklammert

QR-Codes beinhalten zwar auch Daten für eine Fehlerkorrektur, wie diese im Detail funktioniert, erklären Piko und blinry jedoch nicht. „Wir kümmern uns hier nicht darum, weil wir den Code von Hand lesen wollen“, heißt es in der Anleitung. Die Fehlerkorrektur basiere auf ausgeklügelter Mathematik und sorge dafür, dass der QR-Code auch dann noch lesbar sei, wenn er teilweise beschädigt sei.

Wer sich für den Quellcode hinter der interaktiven Anleitung interessiert und möglicherweise zu dessen Entwicklung beitragen möchte, findet ihn in einem Repository auf Codeberg.