Simple wireless scanner
Publicado por Jonathan (última atualização em 11/11/2023)
[ Hits: 5.040 ]
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()
Aplicação gráfica para Wake-on-LAN com Python 3 + GUI Tk/Tcl
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
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
Opções secretas em tema do Cinnamon
Como mapear unidade de rede no Linux
Como quebrar senha usando john the ripper
Alguém já testou o novo COSMIC Desktop? O que achou? (5)
Alguém pode me indicar um designer freelancer? [RESOLVIDO] (2)
Por que passar nas disciplinas da faculdade é ruim e ser reprovado é b... (2)









