• ベストアンサー

Ruby1.8を使って、パケットの解析を行ないたいと考えています。

Ruby1.8を使って、パケットの解析を行ないたいと考えています。 RubyPcapを利用して、pcapデータを読み込んで、パケットのデータ(ペイロード)を表示するプログラムを作りたいのです。 ↓のサイトによると、送信先IPアドレスなど取得できるのですが、同じ要領でペイロードのデータを取得することはできないのでしょうか? http://www.db.is.kyushu-u.ac.jp/rinkou/libpcap/rubypacketdb.html

  • Ruby
  • 回答数1
  • ありがとう数11

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

使ったことはありませんが、マニュアルにあるとおり、 http://www.goto.info.waseda.ac.jp/~fukusima/ruby/pcap/doc-ja/index.html TCPPacketクラスならば tcp_data UDPPacketクラスならば udp_data が、パケットのデータ(ペイロード)では? マニュアルのないクラスなら、ソースを見たりmethodsを使ったりしますが、 http://doc.okkez.net/static/187/class/Object.html マニュアルがあるなら、心当たりのあるページを全て確認しましょう。

関連するQ&A

  • CentOS5でruby1.8とrails2、SQlite3のインスト

    CentOS5でruby1.8とrails2、SQlite3のインストール。 環境がCentOS5.5、ruby1.8.7-p302、SQlite3系で下記のサイトにあるようなRubyプログラミングを考えている者です。 http://www.db.is.kyushu-u.ac.jp/rinkou/libpcap/rubypacketdb.html 今回は、http://www.gfd-dennou.org/arch/davis/gfdnavi/doc/install/install-ru... を参考にしながら環境を作っていましたが、rubygem1.3.7でsetupを行うと、勝手にrailsの最新版をインストールされてしまいます。(なぜか強制的に3.0.0へ) どの段階でどうコマンドを打てば、railsの古いバージョン(例えば2.3.5)をインストール出来るのでしょうか? また、http://www.db.is.kyushu-u.ac.jp/rinkou/ruby/rubyinstalllinux.html を参考にしてSQlite3をgemでインストールしようとしたところ、「ruby1.9.1にヴァージョンをあげて」を怒られました。 ググってみたら、ruby1.8.7でもsqlite3は導入できるそうなので納得いきません。 なにか解決法はないでしょうか? 長くなりすいませんでした。どうかお願い致します。

  • Rubyでパケットの情報をDBに入れるプログラムを動かしております。

    Rubyでパケットの情報をDBに入れるプログラムを動かしております。 以下のサイトにあるプログラムを実行しました。 http://www.db.is.kyushu-u.ac.jp/rinkou/libpcap/rubypacketdb.html エラーメッセージで、以下のように出力されました。 $ sudo ruby packet.rb drop table tcppackets... define table tcppackets... /var/lib/gems/1.8/gems/sqlite3-ruby-1.3.1/lib/sqlite3/database.rb:85:in `initialize': table tcppackets already exists (SQLite3::SQLException) from /var/lib/gems/1.8/gems/sqlite3-ruby-1.3.1/lib/sqlite3/database.rb:85:in `new' from /var/lib/gems/1.8/gems/sqlite3-ruby-1.3.1/lib/sqlite3/database.rb:85:in `prepare' from /var/lib/gems/1.8/gems/sqlite3-ruby-1.3.1/lib/sqlite3/database.rb:220:in `execute_batch' from packet.rb:51 どうしたら良いか教えて頂けないでしょうか。

  • rubyでパケットキャプチャ出来るプログラムを実行したところ、以下のよ

    rubyでパケットキャプチャ出来るプログラムを実行したところ、以下のようなエラーメッセージが出力されました。 上位4つのwaraningとno suitable device foundのエラーを回避する策を教えて頂きたいです。 $ ruby packet.rb /usr/local/lib/site_ruby/1.8/i486-linux/pcap.so: warning: do not use Fixnums as Symbols /usr/local/lib/site_ruby/1.8/i486-linux/pcap.so: warning: do not use Fixnums as Symbols /usr/local/lib/site_ruby/1.8/i486-linux/pcap.so: warning: do not use Fixnums as Symbols /usr/local/lib/site_ruby/1.8/pcaplet.rb:41:in `lookupdev': no suitable device found (Pcap::PcapError) from /usr/local/lib/site_ruby/1.8/pcaplet.rb:41:in `initialize' from packet.rb:12:in `new' from packet.rb:12 プログラムは、以下のサイトにあるものを利用しています。 http://d.hatena.ne.jp/tullio/20080217/1203261760 #!/usr/local/bin/ruby require 'pcaplet' include Pcap class Time # tcpdump style format def to_s sprintf "%0.2d:%0.2d:%0.2d.%0.6d", hour, min, sec, tv_usec end end pcaplet = Pcaplet.new pcaplet.each_packet { |pkt| print "#{pkt.time} #{pkt}" if pkt.tcp? print " (#{pkt.tcp_data_len})" print " ack #{pkt.tcp_ack}" if pkt.tcp_ack? print " win #{pkt.tcp_win}" end if pkt.ip? print " (DF)" if pkt.ip_df? end print "\n" } pcaplet.close 以上、宜しくお願い致します。

  • SQLite3コマンドライン・インタフェースの引数付起動

    SQLite3コマンドライン・インタフェースを外部プログラムから引数付で起動する事はできますか? http://www.db.is.kyushu-u.ac.jp/rinkou/sqlite/sqlitecommand.html#eq_3

  • XAMPPをインストール後

    XAMPPをインストール後に下記のページに従い、作業を行っているのですがApacheがスタートをクリックしてもSTOP(running)の表示に変わりません。mysqlは変わるのですが・・・ 原因としては何が考えられるでしょうか? http://www.db.is.kyushu-u.ac.jp/rinkou/mysql/xamppinstall.html

    • ベストアンサー
    • PHP
  • Sinの計算にかんして教えて下さい。

    http://www.db.is.kyushu-u.ac.jp/rinkou/pascal/kougi/lec2.pdf http://www5b.biglobe.ne.jp/~fji/fjicalc/README.TXT 上記のように Sin(4/5) = 0.717356090899523 と計算される方法があるのですが、これはどういう手法なのでしょうか? πでもなく°でもないようなのですが、どういう単位系が使われているのでしょうか?

  • パケットのフィルタリング

    どうぞお知恵をお貸しください。 別プロセスからインターネット上のサーバ宛に送信されるパケットを監視し、 データ部に特定の文字列が含まれる場合、パケットをブロック(破棄)したいと考えております。 WPE Pro と言うソフトのフィルタ機能が、まさに理想なのですが 実現するにはどのような方法を取ればよいのか悩んでおります。 現在、C#のSocketクラスを使い、以下の流れまでは出来たのですが、 送信パケットをブロックする方法が分からず困っております。 アダプタ(IPアドレス)の取得 -> RAWソケットの作成 -> 非ブロッキングモードの設定 -> ネットワークカードをプロミスキャスモードに設定 -> パケットの取得 -> ヘッダ&データ部の解析 言語・開発環境は問いません。 何かヒントだけでも与えて頂ければ幸いです。

  • パケット

    tcp/ipの勉強をしています. インターネットを通じて目的のサーバにたどり着くまでにデータを分割して送信するとわかりました. 具体的にどのレイヤでパケット(?)の分割をするのでしょうか? よろしくおねがいします.

  • libpcap のフィルタが正常動作しない

    Linux 2.4.21-37.ELsmp、gcc 3.2.3で、libpcap-0.9.4 と tcpdump-3.9.4 のソースの tar ball をコンパイルしました。パケットの取得はできるのですが、フィルタを指定すると動作しません: (X)tcpdump -i eth1 'ip[12]=0x0a and ip[13]0x00 and ip[14]=0x00 and ip[15]=0x01' → 全くキャプチャ出来ない (△)tcpdump -i eth1 'host 10.0.0.1' → キャプチャ出来るが、なぜか destination address が 10.0.0.1 のものだけ取れる (X)tcpdump -i eth1 'dst host 10.0.0.1' → 全くキャプチャ出来ない 自作のソースで、 pcap_loop()/packet_handler(...pkt_data...) memcpy( &ip_src, &pkt_data[26], 4 );、memcpy( &ip_dst, &pkt_data[30], 4 ); すると、正常にアドレスを参照できます。 ところが、pcap_compile()/pcap_setfilter() を使うと、フィルタが正常に認識されないのです。 どうしたらよいのでしょう・・・?

  • WinPcap4.0.2のDLLをVB6から利用したい

    WinPcap4.0.2のソースファイルを使い、「wpcap.dll」のビルドを行いました。次にVBからこのDLLを利用したいと考えています。ソースの一部を変更することで利用できるのでしょうか? 開発環境:WindowsXPSP2 VC++6.0 WinPcap4.0.2のソースファイルを使い、「wpcap.dll」のビルドを行いました。VB6からこのDLLを使ってパケットキャプチャソフトを作ろうと思っています。そこで「wpcap.dll」のソースファイル”pcap.c”の関数 (例)int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user)を int __stdcall pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user)に変更し ヘッダファイル”pcap.h” (例)int pcap_loop(pcap_t *, int, pcap_handler, u_char *);を int __stdcall pcap_loop(pcap_t *, int, pcap_handler, u_char *);に変更しました。 (他の関数も同様に変更しました。) DEFファイルについては、すでにあった”wpcap.def”を利用しています。 ここで「wpcap.dll」について構造を説明すると元々上記の関数をビルドして”libpcap.lib”というファイルが作成され 次にWin32用関数のソースをラッピングして、”libpcap.lib”を取り込む形で「wpcap.dll」が完成します。 ビルド自体はうまくいくのですが、WinPcapを利用するパケットキャプチャソフト(VCでビルドしたもの)からこのDLLを呼び出すと 「Sample.exeでハンドルされていないWin32の例外が発生しました」というエラーが表示される。 このソースファイルは http://www.winpcap.org/devel.htm ここからダウンロードすることができます。 また使用したキャプチャソフトは ”WinPcapを使用したパケットモニターの作成” http://codezine.jp/article/detail/126?p=1 サイトのものを利用しています。 ご助言をお願いします。

専門家に質問してみよう