clflareIPscan.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import ipcalc
  2. import socket,random,re
  3. import threading,configparser
  4. import requests,sys,time,os
  5. bg=''
  6. G = bg+'\033[32m'
  7. O = bg+'\033[33m'
  8. GR = bg+'\033[37m'
  9. R = bg+'\033[31m'
  10. print(O+'''
  11. \tWEBSOCKET SCANNER
  12. \tBy : ABDOXFOX
  13. \t version Faster (using threading)
  14. #'''+GR)
  15. def cidrs():
  16. cidrslist =[]
  17. with open('ipv4.txt') as file:
  18. for cidr in file.readlines():
  19. cidrslist.append(cidr.strip('\n'))
  20. return cidrslist
  21. def save(x):
  22. with open('wrCloudflrIp.txt','a') as fl:
  23. fl.write(str(x)+'\n')
  24. fl.close()
  25. def scanner(host):
  26. sock=socket.socket()
  27. sock.settimeout(2)
  28. try:
  29. sock.connect((str(host),80))
  30. payload='GET / HTTP/1.1\r\nHost: {}\r\n\r\n'.format(host)
  31. sock.send(payload.encode())
  32. response=sock.recv(1024).decode('utf-8','ignore')
  33. for data in response.split('\r\n'):
  34. data=data.split(':')
  35. if re.match(r'HTTP/\d(\.\d)?' ,data[0]):
  36. print('response status : {}{}{}'.format(O,data[0],GR))
  37. if data[0]=='Server':
  38. try:
  39. if data[1] ==' cloudflare':
  40. print('{}server : {}\nFound working {}..'.format(G,host,GR))
  41. save(f'{host} === opened')
  42. payloadsnd(host)
  43. except Exception as e:
  44. print(e)
  45. except Exception as e:print(e)
  46. def auto_replace(server,ip):
  47. packet = server.recv(1024).decode('utf-8','ignore')
  48. status = packet.split('\n')[0]
  49. if re.match(r'HTTP/\d(\.\d)? 101',status):
  50. print(f'{O}[TCP] response : {G}{status}{GR}')
  51. save(f'{ip} response ==== {status}')
  52. else:
  53. if re.match(r'HTTP/\d(\.\d)? \d\d\d ',status):
  54. server.send(b'HTTP/1.1 200 Connection established\r\n\r\n')
  55. print(f'{O}[TCP] response : {R}{status}{GR}')
  56. return auto_replace(server,ip)
  57. def payloadsnd(ip):
  58. config = configparser.ConfigParser()
  59. config.read_file(open('configfile.ini'))
  60. domain = config['websocket']['custom_domain']
  61. port =80
  62. sc=socket.socket()
  63. sc.connect((str(ip),port))
  64. payload=f'GET / HTTP/1.0[crlf]Host: {domain}[crlf][crlf]'
  65. payload=payload.replace('[crlf]','\r\n')
  66. sc.send(payload.encode())
  67. auto_replace(sc,ip)
  68. def Main():
  69. ipdict={}
  70. ranges = cidrs()
  71. for k,v in enumerate(ranges):
  72. #clr = random.choice([G,GR,O])
  73. ipdict[k]=v
  74. iprange=[]
  75. for choose in range(len(ipdict)):
  76. cidr=ipdict[choose]
  77. for ip in ipcalc.Network(cidr):
  78. iprange.append(ip)
  79. for index in range(len(iprange)):
  80. try:
  81. print("{}[INFO] Probing... ({}/{}) [{}]{}".format(
  82. R,index+1,len(iprange),iprange[index],GR))
  83. sc=threading.Thread(target=scanner,args=(iprange[index],))
  84. sc.start()
  85. except KeyboardInterrupt:
  86. print('{}Scan aborted by user!{}'.format(R,GR))
  87. break
  88. if __name__=="__main__":
  89. Main()