マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

ネットワーク

コードその1

RawSocketを使ったRubyのサンプルその1。そのうち解説がでるはず最初のコード # -*- encoding: utf-8 -*- require 'socket.rb' ETH_P_ALL = 0x300 def mac_to_s(frame, index) header = frame[index, 6].unpack('C*'); return sprintf('%02X:%02X:%02X:%02X…

DHCP

パケットを監視してたら、定期的にUDPでどこかと通信していたのでポート番号を調べたらDHCPサーバと通信していたらしい。一定時間後とにIPアドレスの更新をしているらしい。自分でDHCPDISCOVERとか送信してどんな動きをするのかちょっと見てみたくなった。

TCP/IPパケットの組み立てかたを考える

TCPヘッダのシーケンス番号と確認応答番号、制御フラグの組み合わせでパケットを組み立てる。 最初のパケットは確認応答番号が0みたいなので、それから始めてもいいけど、制御フラグのSYNを確認してそれをスタートとする。 SYNが1のパケットを見つけたら、…

制御フラグ

HTTPパケットを組み立てるためには制御フラグも意識したほうがいいのだろうか?HTTPヘッダの一部(GETやHTTP)を確認したら、そのTCPヘッダのシーケンス番号を記憶し、それに1を加えた応答番号のパケットを探せばいいと思っていた。でも先にパケットを組み立…

RawSocketを使ってHTTPパケットを組み立てたい

あるサイトでのCookieやPOSTでのデータのやりとりを見たくてRawSocketを使ってモニタリングしたい。大抵のサイトはCookieやその他のデータも最初に送るパケットを監視すれば大体見れるけど、中には数キロバイトのデータを送る場合もあるので分割されたパケッ…

下のnetinet/in_system.hは間違いでnetinet/in_systm.hが正しかった。コンパイラにnetinet/in_system.hが見つかりませんと言われたので、ファイル名を見たらin_systmだったことに気づく。ややこしい名前だ。これで見付からないと言われてる人は他にもいそう

TCPヘッダ構造体

LinuxでRawソケットを使おうと思ってたけど、tcphdrのメンバ変数の名前が環境によって違うみたいだね。#include の前に#define __FAVOR_BSDと入れればいいみたいだけど

『基礎からわかるTCP/IP ネットワーク実験プログラミング』という本を読んでいたら#include という部分が気になったのでそのファイルを覗いてみたら typedef u_int16_t n_short; /* short as received from the net */ typedef u_int32_t n_long; /* long as…