#!/usr/bin/env ruby # # $Id: cdp 154 2009-12-13 19:52:32Z jhart $ # # Send amusing CDP packets require 'rubygems' require 'racket' unless (ARGV.size == 1) puts "Usage: #{$0} " exit end include Racket n = Racket::Racket.new n.iface = ARGV[0] n.layers[2] = L2::EightOTwoDotThree.new(Misc.randstring(14)) n.layers[2].dst_mac = "01:00:0c:cc:cc:cc" n.layers[2].length = 0 n.layers[3] = L2::LLC.new() n.layers[4] = L2::SNAP.new() n.layers[4].pid = 0x2000 n.layers[5] = L3::CDP.new() n.layers[5].version = 1 n.layers[5].add_field(1, "CDP, FTW!") n.layers[5].add_field(3, "PetabitEthernet0/1") n.layers[5].add_field(5, "Some really old version of IOS that nobody, except you, uses.") n.layers[5].add_field(6, "Linux") n.layers[5].add_field(4, "\xff\xff\xff\xff") # capabilities galore! n.layers[5].add_field(9, "wtf.edu") # vlan management domain n.layers[5].add_field(10, "\x00\x20") n.layers.compact.each do |l| puts l.pretty end n.sendpacket