Linuxシステムでカーネルパニック(オペレーティングシステムを停止させる重大なシステムエラー)が発生した際、一部のディストリビューションでは画面にQRコードを表示します。このQRコードには通常、特定のパラメータ(多くの場合「z」とラベル付けされる)を含むURLが含まれており、そこには圧縮されたクラッシュログが格納されています。この仕組みにより、開発者やユーザーはモバイルデバイスやカメラで画面をスキャンするだけで、クラッシュしたマシンの状態を迅速にキャプチャすることができます。

この画像は、データ抽出のためにQRコードが表示されるカーネルパニックの物理的な現れを説明しています。
これらのQRコード内の「z」パラメータは、リトルエンディアンのバイトを表す一連の10進数として構成されています。具体的には、データは7バイトの圧縮データに対応する17桁の10進数の塊としてエンコードされています。Pythonスクリプトを使用すると、ZXingReaderというツールで画像をスキャンして生成されたURLを解析することで、この情報の抽出を自動化できます。スクリプトはURLのクエリ文字列またはフラグメント内から「z」パラメータを特定し、10進数の塊をバイト配列に変換し、その後zlibライブラリを使用して最終的なログを解凍します。
ローカルデコードスクリプトを使用する大きな利点はプライバシーです。スクリプトは画像のスキャンから解凍まですべての操作をユーザーのローカルマシン上で行うため、クラッシュログが外部サーバーに送信されることはありません。これは、カーネルダンプに機密情報が含まれる可能性のあるシステムにとって特に重要です。この方法を使用するには、ユーザーのシステムパスにPython 3とZXingReaderユーティリティがインストールされている必要があり、これによりクラッシュした画面の写真から直接読み取り可能な`panic.log`ファイルを生成できます。このスクリプトはデータの処理に堅牢な方法を提供しますが、現在、どの特定のLinuxディストリビューションやカーネルバージョンがパニックレポートにこの正確なエンコード形式を採用しているかは不明です。