2016年03月20日

Felicaの非保護領域に任意のデータを書き込んでみる(VB.net)

おサイフケータイには、自由に読み書きできるFelicaのエリアが、16バイト×24ブロック(384バイト)あります。
felicalib.dllには書き込む手段も提供されているようなので試してみました。
ちなみに、modFelicaLib.vb のコメントを手直しするとこんな感じです。

'【関 数 名】felica_write_without_encryption
'【第1引数】[in] f felicaハンドル (felica構造体のポインタを指定する)
'【第2引数】[in] servicecode サービスコード
'【第3引数】[in] addr ブロック番号
'【第4引数】[in] *buf データ(16バイト)のポインタ
'【戻 り 値】エラーコード



ちょっとアプリをこしらえて、、、サービスコード70C9に試してみると、、、

felica_np_rw_sc.png


無事に書き込めました。

write_result.png


・・・384バイトかぁ・・・アイコン入れるとか・・・
posted by MON at 00:12| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2016年03月17日

Felicaで既知のサービスコードとブロック番号に書かれている文字列を読み取る(VB.net)



Felicaでちょっと遊んでいるのですが、とあるカードには、とあるサービスコードのとあるブロック番号に
とある文字列が書き込まれていて、それを読みだすといろいろ便利なことが出来そうです。
ということで、ここのページで公開されている「CFelicaLib.vb」に機能を追加しました。

    '=============================================
    '【関 数 名】read_string
    '【第1引数】[in]  Integer  サービスコード
    '【第2引数】[in]  Byte  ブロック番号
    '【戻 り 値】[out] String   文字列
    '---------------------------------------------
    ' 既知のサービスコードとブロック番号から文字列を読み取る
    '=============================================
    Public Function read_string(ByVal serviceCode As Integer, ByVal address As Byte) As String
        Try
            '------------
            ' エラー処理
            '------------
            If f_ptr = IntPtr.Zero Then
                Return ""
            End If

            '----------
            ' 変数定義
            '----------
            Dim rStr As String
            Dim buf(15) As UInt8

            '-------------------------
            ' 変数bufのアドレスを取得
            '-------------------------
            Dim gch As GCHandle = GCHandle.Alloc(buf, GCHandleType.Pinned)
            Dim b As IntPtr = gch.AddrOfPinnedObject().ToInt32

            '-------------
            ' 指定したサービス、アドレスから読み取り
            '-------------
            felica_read_without_encryption02(f_ptr, serviceCode, 0, address, b)
            rStr = System.Text.Encoding.ASCII.GetString(buf) 'HexToAsc(buf)

            '--------------
            ' メモリの解放
            '--------------
            gch.Free()

            '------------
            ' 結果を返す
            '------------
            Return rStr
        Catch ex As Exception
            MessageBox.Show(ex.Message, "read_str()")
            Return ""
        End Try
    End Function
 

作者の白執事様に感謝します。
posted by MON at 21:26| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2016年03月14日

プロクソン フライスマシン No.16000の修理

bfw36.jpg

最初は、モーター焼けかと思ってテスタで当たってみましたが正常でした。
トランスもAC38Vが出ていて問題なし、基板も焼損は見あたりませんでした。
スイッチを当たってみると、どちらも導通なしで、恐る恐るミノムシクリップで
バイパスしてみると、ブルンッと反応してれました。

秋葉で適当なスイッチを調達しても良かったのですが、プロクソンは良心的で
パーツの品番で取り寄せが可能です。
(フライスモーター No.20160 の、スイッチ 20160-18)
近所のホームセンターに依頼して、納期 約20日、価格は375円でした。

手持ちのドリルスタンド No.28606 + マイクロクロステーブル No.27100 が
何故かガタついてるので、リプレイスしたいのですけど………
置く場所がないな\(^o^)/
posted by MON at 23:23| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
【今是昨非】http://nomulabo.com/