Simple wireless scanner

Publicado por Jonathan (última atualização em 11/11/2023)

[ Hits: 4.624 ]

Download network_scanner.py




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

  



Esconder código-fonte

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()

Scripts recomendados

Trocar IP em Python3

Rixy port scanner

Buscar Login/Usuário NIS

Peer-to-peer nós para processamento em multipontos

Ping threading python


  

Comentários
[1] Comentário enviado por maurixnovatrento em 26/11/2023 - 10:13h


Muito bom.

___________________________________________________________
https://www.youtube.com/@LinuxDicasPro
https://github.com/mxnt10

[2] Comentário enviado por ESMEK em 28/11/2023 - 18:03h




Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts