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 aapiyoを開きたい場合は これはひどい。 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のサービスが起動できなかった!というダイアログが出た。 そのダイアログの選択肢は「バージョン情報」「再試行」「無視する」 気になったのでバージョン情報を選んでみたら「中断しますか?」とか聞かれた。イミフ… |