Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'prawn'
- require 'prawn/table'
- require 'rexml/document'
- require 'find'
- include REXML
- $data_dir = 'pomiary/pomiar'
- def getKismetFiles()
- netxml_files = []
- j = 1
- while j <= 20 do
- Find.find($data_dir + j.to_s) do |path|
- netxml_files << path if path =~ /.*\.netxml$/
- end
- j += 1
- end
- return netxml_files
- end
- def parseKismetFile(name)
- puts 'przetwarzam ' + name
- xmlfile = File.new(name)
- xmldoc = Document.new(xmlfile)
- arr = Array.new
- clients = []
- i = 0
- xmldoc.elements.each('detection-run/wireless-network') do |o|
- arr[i] = Array.new
- clients = o.get_elements('./wireless-client/client-mac')
- puts clients.length
- cli_arr = []
- clients.each do |cl|
- puts cl.get_text
- cli_arr.push cl.get_text
- end
- $ssid = String.new
- if (o.elements['SSID'])
- #puts 'nazwa: ' + o.elements['SSID'].elements['essid'].get_text.to_s
- $ssid = o.elements['SSID'].elements['essid'].get_text.to_s
- arr[i].push($ssid)
- #puts 'predkosc transmisji: ' + o.elements['SSID'].elements['max-rate'].get_text.to_s
- arr[i].push(o.elements['SSID'].elements['max-rate'].get_text.to_s)
- #puts 'zabezpieczenia: ' + o.elements['SSID'].elements['encryption'].get_text.to_s
- arr[i].push(o.elements['SSID'].elements['encryption'].get_text.to_s)
- else next
- end
- #puts 'rodzaj: ' + o.attributes['type'].to_s
- arr[i].push(o.attributes['type'].to_s)
- #puts 'mac: ' + o.elements['BSSID'].get_text.to_s
- arr[i].push(o.elements['BSSID'].get_text.to_s)
- #puts 'sila sygnalu: ' + o.elements['snr-info'].elements['last_signal_dbm'].get_text.to_s
- arr[i].push(o.elements['snr-info'].elements['last_signal_dbm'].get_text.to_s)
- if (o.elements['carrier'])
- #puts 'standardy: ' + o.elements['carrier'].get_text.to_s
- arr[i].push(o.elements['carrier'].get_text.to_s)
- else
- arr[i].push('brak danych')
- end
- #puts 'kanal: ' + o.elements['channel'].get_text.to_s
- arr[i].push(o.elements['channel'].get_text.to_s)
- #puts 'pakiety przechwycone: ' + o.elements['packets'].elements['total'].get_text.to_s
- arr[i].push(o.elements['packets'].elements['total'].get_text.to_s)
- str = $ssid + ': liczba klientow: ' + cli_arr.length.to_s + '; adresy MAC: ' + cli_arr.join(', ')
- arr[i].push(str)
- puts "_______________________________"
- break if arr.length >= 5
- i += 1
- end
- arr.sort_by! { |n, t, z, r, m, s, st, ch, p, x| s }
- arr.unshift(["nazwa", "transm.", "zabeczp.", "rodzaj", "MAC", "signal ", "standard", "channel ", "pakiety ", "klienci: "])
- return arr
- end
- Prawn::Document.generate("tabele.pdf") do
- files = getKismetFiles()
- q = 1
- files.each do |f|
- font_size 12
- text 'pomiar' + q.to_s
- move_down 5
- font_size 9
- my_tab = parseKismetFile(f)
- my_clients = Array.new
- my_tab.each do |tab|
- my_clients.push(tab.pop)
- end
- t = make_table (my_tab)
- t.row(0).font_style = :bold
- t.draw
- move_down 10
- text my_clients.join("\n")
- q += 1
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement