読者です 読者をやめる 読者になる 読者になる

harry’s memorandum

おれおれメモ

rubyでhttpプロトコルをのぞいてsessionidを取得してみる

ruby

ruby/pcapというlibpcapを扱う便利なライブラリをみつけた。
http://www.goto.info.waseda.ac.jp/~fukusima/ruby/pcap-j.html
これは便利だ。これでsessionidをとっ捕まえてなにかを自動化できそうだ。

ruby/pcapインストール

$ sudo yum install libpcap-devel
$ wget http://www.goto.info.waseda.ac.jp/~fukusima/ruby/ruby-pcap-0.6.tar.gz
$ tar xvzf ruby-pcap-0.6.tar.gz
$ cd pcap
$ ruby extconf.rb
$ make
$ sudo make install

あとは80ポートを監視するだけ。

#!/usr/bin/ruby
require 'pcap'
def capture_data(interval)
  capdat = []
  i = 0
  pcaplet = Pcap::Capture.open_live("eth0", 1460,true,1000)
  access = Pcap::Filter.new('tcp and dst port 80',pcaplet)
  pcaplet.setfilter(access)
  pcaplet.each_packet { |pkt|
    if pkt.tcp_data_len>0 then
      capdat = pkt.tcp_data.scan(/sessionid=[0-9a-z]*/)
      i += 1
    end
    break if i>interval
  }
  pcaplet.close
  return capdat.uniq
end

p capture_data(3);