saotake’s blog

-竿竹-

radare2とradare2-webuiのインストール

defcon2016qの他の人のwriteupを読んでいたら、どうも私のradare2となんか出力(?)が違う。そういえば大分前にインストールしてから一度もアップデートしてないなぁ、と思い、アップデートしてみました。

 

まずはradare2のホームページにあるコマンドで、radare2本体をインストール。

git clone https://github.com/radare/radare2
cd radare2
sys/install.sh

何事もなく無事終了。起動してみると・・・? 

 > r2 baby-re

>V

>V

 

f:id:saotake:20160527220032p:plain

あれ?WebUIじゃなくなってる・・・?

ホームページのスクリーンショットもグラフ画面はenyoというWebUIになってるし、なんで?

前回はなんか別にWebUIをインストールしたような気がするので、以下を追加でインストールしてみました。

公式サイト様のインストール方法:

radare2-webui/README.md at master · radare/radare2-webui · GitHub

 

これに従って、まず一つ目のコマンドから実行。

$ r2pm -i www-enyo
~中略~

make[1]: npm: Command not found
make[1]: *** [build] Error 127
~中略~

make: *** [enyo] Error 2
$

何かエラーがでて止まってしまいました。npmが見つからないというエラーのようなので、npmを先にインストールしてからリトライ。

$ sudo apt-get install npm

$ r2pm -i www-enyo

~中略~

npm ERR! Error: CERT_NOT_YET_VALID

~中略~

$

違うエラーがでました。CERT_NOT_YET_VALIDとのことなので、電子署名(証明書)の検証に失敗している模様。面倒なので証明書の検証を無視するよう設定してからリトライ。(私はrpmSSL無効にしています)

$ npm config set strict-ssl false

$ r2pm -i www-enyo

~中略~

/usr/bin/env: node: No such file or directory

~中略~

$

 

またまた今度は違うエラーが発生。パッと見てなんのことかわからなかったけど、どうも今度はnodeがインストールされていないためエラーになっている模様。nodeをインストールしてリトライ。

$ sudo apt-get install node

$ r2pm -i www-enyo

~中略~

make -C www/enyo build
make[1]: Entering directory `/home/XXX/.config/radare2/r2pm/git/radare2-webui/www/enyo'
npm install
/home/XXX/.config/radare2/r2pm/git/radare2-webui/www/enyo/node_modules/.bin/gulp
make[1]: *** [build] Error 1
make[1]: Leaving directory `/home/XXX/.config/radare2/r2pm/git/radare2-webui/www/enyo'
make: *** [enyo] Error 2
$

 うーん、この出力だけでは意味不明。nodeのインストールの仕方が悪かったのかな?と思い、nodeではなくnodejsを再インストール。

$ sudo apt-get remove node

$ curl -sL https://deb.nodesource.com/setup | sudo bash -
$ sudo apt-get install -y nodejs
$ sudo apt-get update

$ r2pm -i www-enyo

$ r2pm -i www-p

$ r2pm -i www-t

$ r2pm -i www-m

~中略~

request.name = path.posix.join(options.fontsDir, request.name);
^
TypeError: Cannot call method 'join' of undefined
make[1]: *** [build] Error 8
make: *** [material] Error 2

$

www-enyo、www-p、www-tは成功し、かなり進みました。

しかし、www-mだけエラーが出てしまいます。このエラーは、radare2-webuiのインストール方法のところのtroubleshootに書いてあり、まだnodeがうまくいっていない模様。nodeのバージョンをあげるため、stroubleshootに書いてあった以下のコマンドを実行。

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

 これすらエラーになりました。もうわけわかんない。

先ほどから証明書関係のエラーが出ていましたが、どうもn stableの失敗も、内部のcurl呼び出しで証明書関係エラーが出てるっぽい。最初から証明書無視とかするから泥沼にはまるんですよね。ググってみると、heartbleedのせいで一部のサイトがデフォルトではつながらなくなっていて、証明書無視コマンドをつけなければいけないとのこと。しょうがないので、n stableではなくて手動でダウンロードしてインストール。

$ wget https://nodejs.org/dist/node-latest.tar.gz --no-check-certificate

$ tar xvzf node-latest.tar.gz

$ cd node-vXXXX

$ ./configure

$ make

$ sudo make install

 

$ r2pm -i www-enyo

$ r2pm -i www-p

$ r2pm -i www-t

$ r2pm -i www-m

 

今度はうまくいきました。

Windowsは便利だなぁ(白目) 

 

起動方法はこちら

r2 -c=H baby-re

 http://localhost:9090/p/

f:id:saotake:20160528011731p:plain

p(desktop)形式はちょっとわかりづらいです。完成度が低いイメージ。

他にも、enyo(mobile),m(responsive),t(legacy)などがあります。

私が使ってたのはenyoでした。4つのモードの中では無難。

 http://localhost:9090/enyo/

f:id:saotake:20160528012815p:plain

 

mも無難そうではありますが、CTF目的では、enyoよりは使いづらそう。

http://localhost:9090/m/

 

f:id:saotake:20160528013231p:plain

 

tは、これ使うくらいならプロンプト上でviewモードでいいんじゃないでしょうか。

http://localhost:9090/t/

f:id:saotake:20160528013424p:plain

 

無難そうなenyoでさえ、hopperには遠くおよばない感じですので、

プロンプトのviewモードを覚えようと思います。

 

f:id:saotake:20160528013946p:plain