clflareIPscan.py 2.3 KB

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