Пример #1
0
def packet_handler(pkt):
    strength = get_signal_strength(pkt)
    mac = get_station_mac(pkt)

    if is_new_entry(mac):
        if mac in devices:
            username = devices[mac]['username']
            device_name = devices[mac]['devicename']
            ignored = devices[mac]['ignored']
            if not ignored:
                speak('Welcome {}'.format(username))
        else:
            vendor_name = get_mac_vendor(mac)
            speak('Welcome guest')

        logger.info('{} {} "{}"'.format(
            mac, strength, device_name if mac in devices else vendor_name))

    update_mac(mac, strength)

    logger.debug('{} {}'.format(mac, strength))
Пример #2
0
def main():
    args = arg_parser.parse_args()
    config_file = args.config
    if config_file:
        try:
            with open(config_file) as fp:
                config.update(yaml.load(fp.read()))
        except:
            # Cannot read configuration file
            pass

    register_devices(config)

    if args.log_file:
        handler = RotatingFileHandler(args.log_file)
    else:
        handler = logging.StreamHandler()

    formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s')

    handler.setFormatter(formatter)
    logger.addHandler(handler)
    if args.verbose:
        logger.setLevel(logging.DEBUG)
    else:
        logger.setLevel(logging.INFO)

    channels = config.get('channels', range(1, 13+1))

    hopper = threading.Thread(target=channel_hopper,
                              args=(config['interface'], channels))
    hopper.setDaemon(True)
    hopper.start()

    speak('Starting scanner')
    scapy.config.conf.iface = config['interface']
    sniff(iface=config['interface'], prn=packet_handler,
          lfilter=packet_filter, filter='not subtype beacon', store=False)