Advertisement
Guest User

Untitled

a guest
May 25th, 2015
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 3.05 KB | None | 0 0
  1. require 'prawn'
  2. require 'prawn/table'
  3. require 'rexml/document'
  4. require 'find'
  5. include REXML
  6.  
  7. $data_dir = 'pomiary/pomiar'
  8.  
  9. def getKismetFiles()
  10.   netxml_files = []
  11.   j = 1
  12.   while j <= 20 do
  13.     Find.find($data_dir + j.to_s) do |path|
  14.       netxml_files << path if path =~ /.*\.netxml$/
  15.     end
  16.     j += 1
  17.   end
  18.   return netxml_files
  19. end
  20.  
  21. def parseKismetFile(name)
  22.   puts 'przetwarzam ' + name
  23.   xmlfile = File.new(name)
  24.   xmldoc = Document.new(xmlfile)
  25.   arr = Array.new
  26.   clients = []
  27.   i = 0
  28.   xmldoc.elements.each('detection-run/wireless-network') do |o|
  29.     arr[i] = Array.new
  30.     clients = o.get_elements('./wireless-client/client-mac')
  31.     puts clients.length
  32.     cli_arr = []
  33.     clients.each do |cl|
  34.       puts cl.get_text
  35.       cli_arr.push cl.get_text
  36.     end
  37.     $ssid = String.new
  38.     if (o.elements['SSID'])
  39.       #puts 'nazwa: ' + o.elements['SSID'].elements['essid'].get_text.to_s
  40.       $ssid = o.elements['SSID'].elements['essid'].get_text.to_s
  41.       arr[i].push($ssid)
  42.       #puts 'predkosc transmisji: ' + o.elements['SSID'].elements['max-rate'].get_text.to_s
  43.       arr[i].push(o.elements['SSID'].elements['max-rate'].get_text.to_s)
  44.       #puts 'zabezpieczenia: ' + o.elements['SSID'].elements['encryption'].get_text.to_s
  45.       arr[i].push(o.elements['SSID'].elements['encryption'].get_text.to_s)
  46.     else next
  47.     end
  48.     #puts 'rodzaj: ' + o.attributes['type'].to_s
  49.     arr[i].push(o.attributes['type'].to_s)
  50.     #puts 'mac: ' + o.elements['BSSID'].get_text.to_s
  51.     arr[i].push(o.elements['BSSID'].get_text.to_s)
  52.     #puts 'sila sygnalu: ' + o.elements['snr-info'].elements['last_signal_dbm'].get_text.to_s
  53.     arr[i].push(o.elements['snr-info'].elements['last_signal_dbm'].get_text.to_s)
  54.     if (o.elements['carrier'])
  55.       #puts 'standardy: ' + o.elements['carrier'].get_text.to_s
  56.       arr[i].push(o.elements['carrier'].get_text.to_s)
  57.     else
  58.       arr[i].push('brak danych')
  59.     end
  60.     #puts 'kanal: ' + o.elements['channel'].get_text.to_s
  61.     arr[i].push(o.elements['channel'].get_text.to_s)
  62.     #puts 'pakiety przechwycone: ' + o.elements['packets'].elements['total'].get_text.to_s
  63.     arr[i].push(o.elements['packets'].elements['total'].get_text.to_s)
  64.     str = $ssid + ': liczba klientow: ' + cli_arr.length.to_s + '; adresy MAC: ' + cli_arr.join(', ')
  65.     arr[i].push(str)
  66.     puts "_______________________________"
  67.     break if arr.length >= 5
  68.     i += 1
  69.   end
  70.   arr.sort_by! { |n, t, z, r, m, s, st, ch, p, x| s }
  71.   arr.unshift(["nazwa", "transm.", "zabeczp.", "rodzaj", "MAC", "signal ", "standard", "channel ", "pakiety ", "klienci: "])
  72.   return arr
  73. end
  74.  
  75. Prawn::Document.generate("tabele.pdf") do
  76.   files = getKismetFiles()
  77.   q = 1
  78.   files.each do |f|
  79.     font_size 12
  80.     text 'pomiar' + q.to_s
  81.     move_down 5
  82.     font_size 9
  83.     my_tab = parseKismetFile(f)
  84.     my_clients = Array.new
  85.     my_tab.each do |tab|
  86.       my_clients.push(tab.pop)
  87.     end
  88.     t = make_table (my_tab)
  89.     t.row(0).font_style = :bold
  90.     t.draw
  91.     move_down 10
  92.     text my_clients.join("\n")
  93.     q += 1
  94.   end
  95. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement