Monesお勉強

ネットワーク対応へのスタンスは

  • 他の実装 (id:Yamamiさん junjunnさん)が採用されることになり自分のが無駄になってもよい
  • とにかく勉強
  • ドライバ以外はフルスクラッチでもよいじゃないか
  • 仕事もあるし能力も低いので皆のようなペースでは実装できないかも

ARP実装計画&Memo

  1. 現時点ではとにかく動くことを目指す(コードは汚くてよい)
  2. データリンク層プロトコルである
  3. Nicドライバをセットアップして割り込み待ちループしてみた。
  4. この時点でWindows側から ping すると割り込みが確認できる(ここまでは出来ている)
  5. AbstractMonicクラスの存在意義が分かった。共有メモリにためているのか。(後で詳しく検討)
  6. AbstractMonicは処理要求をMONES.EX5に行っている(これが埋め込みなのがもったいない)
  7. 割り込みを受けるサーバー⇒AbsractMonic⇒Monesサーバか。
  8. 同じネットワークIDをもつIPアドレスかどうか調べる
  9. ARPパケット送信
  10. ARPパケット受信
  11. キャッシュ(20分保持)
  12. arp -a でarpキャッシュを確認できる(
    詳解TCP/IP〈Vol.1〉プロトコル

    詳解TCP/IP〈Vol.1〉プロトコル

    • 作者: W.リチャードスティーヴンス,W.Richard Stevens,橘康雄,井上尚司
    • 出版社/メーカー: ピアソンエデュケーション
    • 発売日: 2000/12
    • メディア: 単行本
    • 購入: 6人 クリック: 81回
    • この商品を含むブログ (41件) を見る
    )
  13. これを簡単にできるようにファイルを配布する

ARP実装にあたって考慮しなければいけないこと

  • AbstraceMonicクラスが MONES.EX5 に処理をお願いするというフロー
  • ARP応答の処理順序
  1. 割込み到着
  2. Ether Frameの受信
  3. フレームタイプがARPであることを確認
  4. ARPヘッダから情報を取得
  5. ARPキャッシュに今回分の対応を入れておく(キャッシュ有効期間20分)
  6. ARP応答

ARPを使う人を想定してみよう

  1. IPアドレスからMACアドレスを知りたい(動機)
  2. getIPAddressByMacAddress(address)という感じで使いたい(I/F)
  3. 上記関数の中の人はフレームを送受信できないといけない(ARP仕様制約)
  4. Monesサーバーのようなサーバーが必要(Mona的実装位置)
  • ケース2 : 他のホスト
  1. IPアドレスからMACアドレスを知りたい(動機)
  2. ブロードキャストでARP要求(I/F)
  3. つねに受信・応答出来る状況がよい(ARP仕様)
  4. Monesサーバーのようなサーバーが必要(Mona的実装位置)

今日の成果

  • フレーム受信とか。

http://wiki.monaos.org/index.php?%A4%D2%A4%B2%A4%DD%A4%F3%2FMones

雑談

ところでARPアタックって可能なんじゃない?素人考えだが・・・。ARP要求に対して適当に返事するやつ(たとえば自分以外への要求へ必ずうそ返事するとか)
⇒こんなのがあるなぁ。とおもったらid:ipusironさんのところだった。http://akademeia.info/main/lecture1/ouyou_sniffing.htm#arp_poisoning


というわけでネットワークに詳しい人は突っ込みよろしくです。