def add_network(self, mac): network = self.networks.get_network(mac) try: crypt = self.crypt_cache[network["cryptset"]] except KeyError: crypt = decode_cryptset(network["cryptset"], True) self.crypt_cache[network["cryptset"]] = crypt if network["ssid"] == "": ssid_str = "<no ssid>" else: ssid_str = network["ssid"] if "signal_dbm" in network and len(network["signal_dbm"]) == 3: signal = network["signal_dbm"]["last"] else: signal = 0 line = [mac, network["type"], ssid_str, network["channel"], crypt, show_timestamp(network["firsttime"]), show_timestamp(network["lasttime"]), network["lat"], network["lon"], signal, network['comment'], signal+100 ] try: old_line = self.network_lines[mac] except: old_line = None self.network_lines[mac] = line if mac in self.network_iter: network_iter = self.network_iter[mac] num = 0 for value in line: if old_line is not None and old_line.pop(0) == value: num += 1 continue self.store.set_value(network_iter, num, value) num += 1 else: self.network_iter[mac] = self.store.append(line) adj = self.treeview.get_vadjustment() self.scroll_value = int(adj.get_value()) if self.scroll_value == 0: GLib.idle_add(self.treeview.scroll_to_point, -1, 0)
def add_network(self, mac): network = self.networks.get_network(mac) try: crypt = self.crypt_cache[network["cryptset"]] except KeyError: crypt = decode_cryptset(network["cryptset"], True) self.crypt_cache[network["cryptset"]] = crypt if network["ssid"] == "": ssid_str = "<no ssid>" else: ssid_str = network["ssid"] if "signal_dbm" in network and len(network["signal_dbm"]) == 3: signal = network["signal_dbm"]["last"] else: signal = 0 line = [ mac, network["type"], ssid_str, network["channel"], crypt, show_timestamp(network["firsttime"]), show_timestamp(network["lasttime"]), network["lat"], network["lon"], signal, network['comment'], signal + 100 ] try: old_line = self.network_lines[mac] except: old_line = None self.network_lines[mac] = line if mac in self.network_iter: network_iter = self.network_iter[mac] num = 0 for value in line: if old_line is not None and old_line.pop(0) == value: num += 1 continue self.store.set_value(network_iter, num, value) num += 1 else: self.network_iter[mac] = self.store.append(line) adj = self.treeview.get_vadjustment() self.scroll_value = int(adj.get_value()) if self.scroll_value == 0: GLib.idle_add(self.treeview.scroll_to_point, -1, 0)
def test_client(self): try: from .client import Client, ClientThread, encode_cryptset, decode_cryptset except SystemError: from client import Client, ClientThread, encode_cryptset, decode_cryptset class TestClient(Client): def send(self, msg): return test_lines, result_split_line, result_parse_line = get_client_test_data() client = TestClient() client.server = "invalid:xyz" client.start() test_dump_name = "%s%skismet_dump_test-%s.dump" % (tempfile.gettempdir(), os.sep, int(time.time())) test_dump = open(test_dump_name, "w") client = TestClient() client.set_capabilities(["bssid", "ssid"]) pos = 0 errors = 0 for line in test_lines: result = client.split_line(line.split(":", 1)[1]) if result != result_split_line[pos]: print("split_line error %s" % pos) print("%s\n!=\n%s" % (result, result_split_line[pos])) errors += 1 result = client.parse_line(line) if result != result_parse_line[pos]: print("parse_line error %s" % pos) print("%s\n!=\n%s" % (result, result_parse_line[pos])) errors += 1 pos += 1 test_dump.write(line) crypt_test = [ (0, "none"), (2, "WEP"), (226, "WEP,TKIP,WPA,PSK"), (706, "WEP,WPA,PSK,AES_CCM"), (738, "WEP,TKIP,WPA,PSK,AES_CCM"), ] for cryptset, result in crypt_test: crypt_str = decode_cryptset(cryptset, True) if crypt_str != result: print("decode_cryptset error: %s\n%s!=%s" % (cryptset, crypt_str, result)) test_cryptset = encode_cryptset(crypt_str.lower().split(",")) if test_cryptset != cryptset: print("encode_cryptset error: %s\n%s!=%s" % (crypt_str, test_cryptset, cryptset)) if errors != 0: sys.exit("client test failed, %s errors" % errors) test_dump.close() client.load_dump(test_dump_name) client.loop() client_thread = ClientThread() client_thread.client = client client.load_dump(test_dump_name) client_thread.run()