├── iwlist.py ├── readme.md ├── test.py └── test ├── basic ├── scan.txt └── vectors.json └── issue_5 ├── scan.txt └── vectors.json /iwlist.py: -------------------------------------------------------------------------------- 1 | import re 2 | import subprocess 3 | 4 | cellNumberRe = re.compile(r"^Cell\s+(?P.+)\s+-\s+Address:\s(?P.+)$") 5 | regexps = [ 6 | re.compile(r"^ESSID:\"(?P.*)\"$"), 7 | re.compile(r"^Protocol:(?P.+)$"), 8 | re.compile(r"^Mode:(?P.+)$"), 9 | re.compile(r"^Frequency:(?P[\d.]+) (?P.+) \(Channel (?P\d+)\)$"), 10 | re.compile(r"^Encryption key:(?P.+)$"), 11 | re.compile(r"^Quality=(?P\d+)/(?P\d+)\s+Signal level=(?P.+) d.+$"), 12 | re.compile(r"^Signal level=(?P\d+)/(?P\d+).*$"), 13 | ] 14 | 15 | # Detect encryption type 16 | wpaRe = re.compile(r"IE:\ WPA\ Version\ 1$") 17 | wpa2Re = re.compile(r"IE:\ IEEE\ 802\.11i/WPA2\ Version\ 1$") 18 | 19 | # Runs the comnmand to scan the list of networks. 20 | # Must run as super user. 21 | # Does not specify a particular device, so will scan all network devices. 22 | def scan(interface='wlan0'): 23 | cmd = ["iwlist", interface, "scan"] 24 | proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 25 | points = proc.stdout.read().decode('utf-8') 26 | return points 27 | 28 | # Parses the response from the command "iwlist scan" 29 | def parse(content): 30 | cells = [] 31 | lines = content.split('\n') 32 | for line in lines: 33 | line = line.strip() 34 | cellNumber = cellNumberRe.search(line) 35 | if cellNumber is not None: 36 | cells.append(cellNumber.groupdict()) 37 | continue 38 | wpa = wpaRe.search(line) 39 | if wpa is not None : 40 | cells[-1].update({'encryption':'wpa'}) 41 | wpa2 = wpa2Re.search(line) 42 | if wpa2 is not None : 43 | cells[-1].update({'encryption':'wpa2'}) 44 | for expression in regexps: 45 | result = expression.search(line) 46 | if result is not None: 47 | if 'encryption' in result.groupdict() : 48 | if result.groupdict()['encryption'] == 'on' : 49 | cells[-1].update({'encryption': 'wep'}) 50 | else : 51 | cells[-1].update({'encryption': 'off'}) 52 | else : 53 | cells[-1].update(result.groupdict()) 54 | continue 55 | return cells 56 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # python-iwlist 2 | 3 | Python scanner and parser for wireless networks 4 | 5 | ## Usage 6 | 7 | ``` 8 | >>> import iwlist 9 | >>> content = iwlist.scan(interface='wlan0') 10 | >>> cells = iwlist.parse(content) 11 | ``` 12 | 13 | ## Output 14 | 15 | ``` 16 | >>> print cells 17 | 18 | [ 19 | { 20 | "cellnumber": "01", 21 | "mac": "00:11:22:33:44:55", 22 | "essid": "Wireless Network 1", 23 | "mode": "Master", 24 | "frequency": "2.437", 25 | "frequency_units": "GHz", 26 | "channel": "6", 27 | "encryption": "off", 28 | "signal_level": "32", 29 | "signal_total": "70", 30 | "db": "-78" 31 | }, 32 | { 33 | "cellnumber": "02", 34 | "mac": "FE:DC:BA:98:76:54", 35 | "essid": "AB-Guest-Wifi", 36 | "protocol": "IEEE 802.11bgn", 37 | "mode": "Master", 38 | "frequency": "2.462", 39 | "frequency_units": "GHz", 40 | "channel": "11", 41 | "encryption": "wpa", 42 | "signal_level": "43", 43 | "signal_total": "100" 44 | } 45 | ] 46 | ``` 47 | 48 | ## Notes 49 | 50 | Any script calling `iwlist.scan()` should run as superuser to get live values. 51 | 52 | ## Tests 53 | 54 | ``` 55 | $ python test.py 56 | ``` 57 | -------------------------------------------------------------------------------- /test.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | import iwlist 4 | import unittest 5 | 6 | def fileContent(filename): 7 | f = open(filename) 8 | content = f.read() 9 | f.close() 10 | return content 11 | 12 | class TestParse(unittest.TestCase): 13 | 14 | def setUp(self): 15 | dirs = os.listdir("test") 16 | self.cases = [] 17 | for d in dirs: 18 | scanFile = os.path.join("test", d, "scan.txt") 19 | vectorsFile = os.path.join("test", d, "vectors.json") 20 | case = { 21 | "name": d, 22 | "parsed": iwlist.parse(fileContent(scanFile)), 23 | "expected": json.loads(fileContent(vectorsFile)), 24 | } 25 | self.cases.append(case) 26 | 27 | def tearDown(self): 28 | self.cases = [] 29 | 30 | def test_parse_length(self): 31 | for case in self.cases: 32 | self.assertEqual(len(case["expected"]), len(case["parsed"])) 33 | 34 | def test_cells_have_all_expected_keys(self): 35 | for case in self.cases: 36 | for i in range(len(case["expected"])): 37 | e = case["expected"][i] 38 | p = case["parsed"][i] 39 | for key in e: 40 | msg = "\nkey is in expected but missing in parsed:\nkey: %s\ntestdir: %s\ncellnumber: %s" % (key, case["name"], e["cellnumber"]) 41 | self.assertTrue(key in p, msg) 42 | 43 | def test_cells_dont_have_extra_keys(self): 44 | for case in self.cases: 45 | for i in range(len(case["expected"])): 46 | e = case["expected"][i] 47 | p = case["parsed"][i] 48 | for key in p: 49 | msg = "\nkey was parsed but missing in expected:\nkey: %s\ntestdir: %s\ncellnumber: %s" % (key, case["name"], e["cellnumber"]) 50 | self.assertTrue(key in e, msg) 51 | 52 | def test_cells_have_expected_values(self): 53 | for case in self.cases: 54 | for i in range(len(case["expected"])): 55 | e = case["expected"][i] 56 | for k in e: 57 | ev = e[k] 58 | pv = case["parsed"][i][k] 59 | msg = "\nwrong value for field:\ntestdir: %s\nfield: %s\ncellnumber: %s\nexpected: %s\nactual: %s" % (case["name"], k, e["cellnumber"], ev, pv) 60 | self.assertTrue(ev == pv, msg) 61 | 62 | if __name__ == '__main__': 63 | unittest.main() 64 | -------------------------------------------------------------------------------- /test/basic/scan.txt: -------------------------------------------------------------------------------- 1 | wlan0 Scan completed : 2 | Cell 01 - Address: 00:11:22:33:44:55 3 | Channel:6 4 | Frequency:2.437 GHz (Channel 6) 5 | Quality=32/70 Signal level=-78 dBm 6 | Encryption key:on 7 | ESSID:"Wireless Network 1" 8 | Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 9 Mb/s 9 | 18 Mb/s; 36 Mb/s; 54 Mb/s 10 | Bit Rates:6 Mb/s; 12 Mb/s; 24 Mb/s; 48 Mb/s 11 | Mode:Master 12 | Extra:tsf=0000048ab37999f9 13 | Extra: Last beacon: 276ms ago 14 | IE: Unknown: 0006466F6E7A6965 15 | IE: Unknown: 010882848B961224486C 16 | IE: Unknown: 030106 17 | IE: Unknown: 2A0102 18 | IE: Unknown: 32040C183060 19 | IE: Unknown: 2D1A6E1017FFFFFF0001000000000000000000000000000000000000 20 | IE: Unknown: 3D1606070700000000000000000000000000000000000000 21 | IE: Unknown: 3E0100 22 | IE: IEEE 802.11i/WPA2 Version 1 23 | Group Cipher : CCMP 24 | Pairwise Ciphers (1) : CCMP 25 | Authentication Suites (1) : PSK 26 | IE: Unknown: DD180050F2020101000003A4000027A4000042435E0062322F00 27 | IE: Unknown: 0B05000D467A12 28 | IE: Unknown: 7F0101 29 | IE: Unknown: DD07000C4300000000 30 | IE: Unknown: DD1E00904C336E1017FFFFFF0001000000000000000000000000000000000000 31 | IE: Unknown: DD1A00904C3406070700000000000000000000000000000000000000 32 | IE: Unknown: DD9D0050F204104A0001101044000101103B00010310470010BC329E001DD811B28601001DAAB28FF81021001852616C696E6B20546563686E6F6C6F67792C20436F72702E1023001C52616C696E6B20576972656C6573732041636365737320506F696E74102400065254323836301042000831323334353637381054000800060050F20400011011000952616C696E6B415053100800020084103C000100 33 | Cell 02 - Address: FE:DC:BA:98:76:54 34 | ESSID:"AB-Wireless-Guest" 35 | Protocol:IEEE 802.11bgn 36 | Mode:Master 37 | Frequency:2.462 GHz (Channel 11) 38 | Encryption key:on 39 | Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s 40 | 24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s 41 | 12 Mb/s; 48 Mb/s 42 | Extra:wpa_ie=dd1c0050f20101000050f20202000050f2040050f20201000050f2020c00 43 | IE: WPA Version 1 44 | Group Cipher : TKIP 45 | Pairwise Ciphers (2) : CCMP TKIP 46 | Authentication Suites (1) : PSK 47 | Extra:rsn_ie=30180100000fac020200000fac04000fac020100000fac020c00 48 | IE: IEEE 802.11i/WPA2 Version 1 49 | Group Cipher : TKIP 50 | Pairwise Ciphers (2) : CCMP TKIP 51 | Authentication Suites (1) : PSK 52 | Signal level=43/100 53 | -------------------------------------------------------------------------------- /test/basic/vectors.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "cellnumber": "01", 4 | "mac": "00:11:22:33:44:55", 5 | "essid": "Wireless Network 1", 6 | "mode": "Master", 7 | "frequency": "2.437", 8 | "frequency_units": "GHz", 9 | "channel": "6", 10 | "encryption": "on", 11 | "signal_quality": "32", 12 | "signal_total": "70", 13 | "signal_level_dBm": "-78" 14 | }, 15 | { 16 | "cellnumber": "02", 17 | "mac": "FE:DC:BA:98:76:54", 18 | "essid": "AB-Wireless-Guest", 19 | "protocol": "IEEE 802.11bgn", 20 | "mode": "Master", 21 | "frequency": "2.462", 22 | "frequency_units": "GHz", 23 | "channel": "11", 24 | "encryption": "on", 25 | "signal_quality": "43", 26 | "signal_total": "100" 27 | } 28 | ] 29 | -------------------------------------------------------------------------------- /test/issue_5/scan.txt: -------------------------------------------------------------------------------- 1 | Cell 10 - Address: A0:21:B7:6A:13:64 2 | Channel:6 3 | Frequency:2.437 GHz (Channel 6) 4 | Quality=22/70 Signal level=-88 dBm 5 | Encryption key:on 6 | ESSID:"Frank Kwok" 7 | Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s 8 | 24 Mb/s; 36 Mb/s; 54 Mb/s 9 | Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s 10 | Mode:Master 11 | Extra:tsf=0000006dc301c102 12 | Extra: Last beacon: 14340ms ago 13 | IE: Unknown: 000A4672616E6B204B776F6B 14 | IE: Unknown: 010882840B162430486C 15 | IE: Unknown: 030106 16 | IE: Unknown: 2A0100 17 | IE: Unknown: 2F0100 18 | IE: IEEE 802.11i/WPA2 Version 1 19 | Group Cipher : CCMP 20 | Pairwise Ciphers (1) : CCMP 21 | Authentication Suites (1) : PSK 22 | IE: Unknown: 32040C121860 23 | IE: Unknown: 2D1A6C181BFF00000000000000000000000000000000000000000000 24 | IE: Unknown: 3D1606081600000000000000000000000000000000000000 25 | IE: Unknown: 4A0E14000A002C01C800140005001900 26 | IE: Unknown: 7F0101 27 | IE: Unknown: DD7F0050F204104A00011010440001021041000100103B00010310470010B4A0E34ADC6D662B05F4894A88D5EB791021000D4E4554474541522C20496E632E10230009574E5231303030763310240009574E523130303076331042000538333235381054000800060050F204000110110009574E52313030307633100800020084 28 | IE: Unknown: DD090010180201F0050000 29 | IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00 30 | IE: Unknown: DD1E00904C336C181BFF00000000000000000000000000000000000000000000 31 | IE: Unknown: DD1A00904C3406081600000000000000000000000000000000000000 32 | Cell 11 - Address: B8:08:D7:F7:B8:24 33 | Channel:9 34 | Frequency:2.452 GHz (Channel 9) 35 | Quality=61/70 Signal level=-49 dBm 36 | Encryption key:on 37 | ESSID:"DODO-B81E" 38 | Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s 39 | 24 Mb/s; 36 Mb/s; 54 Mb/s 40 | Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s 41 | Mode:Master 42 | Extra:tsf=0000012bfb8b5aa5 43 | Extra: Last beacon: 14340ms ago 44 | IE: Unknown: 0009444F444F2D42383145 45 | IE: Unknown: 010882848B962430486C 46 | IE: Unknown: 030109 47 | IE: Unknown: 2A0104 48 | IE: Unknown: 2F0104 49 | IE: IEEE 802.11i/WPA2 Version 1 50 | Group Cipher : CCMP 51 | Pairwise Ciphers (1) : CCMP 52 | Authentication Suites (1) : PSK 53 | IE: Unknown: 32040C121860 54 | IE: Unknown: 2D1AAC181BFFFF000000000000000000000000000000000000000000 55 | IE: Unknown: 3D1609001700000000000000000000000000000000000000 56 | IE: Unknown: 4A0E14000A002C01C800140005001900 57 | IE: Unknown: 7F080100000000000040 58 | IE: Unknown: DD1000E0FC80000000230000000000000000 59 | IE: Unknown: DD090010180209000C0000 60 | IE: WPA Version 1 61 | Group Cipher : CCMP 62 | Pairwise Ciphers (1) : CCMP 63 | Authentication Suites (1) : PSK 64 | IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00 65 | Cell 12 - Address: 00:60:64:ED:61:B4 66 | Channel:9 67 | Frequency:2.452 GHz (Channel 9) 68 | Quality=57/70 Signal level=-53 dBm 69 | Encryption key:on 70 | ESSID:"Tengeriin ulaach" 71 | Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 9 Mb/s 72 | 18 Mb/s; 36 Mb/s; 54 Mb/s 73 | Bit Rates:6 Mb/s; 12 Mb/s; 24 Mb/s; 48 Mb/s 74 | Mode:Master 75 | Extra:tsf=0000009dcdb77fe2 76 | Extra: Last beacon: 14340ms ago 77 | IE: Unknown: 001054656E67657269696E20756C61616368 78 | IE: Unknown: 010882848B961224486C 79 | IE: Unknown: 030109 80 | IE: Unknown: 2A0100 81 | IE: Unknown: 32040C183060 82 | IE: Unknown: 2D1AEE1117FFFF0000010000000000000000000000000C0000000000 83 | IE: Unknown: 3D1609000600000000000000000000000000000000000000 84 | IE: WPA Version 1 85 | Group Cipher : TKIP 86 | Pairwise Ciphers (2) : TKIP CCMP 87 | Authentication Suites (1) : PSK 88 | IE: IEEE 802.11i/WPA2 Version 1 89 | Group Cipher : TKIP 90 | Pairwise Ciphers (2) : TKIP CCMP 91 | Authentication Suites (1) : PSK 92 | IE: Unknown: DD180050F2020101000003A4000027A4000042435E0062322F00 93 | IE: Unknown: 0B0506003A127A 94 | IE: Unknown: 4A0E14000A002C01C800140005001900 95 | IE: Unknown: DD07000C4307000000 96 | IE: Unknown: 0706415520010D10 97 | IE: Unknown: DD7F0050F204104A0001101044000102103B00010310470010BC329E001DD811B28601006064ED61B410210004416D697410230009334720526F75746572102400085742522D303030311042000831323334353637381054000800060050F20400011011001054656E67657269696E20756C6161636810080002008C103C000101 98 | Cell 13 - Address: FA:8F:CA:39:0A:E8 99 | Channel:9 100 | Frequency:2.452 GHz (Channel 9) 101 | Quality=53/70 Signal level=-57 dBm 102 | Encryption key:off 103 | ESSID:"" 104 | Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s 105 | 9 Mb/s; 12 Mb/s; 18 Mb/s 106 | Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s 107 | Mode:Master 108 | Extra:tsf=0000009dcdb7a142 109 | Extra: Last beacon: 15028ms ago 110 | IE: Unknown: 0000 111 | IE: Unknown: 010882848B960C121824 112 | IE: Unknown: 030109 113 | IE: Unknown: 050401020000 114 | IE: Unknown: 2A0100 115 | IE: Unknown: 2D1A2C1103FF00000000000000000000000000000000000000000000 116 | IE: Unknown: 32043048606C 117 | IE: Unknown: 3D1609000100000000000000000000000000000000000000 118 | IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00 119 | Cell 14 - Address: 30:91:8F:99:2E:A1 120 | Channel:11 121 | Frequency:2.462 GHz (Channel 11) 122 | Quality=60/70 Signal level=-50 dBm 123 | Encryption key:on 124 | ESSID:"Telstra992EA1" 125 | Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s 126 | 24 Mb/s; 36 Mb/s; 54 Mb/s 127 | Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s 128 | Mode:Master 129 | Extra:tsf=00000010a8f55018 130 | Extra: Last beacon: 14340ms ago 131 | IE: Unknown: 000D54656C73747261393932454131 132 | IE: Unknown: 010882848B9624B0486C 133 | IE: Unknown: 03010B 134 | IE: Unknown: 2A0100 135 | IE: Unknown: 32048C129860 136 | IE: IEEE 802.11i/WPA2 Version 1 137 | Group Cipher : CCMP 138 | Pairwise Ciphers (1) : CCMP 139 | Authentication Suites (1) : PSK 140 | IE: Unknown: 46053208010000 141 | IE: Unknown: 2D1A1C081BFFFF000000000000000000000000000000000000000000 142 | IE: Unknown: 3D160B081500000000000000000000000000000000000000 143 | IE: Unknown: 7F080400080000000040 144 | IE: Unknown: DD9A0050F204104A00011010440001021057000101103B00010310470010C3479693A0735041BE93CB8E34C365E71021000B546563686E69636F6C6F721023000E546563686E69636F6C6F72205447102400073739376E207633104200093135303354414739391054000800060050F204000110110015546563686E69636F6C6F722054473739376E20763310080002268C1049000600372A000120 145 | IE: Unknown: DD090010180203000C0000 146 | IE: Unknown: DD180050F2020101040003A4000027A4000042435E0062322F00 147 | Cell 15 - Address: 32:91:8F:99:2E:A4 148 | Channel:11 149 | Frequency:2.462 GHz (Channel 11) 150 | Quality=58/70 Signal level=-52 dBm 151 | Encryption key:off 152 | ESSID:"Fon WiFi" 153 | Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s 154 | 24 Mb/s; 36 Mb/s; 54 Mb/s 155 | Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s 156 | Mode:Master 157 | Extra:tsf=00000010a8f5d5fe 158 | Extra: Last beacon: 14340ms ago 159 | IE: Unknown: 0008466F6E2057694669 160 | IE: Unknown: 010882848B9624B0486C 161 | IE: Unknown: 03010B 162 | IE: Unknown: 2A0100 163 | IE: Unknown: 32048C129860 164 | IE: Unknown: 46053208010000 165 | IE: Unknown: 2D1A1C081BFFFF000000000000000000000000000000000000000000 166 | IE: Unknown: 3D160B081500000000000000000000000000000000000000 167 | IE: Unknown: 7F03040008 168 | IE: Unknown: DD090010180200000C0000 169 | IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00 170 | Cell 16 - Address: 32:91:8F:99:2E:A3 171 | Channel:11 172 | Frequency:2.462 GHz (Channel 11) 173 | Quality=57/70 Signal level=-53 dBm 174 | Encryption key:off 175 | ESSID:"Telstra Air" 176 | Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s 177 | 24 Mb/s; 36 Mb/s; 54 Mb/s 178 | Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s 179 | Mode:Master 180 | Extra:tsf=00000010a8f574c1 181 | Extra: Last beacon: 14340ms ago 182 | IE: Unknown: 000B54656C7374726120416972 183 | IE: Unknown: 010882848B9624B0486C 184 | IE: Unknown: 03010B 185 | IE: Unknown: 2A0100 186 | IE: Unknown: 32048C129860 187 | IE: Unknown: 46053208010000 188 | IE: Unknown: 2D1A1C081BFFFF000000000000000000000000000000000000000000 189 | IE: Unknown: 3D160B081500000000000000000000000000000000000000 190 | IE: Unknown: 7F03040008 191 | IE: Unknown: DD090010180200000C0000 192 | IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00 193 | -------------------------------------------------------------------------------- /test/issue_5/vectors.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "cellnumber": "10", 4 | "mac": "A0:21:B7:6A:13:64", 5 | "essid": "Frank Kwok", 6 | "mode": "Master", 7 | "frequency": "2.437", 8 | "frequency_units": "GHz", 9 | "channel": "6", 10 | "encryption": "on", 11 | "signal_quality": "22", 12 | "signal_total": "70", 13 | "signal_level_dBm": "-88" 14 | }, 15 | { 16 | "cellnumber": "11", 17 | "mac": "B8:08:D7:F7:B8:24", 18 | "essid": "DODO-B81E", 19 | "mode": "Master", 20 | "frequency": "2.452", 21 | "frequency_units": "GHz", 22 | "channel": "9", 23 | "encryption": "on", 24 | "signal_quality": "61", 25 | "signal_total": "70", 26 | "signal_level_dBm": "-49" 27 | }, 28 | { 29 | "cellnumber": "12", 30 | "mac": "00:60:64:ED:61:B4", 31 | "essid": "Tengeriin ulaach", 32 | "mode": "Master", 33 | "frequency": "2.452", 34 | "frequency_units": "GHz", 35 | "channel": "9", 36 | "encryption": "on", 37 | "signal_quality": "57", 38 | "signal_total": "70", 39 | "signal_level_dBm": "-53" 40 | }, 41 | { 42 | "cellnumber": "13", 43 | "mac": "FA:8F:CA:39:0A:E8", 44 | "essid": "", 45 | "mode": "Master", 46 | "frequency": "2.452", 47 | "frequency_units": "GHz", 48 | "channel": "9", 49 | "encryption": "off", 50 | "signal_quality": "53", 51 | "signal_total": "70", 52 | "signal_level_dBm": "-57" 53 | }, 54 | { 55 | "cellnumber": "14", 56 | "mac": "30:91:8F:99:2E:A1", 57 | "essid": "Telstra992EA1", 58 | "mode": "Master", 59 | "frequency": "2.462", 60 | "frequency_units": "GHz", 61 | "channel": "11", 62 | "encryption": "on", 63 | "signal_quality": "60", 64 | "signal_total": "70", 65 | "signal_level_dBm": "-50" 66 | }, 67 | { 68 | "cellnumber": "15", 69 | "mac": "32:91:8F:99:2E:A4", 70 | "essid": "Fon WiFi", 71 | "mode": "Master", 72 | "frequency": "2.462", 73 | "frequency_units": "GHz", 74 | "channel": "11", 75 | "encryption": "off", 76 | "signal_quality": "58", 77 | "signal_total": "70", 78 | "signal_level_dBm": "-52" 79 | }, 80 | { 81 | "cellnumber": "16", 82 | "mac": "32:91:8F:99:2E:A3", 83 | "essid": "Telstra Air", 84 | "mode": "Master", 85 | "frequency": "2.462", 86 | "frequency_units": "GHz", 87 | "channel": "11", 88 | "encryption": "off", 89 | "signal_quality": "57", 90 | "signal_total": "70", 91 | "signal_level_dBm": "-53" 92 | } 93 | ] 94 | --------------------------------------------------------------------------------