Simple wireless scanner
Publicado por Jonathan (última atualização em 11/11/2023)
[ Hits: 5.015 ]
Simples script em Python que descobre todas as redes Wireless próximas e exibe suas informações, e o resultado de um pouco de pesquisa na z-library usando torbrowser.
#freefreepalestine
from scapy.all import *
from time import sleep
from threading import Thread
import subprocess
import argparse
ap_list = []
class AP:
"""Armazena informação sobre uma rede."""
def __init__(self, essid, bssid):
self.essid = essid.decode('utf-8') # Nome da rede
self.bssid = bssid # MAC do pointo de acesso
return
def show(self):
"""Mostra informação sobre o objeto"""
print(f"[+] ESSID: {self.essid:<40} -- BSSID: {self.bssid.upper()}")
return
def set_channel(interface, channel):
command = ["iwconfig", interface, "channel", f"{ channel }"]
# executa o commando iwconfig
err = subprocess.run(command, stderr=subprocess.PIPE)
if err.stderr:
print(f"error: { err.stderr }")
quit()
return
def network_scanner(interface):
""" Pesquisa todas as redes wifi proximas e salva o ESSID e o BSSID. """
""" Adiciona as redes para network_list. """
def exists(bssid):
"""Não permite duplicata."""
global ap_list
for n in ap_list:
if n.bssid == bssid:
return True # Já existe uma rede com esse endereço.
return False
def probe(frame):
global ap_list
if frame.haslayer(Dot11Beacon):
if not exists(frame.addr2):
ap = AP(frame.info, frame.addr2) # nova rede
ap_list.append(ap)
return
print("[+] SCANNING...", end='')
for i in range(1,12):
set_channel(interface, i)
# Capitura pacotes por 5 segundos e verifica se são anucios de rede
t = AsyncSniffer(iface=interface, prn=probe)
t.start()
for _ in range(25):
sleep(0.2)
print(".",end='')
print()
return
def main():
parser = argparse.ArgumentParser()
# processa argumentos da linha de commando.
parser.add_argument('-i', dest='interface', help="fornecer uma interface")
res = parser.parse_args()
if not res.interface:
parser.print_help() # nenhuma interface fornecida, impreme ajuda e termina
return
network_scanner(res.interface)
for n in ap_list: n.show()
return
if __name__ == '__main__':
main()
Importar múltiplos hosts ZABBIX
Shell reverso em Python - cliente e servidor
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Instalando partes faltantes do Plasma 6
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Estou tentando ser legalista, mas tá complicado! (9)
espelhar monitores nao funciona (2)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (1)









