1998-12-23[n年前へ]
■流れている電子メールを解読してみる
目的のためには手段は正当化されるか?
今月のC MagazineのNetWatch Cool&Hotはセキュリティ特集だった。その中でEthernetに流れているパケットの中からMailに関するデータを表示するソフトの紹介があった。もちろん、自分宛てのものだけでなく、他人宛ての物も全て表示するソフトである。
こういったソフトの正しい使われ方というものがあるとは思えないのだが、技術的には興味がある。ネットワークに関する勉強もしてみたかったので、同じようなことをしてみたい。
言うまでもないが、今回の実験は家庭内のLAN内ですべて行っている。ただし、メールサーバーは外部のものを使用してはいる。
自分宛てでないパケットを見る(sniffing)にはイーサーネットのインターフェースをプロミスカス・モードで動かしてやれば良いという。UNIXであればtcpdumpを始めとしていくつもフリーのソフトがある。Windows上で動かすことを考えても、いくつかのフリーソフトがあった。また、OpenDesighnNo.10にプログラミングの例があった。OpenDesighnはソース配布がディスクでしか行っていないのが残念だ。
今回はWindows上でプロミスカス・モードでパケットをダンプしてくれるソフトを用いた。普通に探せば、すぐに見つかると思う。
それでは、流れているパケットを見てみる。パケットのダンプ画面には部分的に伏せ字を入れた。また、ユーザー名やパスワードはオリジナルとは違う文字に入れ替えてある。
LANに繋がっているLibretto50でメールサーバーに対してメールチェックを行った際に流れたパケットを同じネットワークに繋がっているPortege320で読み取ったものの一部が下のものである。
Packet No.: XX00000005Time: 0361530480 msec Length: XX
Ethernet Dest: XX.00.F4.5F.2D.F8 Src: XX.00.24.30.08.ACType: 0x0800
000000: XX XX XX 5F 2D F8 XX XX : 24 30 08 AC 08 XX XX XX..._-...$0....E.
000010: XX 34 58 05 40 XX XX 06 : B3 C2 AC 12 XX 02 D2 E6.4X.@. ..... ...
000020: B0 01 04 XX XX 6E XX 2C : 14 F7 XX AE 43 03 XX 18...f.n.,....C.P.
000030: 22 0B 98 18 XX XX XX XX : XX XX XX XX XX XX XX XX".....USER john
000040: XX XX:................
Packet No.: XX00000006Time: 0361530540 msec Length: 88
Ethernet Dest: XX.00.24.30.08.AC Src: XX.00.F4.5F.2D.F8Type: 0x0800
000000: XX XX 24 30 08 AC XX XX : XX 5F 2D F8 08 XX XX XX..$0....._-...E.
000010: XX 4A E0 27 40 XX EE 06 : 5D 89 D2 E6 B0 01 AC 12.J.'@...].......
000020: XX 02 XX 6E 04 XX XX AE : 43 03 XX 2C 15 03 XX 18..n.f..C..,..P.
000030: 22 XX 24 26 XX XX 2B 4F : 4B XX XX XX XX XX XX XX"8$&..+OK Passwo
000040: XX XX XX XX XX XX XX XX : XX XX XX XX XX XX XX XXrd required for
000050: XX XX XX XX XX XX XX XX :john...........
Packet No.: XX00000007Time: 0361530550 msec Length: XX
Ethernet Dest: XX.00.F4.5F.2D.F8 Src: XX.00.24.30.08.ACType: 0x0800
000000: XX XX XX 5F 2D F8 XX XX : 24 30 08 AC 08 XX XX XX..._-...$0....E.
000010: XX 37 59 05 40 XX XX 06 : B2 BF AC 12 XX 02 D2 E6.7Y.@. ..... ...
000020: B0 01 04 XX XX 6E XX 2C : 15 03 XX AE 43 25 XX 18...f.n.,....C%P.
000030: XX XX XX XX XX XX XX XX : XX XX XX XX XX XX XX XX!./...PASS 12345
000040: XX XX XX XX XX:678.............
このダンプ画面を眺めると、次のような
Libretto:私はjohnですがメールチェックをさせて下さいな。過程がよくわかる。パスワードの認証を「通常のテキストそのまま」で行っているため、パスワードが丸見えである。
サーバー:じゃぁ、johnさんのパスワードを言って下さい。
Libretto:12345678です。
もう少し、各パケットの内部がどうなっているかを考えてみる。
ネットワーク・プロトコルとは何か(TCP/IP を例として) (http://www.kobe-u.ac.jp/~ipc/mage/mage24/terashima/terashima.html)
IPパケットの構造について(http://www.dtinet.or.jp/~torao/program/)
Hey!Java Programming! (http://www.dtinet.or.jp/~torao/program/protocol/pop3.html)
を参考に考えてみた。 例えば、先のイーサーネットに流れているメールに関するパケットの中からメールの内容を見るにはどうしたら良いだろうか。
ひとまず、先頭54Byteと末尾2Byteを捨ててやればTCPの部分だけを取り出せて、良いように思える。また、TCPのポート番号のみでフィルターをかけてやれば、任意のプロトコルのみを取り出すことが出来るだろう。多分。ここでは、47,48Byte目か?
そのようなフィルターを作成し、取得したパケットにかけてみたのが以下である。
. RETR 1 +OK 771 octets Received: from xxxx (xxxx.xxxx.ne.jp[xxxx.xxxx.251.14])見事にメールの内容が見えてしまう。
by xxxx.xxxx.ne.jp (xxxx.xxxx.1/3.7W) with SMTP id xxxx
for <xxxx@xxxx.ne.jp>; Wed, 23 Dec 1998 11:20:54 +0900(JST)
Message-ID: <xxxx@xxxxxxxx>
From: "xxxx" <xxxx@xxxx.xxxx.xxxx.xxxx>
To: <xxxx@xxxx.ne.jp>
Subject: test 試験
Date: Wed, 23 Dec 1998 11:43:38 +0900
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 4.72.2106.4
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2106.4
Content-Type: text/plain;
charset="iso-2022-jp"
X-UIDL: 57c82a0ae2ea513ae1221c507123f459This is a test.
これは日本語です。
さて、読めるでしょうか。. DELE 1 +OK Message 1 has been deleted. QUIT +OK +OK Popserver at xxxx signing off. +OK
今回はWindows上で全て行った。難しい所はあまりなかった。ネットワークのことなんかほとんど知らない私でも1から始めて半日で出来たのだから、きっと誰でも出来てしまうだろう。それにUNIX上であればツールは全て揃っているようだ。
他人のメールの内容を見るのは私的利用であれ、公的利用であれ、許されるとは思えない。また、例えネットワーク管理者が行うにしても、「メールを盗み見する」という予告・了解なしに行って良いとは思えない。先のメールの内容を盗み見するソフトにどんな正当な使い方があるのだろうか?
1999-06-26[n年前へ]
■リモートカメラから世界をノゾこう!
Macintosh用カメラ制御プログラムを作る
今日もニュースを探しに
MAQ?MAK?MAC! ( http://www.maqmakmac.com/)
を見に行くと、おやおや何やら見たことのあるキーワードがある。これが「デジャブ」という奴かと一瞬思ったが、そうではないようだ。本WEBについての記載がある。ビックリだ。いや、ホント。
自分の興味の趣くままにやっているサイトではあるが、好きなサイトで「面白い」といってもらうと、とても嬉しい。また、そこから辿り
WebCatchを見る。「ノーラ」氏の文章には頭が下がる思いである。
MAQ?MAK?MAC!には「もっとMacintoshに関連した話題が多ければ良いのになぁ?。 」とも書いてある。そう、私もMacintoshの話題が少ないとは思っていたのだ。Macintoshが多い私の職場の人々からも(次回の話への伏線)言われ続けてきたことなのである。ならば、MAQ?MAK?MAC!( http://www.maqmakmac.com/ )登場記念にMacintoshを使った話をやってみたい。
というわけで、今回は急遽Macintoshを使った実験の話である。物語は、こんなジャンクを手に入れたところから始まる。ごくたまに、秋葉原でも見かける。もし見かけて、かつ、安かったら、迷わず「買い」だ。LEGOのMindstormsなんかと組み合わせたら、かなりかっこいいはずだ。
これが、「Canon製ビジュアルコミュニケーションカメラ」である。シリアル通信でカメラの向きやズームピントを変えることができるものである。上下左右に首を振ることができるし、ズームやマクロ撮影も可能だ。発売当初は20万円位もしていたものだ。この後継機種も出ている。
これを使って、何か面白いことをしてみようと思った。いや、はっきり言ってしまえば、ネットワーク上のMacintoshにこのカメラをつなげて、それを他のコンピュータから制御しようにしたい。今でこそ、そういったWEBサイトも多々あるが、今回の話の実験を行った時(確か2,3年前)にはまだ少なかったのだ。
このカメラはジャンクとして手に入れたので、ソフトも何も付いていない。しかし、シリアル通信のコマンドは何とか判明したので、制御プログラムを作ってみた。といっても、単なるシリアルポートへコマンドを送りつけるプログラムである。
プログラムはここに置いておく。名前もずばり、「のぞき見君」である。もちろん、Macintosh版なのでWindowsでは使えない。
のぞき見君 0.1anozokimi01a.sit ( sit形式 332kB )
正式にこのカメラを持っているユーザーにも今回のような用途(イヤな用途である)であれば、このソフトはきっと役に立つと思う。
今回(といっても作成したのはずいぶん昔だ)作成したプログラム「のぞき見君」の起動画面が下である。
下がメニュー画面である。画面を見れば判ると思うが、全てのメニューをコマンドキーを用いてキーボードのみでコントロールするようにしてある(これが素早く使うためのミソだ)。
このソフトをインストールして、Macintoshとカメラをシリアルポートでつないで、また、ビデオ出力もMacのビデオ入力につなげばとりあえず、接続完了だ。これで、Macintoshから自由自在に制御できるビデオカメラの完成だ。
さて、次はネットワーク経由で制御するための作戦だが、何ら苦労(私の)は必要ない。例えば、innfo-macに登録されているremote-mouse-keysというようなソフトを使えば、ネットワークにながっているMacintoshのキーボードやマウスを制御することが簡単にできる。
ftp.flashnet.it/mirror/8/sumex-aim.stanford.edu/comm/remote-mouse-and-keys-10.hqx
ビデオ画面の転送はもちろん、Cu-SeeMeでも使えば良い。最近はその手のソフトも多いだろう。それでは、今回のプログラム群を使った構成図を以下に示す。Macintoshはネットワークの自由度が高いので色々な使い道がある。
remote-mouse-keysとCu-SeeMeの組み合わせが軽くてお勧めなのだが、今なら
vnc (http://www.uk.research.att.com/vnc/index.html )
を使うといったやり方もアリだろう。これなら、プラットフォームをあまり選ばないので、WindowsやUnix系OSからでも制御できるし、一つのソフトで制御もビデオ画面転送も済んでしまう。ただし動作がまだ重いとは思う。
それでは、今回のソフトを使った顧客例を紹介しよう。
それは私の職場の「ち*の」氏の使用例である。彼は結婚間近であった。いずれ妻と住む新居にPowerMacintosh6100がこのカメラとともに設置してあった。彼は家の戸締りが気になって、職場から家にPPP経由でRemote-Accessを試みた。彼のPowerMacintosh6100は電話がかかってくるとともに起動音を発し、起動した。そして、彼は職場からの制御により、家のPowerMacintosh6100につながったカメラは首を起こし右へ左へと方向を変え、戸締りのチェックを始めた。彼の目的は達成された。家の戸締りは完璧であった。
ただ一つの問題は、彼は知らなかったが、結婚間近の恋人が掃除をするために新居を尋ねていたことである。彼女の目の前で、電話の音とともに勝手にMacの電源が入り、「ジャーン」という音を発し、そして、そこにあるカメラが「ウィィィーン、ウィィィーン」と右へ左へ動き始めたのである。「ひどい恐怖を感じました」、と彼女は後に語ることになる。
その後、彼の結婚がはたして実現したのか、それとも実現しなかったのかはここでは明らかにしない。
2001-02-19[n年前へ]
■bit休刊
最近とみに面白くなかったからなぁ。ジャンルとしては好きな話がとても多かったんだけど、どうも買う気にまで至らなかった。パラパラとページをめくれば十分と言う気になってしまっていたのである。何故でしょう?ちなみにUNIX USERもそんな感じなんだよなぁ。
2001-05-26[n年前へ]
■今月号のUNIX MAGAZINEの特集
UNIX MAGAZINEの「最近の新人へ向けた特集」にとても同感するぞ、と。
2002-03-23[n年前へ]
■インドで考たこと Dualの有効性編
「負荷がかかる処理は用途ごとに複数台準備する方がよいのかな」には、「処理を操作・連携せさる処理を作業者がスムーズにできる限りは賛成」です。あと、単なる処理速度の話にはもう全然異議などありません。
だけど、それが実際に作業を人間がするときの話だと、少し別。「処理を操作・連携せさる処理を作業者がスムーズにできる」ってなかなかWindows環境では難しかったりする場合も多いようにも思ったりします。
例えば、ちなみに私のデスクトップのPCではMathematica、Photoshop, Premire, Illustrator, InDesighn, After Effects辺りが常時立ち上げて、連携させながら作業するわけです。片方で処理した結果をコピペしつつ違うソフトに突っ込んで処理させたり、Googleに色んなことを教えてもらいながら、VisualC++でソフトを書いてコンパイルして、何ていう風に。そんなタスク切り替えが頻繁におきる仕事が普通かどうかはさておき…。
ところが、作業するワタシは一人なので、複数のソフトを色々切り替えるのにあまりに複数のPCでやるとワンクッション入って不便なんですねぇ…。モニタやキーボードやマウスを切り替え機で切り替えるのは、面倒ですから。一応今でもドコドア+LANクリップボードで二台のPCを使ってはいるのだけど、それですでに液晶ディスプレイ三枚…。なんか居室の作業では、複数のPCを切り替える時に、自分の頭の中のタスク切り替えが上手くいかない(というか次に頭の中のタスクを元に戻すのに時間がかかるような感じがする)ので、結局二台に戻してしまいました。
プログレ・キーボード派だったワタシとしては、前は複数のPCに囲まれていたし、実験室ではそれぞれ1制御1PCで結局多数のPC群に囲まれているのですが、それが居室だとどうも感覚的にストレスがたまりましたね…。あと何よりデュアルのありがたいのはオンボロプログラムが暴走しまくっても、操作感覚は素早いままってとこ。(何だそりゃ…)
もちろん、Mathematicaなんかはネットワークがらみがちゃんとしてるので、フロントエンドだけ自分のPCでカーネルは他のPCで動かしてますし、他のUNIX系のマシンで動くソフトに関してはもちろん処理だけそっちでやらせて、自分のPC上ではXクライアントしか動いてないわけです…。こういった、ソフトの表示系と内部処理を別のマシンで動かせるようになると、複数台使っていても操作感覚は変わらないし、とても便利なんですけどWindowsだとなかなかないですよねぇ、そんなの…。
なので、ワタシはよく雑誌記事の単なるベンチマークを見ると、実際に行う作業を人間がしてるときの、操作性を確かめてみてもらいたいなぁ、と思うのです。「仕事はコンピューターがするんじゃない、人間がするんだぁ」って踊る大走査線風に言いたくなるのです。
ただ、こうも思います。ささっと違う仕事に頭を切り替えるわけには行きづらいタイプの仕事、例えばソフトのプログラマーや込み入ったメカを設計するタイプの仕事などでは、こんな風な仕事の要求はされないだろうなぁ、とも思います。
あっ、念のため、タイトルには意味無いです。あと、「それは、こーすりゃ解決さ」っていうツッコミなんがのどから手が出るほど欲しいです、ハイ。