79 名前: 名無しさん@編集中 [sage] 投稿日: 2012/05/10(木) 16:32:39.91 ID:IwG7pPoh

BC01の先頭にカードID等の情報が入っているっぽいのは周知の事実だけど、
このあたりをいろいろいじってみて判明したこと。

BC01の0x20からの6バイトがカードID。
ここの6バイトをビット反転させて10進数に直せば意味がわかるはず。
その次の0x26がカードIDのチェックサム。カードIDを変更すると、それに応じてここも変える必要がある。

で、カードIDを偽装すれば他人のEMMも受信しまくりかも!?と思って、
放送波からEMM抜き出してその対象IDに偽装してEMMを食わせたところ、応答は「0xA107(EMM改ざんエラー)」。
なので、やはりカードID=Kmという単純な話ではなさそうということがわかった。(なお自ID宛てじゃないEMMを食わせると0xA1FEになるので、それとはまた違う反応)

で、BC01の先頭をよーく見てみると、カードIDを示す部分の後に、いかにも怪しげな10バイトぐらいのデータがあるじゃないですか。
明らかにここがKmっぽい感じがするので、とりあえずここをいろいろ改変してみたところ、
0x27からの8バイトが何らかのデータ(Kmじゃないかとほぼ確信)で、その次の0x35がそのチェックサムということが分かった。
で、この8バイトをいじくると自分宛のEMMも0xA107になるので、たぶんKmでビンゴ。

0x36もカードごとにユニークな数値だけど、これに関しては今のところ不明。

261 名前: 名無しさん@編集中 [sage] 投稿日: 2012/05/10(木) 21:37:21.64 ID:hr6Rk8Wl
>>79
BC01の0x20から8バイトを入力して、カードIDに変換と、
カードID(15桁)⇒8バイト(チェックサム付き)の変換コードが出来た。
これでごにょごにょしてみるお^q^