clflareIPscan.py 2.4 KB

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