hidden-hippo 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 723e65ca63ec61202d7e3ba1c8e4097a418ad5c4
4
- data.tar.gz: d60d6875a2378c997e3ec2b68a8cf5637640ea72
3
+ metadata.gz: ccb9f7869a3c37fb7c556f6e0fb4e7e06f5e664b
4
+ data.tar.gz: a17f144d14ce85b30982a3aa0c7a3923346618de
5
5
  SHA512:
6
- metadata.gz: a7a3c6d86d8f8a72ad5880728d5fc8248a914f1c0f2363f52f5fad85d5ec51067752843e8c763afa16c71eff71acd4cdce5c39f0590d0afab2661c21bb3625e0
7
- data.tar.gz: 6235f7eadc6ab0bbcb22ab3f9e24d2165440e195a8c984911988b3d3cf9e90d684ac12bc8106f790df923d2cf21e3e20b055132b129ee73fe6d5b519a5593c08
6
+ metadata.gz: 63fe3e5700e5ee644177a7b1d00232ac21034cc4d632f76d3e10d70517f6449c7324d9b614ace7b651016528e26d2309b02cfcef3b67c71eb6a2b05901594cbc
7
+ data.tar.gz: 30fe38b33df3f9d567196f10dcf544c900fa6183d1659366a8503398cc45601f8bbcd3ee9d6074196ea07c300de8bc5832b2f8a086216fa3a175713f9749be74
@@ -5,8 +5,12 @@
5
5
  <%= erb :possibilities, locals: {name: 'Host name', possibilities: dossier.hostname} %>
6
6
  <%= erb :possibilities, locals: {name: 'User name', possibilities: dossier.username} %>
7
7
  <%= erb :possibilities, locals: {name: 'Email', possibilities: dossier.email} %>
8
- <%= erb :possibilities, locals: {name: 'Device', possibilities: dossier.device} %>
9
8
  <%= erb :possibilities, locals: {name: 'Gender', possibilities: dossier.gender} %>
10
9
  <%= erb :possibilities, locals: {name: 'Age', possibilities: dossier.age} %>
11
10
  <%= erb :possibilities, locals: {name: 'History', possibilities: dossier.history} %>
11
+ <%= erb :possibilities, locals: {name: 'Device Name', possibilities: dossier.device_name} %>
12
+ <%= erb :possibilities, locals: {name: 'Model Number', possibilities: dossier.device_model_number} %>
13
+ <%= erb :possibilities, locals: {name: 'Model Name', possibilities: dossier.device_model_name} %>
14
+ <%= erb :possibilities, locals: {name: 'Device Manufacturer', possibilities: dossier.device_manufacturer} %>
15
+ <%= erb :possibilities, locals: {name: 'OUIs', possibilities: dossier.device_oui} %>
12
16
  </div>
@@ -15,9 +15,13 @@ module HiddenHippo
15
15
  field :hostname, type: Possibilities, default: ->{ Possibilities.new }
16
16
  field :username, type: Possibilities, default: ->{ Possibilities.new }
17
17
  field :email, type: Possibilities, default: ->{ Possibilities.new }
18
- field :device, type: Possibilities, default: ->{ Possibilities.new }
19
18
  field :gender, type: Possibilities, default: ->{ Possibilities.new }
20
19
  field :age, type: Possibilities, default: ->{ Possibilities.new }
21
20
  field :history, type: Possibilities, default: ->{ Possibilities.new }
21
+ field :device_name, type: Possibilities, default: ->{ Possibilities.new }
22
+ field :device_model_number, type: Possibilities, default: ->{ Possibilities.new }
23
+ field :device_model_name, type: Possibilities, default: ->{ Possibilities.new }
24
+ field :device_manufacturer, type: Possibilities, default: ->{ Possibilities.new }
25
+ field :device_oui, type: Possibilities, default: ->{ Possibilities.new }
22
26
  end
23
27
  end
@@ -0,0 +1,23 @@
1
+ require 'hidden_hippo/update'
2
+
3
+ module HiddenHippo
4
+ module Extractors
5
+ class WpsExtractor
6
+ def initialize(queue)
7
+ @queue = queue
8
+ end
9
+
10
+ def call(packet)
11
+ fields = {
12
+ device_name: packet.device_name,
13
+ device_model_name: packet.device_model_number,
14
+ device_model_number: packet.device_model_number,
15
+ device_manufacturer: packet.device_manufacturer,
16
+ device_oui: packet.device_oui
17
+ }
18
+
19
+ @queue << Update.new(packet.mac_src, fields.delete_if{|_, v| v.nil?})
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,15 @@
1
+ require 'hidden_hippo/packets/packet'
2
+
3
+ module HiddenHippo
4
+ module Packets
5
+ class Wps < Packet
6
+ filter 'wps.device_name!="" and wps.device_name!=" " and wps.model_number!="" and wps.model_number != " " and wps.manufacturer!="" and wps.manufacturer != " " and wlan_mgt.ssid==""'
7
+
8
+ field :device_model_number, tshark: 'wps.model_number'
9
+ field :device_model_name, tshark: 'wps.model_name'
10
+ field :device_manufacturer, tshark: 'wps.manufacturer'
11
+ field :device_name, tshark: 'wps.device_name'
12
+ field :device_oui, tshark: 'wlan_mgt.tag.oui'
13
+ end
14
+ end
15
+ end
@@ -4,11 +4,14 @@ require 'hidden_hippo/updator'
4
4
  require 'hidden_hippo/packets/dns'
5
5
  require 'hidden_hippo/packets/dhcp'
6
6
  require 'hidden_hippo/packets/http'
7
+ require 'hidden_hippo/packets/wps'
7
8
 
8
9
  require 'hidden_hippo/extractors/mdns_hostname_extractor'
9
10
  require 'hidden_hippo/extractors/dhcp_hostname_extractor'
10
11
  require 'hidden_hippo/extractors/http_request_url_extractor'
11
12
  require 'hidden_hippo/extractors/dns_llmnr_extractor'
13
+ require 'hidden_hippo/extractors/dns_history_extractor'
14
+ require 'hidden_hippo/extractors/wps_extractor'
12
15
  require 'thread'
13
16
 
14
17
  module HiddenHippo
@@ -20,11 +23,14 @@ module HiddenHippo
20
23
  @scanners = []
21
24
  @scanners << Scanner.new(file, Packets::Dns,
22
25
  Extractors::MdnsHostnameExtractor.new(updator_queue),
26
+ Extractors::DnsHistoryExtractor.new(updator_queue),
23
27
  Extractors::DnsLlmnrExtractor.new(updator_queue))
24
28
  @scanners << Scanner.new(file, Packets::Dhcp,
25
29
  Extractors::DhcpHostnameExtractor.new(updator_queue))
26
30
  @scanners << Scanner.new(file, Packets::Http,
27
31
  Extractors::HttpRequestUrlExtractor.new(updator_queue))
32
+ @scanners << Scanner.new(file, Packets::Wps,
33
+ Extractors::WpsExtractor.new(updator_queue))
28
34
  end
29
35
 
30
36
  def call
@@ -30,7 +30,9 @@ module HiddenHippo
30
30
  next
31
31
  end
32
32
 
33
- split_line = line.chomp.split("\t").map {|f| f.empty? ? nil : f}
33
+ split_line = line.chomp.split("\t")
34
+ .map(&:rstrip).map(&:lstrip)
35
+ .map {|f| f.empty? ? nil : f}
34
36
 
35
37
  assoc = tshark_fields.zip split_line
36
38
  packet = @packet_class.parse Hash[*assoc.flatten]
@@ -48,4 +50,4 @@ module HiddenHippo
48
50
  end
49
51
  end
50
52
  end
51
- end
53
+ end
@@ -1,3 +1,3 @@
1
1
  module HiddenHippo
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
@@ -38,4 +38,4 @@ describe 'HiddenHippo::Scanner(Dns)' do
38
38
  scanner.call
39
39
  end
40
40
  end
41
- end
41
+ end
@@ -0,0 +1,30 @@
1
+ require 'hidden_hippo/scanner'
2
+
3
+ describe HiddenHippo::Scanner do
4
+ let(:extractor) {double 'extractor', call: nil}
5
+ let(:packet_class) {double 'packet_class', filter: '', tshark_fields: []}
6
+
7
+ def make_scanner(file)
8
+ HiddenHippo::Scanner.new file, packet_class, extractor
9
+ end
10
+
11
+ describe '#call' do
12
+ it 'should ignore fields that are only whitespace' do
13
+ scanner = make_scanner 'spec/fixtures/blank_wps.pcap'
14
+
15
+ allow(packet_class).to receive(:tshark_fields).and_return(%w{wps.device_name})
16
+ expect(packet_class).to receive(:parse).with({'wps.device_name' => nil})
17
+
18
+ scanner.call
19
+ end
20
+
21
+ it 'should ignore empty fields' do
22
+ scanner = make_scanner 'spec/fixtures/tcp_noise.pcap'
23
+
24
+ allow(packet_class).to receive(:tshark_fields).and_return(%w{udp.srcport})
25
+ expect(packet_class).to receive(:parse).with({'udp.srcport' => nil}).at_least(:once)
26
+
27
+ scanner.call
28
+ end
29
+ end
30
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hidden-hippo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Boris Bera
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2015-03-28 00:00:00.000000000 Z
14
+ date: 2015-04-09 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -198,11 +198,13 @@ files:
198
198
  - lib/hidden_hippo/extractors/dns_llmnr_extractor.rb
199
199
  - lib/hidden_hippo/extractors/http_request_url_extractor.rb
200
200
  - lib/hidden_hippo/extractors/mdns_hostname_extractor.rb
201
+ - lib/hidden_hippo/extractors/wps_extractor.rb
201
202
  - lib/hidden_hippo/gui.rb
202
203
  - lib/hidden_hippo/packets/dhcp.rb
203
204
  - lib/hidden_hippo/packets/dns.rb
204
205
  - lib/hidden_hippo/packets/http.rb
205
206
  - lib/hidden_hippo/packets/packet.rb
207
+ - lib/hidden_hippo/packets/wps.rb
206
208
  - lib/hidden_hippo/paths.rb
207
209
  - lib/hidden_hippo/possibilities.rb
208
210
  - lib/hidden_hippo/reader.rb
@@ -218,6 +220,7 @@ files:
218
220
  - spec/extractors/dns_llmnr_extractor_spec.rb
219
221
  - spec/extractors/http_request_url_extractor_spec.rb
220
222
  - spec/extractors/mdns_hostname_extractor_spec.rb
223
+ - spec/fixtures/blank_wps.pcap
221
224
  - spec/fixtures/dns_elise.pcap
222
225
  - spec/fixtures/dns_reddit_eth.pcap
223
226
  - spec/fixtures/tcp_noise.pcap
@@ -225,6 +228,7 @@ files:
225
228
  - spec/hidden_hippo_spec.rb
226
229
  - spec/packet_spec.rb
227
230
  - spec/possibilities_spec.rb
231
+ - spec/scanner_spec.rb
228
232
  - spec/spec_helper.rb
229
233
  - spec/support/cli_controller_examples.rb
230
234
  - spec/updator_spec.rb
@@ -262,6 +266,7 @@ test_files:
262
266
  - spec/extractors/dns_llmnr_extractor_spec.rb
263
267
  - spec/extractors/http_request_url_extractor_spec.rb
264
268
  - spec/extractors/mdns_hostname_extractor_spec.rb
269
+ - spec/fixtures/blank_wps.pcap
265
270
  - spec/fixtures/dns_elise.pcap
266
271
  - spec/fixtures/dns_reddit_eth.pcap
267
272
  - spec/fixtures/tcp_noise.pcap
@@ -269,6 +274,7 @@ test_files:
269
274
  - spec/hidden_hippo_spec.rb
270
275
  - spec/packet_spec.rb
271
276
  - spec/possibilities_spec.rb
277
+ - spec/scanner_spec.rb
272
278
  - spec/spec_helper.rb
273
279
  - spec/support/cli_controller_examples.rb
274
280
  - spec/updator_spec.rb