Come scansionare IP con Termux usando Python

Se sei un utente di Android e vuoi esplorare il mondo della sicurezza informatica o semplicemente testare la tua rete domestica, puoi utilizzare Termux, un’applicazione che fornisce un ambiente Linux direttamente sul tuo smartphone. In questo articolo vedremo come configurare e usare uno script Python per scansionare indirizzi IP senza dover scrivere codice da zero.

Cosa serve prima di iniziare:

  1. Termux: Scarica e installa Termux da F-Droid.
  2. Una connessione internet attiva per scaricare gli strumenti necessari.
  3. Conoscenze di base su indirizzi IP e reti locali.

Nota importante: Scansionare IP al di fuori della tua rete privata può violare leggi e regolamenti. Usa queste tecniche solo per scopi educativi o per testare dispositivi di cui hai l’autorizzazione esplicita.

Passaggio 1: Installare Termux:

Apri F-Droid e cerca <<Termux>>. Installa l’applicazione e lanciala una volta scaricata.

Aggiornare i pacchetti:

Per prima cosa, è necessario aggiornare i pacchetti predefiniti di Termux. Apri Termux e digita:

pkg update && pkg upgrade

Questo comando aggiorna tutti i pacchetti disponibili nel repository di Termux.

Installare Python:

Python è un linguaggio di programmazione molto versatile e ci aiuterà a eseguire lo script per scansionare gli indirizzi IP. Per installarlo, digita:

pkg install python

Installare Nmap:

Nmap è uno strumento open source molto potente per scansionare reti e individuare dispositivi attivi. Per installarlo in Termux, digita:

pkg install nmap

Scaricare lo script Python:

import subprocess
from colorama import init, Fore

# Inizializza colorama per i colori nel terminale
init(autoreset=True)

def check_online_ips(network_prefix):
    print(f"Scansione degli IP raggiungibili nella rete {network_prefix}.0/24...\n")

    online_ips = []  # Lista per salvare gli IP raggiungibili
    total_ips = 254  # Numero totale di IP nella rete 192.168.1.0/24 (da .1 a .254)

    for i in range(1, 255):  # Scansiona da .1 a .254
        ip = f"{network_prefix}.{i}"
        try:
            # Esegui ping con subprocess (1 pacchetto, timeout 1 secondo)
            subprocess.run(
                ["ping", "-c", "1", "-W", "1", ip],
                stdout=subprocess.DEVNULL,  # Ignora output
                stderr=subprocess.DEVNULL,  # Ignora errori
                check=True,  # Solleva eccezione se il ping fallisce
            )
            online_ips.append(ip)  # Salva l'IP nella lista
            print(Fore.GREEN + f"[+] {ip} è raggiungibile.")  # Testo verde
        except subprocess.CalledProcessError:
            pass  # Ignora gli IP non raggiungibili
        
        # Calcola e mostra il progresso
        progress = (i / total_ips) * 100
        print(Fore.CYAN + f"Progresso: {progress:.2f}% completato", end="\r")

    # Mostra solo gli IP raggiungibili alla fine
    print("\n\n--- Risultati Finali ---")
    if online_ips:
        print(Fore.GREEN + "\nIP raggiungibili:")
        for ip in online_ips:
            print(Fore.GREEN + f" - {ip}")
    else:
        print(Fore.RED + "\nNessun IP raggiungibile trovato.")

if __name__ == "__main__":
    # Prefisso della rete (senza il quarto ottetto)
    network_prefix = "192.168.1"

    check_online_ips(network_prefix)

Spiegazione Script per supporto IP:

Cambia il Prefisso della Rete (network_prefix) :

Trova questa riga nello script:

network_prefix = "192.168.1"

  • Modifica il valore a seconda della tua rete:
    • Per una rete 10.0.0.0/24: Cambia in "10.0.0".
    • Per una rete 172.16.0.0/24: Cambia in "172.16.0".
    • Per una rete 192.168.5.0/24: Cambia in "192.168.5".

Lascia il Ciclo di Scansione Invariato (per reti /24):

  • Se stai lavorando con una rete /24 (256 indirizzi IP), non devi modificare il ciclo:

for i in range(1, 255):

Se hai una Rete /16 o /8:

  • Aggiungi un secondo ciclo per scansionare più ottetti:
    • Esempio per 10.0.0.0/16
for j in range(0, 256):  # Ottetto secondario
    for i in range(1, 255):  # Ottetto finale
        ip = f"10.{j}.{i}"
        # Resto dello script...

Esempi di Modifiche:

  • Rete 10.0.0.0/24:
    • Modifica: network_prefix = "10.0.0"
  • Rete 172.16.0.0/24:
    • Modifica: network_prefix = "172.16.0"
  • Rete 192.168.5.0/24:
    • Modifica: network_prefix = "192.168.5"
  • Rete 10.0.0.0/16:
    • Aggiungi un ciclo annidato come mostrato sopra.

Sono solo queste le modifiche necessarie.

Avvio script:

Per avviarlo occorre copiarlo dentro termux usando il comando:

nano nome.py

nel mio caso:

nano scanip.py

Poi salvare premendo CTRL+Z e scrivere:

:wq!

Il risultato e che lo script darà tutti gli ip raggiungili nella classe 192.168.1.1:

Questa immagine mostra il progresso degli IP raggiungibili dalla mia rete.

Il risultato finale mostra tutti gli ip connessi nella rete:

Ulteriori informazioni:

Utilizzare Termux e Python per la scansione di IP è un modo efficace per iniziare a capire come funzionano le reti e migliorare le tue competenze in sicurezza informatica. Ricorda sempre di agire in modo responsabile e conforme alle leggi locali.


    Lascia un commento