IRKit Firmware を Update (v3.0.0)

昨年からほったらかしにしていたIRKit の Firmware updateを行いました。
IRKit v2以下は脆弱性があるので、updateが必要です。
IRKitの脆弱性とファームウェアアップデートのお願い - maaash.jp

やり方

上記URLに記載の通り、updater を使えば良いようですが、エラーになるようです。

# Mac OS 10.12.2 (Sierra)

Downloading v3.0.0 from https://api.github.com/repos/irkit/device/releases/1712146
Successfully downloaded to /var/folders/56/tt94wwzs0cg0z4lwpq8qc6wr0000gn/T/f-11704-7085-1whnyzk
Reading current firmware from IRKit
Will run: /private/var/folders/56/tt94wwzs0cg0z4lwpq8qc6wr0000gn/T/AppTranslocation/B1E59226-19E6-48E7-B9CF-6AD1D66923A9/d/IRKit Updater.app/Contents/Resources/app/bin/pulser_darwin_amd64 /dev/cu.usbmodem1421
......................................Trying again
Will run: /private/var/folders/56/tt94wwzs0cg0z4lwpq8qc6wr0000gn/T/AppTranslocation/B1E59226-19E6-48E7-B9CF-6AD1D66923A9/d/IRKit Updater.app/Contents/Resources/app/bin/pulser_darwin_amd64 /dev/cu.usbmodem1421
......................................Finished with error: Port not found within 10 seconds

仕方がないので、github に記載の irkit/device: Infrared-WiFi-HTTP bidirectional proxy device Arduino IDE を使ったやり方で実施してみました。

注意点

これで良いのか不安ですが、とりあえず動作はするようです。

version.c

srcのcommit versionを記載しているようなので以下のようにします。

const char version[] = "v3.0.0.0.g85190b1";

GSwifi.cpp

最新のソースと行数があっていないようですが、以下の XXXXXXXXXX を変更すれば動作しました。

char* GSwifi::password() {
    // reuse index: 0 area
    // this should be safe if we immediately call `strcpy( target, password() )`
    char *ret = PB("XXXX, XXXXXXXXXX", 0);
    return ret + 5; // we detect ^ this pattern in password replacer
}

USBケーブル

転送用と充電用があるのを忘れてしまっており、小一時間ほど悩んでしまいました。
転送用を使いましょう。

後は

起動後にiOSのアプリで「名前を変更」を一度選んでやると version表記が変わりました。

f:id:rochefort:20170104170339p:plain:w350

確認してみる

以下でIPアドレスを調べます。

$ dns-sd -B _irkit._tcp
Browsing for _irkit._tcp
DATE: ---Wed 04 Jan 2017---
17:00:15.220  ...STARTING...
Timestamp     A/R    Flags  if Domain               Service Type         Instance Name
17:00:15.390  Add        2   4 local.               _irkit._tcp.         IRKit9628

$ dns-sd -G v4 IRKit9628.local
DATE: ---Wed 04 Jan 2017---
17:00:24.860  ...STARTING...
Timestamp     A/R Flags if Hostname                               Address                                      TTL
17:00:25.578  Add     2  4 IRKit9628.local.                       192.168.1.38                                 10
# status 200(bodyが空なのは良いのか?)
$ curl -i "http://192.168.1.38/messages" -H "X-Requested-With: curl"
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/v3.0.0.0.g85190b1
Content-Type: text/plain

# status 400
curl -i "http://192.168.1.38/messages"
HTTP/1.0 400 Bad Request
Access-Control-Allow-Origin: *
Server: IRKit/v3.0.0.0.g85190b1
Content-Type: text/plain