#!/usr/bin/env ruby # # $Id: icmp-recv 174 2010-08-21 22:26:52Z jhart $ # # # Simple re-implementation of tcpdump using Racket require 'pcaplet' include Pcap require 'rubygems' require 'racket' #require 'racket-all' include Racket pcaplet = Pcaplet.new("-s 65535" + ARGV.join) pcaplet.each_packet { |pkt| if (pkt.datalink == DLT_EN10MB) l2 = L2::Ethernet.new(pkt.raw_data) puts l2.pretty if (l2.ethertype == 0x0800) l3 = L3::IPv4.new(l2.payload) puts l3.pretty case l3.protocol when 1 l4 = L4::ICMP.new(l3.payload) puts l4.pretty else next end end else puts "Skipping unknown datalink #{pkt.datalink}" end } # vim: set ts=2 et sw=2: