So-net無料ブログ作成

wiresharkでafpを解析する [macOS]

wiresharkでafpを解析するのは、はっきりいって簡単です。
少なくともnetatalkをセットアップ出来る人なら誰でも出来るでしょう。tcpdumpコマンドの出力を目で追うのは大変ですが、wiresharkはGUIなのでマウスでいじるだけで何が起きているのかわかります。

LinuxだろうがBSD系だろうが、最近のディストリビューションならwiresharkは用意されていると思います。

次の図は、クリアテキストのパスワードを表示している例です。

ユーザhatのパスワードhogehogeがあっさり見えています。暗号化パスワードならこうはいきません。

ただし、afpを調べるには、ちょっとだけコツが必要です。
ポイントはfilterの使い方です。何となくafpという文字列でフィルタしたくなりますが、そうじゃないんです。

一般に、
AFP over TCP
と言いますが、詳しく書くと、
AFP over DSI over TCP over IP
という構造になっています。
port 548を使うのはDSIから上なので、dsiという文字列でfilterします。

最初にDSIでGetStatusというコマンドを送って、次にセッションを開き、やっとAFPになっています。
afpという文字列でフィルタすると、この最初の重要な部分を見落とします。

また、AppleTalkの場合は、
AFP over AppleTalk
と言いますが、詳しく書くと、
AFP over ASP over ATP over DDP
という構造になっています。このASPを、TCP/IPではDSIに差し替えているわけですね。
AppleTalk全部を調べたいならddpでフィルタします。
AFPだけ調べたいならatpaspでフィルタします。

この例ではatpでフィルタしたところ、ASPのGetStatusコマンドしかヒットしませんでした。AFPが現れません。何故なら、すぐにAFP over TCPに移行してしまったからです。

次の例では、ものすごく古いafp clientから接続した場合です。

本当にAFP over AppleTalkが実現しています。

次の例は、ものすごく古いafp clientと最近のafp clientから接続し、afpでフィルタした例です。

結果、AFP over AppleTalkとAFP over TCPの両方が入り乱れています。
アドレスのところをみると、IPアドレスとDDPアドレスの両方が見えるので判断出来ます。

なお、GetStatusコマンドに関しては以下の記事でも言及しています。
2台以上あるnetatalkサーバの1台目にしかアクセス出来ない
AFPでのユーザ認証の仕組み


タグ:AFP netatalk
nice!(0)  コメント(2)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 2

fumiyas

「DSI」は初耳でした。ちなみに
手元のマシン (Debian sid) の /etc/services には:

afpovertcp 548/tcp # AFP over TCP
afpovertcp 548/udp

と書かれていたんですが、「afpovertcp」でもフィルタにかけられますかね?
by fumiyas (2007-11-30 10:34) 

HAT

afpovertcp is neither a field nor a protocol name.
というエラーになります。
filterのsyntaxはwiresharkのローカルルールだと思います。

afpとafpovertcpの使い分けについては、あとで書こうと思います。
by HAT (2007-11-30 23:14) 

コメントを書く

お名前:[必須]
URL:[必須]
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0