太字は今見てるページ。
2011(18)  2012(3)  2013(3)  2018(1) 
1(5)  2(2)  3(1)  4(2)  5(1)  6(3)  7  8(2)  9(2)  10  11  12 

2011/1/1 あけましておめでとうございます。
あけましておめでとうございます。
今年もよろしくお願いいたします。
***
sambaでforce userやforce groupを変えた時はreloadじゃ反映されなくて、restartしないとだめっぽい。
メモメモ…

2011/1/9 cep with ePSXe 1.7.0
cepでごにょろうとしたら、ePSXeの1.6.0までしか対応していなかった。
ベースアドレスのスキャンをしても引っかからない。
そしてOSごと固まった。(そのマシンは調子が悪いと言えば悪いからかも…)
結局ollydbgで1.6.0と比べてみてわかりました。
APPLIST.TXTに以下の行を追加するとOKです。
ePSXe 1.7.0 | EPSXE.EXE | 0094C020 | $00200000


2011/1/10 NFSrootなLinuxが起動しない
サーバーのOSを入れ替えて、この前NFSrootな環境をPXEbootで起動しようと思ったらその準備ができていなかったことに気づいた。
そんでもって、昨日今日でNFSrootな環境をつくろうといろいろしていた。
今日、とりあえずPXE/TFTPがととのって、NFSサーバーを入れて起動しようとしたら
rpc failed: 2
とか出て、起動できなかった。
rpc.mountdとか(関係ないと思いつつ)rpc.statdとかポート固定してファイアウォールに穴あけてるのになんでだろう。
というか、まず"2"ってなんだよ、とか思いつつググったら、以下のページがヒット。

Phillip Pearson - Second p0st: Monster servers :) | nfsmount (initrd) doesn't work with nfs-user-server, only nfs-kernel-server
http://www.myelin.co.nz/post/2007/5/28/

>The fix? Install nfs-kernel-server rather than nfs-user-server. 

NFSのサーバーにはnfs-user-serverを使っていた。
しかし、このページ曰く「(このエラーを)直すにはどうすればいいか? nfs-user-serverじゃなくてnfs-kernel-serverをインストールするんだな。」
そこで、nfs-user-serverをアンインストールして、nfs-kernel-serverをインストールしてみた。

あっさり起動。
罠過ぎる。

2011/1/21 vimのファイル名補完が残念な件
たとえば../hogeディレクトリに次のような名前のファイルがあったとする。
$ ls ../hoge
aafuga aahoge aapiyo
ここでvimを起動し、:e ../hogeと入力すると、:e ../hoge/aafugaといきなり補完されてしまう。
aapiyoを開きたい場合は2度押しか、を4回押してpと入力しなければいけない!!
これはひどい。
bashなら:e ../hoge/aaまで補完されて、pと入力すればいいのに…

というわけでぐぐりました。
google: vim ファイル名補完
すると以下のサイトがヒット。

今日も明日もググったー: vim tab ファイル名補完
http://ggutter.blogspot.com/2009/08/vim-tab.html

このページによれば
:set wildmode=list:longest
すればいいらしい。

しかし、これは僕の希望ではなかった。リスト出なくていいから。
そこでマニュアルを見た。
:help wim
すると、まさに求めていたサンプルがそこに載っていた。
Complete first full match, next match, etc.  (the default)
  :set wildmode=longest,full
ということで、
:set wim=longest,full
すれば、僕の希望通り(bashのような動作)になることがわかった。
おわり。

2011/1/25 メモ: Ubuntu 10.10 PPCのfdisk
"fdisk"ではなく"mac-fdisk"

2011/2/5 iPhoneのbonjour広告を止めたい
iPhoneが出すbonjourな広告を止めたいのです。
うちのiPhoneは今のところiOS4.1で、opensshが入っています。
普通に使う分には楽でいいのですが、知らない所のwifiにつないだ時にも広告してしまうのはよろしくないと思うのです。
あとtcpdumpで見てるときに10行ほど食うので邪魔と感じます。

前にそう思って、launchctl stop com.apple.mDNSResponderしたら何か支障があったような気がするので、うまくできないかなーと思って、なんとなーくmDNSResponderを読んでたら、
-launchd
-launchdaemon
-NoMulticastAdvertisements
-DebugLogging
-UnicastPacketLogging
-OfferSleepProxyService
-StrictUnicastOrdering
というのが見えました。
"-NoMulticastAdvertisements" これ怪しいですね。
とりあえず/System/Library/LaunchDaemons/com.apple.mDNSResponder.plistのProgramArgumentsにつけてみました。
そして、launchd unload com.apple.mDNSResponder.plist、launchd load com.apple.mDNSResponder.plistしました。
10分くらいtcpdumpで見た結果、たぶん広告してないように見えます。
これで解決なのかなー?

2011/2/27 まっちゃ445 #15に参加してきたよ
会場が住処に近くて助かった。(時間的にも交通費的にも。)

* めざまし
IE8/9のInPrivateブラウズ: 別の勉強会で前半は聞いたことがあった。IEIsInPrivateなるAPIが拡張機能向けに存在するらしい。そしてInPrivateなら同じような動作をしろ!とMicrosoftが言っているらしい。へぇー。FirefoxとかChromeも同じなのかな。(Chromeはブラウザ側が勝手にやってそうだけどね。)
Ustream事始め: 特に凝らない(ただwebcam/マイク垂れ流しだけ)なら、ブラウザ内のFlash経由で配信できるというのは初めて知った。簡単になったんだなあ。
トンネル大作戦: sshトンネルの話。VPNとは違って特定のTCPポートのみ通すので(キーロガーは別だけど)マルさんが走っていてもそこそこ安全という話。話し方がおもしろかった。

* 本編
虫かご作成講座: 黒くない内容だった。虫かごを作る時のポイントを話していた。ためになった。
箱庭作成講座: 後半がちょっと黒かった。規模が違った。
災害復興支援用オープンソースソフトウェア SAHANAについて: 大規模災害(たとえば阪神大震災)で一番通信に使えるインフラはラジオらしい。でも大規模災害はあまり起こらないらしい? そういう時は情報交換インターネット使える?→SAHANAというものを使って情報整理すればよくね。 大規模災害でも拠点で情報をまとめる時に便利(なのかー?)

* ナイトセッション
おもしろい(オフレコな)話がたくさん聞けました。

まとめ: おもしろかった!!

2011/3/28 サーバー復活?
こんにちは。
3/11の地震以降、サーバーのハードディスクがやられてしまい、murachue.ddo.jpが見られなくなっていました。

ただいま。
適当に設定したので、もしかしたらうまく動かないものが出てくるかも知れません。

いつかきっと。
今回の大震災により各地で大変なことになっていますが、大震災前の状態、いやもっと良い状態に戻ることを待ち望んでおります。

2011/4/11 とある駅員の対応
某K王線のとある駅で定期券を作ろうとしました。
既にSuicaを持っていたので、これを更新して定期券を作れると思っていました。
なので、いつSuicaを入れてもいいように、あらかじめ手に持っておきました。
定期券対応の機械で定期券を作ろうとしましたが、経由の候補が10個ほど出て、どれを選べばいいか分かりませんでした。
「(京)ほげ・(近)・ふが」とか出されても意味わからんです。(近)ってなんですか。近鉄なんてありませんよ。あ、そういうことじゃないですか。
まあ分からないので、駅員さんに聞くことにしました。

駅員さんは奥にいました。
私「すいません、定期を作りたいのですが」
駅員さんが窓口にでてくる。
駅員「あ、SuicaはJRさんの商品ですので、どの駅でも扱うことはできません。」

そそくさと奥に戻ってしまおうとする駅員さん。
そうなのか。SuicaはJRでしか使えないのか。どおりでJRの駅で定期券を作ろうとした時「そんな駅はない」といわれてしまったのか。
そうかそうか。じゃあPASMOでいいな。

私「すいません、じゃあPASMOで作ります」
駅員が窓口にくる。
駅員「通学定期はうちでは作れないんですよ」

機嫌悪そうな(あくまでそう見えた)駅員。
この人決めつけすぎだろ。最後まで話を聞いてくれ。
というかなんですかその冷たい態度…

私「いや通勤なんですけど」
駅員「それでしたら表の発券機でできます」

知っていますが分からないんですよねー。

私「作ろうと思ったのですが、経由でどれを選べばいいかわからないんです」
駅員「では発券機の前でお待ちください」
私「はい」

待ちました。
駅員が発券機の隣から顔を出しました。

私「どうも」
駅員「経由を選ぶ所まで進めてください」
私「はい」

ぽちぽちっとな

私「はい進めました」
駅員「そしたらこれですと(ここで路線図を取り出し)このように乗り換えて進むことになります」
私「ほげ駅で乗り換えてほげ線で行きたいのですが」
駅員「それでしたらこれですね」
ぽち
駅員戻る。
ぽちぽち。

名前をこのでかい画面で打つのか…(周りに人がいる)
生年月日をこのでかい画面で打つのか…(周りに人がいる)
電話番号をこのでかい画面で打つのか…(周りに人がいる)
確認画面は一際でかいなあ…(周りに人がいる)
ぽち。
お金を入れて無事定期券が発券されました。
めでたし。


教訓
・笑顔で人に応対しよう
・相手が何したいかを決めつけずに、とりあえず最後まで話を聞いてあげよう
・何も言わずに引っ込まないようにしよう
・もうちょっと個人情報に配慮しよう
最後に関しては、JRだと紙に書いて窓口に行き定期券を発券してもらうオプションがあります。
自動発券機でも発券できますが、紙だと小さいので他の人に見られる確率が低くなります。

社会人になって数日、対応によっては印象が変わってしまうことを実感いたしました。
相手が不満に思ったら、ブログにどういう反応だったか書かれたり、その会社はそういう感じなのかと印象づけられてしまうかもしれないという危機があるのだなと思いました。
これくらいなら「こんな会社か」なんて思いませんけどね。でも日記にこう書いてしまったので、これくらいはされるのだろうと思いました。

2011/4/26 まっちゃ445 #16
去る4/23(土)にまっちゃ445がありました。
簡単に記録しておきます。
記録するまでが勉強会らしいので。

めざまし
・東日本大震災。その時弊社では: 前半は備えの説明、後半は黒い話でした。
・経産省クラウドガイドライン: JIS Q 27002と対応しているらしいです。
・目grepで始めるsmart carving: エントロピーとかsmart carvingと呼ばれるヒューリスティックcarving方法について。目grepか…
・世界のカンファレンスに行こう: 行きたいですねー!お金があれば(´・ω・`)
・昔の雑誌: はっちゃけすぎwww 「そのファイアウォールで大丈夫?」このフレーズは流行る(もう終わったよ

メイン
・徳丸さん「体系的に学ぶ 安全なWebアプリケーションの作り方脆弱性が生まれる原理と対策の実践」:
タイトルの本ができるまで、またレビュアーからの意見、サンプルの作り方やポリシーなどを説明されていました。
まだ買えてないのですが、より欲しくなってしまいました。

おかし
おいしかったです!!
あの量のお菓子は今まで無かったので衝撃を受けました。
また、どれもおいしく、すごく幸せでした。
食べきれなかったというか凍ってて食べれなかったずんだ餅は後でおいしくいただきました。

おまけ
pCTFが土日にかけて開催されていて、そっちもやりつつ聞いてしまう感じになりました。
内緒と言うことで。(ばれてる

2011/5/5 rubyメモ
Stringを1バイトずつのArrayに直す時。

str.scan(/./) #=> 0x0Aが欠ける NG
str.split(//) #=> OK

もっといい方法があるはず。

2011/6/11 DEFCON 19 CTF quals Forensics 200 writeup
link to this article: http://murachue.ddo.jp/web/diary.cgi?mode=past&query=201106#20110611

(Japanese)*ここはこのwriteupの一時的な置き場なので、他のサイトに移動する予定です。*
(English)*here is temporary space for this writeup, so will be moved to another site.*

誰もDefcon 19 CTF予選のforensics 200のwrite upを書かないので、試しに書いてみようと思います。
No one write up Defcon 19 CTF quals forensics 200, so we try to write up it in (poor) English.

Forensics 200:
  Find the key.
  File: f200_a3c6a7f6a4b4f9511ee83

まず、問題のファイルをヘキサエディタで開くとBZh91...と見えたのでbzip2フォーマットであることがわかりました。
First, we opened that file by hex-editor, and see "BZh91..." so this file is bzip2 format.



$ bunzip2 -c f200_a3c6a7f6a4b4f9511ee83 > f200.img

次にbunzip2したファイルをヘキサエディタで開くとNTFSやNTLDRと見えたのでNTFSのディスクイメージだと言うことが分かりました。
Next, we opened bunzip2-ed file by hex-editor, we saw "NTFS" and "NTLDR", so it is a NTFS disk image.



このディスクイメージからファイルを展開してみました。
We extracted files from this disk image.

すると、100個のディレクトリ(dir**)があり、それぞれの中に200個以上のファイル(key*****)がありました。
Then, extracted 100 directories(dir**) and more than 200 files(key*****) in each directory.



ファイルのサイズは全て1024バイト、中身はどれも下の絵と同じような内容でした。
Every file's size is 1024 bytes, data in files looks similar to picture below.



ここで一旦詰まってしまいました。
We stucked this point.

数時間後、ふと$MFTをヘキサエディタで開き、ヘキサエディタについているビットマップビュー機能を使ってみました。
But after several hours, we opened $MFT by hex-editor, and use bitmap-view feature.



このようにkey*****ファイルのFILEレコードが並んでいるのですが…
FILE record of files (key*****) lined like picture below...



…一カ所だけ周りと違う部分がありました。
...except here.



そのFILEレコードを見てみました。
Let's look into this FILE record.

すると、$STANDARD_INFORMATION(0x10)、$FILE_NAME(0x30)、$SECURITY_DESCRIPTOR(0x50)、$DATA(0x80)と並んで0x0110という見慣れない属性がありました。
There is a strange attribute 0x0110 after $STANDARD_INFORMATION(0x10), $FILE_NAME(0x30), $SECURITY_DESCRIPTOR(0x50) and $DATA(0x80).



とても怪しいですね ;-)
It looks very suspicious ;-)

その属性が示す先のデータ(クラスタ0x166A0)を見ると、今まで見ていたkey*****ファイルと同じようなデータがありました。
Go to that attribute's data(cluster 0x166A0), there is a data that similar to key***** files we saw.



このデータからNULLバイトを除いた文字列を送信したら、CORRECT!でした。
We sent string removed NULL bytes from that data, and got "CORRECT!" message.

Answer: 47a96fac9edb95e641e835e21ce800934d4c8f7e

2011/6/12 (昨日)第1回マルウェア解析勉強会に行ってきたよ
http://atnd.org/events/15911

感想だよ。

・虫かご作成講座
過去のまっちゃ445あたりでもあったお話。
個人レベルでは実現難しそうです。
・私のマルウェア解析方法 中津留勇 編
この発表を聞いて「IDA Pro買え」と言っているようにしか思えなかった…
IDA Pythonすごいですね。何でもできる錯覚(もしくは本当に)。
自分のやり方がすごく効率悪く見えてくる…。
・私のマルウェア解析方法 太刀川剛 編
動的解析と静的解析をうまく組み合わせて解析をされているように感じました。
アンパックはIDA上だと面倒そうですからね。(といいつつIDA Python使った場合はどうなんだろうと思ったり。)
マルウェア解析初心者向け検体の紹介はとてもありがたく感じました。慣れてみよう…。
・私のマルウェア解析方法 勇士Q 編
変態…
Mach-Oでは実行開始時のレジスタ値を設定できるのを初めて知りました。おもしろそう。
そして最近のiPhoneアプリのバイナリが変わっているようですね。私も知りませんでした。

3人の方がそれぞれどのような流れで解析されているか、どのようなソフトウェアをどのように使っているか、といったような事を紹介されていて、とても参考になりました。
私はまだマルウェアを解析したことはありませんが、とても楽しそうだなと思いました。(業務ではうんざりされているかもしれませんが…)

さて、今回覚えたことを活かさないとー。
まずはアンパックからがんばってみますか…。
***
個人的メモ。
.51EB851F
 .01010001111010111000010100011111
  1.010001111010111000010100011111 * 2^-2
0 01111101 010001111010111000010100011111
0011 1110 1010 0011 1101 0111 0000 1010
00111110101000111101011100001010
% ruby -e 'p ["00111110101000111101011100001010"].pack("B*").reverse.unpack("f")'
[0.319999992847443]
.51EB851F = 0.319999992847443 =~ 0.32
0.32>>5 = 0.001


.66666667h
        .01100110011001100110011001100111
         1.100110011001100110011001100111 * 2^-2
           100110011001100110011001100111
0 01111101 100110011001100110011001100111
0011 1110 1100 1100 1100 1100 1100 1100
00111110110011001100110011001100
% ruby -e 'p ["00111110110011001100110011001100"].pack("B*").reverse.unpack("f")'
[0.399999976158142]
.66666667 = 0.399999976158142 =~(1/2.5=)0.4
0.4>>2 = 0.1

2011/6/26 IDCって意外と簡単だった
IDAのIDCで動く、OllyDbgのJump'n'call highlightingもどきを作ってみました。
File、IDC Commandに貼り付けて実行できます。

auto ea;
ea = 0;
while(ea = FindCode(ea, SEARCH_DOWN | SEARCH_NEXT)) {
	auto m;
	if(ea == 0xFFFFFFFF)
		break;
	m = GetMnem(ea);
	if(m == "call") {
		SetColor(ea, CIC_ITEM, 0xFFFF80);
	}
	if(m == "jmp") {
		SetColor(ea, CIC_ITEM, 0x40FFFF);
	}
	if(m == "jz" || m == "jnz" ||
		m == "ja" || m == "jb" || m == "jae" || m == "jbe" ||
		m == "jl" || m == "jg" || m == "jle" || m == "jge" ||
		m == "js" || m == "jns" || m == "jc" || m == "jnc") {
		SetColor(ea, CIC_ITEM, 0xC0FFFF);
	}
}
Message("Coloring complete.\n");

行(というかアドレス)ごとではなく、文字単位で色がつけられたらいいのになー。

2011/8/14 IDCメモ: とあるパッカー用
うざいことに、ebpを特定の値にセットして、
mov eax,[ebp+123456h]のように参照するものがあったので、
それを解決してコメントに書いてくれるIDCスクリプトを書きました。
カーソルのあるアドレスに対して行います。

下の場合ebp==0x4a901です。

auto i,s,o;
for(i=0;(s=GetOpnd(ScreenEA(),i))!="";i++){
 if((o=strstr(s,"h"))!=-1){
  MakeComm(ScreenEA(),ltoa(xtol(substr(s,o-6,o))+0x4a901,16));
  break;
 }
}

…これ、User-Definedのoffsetにしたほうがいいんじゃ…

2011/8/21 ld-linux.soの不思議
これってどういう意味なんだろう…
statically linkedの方が正解だと思うけど。

$ /lib/ld-linux.so.2 --list /lib/ld-linux.so.2
        statically linked
$ file /lib/ld-2.12.1.so
/lib/ld-2.12.1.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
$

2011/9/1 本日の「これはひどいruby」
=begin
@fmap = {}

open(@manifest, "r") do |f|
    while s = f.gets
        s.chomp!
        # s is like "File=(Src=System\Engine.dll,Size=1785856)"
        if s =~ /^File=/
            m = s.match(/Src="?([^,)"]+)/) or raise "? illegal line: #{s}"
            # pfn = Pseudo FileName
            pfn = m[1].gsub(/\\/, "/")
            # rfn = Real FileName
            rfn = "#{@srcd}/#{pfn.downcase}"
            if File.exist? rfn
                apfn = pfn.split("/")
                apfn[0..-2].inject(@fmap){|r,e|r[e] ||= {}; r[e]}[apfn[-1]] = rfn
            else
                puts "? file not found: #{pfn}"
            end
        end
    end
end
=end

特にここ
> apfn = pfn.split("/")
> apfn[0..-2].inject(@fmap){|r,e|r[e] ||= {}; r[e]}[apfn[-1]] = rfn

いままでなら以下のように書いていただろう。
> apfn = pfn.split("/")
> f = @fmap
> (apfn.size-2).times do |i|
>   f[apfn[i]] ||= {}
>   f = f[apfn[i]]
> end
> f[apfn[-1]] = rfn

inject使い始めるときれいに書けた感がしてやばい…

2011/9/11 iTunesSetupすごいね!
iTunesのsetupを起動する
適当に「次へ>」を押す
誤って関連づけやらのチェックをすべて入れたまま「次へ」を押してしまう
インストールが始まってしまったので慌ててキャンセル
キャンセルしますか? → はい
・Bonjour
・AppleMobileDeviceSupport
・AppleSoftwareUpdate
・Quicktime
がインストールされる(すでにキャンセルしているのに!)
iTunesが入る番がきてようやくiTunesのインストールが中断される

すごいね!!(爆発しろ

ちなみにAppleMobileDeviceSupportのサービスが起動できなかった!というダイアログが出た。
そのダイアログの選択肢は「バージョン情報」「再試行」「無視する」
気になったのでバージョン情報を選んでみたら「中断しますか?」とか聞かれた。イミフ…