clflareIPscan.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import ipcalc
  2. import socket,random
  3. import threading
  4. import sys
  5. import argparse,queue
  6. import requests
  7. bg=''
  8. G = bg+'\033[32m'
  9. O = bg+'\033[33m'
  10. GR = bg+'\033[37m'
  11. R = bg+'\033[31m'
  12. print(O+'''
  13. \tWEBSOCKET SCANNER
  14. \tBy : ABDOXFOX
  15. \tUpdate 13/03/2022
  16. '''+GR)
  17. class cdnscanner:
  18. def __init__(self):
  19. pass
  20. def fetchqueue(self):
  21. self.progress = 1
  22. while True:
  23. ip = str(self.queuelst.get())
  24. sys.stdout.write(f'scaning...{ip} ==> progressing.... ({self.progress}/{self.len_ips})\r')
  25. sys.stdout.flush()
  26. self.Sendrequest(ip)
  27. self.queuelst.task_done()
  28. def Sendrequest(self, ip):
  29. url = (f'https://{ip}' if self.port == 443 else f'http://{ip}:{self.port}')
  30. try:
  31. if self.proxy:
  32. proxyhost,port = self.proxy.split(':')[0],int(self.proxy.split(':')[1])
  33. proxy = {'http' : f'http://{proxyhost}:{port}', 'https' : 'http://{proxyhost}:{port}'}
  34. req = requests.get(url,proxy,timeout=7,allow_redirects=False)
  35. else:
  36. req = requests.get(url,timeout=7,allow_redirects=False)
  37. status = req.status_code
  38. server = req.headers['server']
  39. sys.stdout.write(f'{G}{ip}\t{status}\t{server}{GR}\n')
  40. except Exception as e:
  41. pass
  42. self.progress += 1
  43. def main(self):
  44. cidrs = open('ipv4.txt','r').read().split()
  45. self.all_ips=[]
  46. for every in cidrs:
  47. for ip in ipcalc.Network(every):
  48. self.all_ips.append(ip)
  49. self.queuelst = queue.Queue()
  50. for ip in self.all_ips:
  51. self.queuelst.put(ip)
  52. self.len_ips = len(self.all_ips)
  53. self.threadsrun()
  54. def threadsrun(self):
  55. for _ in range(self.threads):
  56. thread = threading.Thread(target=self.fetchqueue)
  57. thread.start()
  58. self.queuelst.join()
  59. def parseargs():
  60. parser = argparse.ArgumentParser(
  61. formatter_class=lambda prog: argparse.HelpFormatter(prog, max_help_position=52))
  62. parser.add_argument('-t','--threads',help='num of threads',dest='threads',type=int,default=10)
  63. parser.add_argument('-p','--port',help='port to scan',dest='port',type=int,default=80)
  64. parser.add_argument('-P','--proxy',help='proxy ip:port ex: 12.34.56.6:80',dest='proxy',type=str)
  65. args = parser.parse_args()
  66. if len(sys.argv) <= 1:
  67. parser.print_help()
  68. return
  69. cdnscan=cdnscanner()
  70. cdnscan.threads = args.threads
  71. cdnscan.port = args.port
  72. cdnscan.proxy = args.proxy
  73. cdnscan.main()
  74. parseargs()