Simple wireless scanner
Publicado por Jonathan (última atualização em 11/11/2023)
[ Hits: 5.127 ]
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()
A Fundação da Confiança Digital: A Importância Estratégica de uma PKI CA na Segurança de Dados
Como enviar dicas ou artigos para o Viva o Linux
Como Ativar a Aceleração por GPU (ROCm) no Ollama para AMD Navi 10 (RX 5700 XT / 5600) no Gentoo
Cairo Dock ainda funcional nos dias de hoje
Configuração de IP fixo via nmcli e resolução de nomes via /etc/hosts no Gentoo
Removendo o bloqueio por erros de senha no Gentoo (systemd)
Papel de Parede Animado no KDE Plasma 6 (Com dicas para Gentoo)
Homebrew: o gerenciador de pacotes que faltava para o Linux!
Ajudante para criar dicas e artigos no VOL (29)
Hardware (corpo), Software (mente) e Kernel (conexão) (0)
Tentando fazer um "linux ricing" mas falhando miseravelmente... (3)









