source: ipk/source.sh4/swapnetwork_wlan_400/var/etc/Wireless/wlanscan.py@ 17547

Last change on this file since 17547 was 12385, checked in by capt_bluebaer, 14 years ago
File size: 1.9 KB
Line 
1import string
2import cPickle
3import sys
4sys.path.append("/usr/lib/enigma2/python/Plugins/SystemPlugins/WirelessLan")
5sys.path.append("/usr/lib/enigma2/python")
6from iwlibs import Wireless, Iwscan
7from string import maketrans, strip
8
9a = ''; b = ''
10scanfile="/tmp/wlanscan"
11for i in range(0, 255):
12 a = a + chr(i)
13 if i < 32 or i > 127:
14 b = b + ' '
15 else:
16 b = b + chr(i)
17try:
18 iface=sys.argv[1];
19except:
20 msg = "No interface to scan\n";
21 o_file=open(scanfile,"w");
22 o_file.write(msg);
23 o_file.close();
24 print msg;
25 sys.exit();
26
27asciitrans = maketrans(a, b)
28ifobj = Wireless(iface) # a Wireless NIC Object
29stats, quality, discard, missed_beacon = ifobj.getStatistics()
30snr = quality.signallevel - quality.noiselevel
31scanresults = ifobj.scan()
32
33if scanresults is not None:
34 aps = {}
35 for result in scanresults:
36
37 bssid = result.bssid
38
39 encryption = map(lambda x: hex(ord(x)), result.encode)
40
41 if encryption[-1] == "0x8":
42 encryption = True
43 else:
44 encryption = False
45
46 extra = []
47 for element in result.custom:
48 element = element.encode()
49 extra.append( strip(element.translate(asciitrans)) )
50
51 if result.quality.sl is 0 and len(extra) > 0:
52 begin = extra[0].find('SignalStrength=')+15
53
54 done = False
55 end = begin+1
56
57 while not done:
58 if extra[0][begin:end].isdigit():
59 end += 1
60 else:
61 done = True
62 end -= 1
63
64 signal = extra[0][begin:end]
65 #print "[Wlan.py] signal is:" + str(signal)
66
67 else:
68 signal = str(result.quality.sl)
69
70 aps[bssid] = {
71 'active' : True,
72 'bssid': result.bssid,
73 'channel': result.frequency.getChannel(result.frequency.getFrequency()),
74 'encrypted': encryption,
75 'essid': strip(result.essid.translate(asciitrans)),
76 'iface': iface,
77 'maxrate' : result.rate[-1],
78 'noise' : result.quality.getNoiselevel(),
79 'quality' : str(result.quality.quality),
80 'signal' : signal,
81 'custom' : extra,
82 }
83 print aps[bssid]
84 cPickle.dump(aps, open(scanfile, 'wb'))
Note: See TracBrowser for help on using the repository browser.