waps 0.1.1 → 1.0.0

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.
Files changed (4) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +13 -5
  3. data/lib/waps.rb +18 -65
  4. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 44feb99ca1eaedbf4222928c4e09a68476969dcdd18a5e6e0414d8a27ff54c6a
4
- data.tar.gz: df55be1c6de6a8c22866e5561636920a932970d57877b6ff257a23b98d2cc09e
2
+ SHA1:
3
+ metadata.gz: '04840c4eccccc86103afed5c6371b0ca066b64b8'
4
+ data.tar.gz: e801c70aca29adc216ebe7a196c0818304a4a829
5
5
  SHA512:
6
- metadata.gz: 69ad813e8149ca3674c32ac7bac07e6946ce171674f9952076a19e31d236c5bf974244468d6ccea73c8c87c955bfbfd6e2c582b03df0ce64a729907c45ad1461
7
- data.tar.gz: 0f289df12e7cb243a329b49dbd3ed8802b19d9545527620579bd3c4b2b912dd7adf1f9bb490c3dc6a9da79013fe1eb837552499d9ea17e957c45888afdfc5245
6
+ metadata.gz: 4f04b14c31ec5b5d2c0b3f59bd263596ae41d78374aa319dc82d51d9ac4cab8a005dd8123735b89e0a9581c185812f36d781f075b7160dbc014525abfd679b2c
7
+ data.tar.gz: 36626b1ecfb0963f2c2566773694542a759a019ab678b38ad0ac4e5c6608fe5ab48a33cc137a0a4e3a1fb21118e13504fb8a8eb65c9808f8e22799983b9edb61
data/README.md CHANGED
@@ -1,25 +1,33 @@
1
- # Wireless Access Point Scanner - Ruby Gem
1
+ # Wireless Access Point Scanner <a href="https://badge.fury.io/rb/waps"><img src="https://badge.fury.io/rb/waps.svg" alt="Gem Version" height="18"></a>
2
2
 
3
3
  WAPS uses iwlist to scan for wireless access points and convert the output into ruby hash format. Following is the usage of the gem.
4
4
 
5
5
  ## Installation
6
6
 
7
7
  ```
8
- gem install wasp
8
+ gem install waps
9
9
  ```
10
10
  Require
11
11
 
12
12
  ```
13
- require 'wasp'
13
+ require 'waps'
14
14
  ```
15
15
 
16
16
  ## Usage
17
17
 
18
- * First Require the gem: ``` require 'wasp' ```
19
- * Creating new instance require interface name. Leave it empty if not sure. ``` new_scan = Wasp.new('Interface_name')```
18
+ * First Require the gem: ``` require 'waps' ```
19
+ * Creating new instance require interface name. Leave it empty if not sure. ``` new_scan = Waps.new('Interface_name')```
20
20
  * Start Scan. ```results = new_scan.scan```
21
21
  * Get specific field. ``` mac_address = new_scan.get('address') ```
22
22
 
23
+ ```
24
+ require 'waps'
25
+
26
+ new_scan = Waps.new('')
27
+ new_scan.scan
28
+ mac_addresses = new_scan.get('address')
29
+ ```
30
+
23
31
  ## Response Field
24
32
 
25
33
  * Address
data/lib/waps.rb CHANGED
@@ -1,72 +1,26 @@
1
- require 'open3'
1
+ require './lib/waps_linux.rb'
2
+ require './lib/waps_mac.rb'
3
+
2
4
 
3
5
  class Waps
4
6
 
5
- def initialize(interface_name)
7
+ def initialize(interface_name = '')
6
8
  @interface_name = interface_name
7
9
  @output = []
8
10
  end
9
11
 
10
12
  def scan
11
- raw_input = run_command
12
- @output = (raw_input.keys.include? :error) ? raw_input : parse(raw_input[:output])
13
- end
14
-
15
- def parse(raw_input)
16
- cells = raw_input.split("Cell")[1..-1]
17
-
18
- cells.map { |cell| parse_cell(cell)}
19
- end
20
-
21
- def run_command
22
- output,error,status = Open3.capture3("sudo iwlist #{@interface_name} scan")
23
- return output == "" ? {error: error} : {output: output}
24
- end
25
-
26
-
27
- def parse_cell(cell)
28
- raw_data = cell.split("\n")
29
- result = {
30
- address: paddress(raw_data[0]),
31
- channel: pchannel(raw_data[1]),
32
- frequency: pfrequency(raw_data[2]),
33
- quality: pquality(raw_data[3]),
34
- signal_level: psignal_level(raw_data[3]),
35
- encryption_key: pencryption_key(raw_data[4]),
36
- ssid: pssid(raw_data[5])
37
- }
38
- end
39
-
40
-
41
- #Parse Values from the raw data. All methods below
42
-
43
-
44
- def paddress(data)
45
- data.split("Address:")[-1].delete(" ")
46
- end
47
-
48
- def pchannel(data)
49
- data.split(":")[-1]
50
- end
51
-
52
- def pfrequency(data)
53
- data.split(":")[-1].split(" ")[0]
54
- end
55
-
56
- def pquality(data)
57
- data.split(" ")[0].split("=")[-1]
58
- end
59
-
60
- def psignal_level(data)
61
- data.split(" ")[2].split("=")[-1] + " dBm"
62
- end
63
-
64
- def pencryption_key(data)
65
- data.split(":")[-1]
66
- end
67
-
68
- def pssid(data)
69
- data.split('"').count == 1 ? "" : data.split('"')[-1]
13
+ if RUBY_PLATFORM =~ /win32/
14
+ return {error: "Not support for windows. Coming Soon."}
15
+ elsif RUBY_PLATFORM =~ /linux/
16
+ new_scan = Waps_linux.new(@interface_name)
17
+ return @output = new_scan.scan
18
+ elsif RUBY_PLATFORM =~ /darwin/
19
+ new_scan = Waps_mac.new
20
+ return @output = new_scan.scan
21
+ else
22
+ return {error: "No support for this OS."}
23
+ end
70
24
  end
71
25
 
72
26
 
@@ -75,12 +29,11 @@ class Waps
75
29
 
76
30
 
77
31
  def get(find)
78
- result = []
79
- if @output[0].keys.include? find.to_sym && !@output.empty?
80
- result = @output.map { |cell| cell[find.to_sym] }
32
+ if (@output[0].keys.include? find.to_sym) && !@output.empty?
33
+ return @output.map { |cell| cell[find.to_sym] }
81
34
  end
82
- result
83
35
  end
84
36
 
37
+
85
38
  end
86
39
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: waps
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gurjant Singh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-05 00:00:00.000000000 Z
11
+ date: 2019-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -24,7 +24,7 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.7'
27
- description: Gem uses iwlist to scan and parse the response into ruby hash
27
+ description: Gem scans Wireless Access Points and return ruby hash
28
28
  email:
29
29
  - waps@defensestation.ca
30
30
  executables: []
@@ -54,7 +54,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
54
54
  version: '0'
55
55
  requirements: []
56
56
  rubyforge_project:
57
- rubygems_version: 2.7.6
57
+ rubygems_version: 2.5.2.3
58
58
  signing_key:
59
59
  specification_version: 4
60
60
  summary: Gem to scan wirless access point