Nice Python Networking Modules [Parte 1]

—¿Que sabes de este asunto?— pregunto el Rey a Alicia.
—Nada— dijo Alicia.
—¿Absolutamente nada?— insistio el Rey.
—Absolutamente nada— dijo Alicia.
—Esto es importante— dijo el Rey, volviendose hacia los jurados.

Lewis Carroll, Alicia en el pais de las maravillas.

Fragmentos como este me encontraba en cada capítulo del libro “Introducción a la Programacion en python” de la Universitat Jaume I, fue con el libro que primero me topé cuando quise saber de Python. Si me preguntan que pienso de Python, diria que tiene personalidad, es elegante, es de esos lenguajes que uno quisiera aprender a escribir. Y si me preguntan que sé de este asunto, como Alicia, respondería -Nada-.
Lo seguro, son las ganas que uno puede llegar a tener por dominar este lenguaje.

Scapy

Seguramente si se leen cosas como esta: “Scapy is a Python program that enables you to forge, dissect, emit or sniff network packets, probe, scan or attack networks.”, uno pensaria que es una herramienta que no se deberia dejar pasar por alto.

paquete en debian:  apt-get install python-scapy o  del sitio oficial   http://www.secdev.org/projects/scapy/

Impacket

Es una coleccion de clases que proporcionan acceso a los paquetes de red, permitiendo trabajar y decodificar dichos paquetes de una manera simple y consistente.

paquete en debian: apt-get install python-impacket  python-pcapy o  del sitio oficial  http://oss.coresecurity.com/projects/impacket.html

#!/usr/bin/env python
#[mirphak.j@gmail.com]
#
#
#
import sys
from impacket import smb
from scapy import sr,IP,TCP

class Scancan:

    def __init__(self, rango):
        self.rango= rango

    def scan(self):
        res, unans = sr (IP(dst=self.rango)/TCP(dport=139),timeout=3)

        if res:
            print "ok\n\n"

            for r,s in res:

                print "Carpetas Habilitadas para: %s"%r.dst

                try:
                    mrSmb= smb.SMB ('*SMBSERVER','%s'%r.dst)               
                    mrSmb.login('','')

                    for share in mrSmb.list_shared():
                        print "---| %s"%share.get_name()

                except:
                    print 'Acceso denegado'

        else:
            print "No contestaron."

if __name__ == "__main__":

    try:
        rang=sys.argv[1]
        scan= Scancan(rang)
        scan.scan()
    except:
       print "ej: python scan.py 192.168.2.0/24"

Mirando un poco el código:

Con lo anterior lo que hacemos es  “escanear” las máquinas de una red  por ejemplo  192.168.2.0/24,   buscando que tengan abierto el puerto 139, si es así , trata que crear una  sesion nula  y nos muestra el resultado.

– Scapy

res, unans = sr (IP(dst=self.rango)/TCP(dport=139),timeout=3) = Miramos si el puerto 139 esta open en la máquina actual, con un tiempo de respuesta de 3 segundos

– Impacket

mrSmb.login(”,”) = Sesiones Nulas 1 2

print “—| %s”%share.get_name() =  Nos muesta las carpetas, impresoras compartidas

Como dice el título,  la idea es  conocer  más detalladamente estas herramientas en próximas entradas, diferencias, bondades. etc.

Más implementaciones:

En RincónInformático ya se ha escrito sobre Scapy (Laboratorio DoS)

Aquí un artículo (Envenenamiento ARP) también con Scapy

3 Comments