clflareIPscan.py 2.7 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. response = f'{G}{ip}\t{status}\t{server}{GR}\r\n'
  43. sys.stdout.write(response)
  44. sys.stdout.flush()
  45. if self.output :
  46. with open(self.output,'a') as file:
  47. file.write(response)
  48. file.close()
  49. except Exception as e:
  50. pass
  51. self.progress += 1
  52. def main(self):
  53. sys.stdout.write(f'{O}Coverting ip_ranges to single IPs ...\r')
  54. sys.stdout.flush()
  55. cidrs = open('ipv4.txt','r').read().split()
  56. for every in cidrs:
  57. for ip in ipcalc.Network(every):
  58. self.queue.put(ip)
  59. self.total += 1
  60. sys.stdout.write(f'{O}Done √ Scaning starts {GR}\r')
  61. sys.stdout.flush()
  62. time.sleep(2)
  63. self.threadsrun()
  64. def threadsrun(self):
  65. for _ in range(self.threads):
  66. thread = self.thread(target=self.fetchqueue)
  67. thread.start()
  68. self.queue.join()
  69. def parseargs():
  70. parser = argparse.ArgumentParser(
  71. formatter_class=lambda prog: argparse.HelpFormatter(prog, max_help_position=52))
  72. parser.add_argument('-t','--threads',help='num of threads',dest='threads',type=int,default=10)
  73. parser.add_argument('-p','--port',help='port to scan',dest='port',type=int,default=80)
  74. parser.add_argument('-P','--proxy',help='proxy ip:port ex: 12.34.56.6:80',dest='proxy',type=str)
  75. parser.add_argument('-o','--output',help='save output in file',dest='output',type=str)
  76. args = parser.parse_args()
  77. if len(sys.argv) <= 1:
  78. parser.print_help()
  79. return
  80. cdnscan=cdnscanner()
  81. cdnscan.threads = args.threads
  82. cdnscan.port = args.port
  83. cdnscan.proxy = args.proxy
  84. cdnscan.output = args.output
  85. cdnscan.main()
  86. if __name__ =='__main__':
  87. parseargs()