ICカードのIDmをPythonで読み取ってみる!「SONY」「RC-S300」

Python

ゆうです、こんにちは。
今回は、SONY製のカードリーダー「RC-S300」を使用して、FelicaカードのIDmを取得するプログラムを作成してみます。

開発環境について

OS:Windows11(23H2)
使用ソフト:Visual Studio Code
使用言語:Python

使用ライブラリ

今回は、スマートカードリーダーを操作するためのライブラリ「pyscard」を使用します。
下記のコードをコマンドプロンプトに貼り付けしインストールを行います。

pip install pyscard

プログラムの作成

1.ライブラリのインポート

from smartcard.Exceptions import NoCardException
from smartcard.System import readers

2.カードリーダーを取得

reader = readers()

# ↓Printで利用可能なリーダーを確認できます。
print("利用可能なカードリーダー:", reader)

3.カードリーダーの選択と接続

# 最初のリーダーを使用
connection = reader[0].createConnection()
# 接続
connection.connect()

4.IDmの取得

# カードのIDmを読み取るコマンド
GET_IDM_APDU = [0xFF, 0xCA, 0x00, 0x00, 0x00]

# コマンドを送信してIDmを取得
response, sw1, sw2 = connection.transmit(GET_IDM_APDU)

5.IDmを表示させる

# ステータスコードが正常な場合、IDmを表示
if sw1 == 0x90 and sw2 == 0x00:
    idm = response
    idm_hex = ''.join(format(byte, '02X') for byte in idm)
    print("カードのIDm:", idm_hex)
else:
    print("カードのIDmを取得できませんでした")

全体の流れ

def read_felica_lite_idm():
    try:
        # カードリーダーの取得
        reader = readers()
        print("利用可能なカードリーダー:", reader)

        # 最初のリーダーを使用
        connection = reader[0].createConnection()

        # 接続
        connection.connect()

        # Felica Lite-SカードのIDmを読み取るためのコマンド
        GET_IDM_APDU = [0xFF, 0xCA, 0x00, 0x00, 0x00]

        # コマンドを送信してIDmを取得
        response, sw1, sw2 = connection.transmit(GET_IDM_APDU)

        # ステータスコードが正常な場合、IDmを表示
        if sw1 == 0x90 and sw2 == 0x00:
            idm = response
            idm_hex = ''.join(format(byte, '02X') for byte in idm)
            print("Felica Lite-SカードのIDm:", idm_hex)
        else:
            print("Felica Lite-SカードのIDmを取得できませんでした")

        # 接続を解除
        connection.disconnect()

    except NoCardException:
        print("カードが読み込めませんでした")

if __name__ == "__main__":
    read_felica_lite_idm()

Visual Studio Codeでコードを張り付けて実行すると、
カードのIDmがコンソール画面に表示されます。


jimorage

ゆうです!こんにちは!
普段は工場の社内SEとして勤務しています。
主に、プログラミング関係と愛車のカスタム記録などを日記としてブログを書いています✐

”無いものは作る”という自分の中のスローガンをたてて日々色々な事に取り組んでいます!

jimorageをフォローする

コメント

タイトルとURLをコピーしました