最近自分がプログラマーでもあるという事を忘れつつあるので、ここらで一つ披露。

鈴木島男に学ぶ ウィルス撃退法 - にぽたん研究所
ここで、私からこんな島男スタイルを提唱する。 これをやればあなたも一見天才プログラマーだ。 結線していないキーボードをものすごい勢いで打鍵しながら
% tail -f /usr/local/apache/logs/access_log

それでは私が本当のHackerもうならせる奴を披露しよう。

ソースコードに patch あてて脆弱性対策をして復旧したのかも知れないが「コンパイル」という作業を経ずに復旧してしまう。

もちろん、コンパイル不要。

% perl -e '$f="t.c";open F, ">$f";print F qq(#include "/dev/tty"\n);close F;system "cc $f";system "./a.out";'

以下、証拠写真。FreeBSD 5-Stableを使用。

% perl -e '$f="t.c";open F, ">$f";print F qq(#include "/dev/tty"\n);close F;system "cc $f";system "./a.out";'
int main(){ printf("hello, world!\n");}
hello, world!

島男クンならこれで何とかするはず。

Dan the JAPH

追伸:Mac OS X はこういう冗句は嫌いみたいで動きません。

追々伸:ありゃ?Panther + XCode 1.5 だと動いちゃうぞ!?

以前#include "/dev/tty"やった時には動かなかったんでその時の記憶が....さらに追試をしてみる。

% perl -e '$f="t.c";open F, ">$f";print Fq(#include "/dev/tty"\n);close F;system "gcc2 $f";system "./a.out";'
/usr/bin/ld: Undefined symbols:
_main

どうやらgccのversionによるみたい。レポートThx>JDE::Pyuutaの作者様

追記2006.09.20

等価変換な日々 Moe Effective C 第 2048 項 「標準入力をコンパイルしたい時は /dev/tty を include しよう」
こんなことができたのか…

歴史は繰り返す。このネタの大元はIOCCC1988年だからもうすぐ成人かあ。