3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

マイナンバーカードから顔写真データを読み込む

Last updated at Posted at 2023-05-17

マイナンバーカードから顔写真データを読み込む方法に関する覚書です。

基本4情報の読み込みについては Web で詳しい説明が見つかります。

DFを選択、そのDF内の PINファイルでPIN検証、その後、データを格納したEFファイルを読み込むことでマイナンバーや基本4情報は取得できます。

image.png

顔写真データの取得方法は go 言語プログラムが公開されています。

Windows で実行すると複数リーダが見つかったというメッセージが3回ほど繰り返し表示されて、プログラムが終了、顔写真データは取得できませんでした。しかし、そのソースコードを頼りに取得方法がかかれているソースコードをもとに顔写真データは取り込めました。

image.png

読み取ったデータ構造を VisualInfo 構造体で定義されている通りに分解していきました。

(myna/libmyna/visual_ap.go)
VisualInfo struct {
Header []byte asn1:"private,tag:33"
Birth string asn1:"private,tag:34"
Sex string asn1:"private,tag:35"
PublicKey []byte asn1:"private,tag:36"
Name []byte asn1:"private,tag:37"
Addr []byte asn1:"private,tag:38"
Photo []byte asn1:"private,tag:39"
Signature []byte asn1:"private,tag:40"
Expire string asn1:"private,tag:41"
Code []byte asn1:"private,tag:42"
}

先頭の5バイトからデータ全体の長さが分かります。これは構造体には含まれません。
ff 20 82 xx yy ( 0x20=32 全データ長 xx * 0xff + yy + xx )

後はレコードマーカとレコード長を頼りに、順番にレコードを取り出します。
データ長は、レコードマーカの次のバイトが 82 であれば、次の2バイトでレコード長をあらわしています。2バイトのBig Endianに1バイト目の値を加算します。 レコード長=xx * 0xff + yy + xx。
レコードの3バイト目が 82 以外であれば、その次のバイトがレコード長です(最大 0x1f )

Header レコード ( 0x21=33 データ長 xx )
df 21 xx

Birthday レコード( 0x22=34 データ長 xx )
df 22 xx

Sexレコード( 0x23=35 データ長 xx )
df 23 xx

PublicKey レコード( 0x24=36 データ長 xx )
df 24 xx

Name
df 25 82 xx yy( 0x25=37 データ長 xx * 0xff + yy + xx )

Addr
df 26 82 xx yy( 0x26=38 データ長 xx * 0xff + yy + xx )

Photo
df 27 82 xx yy( 0x27=39 データ長 xx * 0xff + yy + xx )

df 27が顔写真のレコードのようなので、データを保存すると先頭と末尾が JPEG2000 のタグなっていることが確認できます。

00 00 0c 6a 50 20 20 0d 0a 87 0a
..
ff d9

JPEG2000 対応のソフトでモノクロ写真が表示されました。

基本4情報と顔写真データを読み込む Windows プログラム(バイナリーのみ)を以下サイトで公開しました。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?