ruby_wifi_scanner 0.1.5 → 0.1.6
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 +4 -4
- data/CHANGELOG.md +20 -1
- data/exe/rws +22 -1
- data/lib/ruby_wifi_scanner/osx_scanner.rb +13 -4
- data/lib/ruby_wifi_scanner/scanner.rb +31 -5
- data/lib/ruby_wifi_scanner/version.rb +1 -1
- data/version_bump +2 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5214504fd208f3dfe71db7013359528894339660a003be86e6a739c9d07f54d8
|
4
|
+
data.tar.gz: fb0ac2e0dde5ceea42d98e04af19fd7e8e1a0251fd2d4c0bdf781d80848c7d6e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7c6aba5413ac050e6656be419aba6f48c3981e7bfe7cb481985c41fd3d7e45138d565a5f83a3ee0aeedc66db8545fb2b13e6a29ac0541fbc726b24d920b2a030
|
7
|
+
data.tar.gz: f4bc4d5459f23f6df01c5fa455eb8ad02a3300b3749888aac5d0554cbadd812a8c9258c3f4f269a19ee0b044d8f1c4aa6b9015c4f76dfc8945f2ab4c0a820e18
|
data/CHANGELOG.md
CHANGED
@@ -1,9 +1,28 @@
|
|
1
|
+
# (2019-09-17)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* Fixed a bug where an unnamed SSID for OS X would cause an error ([b0e38a1](https://github.com/D3MNetworks/ruby-wifi-scanner/commit/b0e38a1))
|
7
|
+
* Linux actually works now ([bb21dfb](https://github.com/D3MNetworks/ruby-wifi-scanner/commit/bb21dfb))
|
8
|
+
* No longer omitting hidden SSIDs on OS X ([5257451](https://github.com/D3MNetworks/ruby-wifi-scanner/commit/5257451))
|
9
|
+
|
10
|
+
|
11
|
+
### Features
|
12
|
+
|
13
|
+
* Added filtering on network type and directed scan ([d824c56](https://github.com/D3MNetworks/ruby-wifi-scanner/commit/d824c56))
|
14
|
+
* Displaying channel in print_fmt ([8607e3d](https://github.com/D3MNetworks/ruby-wifi-scanner/commit/8607e3d))
|
15
|
+
* First release ([6078fa3](https://github.com/D3MNetworks/ruby-wifi-scanner/commit/6078fa3))
|
16
|
+
|
17
|
+
|
18
|
+
|
1
19
|
# (2019-05-27)
|
2
20
|
|
3
21
|
|
4
22
|
### Bug Fixes
|
5
23
|
|
6
|
-
* Fixed a bug where an unnamed SSID for OS X would cause an error ([
|
24
|
+
* Fixed a bug where an unnamed SSID for OS X would cause an error ([b0e38a1](https://github.com/D3MNetworks/ruby-wifi-scanner/commit/b0e38a1))
|
25
|
+
* Linux actually works now ([bb21dfb](https://github.com/D3MNetworks/ruby-wifi-scanner/commit/bb21dfb))
|
7
26
|
|
8
27
|
|
9
28
|
### Features
|
data/exe/rws
CHANGED
@@ -2,6 +2,27 @@
|
|
2
2
|
|
3
3
|
require "bundler/setup"
|
4
4
|
require "ruby_wifi_scanner"
|
5
|
+
require 'optparse'
|
6
|
+
|
7
|
+
options = {}
|
8
|
+
OptionParser.new do |opts|
|
9
|
+
opts.banner = "Usage: example.rb [options]"
|
10
|
+
|
11
|
+
opts.on("-d", "--deep", "Run a longer deep scan") do |v|
|
12
|
+
options[:deep] = v
|
13
|
+
end
|
14
|
+
|
15
|
+
opts.on("-f", "--freq=FREQ", "Choose 2 or 5") do |v|
|
16
|
+
options[:freq] = v
|
17
|
+
end
|
18
|
+
end.parse!
|
19
|
+
|
5
20
|
|
6
21
|
scanner = RubyWifiScanner::Scanner.create
|
7
|
-
|
22
|
+
|
23
|
+
if options[:deep]
|
24
|
+
scanner.deep_scan
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
puts scanner.print_fmt(options)
|
@@ -3,13 +3,13 @@ module RubyWifiScanner
|
|
3
3
|
|
4
4
|
protected
|
5
5
|
|
6
|
-
def parse
|
7
|
-
split =
|
6
|
+
def parse scan_str
|
7
|
+
split = scan_str.split "\n"
|
8
8
|
resp = []
|
9
9
|
split[1..-1].each do |row|
|
10
10
|
break if row == ""
|
11
|
-
m = row.strip.match(/(?<ssid>\w
|
12
|
-
resp << WifiInfo.new(m[:ssid], m[:rssi], m[:level]) if m
|
11
|
+
m = row.strip.match(/(?<ssid>\w*)? ?(?<rssi>[a-f0-9]{2}:[a-f0-9]{2}:[a-f0-9]{2}:[a-f0-9]{2}:[a-f0-9]{2}:[a-f0-9]{2}) (?<level>-?[\d]{1,4})\s\s(?<channel>[0-9,+-]+)/i)
|
12
|
+
resp << WifiInfo.new(m[:ssid], m[:rssi], m[:level], m[:channel]) if m
|
13
13
|
end
|
14
14
|
resp.compact
|
15
15
|
end
|
@@ -19,6 +19,15 @@ module RubyWifiScanner
|
|
19
19
|
%x{/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport --scan}
|
20
20
|
end
|
21
21
|
|
22
|
+
def directed_scan ssid
|
23
|
+
user = `whoami`.chomp
|
24
|
+
if user == 'root'
|
25
|
+
%x{/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -z --scan='#{ssid}'}
|
26
|
+
else
|
27
|
+
raise 'Deep scan must be ran as root'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
22
31
|
end
|
23
32
|
end
|
24
33
|
|
@@ -2,7 +2,7 @@ module RubyWifiScanner
|
|
2
2
|
class Scanner
|
3
3
|
attr_reader :networks
|
4
4
|
|
5
|
-
WifiInfo = Struct.new(:ssid, :rssi, :level)
|
5
|
+
WifiInfo = Struct.new(:ssid, :rssi, :level, :channel)
|
6
6
|
|
7
7
|
def self.create(raw_scan=nil)
|
8
8
|
case
|
@@ -24,15 +24,41 @@ module RubyWifiScanner
|
|
24
24
|
|
25
25
|
def initialize(raw_scan = nil)
|
26
26
|
@raw_scan = raw_scan || self.raw_scan
|
27
|
-
@networks = parse.sort_by { |w| -w.level }
|
27
|
+
@networks = parse(@raw_scan).sort_by { |w| -w.level }
|
28
28
|
end
|
29
29
|
|
30
|
-
def
|
31
|
-
@networks.map
|
32
|
-
|
30
|
+
def deep_scan
|
31
|
+
ssids = @networks.map(&:ssid).uniq
|
32
|
+
@networks = []
|
33
|
+
|
34
|
+
ssids.each do |ssid|
|
35
|
+
@networks += parse directed_scan ssid
|
33
36
|
end
|
34
37
|
end
|
35
38
|
|
39
|
+
def print_fmt freq: nil, **kargs
|
40
|
+
@networks.select do |n|
|
41
|
+
if freq.nil?
|
42
|
+
true
|
43
|
+
else
|
44
|
+
channel, _ = n.channel.split ?,
|
45
|
+
|
46
|
+
if freq == '2'
|
47
|
+
channel.to_i <= 14
|
48
|
+
else
|
49
|
+
channel.to_i >= 32 && channel.to_i <= 73
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
end.map do |n|
|
55
|
+
"#{n.rssi}\t#{n.level}\t#{n.channel}\t#{n.ssid}"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def print_json
|
60
|
+
end
|
61
|
+
|
36
62
|
protected
|
37
63
|
|
38
64
|
def parse
|
data/version_bump
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_wifi_scanner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Uri Gorelik
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-09-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|