def parse(sysv): # parse debug first so the header isn't dumped twice if 'debug' in sysv[1]: util.isDebug = True util.debug('Zarp debug session started.') return parser = argparse.ArgumentParser(description=util.header()) # other options parser.add_argument('-q', help='Quick network sniff with filter', action='store', dest='filter') parser.add_argument('--debug', help='Launch Zarp with error logging',action='store_true',default=False,dest='debug') parser.add_argument('--update', help='Update Zarp',action='store_true', default=False,dest='update') # scanners scan_group = parser.add_argument_group("Scanners") scan_group.add_argument('-s', help='Quick network map', action='store', dest='scan') scan_group.add_argument('--finger', help='Fingerprint scan packets', action='store_true', default=False,dest='finger') scan_group.add_argument('-a', help='Service scan', action='store_true', default=False, dest='service') scan_group.add_argument('-w', help='Wireless AP scan', action='store_true', default=False,dest='wifind') scan_group.add_argument('--channel',help='Set channel to scan on',action='store', dest='channel') # spoof spoof_group = parser.add_argument_group("Services") spoof_group.add_argument('--ssh',help='SSH server', action='store_true',default=False,dest='ssh') spoof_group.add_argument('--ftp',help='FTP server', action='store_true',default=False,dest='ftp') spoof_group.add_argument('--http',help='HTTP server', action='store_true',default=False,dest='http') spoof_group.add_argument('--smb', help='SMB listener',action='store_true',default=False,dest='smb') spoof_group.add_argument('--wap', help='Wireless Access Point', action='store_true',default=False,dest='wap') options = parser.parse_args() # initiate if options.scan is not None: tmp = NetMap() tmp.net_mask = options.scan tmp.fingerprint = options.finger tmp.scan_block() elif options.service: service_scan.initialize() elif options.filter is not None: util.Msg("Sniffing with filter [%s]...(ctrl^c to exit)"%options.filter) try: sniff(filter=options.filter,store=0, prn=lambda x: x.summary()) except KeyboardInterrupt,Exception: util.Msg("Exiting sniffer..")
def initialize(module): global static_singles, arp_sessions, http_sniffers, password_sniffers, services debug("Received module start for: %s"%(module)) if module == 'arp': tmp = ARPSpoof() to_ip = tmp.initialize() if not to_ip is None: debug("Storing session for %s"%to_ip) arp_sessions[to_ip] = tmp del(tmp) elif module == 'dns': dump_module_sessions('arp') (module, number) = get_session_input() ip = get_key(module,number) if not ip is None: arp_sessions[ip].init_dns_spoof() elif module == 'dhcp': tmp = DHCPSpoof() if tmp.initialize(): static_singles['rogue_dhcp'] = tmp elif module == 'ndp': ndp_dos.initialize() elif module == 'http_sniffer': tmp = HTTPSniffer() to_ip = tmp.initialize() if not to_ip is None: debug("Storing sniffer for %s"%to_ip) http_sniffers[to_ip] = tmp elif module == 'password_sniffer': tmp = PasswordSniffer() to_ip = tmp.initialize() if not to_ip is None: debug("Storing sniffer for %s"%to_ip) password_sniffers[to_ip] = tmp elif module == 'traffic_sniffer': tmp = TrafficSniffer() to_ip = tmp.initialize() if not to_ip is None: debug('Storing sniffer for %s'%to_ip) traffic_sniffers[to_ip] = tmp elif module == 'nestea': nestea_dos.initialize() elif module == 'land': land_dos.initialize() elif module == 'smb2': smb2_dos.initialize() elif module == 'net_map': static_singles['netscan'] = NetMap() static_singles['netscan'].initialize() elif module == 'service_scan': service_scan.initialize() elif module == 'dhcp_starv': dhcp_starvation.initialize() elif module == 'ap_scan': return ap_scan.initialize() elif module == 'wep_crack': ap_crack.initialize('wep') elif module == 'wpa_crack': ap_crack.initialize('wpa') elif module == 'wps_crack': ap_crack.initialize('wps') elif module == 'router_pwn': router_pwn.initialize() elif module == 'tcp_syn': tcp_syn.initialize() elif module == 'nbns': tmp = NBNSSpoof() if tmp.initialize(): static_singles['nbnspoof'] = tmp elif module == 'ftp_server': tmp = FTPService() tmp.initialize_bg() services['ftp'] = tmp elif module == 'http_server': tmp = HTTPService() tmp.initialize_bg() services['http'] = tmp elif module == 'ssh_server': tmp = SSHService() if not tmp.initialize_bg(): return services['ssh'] = tmp elif module == 'access_point': tmp = APService() if tmp.initialize_bg(): services['wireless ap'] = tmp elif module == 'smb': tmp = SMBService() tmp.initialize_bg() services['smb'] = tmp else: Error('Module \'%s\' does not exist.'%module)