Analisis de Red

21 views
Skip to first unread message

lamux

unread,
Jan 8, 2017, 8:10:36 PM1/8/17
to Python Colombia
Buenas Noches Comunidad Python,

Después de varios días, intentando ingresar a una Laptop, para poder tomas sus redes WiFi conocidas y poder obtener sus contraseñas, realice un programa en Python utilizando Ninja IDE, mi experiencia en python es muy poco, ( -6 meses), así que necesito de su colaboración para optimizar el código, así que recibo sus comentarios para poder tener una herramienta optima en código.  yo he realizado pruebas del código en dos laptop y me funcionan muy bien.

El programa toma los datos de las redes conocidas del Laptop, y las imprime en un archivo .txt, junto a su respectiva contraseña, tengo un error si lo pueden hallar y darme una luz para poder resolverlo seria genial.

Pdta.  El error se cual es, y estoy tratando de resolverlo.  

Gracias, 

comparto el código:



Andres Villarroel

unread,
Jan 10, 2017, 12:06:32 AM1/10/17
to py...@googlegroups.com
Sabes cuál es el error, pero quieres que nosotros lo encontremos y te demos una luz para que lo puedas resolver? en cualquier caso, por lo que veo en el repo estás cerca de hacer lo que quieres, de hecho dices que ya te funciona en 2 laptops!... bien!!! ya no estamos en el estado "works on my machine", así que pondré algunas recomendaciones, en realidad las recomendaciones que pongo a continuación no son específicas de Python, son mas bien unas prácticas que pueden servir en el futuro.

Recomendación 1, intentar buscar maneras de hacer las cosas que no involucren hacer shell-out al sistema operativo, los resultados pueden variar mucho de un sistema a otro, con cambios pequeños tus programas pueden dejar de funcionar sin avisar pues no hay una estabilidad de "API", también, hacer llamadas al sistema es ineficiente y debería ser un "last resort".

Recomendación 2, intentar que el código no quede plagado de números mágicos, por ejemplo en tu programa "la décima penúltima línea de la salida del comando netsh ..." luego "partir el texto en la columna X", etc. Suele convertirse en problemas en el futuro y de hecho es un antipatrón. En lugar de eso buscar maneras más generales de hacer las cosas.

Por otro lado no pude evitar llevar tu programa a un "PowerShell one-liner" :-P

netsh wlan show profiles | Select-String 'All User Profile' | %{netsh wlan show profile $_.Line.Split(':')[1].Trim() key=clear} | Select-String 'SSID name|Security key|Key Content'




Con eso no tendrías que instalar Python en cada laptop al que le quieras "robar" las contraseñas de wi-fi, siempre y cuando, bueno, tenga PowerShell, lo que ya casi es común en todas las versiones de Windows.

Aún así tener en cuenta que ese one-liner tiene fallas... qué pasa por ejemplo si el "locale" del sistema operativo es diferente y la salida de netsh no dice "All User Profile" si no algo en otro idioma... que pasa si alguien pone al SSID de una red un "dos puntos" en alguna parte del nombre sólo para romper el one-liner, etc. la recomendación es analizar qué casos rompen tu programa, evitarlos al máximo, sobretodo para escribir código seguro.

pd. hacer one-liners es otro antipatrón... :-D

Saludos.

--av.-


--
Has recibido este mensaje porque estás suscrito al grupo "Python Colombia" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a pyco+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a py...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/pyco/1dbb1014-020d-460d-b418-b8f8ffbf2488%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages