class Sniffit::Sniffer

Attributes

cap_file[R]
networks[R]

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/sniffit.rb, line 30
def initialize
  super
  @previous_size = 0
end
sniff() click to toggle source
# File lib/sniffit.rb, line 26
def self.sniff
  Sniffit::Sniffer.new.start()
end

Public Instance Methods

crack(bssid) click to toggle source
# File lib/sniffit.rb, line 71
def crack(bssid)
  cracking_output = `aircrack-ng -b #{bssid} /tmp/#{@cap_file}`.strip

  failed = cracking_output.split("Failed. Next try with").length > 1
  return nil if failed
  return output.split("KEY FOUND! [ ")[1].split(" ").first.strip.gsub(/:/,"")
end
find_wep_networks() click to toggle source
# File lib/sniffit.rb, line 35
def find_wep_networks()
  networks = `#{AIRPORT_EXECUTABLE} scan | grep WEP`.split(/\n/)
  
  networks.map! do |line|
    parts = line.strip.split(/\s+/)
    network = Sniffit::Network.new
    network.ssid = parts[0]
    network.bssid = parts[1]
    network.strength = 100+parts[2].to_i
    network.channel = parts[3]
    network
  end
  
  return networks
end
sniff(network) click to toggle source
# File lib/sniffit.rb, line 51
def sniff(network)
  return false if network.is_a?(Network) == false
  
  before_cap_files = Dir.entries("/tmp/").select { |filename|
    filename.include?(".cap")
  }
  
  Thread.new do
    `sudo #{AIRPORT_EXECUTABLE} sniff #{network.channel}`
  end
  
  after_cap_files = Dir.entries("/tmp/").select { |filename|
    filename.include?(".cap")
  }
  
  @cap_file = (after_cap_files-before_cap_files).first
  puts @cap_file
  return true
end