Como ver quien está usando nuestro Wi-Fi (con python)

Iniciado por porni, Enero 07, 2018, 10:33:44 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Enero 07, 2018, 10:33:44 PM Ultima modificación: Enero 29, 2018, 07:52:32 PM por porni
Buenas tardes , ayer me estaba funcionando muy lento internet así que decidí ver que dispositivos estaban conectados. Tenía el Netmap descargado pero no lo encontraba , asi que armé mi propio script en python :)

PLOT TWIST: no había ningún intruso conectado a mi Wi-Fi, es lento porque es mas malo que la realidad xd




Código Completo:
Código: php
import os,subprocess

def main():
miDireccion = raw_input("ip privada>> ")

for p in range(0,256):
ip = '192.168.1.'+str(p)

saver = open('temp.txt','w')
subprocess.call(['ping','-n','1',ip],stdout=saver)
saver.close()

leerSaver = open('temp.txt','r')
linea = leerSaver.readlines()

estado = linea[2]

wrong = "Reply from "+ miDireccion +": Destination host unreachable.\n"

if estado == wrong:
pass
else:
data = "[+] El host " + ip + " se encuentra activo.\n"
dataSaver = open('hostActivos.txt','a')
dataSaver.write(data)
dataSaver.close()

print data

main()


CODIGO EXPLICADO:

1)Importamos librerias:

Código: php
import os,subprocess


os nos va a servir para enviar un ping a una dirección de ip
subprocess nos sirve para ejecutar un comando en la consola, y atrapar su respuesta para poder analizarla


2)Ahora tenemos que guardar la ip privada de nuestro equipo, para que se pueda evaluar la respuesta que produce el ping (en la consola de comandos(cmd) la encontramos con el comando ipconfig)
Código: php
miDireccion = raw_input("direccion: ")


3) Con un bucle for vamos a recorrer desde la direccion 192.168.1.0 a la 192.168.1.256
Código: php

for p in range(0,256):
    ip = '192.168.1.'+str(p)


4) Miren esta porción de código
Código: php

saver = open('temp.txt','w')
subprocess.call(['ping','-n','1',ip],stdout=saver)
saver.close()

leerSaver = open('temp.txt','r')
linea = leerSaver.readlines()
estado = linea[2]


Acá abrimos un archivo para guardar la respuesta del ping que le vamos a hacer a la direccion de ip con No tienes permitido ver los links. Registrarse o Entrar a mi cuenta. Luego vamos a leer el archivo, pero la linea que nos interesa es la numero 2, porque la vamos a comparar con la respuesta que dan los host activos y los inactivos

4) Veamos que "wrong" es la respuesta que recibimos cuando un host esta inactivo, entonces la comparamos con "estado", y si está activo el host, nos lo muestra en pantalla y lo guarda en un archivo de texto (nos puede servir para controlar cuantos dispositivos están conectados en distintos momentos del dia, etc)

Código: php

wrong = "Reply from "+ miDireccion +": Destination host unreachable.\n"

if estado == wrong:
pass
else:
    data = "[+] El host " + ip + " se encuentra activo.\n"
    dataSaver = open('hostActivos.txt','a')
    dataSaver.write(data)
    dataSaver.close()
    print data




Esta es una imagen con los resultados del scaneo:

Genial bro! Tendrás screenshots con los resultados?

Saludos,
ANTRAX


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Genial bro! Tendrás screenshots con los resultados?

Saludos,
ANTRAX

Amigo estaba de viaje sin la pc, ahora subo unos screenshot ;) !

Yo hace un tiempo me hice un mini-script parecido.
Recuerdo que le añadi alguna opción más, como buscar las macs con un tracert, buscar si alguno tiene mac doblada, (así, aparte de scannear los activos, puedes detectar alguna incidencia) etc..
Tambien, creo recordar que tambien le implementé un pequeño trocito de código que llamase a un ataque arpspoof unidireccional para romperle la gateway y dejar a un dispositivo sin acceso a internet...

¡Algunas ideas por si se te queda pequeño el script! Saludos. Porcierto, buen trabajo! ^^
8Noobs <- Más que una comunidad, una familia. (www.8noobs.hol.es)

La percepción, es solo una percepción

En la cuarta parte de la explicación del código, en la segunda línea aparece un método del objeto subproccess que se llama .call(), veo que tiene dos parámetros, un array y creo que una variable llamda stdout. No entiendo muy bien ambos parámetros, tampoco entiendo que es lo que contiene el array. Yo cada vez que hago un ping lo hago de la siguiente manera, lógicamente dependiendo de :

Código: bash
ping laip


y listo.


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
En la cuarta parte de la explicación del código, en la segunda línea aparece un método del objeto subproccess que se llama .call(), veo que tiene dos parámetros, un array y creo que una variable llamda stdout. No entiendo muy bien ambos parámetros, tampoco entiendo que es lo que contiene el array. Yo cada vez que hago un ping lo hago de la siguiente manera, lógicamente dependiendo de :

Código: bash
ping laip


y listo.

Buenas, el primer parametro de .call() indica los comandos que le paso a la consola, y en el segundo parametro (luego del stdout) indico la variable a la cual le asigno la respuesta de la consola. Saludos

Esta muy bien el script pero debes tener en cuenta que no todos los equipos responden a ping.

la mejor forma de revisar la actividad de tu red es comprobar las asignaciones de IP a traves del DHCP de tu router.

luego ademas tienes opciones extra de seguridad como activar el mac filter, desactivar el emparejado por WPS, colocar horarios.... y un sin fin de cosas mas.
(lo de colocar horarios dependera del firmware de tu router pero hoy en dia casi todos tienen esta opcion.)

jaja muy buena tu idea de hacerlo con python.

gracias por la explicacion de que es cada parte del codigo. como para que nosotros lo podamos comprender.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Porque no mejor?

Código: php

sudo nast -m -i eth0 (si estamos conectados por cable directos al router)
sudo nast -m -i wlan0 (si nos conectamos por WI-FI a la red)