#!/usr/bin/env ruby $:.unshift(File.dirname(__FILE__)) require "Lorcon" require "pp" pp Lorcon.version pp Lorcon.drivers # Beacon frame from tx.c packet = [ 0x80, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, # dur ffff 0xff, 0xff, 0x00, 0x0f, 0x66, 0xe3, 0xe4, 0x03, 0x00, 0x0f, 0x66, 0xe3, 0xe4, 0x03, 0x00, 0x00, # 0x0000 - seq no. 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, # BSS timestamp 0x64, 0x00, 0x11, 0x00, 0x00, 0x0f, 0x73, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x63, 0x6c, 0x65, 0x76, 0x65, 0x72, 0x01, 0x08, 0x82, 0x84, 0x8b, 0x96, 0x24, 0x30, 0x48, 0x6c, 0x03, 0x01, 0x01, 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, 0x2a, 0x01, 0x05, 0x2f, 0x01, 0x05, 0x32, 0x04, 0x0c, 0x12, 0x18, 0x60, 0xdd, 0x05, 0x00, 0x10, 0x18, 0x01, 0x01, 0xdd, 0x16, 0x00, 0x50, 0xf2, 0x01, 0x01, 0x00, 0x00, 0x50, 0xf2, 0x02, 0x01, 0x00, 0x00, 0x50, 0xf2, 0x02, 0x01, 0x00, 0x00, 0x50, 0xf2, 0x02 ].pack('C*') # Configure the card for reliable injection tx = Lorcon::Device.new('ath0', 'madwifing') tx.fmode = "INJECT" tx.channel = 11 tx.txrate = 2 tx.modulation = "DSSS" sa = Time.now.to_f tx.write(packet, 500, 0) ea = Time.now.to_f - sa sb = Time.now.to_f 1.upto(500) { |i| tx.write(packet, 11, 0) } eb = Time.now.to_f - sb $stdout.puts "Sent 500 packets (C) in #{ea.to_s} seconds" $stdout.puts "Sent 500 packets (Ruby) in #{eb.to_s} seconds"