でるたのーと

Cyber security blog


3DS でハローワールド

さて、前回の記事で我々はユーザーがいじくり回せる自由な環境を手に入れたわけですが...

deltatan.hatenablog.com

まぁ、次はハローワールドするのが妥当かと。そりゃ作れるものなら最初からドラクエみたいなのを作りたかったよ。でも技術力皆無の僕にはこれが精一杯でして。許して。

というわけで、この記事では

  1. Homebrew Launcher からハローワールドする
  2. タイトル (アプリ) からハローワールドする

という 2つのやり方でハローワールドしたいと思います。ちなみに最初から完全理解しようとすると情報量が多すぎてハゲるので、最初はざっくり理解するのがいいかと思います。

では、僕の髪の毛と貴重な就活の時間を犠牲にした成果をお届けします。いやほんと 12月にもなって何をやってるんだろう... べっ、べつに「この記事を見た任天堂の採用担当から連絡がくる」みたいな展開、期待してないんだからねっ!

環境構築

前回の記事にも書いたように、現行の 3DS は CPU に ARM11 を採用しています。まず、ARM11 向けにクロスコンパイルできるコンパイラが必要になりますよね。こういったコンパイラや必要なツールをまとめたツールチェインとして 、devkitARM というものが提供されています。インストールするためには以下のコマンドを叩いてください:

curl -L https://raw.githubusercontent.com/devkitPro/installer/master/perl/devkitARMupdate.pl -o devkitARMupdate.pl
chmod +x ./devkitARMupdate.pl
sudo ./devkitARMupdate.pl /opt/devkitPro
echo "export DEVKITPRO=/opt/devkitPro" >> ~/.bashrc
echo "export DEVKITARM=/opt/devkitPro/devkitARM" >> ~/.bashrc
source ~/.bashrc

ついでに、libctruもインストールしておきましょう。libctru は、CTR User Library という意味で、CTR とは 3DS のことです。そのユーザ空間で動かせるライブラリ、ということですね。多分。
こいつは自作アプリを作る上で必要になってくる、基本的な API を提供してくれます。ダウンロード・展開して、libctru とリネームして、/opt/devkitPro/ の下に置いてやりましょう。

参考:

データの形式

さっそくビルド... といきたい所ですが、まずは僕達が何をビルドしようとしているのかはっきりさせましょう。とりあえず、よく見るフォーマットを列挙していきます。

NCCH

これが一番重要なフォーマットです。中に色々とデータを含んだコンテナのようなもので、やたら登場します。実行可能形式のもの (CXI) とそうでないもの (CFA) に分けられます。

タイトル

ホーム画面で見るあれです。フォーマットというか、タイトルを構成する部品の集合、というニュアンスで使います。具体的な構成は、3DBrew - Data Structure を参照してください。ちなみにゲームのタイトルは SDカードに保存されますが、暗号化されているので普通は読めません。

3DSX

Homebrew Launcher 独自の実行形式です。

CIA

CTR Importable Archive の略で、タイトルをインストールするのに使われます。macOS のディスクイメージみたいな雰囲気です。

なんかふわふわした雑な説明になっちゃいましたね... ソースは全て 3DBrew です。「分かんないよばーかばーか」という方はそこをあたってください。というか僕も理解が微妙なので逆に教えてくださいばーかばーか。

さて、冒頭の「僕たちはどこへ向かっているのだろう」問題に移りますが、最初の「Homebrew Launcher からハローワールドする」という目標は、3DSXフォーマットのファイルを作れれば達成できそうです。
次の「タイトル (アプリ) からハローワールドする」という目標は、CIA を経由してインストールすることで達成できます。タイトルを直接ぶち込んで実行することはできないんですよ...

さっそく「Homebrew Launcher からハローワールドする」から片付けていきましょう:)

Homebrew Launcher からハローワールドする

今回は以下のソースをビルドします:

// main.c

#include <stdio.h>
#include <3ds.h>

int main(int argc, char** argv) {
  // LCD のフレームバッファをデフォルトの値で初期化する
  gfxInitDefault();
  // 上のスクリーンをコンソール用に初期化する
  consoleInit(GFX_TOP, NULL);

  printf("Hello 3DS World!");

  // フレームバッファを解放する
  gfxExit();
  return 0;
}

うーむ。何の変哲もないクソプログラムですね。レファレンスは こちら を参照。

ARM 向けに C のコードをクロスコンパイルするためには、arm-none-eabi-gcc を使います。

ELF から 3DSX に変換するツールには、3dsxtool というものがあります:

$ 3dsxtool --help
Usage:
    3dsxtool input.elf output.3dsx [options]

Options:
    --smdh=input.smdh : Embeds SMDH metadata into the output file.
    --romfs=dir       : Embeds RomFS into the output file.
    --appid=value     : Set 3dsx Application ID.

なので、「ほーん、こいつをビルドしてエルフちゃんを作った後に、3DSX 形式にしてやればいいんだな」って思うじゃないですかー? ちっちっちっ、まだまだ甘いねワトゥスン君。1ヶ月ぐらいサーベイを続けて分かったことですが、3DS の改造業界のコードは、とにかくビルドが通りません。情報ねぇ。Makefile しかねぇ。コードが汚ねぇ悟りを開けということですね

まぁとりあえずやってみますか:

$ arm-none-eabi-gcc -I/opt/devkitPro/libctru/include -o main.o -c main.c
$ arm-none-eabi-gcc main.o -L/opt/devkitPro/libctru/lib -lctru -o helloworld.elf
/opt/devkitPro/devkitARM/bin/../lib/gcc/arm-none-eabi/7.1.0/../../../../arm-none-eabi/bin/ld: error: /opt/devkitPro/libctru/lib/libctru.a(console.o) uses VFP register arguments, helloworld.elf does not
/opt/devkitPro/devkitARM/bin/../lib/gcc/arm-none-eabi/7.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /opt/devkitPro/libctru/lib/libctru.a(console.o)
/opt/devkitPro/devkitARM/bin/../lib/gcc/arm-none-eabi/7.1.0/../../../../arm-none-eabi/bin/ld: error: /opt/devkitPro/libctru/lib/libctru.a(gfx.o) uses VFP register arguments, helloworld.elf does not
.
.
.

ずーっとこんなのが出て解決できませんでした。あぁハゲる。

幸いテンプレートのプロジェクトは make を叩いてビルドできたので、何をやっているのか見てみましょう。ソースは ここ です。

mkdir build && make -n
[ -d build ] || mkdir -p build
/Applications/Xcode.app/Contents/Developer/usr/bin/make --no-print-directory -C build -f /path/to/application/Makefile
echo main.c
arm-none-eabi-gcc -MMD -MP -MF /path/to/application/build/main.d -g -Wall -O2 -mword-relocations -fomit-frame-pointer -ffunction-sections -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft -I/path/to/application/include -I/opt/devkitPro/libctru/include -I/path/to/application/build -DARM11 -D_3DS -c /path/to/application/source/main.c -o main.o
echo linking application.elf
arm-none-eabi-gcc -specs=3dsx.specs -g -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft -Wl,-Map,application.map     main.o  -L/opt/devkitPro/libctru/lib -lctru -lm -o /path/to/application/application.elf
arm-none-eabi-gcc-nm -CSn /path/to/application/application.elf > application.lst
smdhtool --create "application" "Built with devkitARM & libctru" "Unspecified Author" /opt/devkitPro/libctru/default_icon.png /path/to/application/application.smdh
echo built ... application.smdh
3dsxtool /path/to/application/application.elf /path/to/application/application.3dsx --smdh=/path/to/application/application.smdh
echo built ... application.3dsx

なるほど全然分からない

しかし経験則上、こういう所を憶測のまま放置しておくと、後で死に至ることは分かっています。とりあえず重要そうな部分を抽出、必要ないオプションを削除して、我々のハローワールドをビルドできるコマンドを整理しました:

# コンパイル
arm-none-eabi-gcc -march=armv6k -mfloat-abi=hard -I/opt/devkitPro/libctru/include -c main.c -o main.o

# リンク
arm-none-eabi-gcc -specs=3dsx.specs -march=armv6k -mfloat-abi=hard main.o -L/opt/devkitPro/libctru/lib -lctru -o helloworld.elf

# エルフちゃんを 3DSX に変換
3dsxtool helloworld.elf helloworld.3dsx

けっこうシンプルになりましたね。最適化の処理を根こそぎ剥いだのでもとからクソだったハローワールドがさらにクソ加減を増し、クソオブザクソになっていますが、理解しやすくはなりました。残っているオプションを調べてみましょう:

  • -march=armv6k: ターゲットの ARM のアーキテクチャを arm6k に指定
  • -mfloat-abi=hard: VFP ABI を使った浮動小数点のサポートを有効にする
  • -specs=3dsx.specs: GCC の挙動をファイルに記述されたものに変更

ということで、上 2つは ARM の仕様関連のオプションでした。また、GCCコンパイルアセンブル、リンクなどのプログラムを走らせるドライバです。最後のオプションを使うことで、その挙動を変えることができるみたいです。じゃどんな風になってるの? という疑問が当然湧いてきますが、/opt/devkitPro/devkitARM/arm-none-eabi/lib/3dsx.specs を見てみると以下のようになっています:

%rename link                old_link

*link:
%(old_link) -T 3dsx.ld%s -d --emit-relocs --use-blx --gc-sections

*startfile:
3dsx_crt0%O%s crti%O%s crtbegin%O%s

わかるようなわからないような... とりあえずリンクの挙動を変えて、エントリーを main 以外にしてるっぽいのは確かです。要調査、ということでこいつは放置しておきます。

最後に、コンパイルとリンクを一度に実行するようにしたものがこちら:

arm-none-eabi-gcc -specs=3dsx.specs \
                  -march=armv6k -mfloat-abi=hard \
                  main.c \
                  -I/opt/devkitPro/libctru/include \
                  -L/opt/devkitPro/libctru/lib -lctru \
                  -o helloworld.elf

3dsxtool helloworld.elf helloworld.3dsx

ん、いい感じですね。叩くと helloworld.3dsx が出てきます。

で出てきた 3DSX を実行させたいわけですが、とりあえず 3dslink コマンドを使いましょう。
3dslink は Homebrew Launcher に WiFi 経由でプログラムを送信してくれます。まず 3DS 側で Homebrew Launcher を起動し、Yボタンを押して 3dslink netloader を起動します。以下のような画面が表示されるはずです:

f:id:deltatan:20171201061826j:plain

日本語に不自由な感じですが、気にしないのが賢明です。

さて、このアドレス宛てにホストからハローワールドを送ってやりましょう。この場合、打ちこむのは以下のコマンドになります:

3dslink --address 172.20.10.5 helloworld.3dsx

するとハローワールドが表示されます。

f:id:deltatan:20171201062728p:plain

とりあえず最初の目標は達成できました。もちろん、SDカードの /3ds/ に置いてやれば直接実行できます。

次はタイトルを作りましょう。

タイトル (アプリ) からハローワールドする

エルフからタイトルを作るには、makerom コマンドを使います。Project_CTR からダウンロード・展開し、/opt/devkitPro/devkitARM/bin/ に配置します。

先にビルドのコマンドを貼っておきます:

makerom -rsf app.rsf -desc app:2 -f cia -o helloworld.cia -elf helloworld.elf

-f, -o, -elf はいいとして、最初の 2つのオプションの説明をします。
まず -rsf app.rsf。RSF とは、NCCH の設定を指定する YAMLファイルのことです。今回は app.rsf を使いました。
次に -desc app:2 ですが、こいつはアクセスディスクリプタをテンプレートから指定するオプションです。通常は前述の .rsf ファイルを使って指定する必要がありますが、その手間を省くことができます (参考)。アクセスディスクリプタは CXI の一部っぽいですが、あまり情報がありません (参考)。これも要調査です。

出てきた helloworld.cia を SDカードに配置します。FTPD などをインストールすると送信が楽です。FBI という CIA のインストーラを使えば、CIA からタイトルをインストールすることができます。

タイトルをインストールして起動するとこんな感じになります:

ついでなのでアイコンとバナーも変えてみましょう。bannertool を使います。注意点としては、アイコン 48x48px, バナー 256x128px, ホバー時の音声 <= 3sec を満たしている必要があります。

アイコンを作って:

bannertool makesmdh -s "Hello World" -l "Hello World" -p "rounddelta" -i icon/dog.png -o helloworld.smdh

バナーを作って:

bannertool makebanner -i banner.png -a banner.wav -o banner.bin

makerom で指定します:

makerom -rsf app.rsf -desc app:2 -f cia -o helloworld.cia -elf helloworld.elf -icon helloworld.smdh -banner banner.bin

f:id:deltatan:20171201081710j:plain

できた。

いやー、長い道のりでした。しかし騙されないでください。こいつはそれっぽくなってるただのハローワールドです。全く労力が見合わない

ということで、今回は 3DS でハローワールドしてみました。ハローというか深淵を覗いた感じですが、何か役に立つ情報があれば幸いです。それでは。

3DS の改造について分かったことまとめ

※ この記事では、N3DS FW 11.3 まで使うことができた方法を前提に解説を進めます
※ 憶測で話を進める部分がありますがご容赦ください (間違いを見つけたらコメントをください)

お久しぶりです。ここ 1ヶ月程 N3DS のハックについてサーベイを続けていたので、忘れない内に記事にしておこうと思います。以下、3DS という言葉を主に N3DS という意味で使っていきますが、ハードを総称して使うこともあります。適宜読み換えてください。

さて、ゲーム機のハックと聞くとなじみがないかもしれませんが、基本的には「任意のコードの実行」です。これは iPhone の脱獄や、Android の root化でも同じことが言えます。つまりセキュリティ上の脆弱性を突いているわけで、やっていることは PC にマルウェアを感染させるのと変わらないわけです。必ず自己責任で、そしてよく調べてからハックしましょうね。

では解説に移りたいと思いますが、この記事では、「3DS のハックに使われている手法は何をやっているのか」ということをつらつらと書いています。「3DS 改造」とググると山のように情報が出てきますが、それらの多くは「どうやって導入するのか」という情報で、「何をやっているのか」という情報ではありません。なんかもやもやしませんか? 日本人が開発したゲーム機ぢゃねーかなんで英語の情報しかないんだと。そう思ったので、僕はこうして情報を記事にしています。えぇ、久々に

前提知識

ハードウェア

まずは 3DS のハードの説明からしていきます。現在、3DS のハードは N3DS, N3DS LL など複数のラインアップが展開されていますが、どのハードでも解説に支障はありません。解説に必要な部分をざっと説明すると、

  • CPU: ARM9 / ARM11 ARM9 は、DS 用ゲームの後方互換性を保つために搭載されている。
  • ブートロム ブートローダーが保存されている。物理的に分かれているのかどうか不明だが、ARM9用カーネルブートローダー (Boot9)・ARM11用カーネルブートローダー (Boot11) が存在する。
  • NAND Read Write Memory っぽいもの。ARM9用・ARM11用の 2つのカーネルが保存されている。写真データの保存などにも使われる。

という感じですね。詳しくは公式ドキュメントの 3DS オーバービューを見てください。

カーネル

3DS では、なじみ深いモノシノリックカーネルではなく、マイクロカーネルが採用されています。マイクロカーネルカーネルランドの機能をできるだけ多くのプロセスに分け、各プロセスは IPC (InterProcess Communication) を使って通信します。プロセスには、fs (File System) や Camera などがあります。

ブート

一般的な PC のブートは、

  1. 一次ブートローダー (BIOS, UEFI など) を起動。ハードウェアの初期化をする。
  2. 二次ブートローダー (GRUB など) を起動。カーネルをブートする
  3. カーネルの初期化

という流れで行われますが、3DS のブートは以下のように行われます:

  1. Boot9 と Boot11 が起動。それぞれ、NAND に保存されている ARM9用カーネルと ARM11用カーネルを、署名を検証した後に起動する。
  2. ARM11用カーネルは、必要なプロセスを起動したり、ホームメニューを表示させたりする。

つまり、ARM9用カーネルは本当に後方互換性のためだけに起動されるようなもんです。メインは ARM11用カーネルです。

ちなみに、一般的な PC で「ファームウェア」と言うと、一次ブートローダーを指すことが多いですよね? モバイル端末のカーネルも「ファームウェア」と呼ばれることが多いですが、そもそもファームウェアとはハードウェアに組み込まれて保存されているソフトウェアを指す言葉らしいです。なので、この定義で行けば、モバイル端末のカーネルを「ファームウェア」と呼ぶことは間違ってはないですが... しかしそれならモバイル端末のブートローダーだってファームウェアですし、やっぱり紛らわしいと思います。

ハック

以上の前提知識を踏まえて、ハックの話をしていこうと思います。ここで言う「ハック」とは、「Homebrew Launcher から boot9strap を導入する」ということを指しています。このハックを使うと、iPhone で言う「紐なし脱獄」ができるようになります。しかも、FW をアップデートしても CFW は永遠に消えません。つまり最強です。

導入

解説は後からするので、ここではとりあえず、導入完了までの手順を挙げさせてください。あと、これは僕が昔の FW で使った手法です。別のやり方があったり、最新の FW では動かなかったりすると思います。また、細かい部分は省くので、実際に試す場合は以下の記事を参考にしてください。英語ですが、最も信頼できるソースです。

3ds.guide
3ds.guide

  1. Soundhax を使って Homebrew Launcher を起動する
  2. udsploit を実行する
  3. safehax を実行する
  4. Luma3ds をインストールする

解説

まず、Homebrew Launcher とは、署名のないアプリやコード (Nintendo eShop で提供されていない) を実行するためのソフトです。これを実行するためには、任意のコードを実行するための、エントリーとなる脆弱性が必要になります。それが、今回は FW 11.3 まで存在していた Nintendo 3DS Sound の脆弱性で、Soundhax はそれを突いています。しかし、Homebrew Launcher はカーネルの上で動いているので、まだユーザーランドの制御しかできません。

次に、udsploit です。こいつは同じく FW 11.3 まで存在していた、カーネルランドの制御をできるようにする脆弱性を突くエクスプロイトです。詳しいことはよく分かりません。しかし、これでおそらく NAND にアクセスするための土台が手に入りました。

safehax は boot9strap というエクスプロイトを実行するためのラッパーみたいなものです。このエクスプロイトが一番重要で、ARM9用カーネルブートローダー Boot9 に存在する、sighax という脆弱性を突いています。これは、カーネルの署名をチェックするパーサーがぶっこわれていて、ある 1つの署名を付けることで NAND 上の任意のコードの実行を許してしまうような脆弱性です。また、ARM11 でコードを実行することもできるようです。工場出荷後の Boot9 でエクスプロイトに使う署名はまた変わってしまっているらしく、それをどうやって計算したかは SIGHAX AND BOOT9STRAP を見てください。前述の udsploit を使うと NAND を書き換えることができ、それを Luma3DS (CFW) を起動するような内容で書き換えれば作業は完了です。解説も終わりです。

所感

個人的には、工場出荷前のブートローダーをどうやって手に入れたのか気になるところです。それと、後方互換性のために搭載した ARM9 のブートローダーにこんだけ深刻な脆弱性があったというのは皮肉ですよね。ROM なので書き換えもできんし。

また、Homebrew Launcher を起動するのに使うエントリーの脆弱性は、システムアプリ以外のタイトル、普通のゲームにも見つかっています。この辺を卒研で見つけたい野望があるんですが、どうだろう。難しいかなぁ。

次の記事では 3DS 向けのクロスコンパイルのやり方、ライブラリなどを取り上げたいと思います。それでは。

デスノート PC侵入シーンの考察

最近デスノートを見返しているんですけど、やっぱり L が死ぬまでが一番おもしろいですね。逆に最後まで見ちゃうとジェバンニが全てをかっさらっていくので見返すときは L が死ぬところで見るのをやめてます。

さて、作中では完璧な人間として描かれている月ですが、L にセキュリティの知識があれば、割と簡単に勝てたのではないかというシーンを見つけました。それは 3話の、月が総一郎の PC に侵入して捜査資料を盗むシーンです。

ここ!
f:id:deltatan:20171030063745p:plain

月が総一郎のパソコンに侵入した後に

サーバを選んでください

というポップアップが表示され、ログイン後にキラ事件に関する全ての捜査資料がリストアップされています。これはおそらく、警察庁所有の FTPサーバに接続し、内容を見ているということでしょう。

「自分のパソコンから、何の痕跡も残さず、父さんのパソコンに侵入することさえできるよ」

と月は嘘ぶいていますが、それでも普通、サーバへのアクセスやトランザクションにはログが残るはずです。総一郎が記憶しているアクセス日時の申告と、実際のアクセス日時が違っていたら即アウトです。総一郎が捜査資料を漏洩させていた可能性も残りますが、それでも「夜神家が怪しい」ということになります。L がログさえ見ていれば FBI捜査官が死ぬこともなかったのに! *1

L は夜神家に盗聴器と監視カメラを仕掛けていましたが、僕ならフォワードプロキシをかませて通信を盗聴します。月が総一郎のパソコン・ダミーの FTPサーバに不正アクセスしていることを確認し、しかるべき証拠保全が完了した段階で勝負も終わりです。あ、でもデスノートも押さえないといけないのか。まぁこれも、月のパソコンにマルウェアでもしこんで、インカメで「僕は新世界の神になる」あたりのシーンを押さえればいいんじゃないですか。

しかしあの月のことです。FTPサーバにアクセスしたときに、実はサーバにも侵入して、アクセスログを改竄しちゃったりしてるかも... まさかねぇ。いや、いくら極秘の捜査資料をシンクライアントも使わずにアクセスさせているとはいえまさか。容易に推測できるようなパスワード使ったりしてるけどさすがの月でも... いやできるわ! むしろ余裕だわ!

どうか L には、キラ対策本部にセキュリティエンジニアを雇うことを考えてもらいたいものですな。

*1:L は FBI捜査官の死から月がキラである可能性に気付いた

備忘録 9月前半

deltatan.hatenablog.com

8月の終わりに「簡単なニュースとか備忘録的なものを毎日残していく」宣言をしたわけですが、まぁ無理だったよね。いや言い訳をさせて頂くと、9月に入ってから勉強の速度を上げたり、インターンあえて炎上案件に飛びこんだり, なかなか体力持ってかれるようなことばっかしてたんで。
ぶっちゃけセキュキャンの方がきつかったけどな!

まぁ... その... この怠惰の一番の原因はどうせ誰も見てないからいいだろ的な何かだったりするんですけど、それはどうしようもないですね。まぁ、今更ながら 9月前半を振り返ってみます (といってもあんま覚えてないんでツイッターをおもむろに開きながら)。

備忘録

OWASP Nagoya Local Chapter Meeting 1st に参加

9/2 にあった OWASP のイベントに参加してきました。いやー、想像以上におもしろかったですね。OWASP の岡田さんとか、徳丸本の徳丸さんとかの話を聞いてきましたよ。
岡田さんの話で印象に残ってるのは、問題の根本的な原因を考える、シフトレフトの話ですね。これはトヨタ的な思考だなーって思いながら聞いてました。
徳丸さんには SQLインジェクションとか CSRF とかの実演をして頂きました。やっぱ実際に使われてる攻撃を見るのは楽しかったですね。

以下、問題発言名言

「マ◯クロソフトの人間が、日本の大企業の 95% は何かしらのセキュリティ上の問題を抱えているって言ってた」
「サーバールームに設置してある監視カメラのリアルタイム映像をネットに漏らしてる会社があった」
「『よくわかる PHP の教科書』を血祭りにしようと思います
「今まで『よくわかる PHP の教科書』にある脆弱性を題材に色々講演とかやってきたんですが、最近売れてないみたいなんです。もしかして私のせい?


3DS のチートをいじる

現在 3DS のチートツールとして最も使われているのが、NTR CFW ってやつなんですけど、こいつを導入するとチートが C/C++ で書けるようになるんですよ。いやすごくね? 10年ぐらい前、GBA/DS 全盛期世代のチートツールであるプロアクションリプレイとかコードフリークでは、各ゲームのチートプラグインを 16進数で入力してたもんですが、どうやらバイナリアンは滅びゆく運命にあるらしい

ちなみに僕は懐古主義者なので、ポケモン ORAS を買って、チート使って瞬殺で殿堂入りしたりしてました。しっかし感心したのが、チート使ってるので最初からアイテム全て持ってたり、通常のプレイではありえないステートにしてたのにも関わらず、ゲームがフリーズしたりバグったりすることがほとんどなかったこと。しっかりガードかけてるんだろうなぁ。さすがゲーフリ! すごいぞゲーフリ!!

あと使ってるプラグインは、いろいろ勉強になりそうなのでだらだらとコード読んでいじってます。日本語化も進めているので、コミットしてくれる方はこちらまで:
github.com



さすがに 5体のゲンシカイオーガは描画処理が重かった。


VM クラッシュ問題

Bluetoothバイスに接続した途端 VM がクラッシュする問題を発見したんですが、同じ問題が 2ヶ月前に報告されていて、次のリリースで修正されるみたいです (参考: https://www.virtualbox.org/ticket/16969)。


ネタ

君の名は。いいよね

めも on 8/31/2017


ニュース

http://wikileaks.orgDNSレコードが汚染される

www.theguardian.com

備忘録

ニュースについて考えてみました。個人的に気になるのが、どのサイトも DNS ポイズニング と紹介しているところ。おそらく DNS キャッシュポイズニング の意味で使ってるんだと思いますが、もしかしたら別の意味があるのかもしれません。いや、やっぱ汚染されるのはキャッシュサーバーなんでしょうけど。

nslookup の結果がちょくちょく変わってるんですけど、まだ汚染が続いてるのかもしれませんね。もしもそうだった場合、キャッシュサーバはどの問い合わせの返答を信じるんだろう。

Yes, Master? 👉  nslookup wikileaks.org
Server:		172.20.10.1
Address:	172.20.10.1#53

Non-authoritative answer:
Name:	wikileaks.org
Address: 141.105.65.113
Name:	wikileaks.org
Address: 141.105.69.239
Name:	wikileaks.org
Address: 195.35.109.44
Name:	wikileaks.org
Address: 195.35.109.53
Name:	wikileaks.org
Address: 95.211.113.131
Name:	wikileaks.org
Address: 95.211.113.154
Yes, Master? 👉  nslookup wikileaks.org
Server:		172.20.10.1
Address:	172.20.10.1#53

Non-authoritative answer:
Name:	wikileaks.org
Address: 127.0.0.1


というかキャッシュサーバからの返答がループバックアドレスになってるうぅぅ!

こいつ誰だよ... 俺ぢゃねーか みたいな


dig とか使って、どのネームサーバが汚染されたのか見てみるのもありかもしれません。僕は眠いのでやめときます。

その他

セキュリティのニュースでも何でも、手を動かして自分でやってみるのおもしろいですね。

めも on 8/30/2017


ニュース

数千件もの Telnet の認証情報が流出する

www.bleepingcomputer.com

ちょっと古いですが、4日ぐらい前にホストの IPアドレスとユーザ名、パスワードのリストが流出しました。該当ページは削除されたようですが、キャッシュにはまだ残っているようです。

備忘録

Kubernetes

Google製のコンテナのオーケストレーションツールですが、超便利。YouTube など、数多の Google の基盤にはこいつが使われている模様。VM から始まり、Docker が出て、ついに Kubernetes という変態的なツールまで出始めました。抽象性高すぎて気持ち悪い。学習のコストもえげつないですが

その他

HaskellAtCoder の問題解くの楽しい。競技に勝つことを諦めた者への癒し

めも on 8/29/2017





ニュース

ハッカー映画さながらに電子錠を破る

blog.kaspersky.co.jp


備忘録

エロゲー人工知能の人が...


今年は、市販のダッチワイフに改造をほどこしてとんでもないクリーチャーを生み出してた彼ですが、来年のコミケでスケールアップして帰ってきそう。
いや、変な意味はなく、この人の本、学術的におもしろいんだよ...?

その他

関数型ニート、及び暗号屋になるために、cryptonite っていうパッケージをいじってみようかと思います。クラックするパッケージを作ってみたい野望もある。