2024年5月24日金曜日

Mifare NFCのクローンを作る方法(Switchbot キーパッド対応)

  社員証のMifareカードをSwitchbotの家のキーパッドに登録したのだが、MifareなのでiPhoneに入れ込むことが出来ない。

そこで、NFCタグシールを買ってこれをケースに貼って利用と思ったので、社員証をコピーしないといけなかった。

この方法がよくわからなくてとりあえず物色してPCR532というBluetooth対応リーダーをアリエクにて購入。合わせてMagic TAGシールも購入。

アフィリンク貼っときます:


多分こんなのでも動くと思いますがやったことないので不明:アマゾン(アフィリンク)

ついてくるソフトはよくわからずなんかマルウェアも入っていそうだったので、Android端末で検索したところMifare Classic Toolというのがあったのでこれをダウンロード。

これでREAD TAGをして、WRITE TAGをしてみたがうまく動かず。

CLONE UIDでクローンしてみたが、やはりうまくいかず。

色々検索したところ、pn532-clonerというサイトを発見。ソフトをダウンロードすると、なにやら暗号化されている場合、解除キーを総当りで探す機能がついていた。

さっそくやってみたら、1時間ぐらいでキーが6つ見つかった。

しめしめと書き込みを行おうとすると、unsupported tagと表示されて書き込めない。

持っているタグ全部やってみたがだめ。マニュアルをみるとGen3とGen2のみらしい。自分が持っているのは何かよくわからないが、アリエクで再度物色するとGen2のものを発見したのでそちらを即ポチ。

とりあえずGen2 TAGが来るまでは別のTAGで開けれるようにしようと思い登録したが、本体に貼ってからケースはめたら開かない。ケース外した状態でもだめ。ケースの上に貼ると反応する。アルミホイル挟んだり色々したけど結局なにやっても駄目。どういう原理なのか詳しい人いたら教えてほしい。

このMifare Classic Toolというソフトを眺めていると、KeyファイルというものをDUMP時に選択できる様になっていた。中を除くと鍵の辞書ファイルだった。ってことは、、ってことでpn532-clonerで見つけ出したキーを辞書ファイルを追加で作成して書き込んで、DUMPしたところ問題なく完了。書き込みしたところBINGO。Switchbotでもちゃんと開けることが出来ました。

しかしこのデータ、もしかしたらSwitchbotのものなのかもしれない。会社の方はどうなるかまだ試していないからよくわからないけど、ワンチャンこんな作業必要なくてUIをCLONEすれば良いだけなのかもしれない。

ちなみにちゃんと解読したデータが入っていないタグはSwitchbotで再登録できなかった。すでに同じタグが登録されている、と出ました。開けるためにはクローンされていないことを確認するために別のデータをSwitchbotが登録時に入れているのかもしれない。

面倒なので登録したあとのブランクカードの中身確認とかはしておりません。


さすがにわかりにくいので追記

PCにて

pn532-clonerを実行

ダウンロードはここで:https://github.com/jumpycalm/pn532-cloner

https://github.com/jumpycalm/pn532-cloner/releases/tag/v1.1

PN532-Cloner-Win-x64.exe


実行して、「r」を押すとBruteforceしてくれる。表示されるキーはメモっておくこと。

大体30分ぐらいかかります。


Android端末にて

Mifare Classic Tool

https://play.google.com/store/apps/details?id=de.syss.MifareClassicTool&hl=ja

辞書ファイルを編集して、上記メモったキーを書き込む。

Edit/Add Key fileでできると思われます。

つぎに、Dumpを取ります。Read Tagだったかな。なんか名前つけて保存。

次、UIDをクローンします。Tools内にあるClone UIDで実行。元のUIDを読み取って、

新しいカードに書き込みます。

CLONE UID xxxxxxxx

GENERATE BLOCK 0 and clone UID

をタップ

完了したら、タグを書き込みます。

「Write Tag」タップ

「Write Dump(Clone)」をタップ

「Select Dump」で 上記Dumpしたファイルを選択

「Select All」⇒「OK」をタップ

キーの選択画面では、全部選択しました。

「START mapping and write dump」をタップ

これで書き込まれます。


新しいタグをリーダーに当てるとちゃんと鍵開きました。


いや、Switchbotなら普通に登録すればいいんですが、例えば会社のカードをiPhoneに貼り付けたいとなるとこんなシール型のが必要になりますんで。。。




2023年6月1日木曜日

Umdigi Bison Pro Root化

結構前に書いたのがなぜか公開されていなかったので今更公開 2024/10/24


  UMIDIGIのBison Proを今更ながら入手した。最近色々と値上がりしているので2万円以上の価格になってしまっているのが残念だがまだまだ安い部類になっている。ただ今買うならBison 2 PROなどの選択枠もあるだろう。

Root化は最近行っていなかったが、基本的にUMIDIGIはMagiskを使えばできるので、他の機種でもこれを参考に出来るのではないかと思っている。


まず大まかな流れ:


Magiskをインストールして、起動する。

システムの状況を確認する。

adb等をダウンロードする。

ドライバをダウンロードしてインストールする。(MTK ALL)

ROMをダウンロードする。

ROMを展開してboot.imgを端末に保存する。

Magisk でパッチを当てる。

パッチを当てた.imgををPCにコピーする。

開発者ツールを有効化する。

USBデバッグ及びブートローダーの解除を行う。

fastbootへ移行し、フラッシュする。

再起動してMagiskを再インストールして起動する。

Magiskの最終設定を行って再起動を掛ける。


Magiskのインストールは、下記URLから行うこと。

https://github.com/topjohnwu/Magisk/releases

ここにある 「Magisk-v25.2.apk」 をBison Proでまずダウンロードする。

新しいバージョンがあればそちらをダウンロードするとよい。


adb等のダウンロードは下記URLからダウンロードしてインストールするのがいいだろう。

https://developer.android.com/studio/releases/platform-tools?hl=ja

他にもいろいろサイトがあるのでググってみるとよろしい。


MTK USBドライバのインストール

https://mtkusballdriver.com/download/mtk-usb-v1-0-8






2020年1月29日水曜日

Microsoft Remote Desktop for Macで起こる日本語入力の相違を改善する方法

Microsoft Remote Desktop for Macでは、普通に使うと特に問題ないが、環境によっては文字入力が正常に行えないという現象がおこる。

1. USキーボードっぽい入力になる。
2. バックスラッシュ(¥)がおかしい。
3. 英数・かなで日本語入力を切り替えたい。

USキーボードになるという話はググればよく出てくる。自分英語になってしまっていたので、仕方なくkarabiner-elementにて置き換えていた。これを行うと、RDPのパスワード入力で@マークなどが入力できなくなったりする問題があり、コピペをしたりしていた。
ある時、違うWinマシンにログインした時に、入力がおかしくなった。色々試すと、karabiner-elementを終了させると問題なく入力されることに気づいた。だがいつも使っているマシン上では、karabiner-element無しではちゃんと入力できない。となると、このマシンがおかしいのでは?と思って色々確認していった。

設定などは全て日本語になっていた。レジストリのKeyboardTypeOverwriteとか正常だ。
だが実はそこ以外に問題があることに気づいた。

問題はこいつだった
コンピューター\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411


Layout File が 「kbdjpn.dll」になっていた。

他のWinマシンでは、「kbd106.dll」になっていたため、これを変更して再起動。

再起動後、karabiner-elementを起動していなくても問題なく入力できるようになった。



2. バックスラッシュがおかしい問題

Windowsのバックスラッシュは、日本語Winでは円マークになる。ディレクトリを指定するときにこの円マークを使うのだが、コマンドラインでは表示は問題ないのに、エラーが出ていた。Explorerでは問題ない。
この問題は、ユニコードの円マークが入力されているのが問題である。option+円マークを入力すると、問題なく入力できることがわかったため、コマンドラインでは、option+¥を入力するようにした。
karabiner-elementでoption+¥を送るようにしたら、Explorerでは¥が入力されなくなってしまった。


3. 英数・かなで日本語入力を切り替えたい

これはkarabiner-elementを使って解決した。

「英数」または「かな」で、IMEのON/OFFができればいいと考えたので、次のようにComplex modificationルールを作成した。

 
        {
          "type": "basic",
          "description": "Kana",
          "from": { "key_code": "lang1" },
          "to": [
            {
              "key_code": "lang2",
              "modifiers": [ "left_alt" ]
            }
          ],
          "conditions": [
            {
              "type": "frontmost_application_if",
              "bundle_identifiers": [
                "^com\\.microsoft\\.rdc\\.macos$"
              ]
            }
          ]
        },
        {
          "type": "basic",
          "description": "Kana",
          "from": { "key_code": "lang2" },
          "to": [
            {
              "key_code": "lang2",
              "modifiers": [ "left_alt" ]
            }
          ],
          "conditions": [
            {
              "type": "frontmost_application_if",
              "bundle_identifiers": [
                "^com\\.microsoft\\.rdc\\.macos$"
              ]
            }
          ]
        }

とりあえず、IMEのルールと、¥をoption+¥に置き換えるサンプル設定ファイルを下記に示すので、これを「~/.config/karabiner/assets/complex_modifications」内に「rdp-ime.json」などという名前で保存して、karabiner-elementからロードして有効化すれば使えるようになるはずだ。
{
  "title": "RDP Keyboard fix by r3wt3d",
  "rules": [
    {
      "description": "RDP IME on/off",
      "manipulators": [
        {
          "type": "basic",
         "description": "Kana",
          "from": { "key_code": "lang1" },
          "to": [
            {
              "key_code": "lang2",
              "modifiers": [ "left_alt" ]
            }
          ],
          "conditions": [
            {
              "type": "frontmost_application_if",
              "bundle_identifiers": [
                "^com\\.microsoft\\.rdc\\.macos$"
              ]
            }
          ]
        },
        {
          "type": "basic",
         "description": "Kana",
          "from": { "key_code": "lang2" },
          "to": [
            {
              "key_code": "lang2",
              "modifiers": [ "left_alt" ]
            }
          ],
          "conditions": [
            {
              "type": "frontmost_application_if",
              "bundle_identifiers": [
                "^com\\.microsoft\\.rdc\\.macos$"
              ]
            }
          ]
        }
      ]
    },
    {
      "description": "Backslash fix",
      "manipulators": [
        {
          "type": "basic",
          "from": {
            "key_code": "international3",
            "modifiers": {
              "optional": [
              ]
            }
          },
          "to": [
            {
              "key_code": "backslash",
              "modifiers": [ ]
            }
          ],
          "conditions": [
            {
              "type": "frontmost_application_if",
              "bundle_identifiers": [
                "^com\\.microsoft\\.rdc\\.macos$"
              ]
            }
          ]
        }
      ]
    }
  ]
}


2017年11月11日土曜日

Sonoff をファームウェアアップデート無しでコントロールする方法

SonOffは中国ITEAD Studioが発売している非常に安価なWifiリレーである。
大体600円で買えるといえばお得感がすごくあることがわかると思う。
主に照明のON/OFFに使っているが、他にも色々と使い方はあるだろう。

さてこのデバイスはESP8266を利用しており、Espuna、ESPEasyなどのカスタムファームウェアが存在してMQTTに対応させてホームコントロールデバイスとしてDIY愛好家に広く愛されている。しかしシリアル接続するための端子を半田付けしたりする必要があり、敷居はそれなりに高かった。

OTAに対応しているため、この方法を用いてファームウェアの改造をする方法も存在する。SonOTAなどがそれである。
しかしこれもBootloaderの変更ができなかったりと一長一短あるようだ。

自分は半田ごてを利用する方法はあまり好きではない。
OTAを検討したが、まだ問題があるため違う方法を探って来たのだが、海外のブログに面白い記事があったのでそちらを検討した。このブログの方法とは、eWelinkというアプリが行うプロトコルを擬似的に行い、サーバーを自分のサーバーに設定して自分のサーバーでコントロールするという方法だ。
この方法だと自分でプログラムが書けるため、様々なプラットフォームに対応可能である反面、eWelinkを利用することはできなくなる。eWelinkというアプリはそこそこ良くできているため使えなくなるのは惜しいが、いろんな会社から出ているデバイスをそれぞれのアプリで利用する方法は正直ユーザーに優しくない。
一つや二つならまだしも大量にあるIoTデバイスをそれぞれのアプリで操作するのはすごく時間がかかるし混乱する。どうせなら一つのアプリで全部動かしたい。できたらHomekitにも対応したい。ということでこの記事の内容に沿って作業しようと思って読み進めた。
しかしここで書かれているnode.js用のコードはそのままでは動かない。./wlan.js というファイルが読み込まれているが、これが公開されていない。他の人もコメントを見ると同様に指摘している。自分でそのコード部分を書くとなると時間もかかるので、コードの内容を理解して自分で一から作るかなと思ったのだが、よくコメントを読むと、最低限動くようにしたとgitで公開している人がいた。それがこちらだ。

https://github.com/mdopp/simple-sonoff-server

ざっと目を通して、さっそく家のraspberry piにクローンしてみた。

git clone https://github.com/mdopp/simple-sonoff-server


実行するにはsonoff.config.jsonを変更する必要がある。これは各環境に合わせるのだが、
routerと書かれている部分はSSIDやパスワード等のWifiの情報で、serverと書かれている部分は自分で設置したサーバー(raspberry pi等)である。

簡単に実行したらまずサーバーを起動しておく。

node.jsをインストールしていない人は

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs

等としてインストールするといい。ここを参考にするといいだろう。

これが終わったら必要なモジュールをインストールする。

nodejsなんて使ったことないので適当にクローンしたディレクトリ内で

npm install

としてみたところ、勝手に色々インストールしてくれた。

次にサーバーの起動だが、起動は結構簡単。

node sonoff.server.js

で起動ができる。しかしこのままだとフォアグラウンドで実行されてしまうので、デーモン化する必要がある。

これはpm2というコマンドでできるようだ。

npm install pm2
としてインストールできる。

pm2 start sonoff.server.js
とするとバックグラウンドで実行される。ログを表示するにはpm2 log sonoff.server とすればよいため簡単である。

再起動時にも勝手に起動して欲しい場合は、
pm2 startup
と実行すれば勝手に起動してくれるようになる。

さてサーバーも起動したのでクライアントの登録に取り掛かる。

クライアントにはnmcliというコマンドを利用してwifiを探すようなので、これをインストールしておく。NetworkManagerになるのだが入っていない可能性があるためapt-getなどでインストールする。
NetworkManagerを利用するには/etc/network/interfacesでwifi関係をコメントアウトして、/etc/NetworkManager/NetworkManager.conf内のmanaged=falseをmanaged=trueに変更して再起動する。
再起動したら
pm2 list
と実行して先ほどのサーバーが起動しているかどうか確認しておくとよい。

準備が整ったので、
node sonoff.setupdevice.js
と実行する。
検索ループに入るので、SonOffのボタン長押しをして高速点滅状態にして待っておく。
1分程度で設定が完了し、以降インターネットに接続することなくこのデバイスはコントロールができるようになった。

コントロールの仕方だが、curlなどでアクセスすることで可能になる。
curl http://server:1081/devices
 とすると登録されているデバイスの一覧が表示される。
curl http://server:1081/devices/deviceID
(デバイス一覧取得時に表示される id: に書かれている数字) とするとそのデバイスの状況だけが表示される。
また、
curl http://server:1081/devices/deviceID/on
 とすると、リレーが切り替わり通電され、最後をoffにすると切電される。

という感じでさくっと動くようになった。

さてこれをどうするかというと、ここまでできれば工夫次第。

Domoticzを利用してバーチャルデバイスにスイッチを作成して、動かすことは可能なのことは試してある。
Homekitで動かすためにHomebridgeを利用したりすることも可能だろう。
Home-AssistantやOpenHABを利用することも可能だろう。

自分の家ではHomebridgeを利用してiPhoneのHOMEを利用していたが、リモコンの
操作などもしたくなってきたのでDomoticzで環境を構築しようかと思っている。


2017年3月30日木曜日

ゼルダの伝説 ブレス オブ ザ ワイルド amiiboまとめメモ

自分で購入しているものの検証を行なって、アップデートしています。
持っていないものは2chのスレッドを参考にしたり、アメリカのサイトを参考にしたり。

・amiiboを使う時には機内モードがONの場合には使えません。
・各amiiboの利用回数は1日1回のみに制限されています。
・レアアイテムが宝箱から出る時には、アイテム表示時に音楽が変わります。
・樽を落とすamiiboは、爆弾樽が出る場合もあります。その上に宝箱が落下して
爆発炎上、宝箱消失ということもありました。なるべく平らな場所で行うのがいいでしょう・・・
・レアドロップの武器は図鑑登録不可の模様
・レアドロップものも複数出る。捨てれないが125ルピーで売れるのでオイシイ

下記リスト以外のamiiboを利用すると、肉や矢、ルピーをもらうことは可能です。
下記リストのamiiboを利用すると、宝箱も出ます。開けると肉や矢と偶に下記アイテムが出ます。

リンク:
ゼルダの伝説 amiibo公式対応表
海外ネット情報

名前がオレンジ色のは持っているので自分で検証しています。
ブレスオブザワイルド(全5種)
リンク(騎馬)★ 旅人のくら (アタリの時は二つ同時ドロップ)
★ 旅人の手綱 (アタリの時は二つ同時ドロップ)
- 王家の剣 (攻撃力アップ+24等)
- 月光のナイフ
- 矢系x5
* キノコ系素材
リンク(弓)- ハヤブサの弓
- 王家の弓
* 肉・魚系素材
ゼルダ★太陽の盾?
ボコブリンボコ系武器及び盾
ボコ系盾
肉系

カーディアンガーディアン系武器及び盾
(素、+、++何れか)
ガーディアンナイフ
ガーディアンアクス
ガーディアンランス
ガーディアンガード
古代系の素材

ゼルダの伝説シリーズ(全5種)
リンク(時のオカリナ)★ 時の勇者装備一式(帽子 服)
★ ダイゴロン刀(59)(ロングスロー)
- 王家の両手剣(攻+20、耐↑)
- 矢系x5
* 肉系、矢系x5
リンク(ゼルダの伝説)★ 始まりの勇者装備一式(帽子 服 ズボン)
- ソード?
- 騎士の盾
* ルピー
トゥーンリンク(風のタクト)★ 風の勇者装備一式(帽子 ズボン)
★ 海風のブーメラン(攻撃+12)
- 王家の剣
- ブーメラン
* 魚系素材
ゼルダ(風のタクト)★ 勇者の盾(耐↑)
- 王家の盾
- 宝石
- 星のかけら
* 草系素材
ウルフリンク
トワイライトプリンセス
- 仲間になって一緒に戦ってくれる
  初期ハート数 3 最大20? 
 馬に乗っていても付いてきます。一緒に走ります。これは可愛い!

トワイライトプリンセス HD 同時購入推奨要Wii U

大乱闘スマッシュブラザーズ(全5種)
リンク★ 黄昏の勇者装備一式
★ エポナ(伝説の馬)
  • 全ステータス★4
  • おとなしい
  • なつきMAX
  • エポナは馬宿に登録可能。名前変更は不可。
  • 死んでもマーロンの泉で復活可能
- 王家の盾
- 王家の剣(36)(攻+24、耐↑)
  片手剣でD60とか胸熱
- 矢系x5
* フルーツ系
トゥーンリンク伝説シリーズと同じ?
- 風の勇者装備一式
- 潮風のブーメラン? 
ゼルダ- 黄昏の光弓 (矢不要)?
シーク★ シークのマスク(静かさアップ)
- 散打の槍(12)(ロングスロー)図鑑可
- 残心の小刀(攻+12、ロングスロー)
- 無心の大剣(50) (ロングスロー、攻+19) 図鑑可
- 護心の盾
- 矢系x5
* きのこ系
ガノンドロフ★ 六賢者の剣(ロングスロー)
- 王家の両手剣(52)(攻+20、耐↑)
- ゲルドの両手剣(28)(耐↑)
- 宝石(ダイヤモンド)
* ルピー、りんご、ボコブリンの肝、木の矢x?
爆弾樽

裏技
1. セーブを行えばアタリを引くまでロードして再チャレンジをすることが可能。

2. 任天堂スイッチの日付を変える事で同じamiiboを利用可能になります。
ただし、その日付は記録されるため、引いた日には再度利用できません。
過去の日付で行えば、普通にプレイする分には支障はないと思います。
また、日付を変更した後はソフトを再起動しないと反映されません。
時間のインターネット同期はオフにする必要があります。

2016年11月28日月曜日

Mac OS X - SIP System Intergrety Protectionを無効にする

Mac OS X El Capitan以降の話限定だが、SIPというシステムファイルへのアクセスを
制限する機能が追加されている。

ググれば詳細が見れると思うので詳しいことが知りたい人は検索してみてほしい。

https://en.wikipedia.org/wiki/System_Integrity_Protection

System Integrity Protection (SIP,[1] sometimes referred to as rootless[2][3]) is a security feature of the macOS operating system by Apple. It comprises a number of mechanisms that are enforced by the kernel. A centerpiece is the protection of system-owned files and directoriesagainst modifications by processes without a specific "entitlement", even when executed by the root user or a user with root privileges (sudo).

 このセキュリティが動作していると、/etc以下や/System以下のファイルが書き換えできなくなる。
/Library以下のものは大丈夫なようだが…

この機能をオフにすることで、以前のようにシステムファイルの改変が可能になるので
やっておく。

csrutil disable

このコマンドにて無効化できる。
元に戻すには下記のコマンドを実行する。

csrutil enable

反映には共に再起動が必要になる。

2016年10月11日火曜日

EL CAPITAN OS X ServerにてICMP ECHOを返すようにする方法

ステルスモードがオフでも、OS X ServerではPINGの返答がブロックされているので
応答なしになってしまう。GUIでの設定からは変更が出来ないようだ。

/Library/Server/Firewall/Anchors/custom_anchor.txt へ次の行を追加することで、
応答するように変更できる。

pass in inet proto icmp all icmp-type echoreq keep state

保存したら次のコマンドを実行してリロードする。

pfctl -f /etc/pf.conf