auto.sh 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389
  1. #!/bin/bash
  2. rm -rf /etc/stunnel/stunnel.pem
  3. barra="\033[0;34m—————————————————————————————————————————————————————— \033[0m"
  4. cor[0]="\033[0m" #SEN CORE
  5. cor[1]="\033[0;34m" #AZUL
  6. cor[2]="\033[1;32m" #VERDE
  7. cor[3]="\033[1;37m" #BRAN
  8. cor[4]="\033[1;36m" #MAG
  9. cor[5]="\033[1;33m" #AMAREL
  10. cor[6]="\033[1;35m" #MAGENTA
  11. cor[7]="\033[1;31m" #VERMELHO
  12. fun_bar () {
  13. comando[0]="$1"
  14. comando[1]="$2"
  15. (
  16. [[ -e $HOME/fim ]] && rm $HOME/fim
  17. ${comando[0]} > /dev/null 2>&1
  18. ${comando[1]} > /dev/null 2>&1
  19. touch $HOME/fim
  20. ) > /dev/null 2>&1 &
  21. tput civis
  22. echo -ne " \033[1;33mAGUARDE \033[1;37m- \033[1;33m["
  23. while true; do
  24. for((i=0; i<18; i++)); do
  25. echo -ne "\033[1;31m#"
  26. sleep 0.1s
  27. done
  28. [[ -e $HOME/fim ]] && rm $HOME/fim && break
  29. echo -e "\033[1;33m]"
  30. sleep 1s
  31. tput cuu1
  32. tput dl1
  33. echo -ne " \033[1;33mAGUARDE \033[1;37m- \033[1;33m["
  34. done
  35. echo -e "\033[1;33m]\033[1;37m -\033[1;32m INSTALADO !\033[1;37m"
  36. tput cnorm
  37. }
  38. inst_ssl () {
  39. pkill -f stunnel4
  40. pkill -f stunnel
  41. pkill -f 443
  42. pkill -f v2ray
  43. pkill -f v2-ui
  44. apt-get purge stunnel4 -y
  45. apt-get purge stunnel -y
  46. apt-get install stunnel4 -y
  47. apt-get install stunnel -y
  48. pt=$(netstat -nplt |grep 'sshd' | awk -F ":" NR==1{'print $2'} | cut -d " " -f 1)
  49. echo -e "cert = /etc/stunnel/stunnel.pem\nclient = no\nsocket = a:SO_REUSEADDR=1\nsocket = l:TCP_NODELAY=1\nsocket = r:TCP_NODELAY=1\n\n[stunnel]\nconnect = 127.0.0.1:${pt}\naccept = 443" > /etc/stunnel/stunnel.conf
  50. openssl genrsa -out key.pem 2048 > /dev/null 2>&1
  51. (echo $crt; echo $crt; echo $crt; echo $crt; echo $crt; echo $crt; echo $crt)|openssl req -new -x509 -key key.pem -out cert.pem -days 1050 > /dev/null 2>&1
  52. cat key.pem cert.pem >> /etc/stunnel/stunnel.pem
  53. sed -i 's/ENABLED=0/ENABLED=1/g' /etc/default/stunnel4
  54. service stunnel4 restart
  55. service stunnel restart
  56. service stunnel4 start
  57. }
  58. inst_py () {
  59. pkill -f 80
  60. pkill python
  61. apt install python -y
  62. apt install screen -y
  63. pt=$(netstat -nplt |grep 'sshd' | awk -F ":" NR==1{'print $2'} | cut -d " " -f 1)
  64. cat <<EOF > proxy.py
  65. import socket, threading, thread, select, signal, sys, time, getopt
  66. # CONFIG
  67. LISTENING_ADDR = '0.0.0.0'
  68. LISTENING_PORT = 1080
  69. PASS = ''
  70. # CONST
  71. BUFLEN = 4096 * 4
  72. TIMEOUT = 60
  73. DEFAULT_HOST = "127.0.0.1:$pt"
  74. RESPONSE = 'HTTP/1.1 101 Switching Protocols \r\n\r\n'
  75. class Server(threading.Thread):
  76. def __init__(self, host, port):
  77. threading.Thread.__init__(self)
  78. self.running = False
  79. self.host = host
  80. self.port = port
  81. self.threads = []
  82. self.threadsLock = threading.Lock()
  83. self.logLock = threading.Lock()
  84. def run(self):
  85. self.soc = socket.socket(socket.AF_INET)
  86. self.soc.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  87. self.soc.settimeout(2)
  88. self.soc.bind((self.host, self.port))
  89. self.soc.listen(0)
  90. self.running = True
  91. try:
  92. while self.running:
  93. try:
  94. c, addr = self.soc.accept()
  95. c.setblocking(1)
  96. except socket.timeout:
  97. continue
  98. conn = ConnectionHandler(c, self, addr)
  99. conn.start();
  100. self.addConn(conn)
  101. finally:
  102. self.running = False
  103. self.soc.close()
  104. def printLog(self, log):
  105. self.logLock.acquire()
  106. print log
  107. self.logLock.release()
  108. def addConn(self, conn):
  109. try:
  110. self.threadsLock.acquire()
  111. if self.running:
  112. self.threads.append(conn)
  113. finally:
  114. self.threadsLock.release()
  115. def removeConn(self, conn):
  116. try:
  117. self.threadsLock.acquire()
  118. self.threads.remove(conn)
  119. finally:
  120. self.threadsLock.release()
  121. def close(self):
  122. try:
  123. self.running = False
  124. self.threadsLock.acquire()
  125. threads = list(self.threads)
  126. for c in threads:
  127. c.close()
  128. finally:
  129. self.threadsLock.release()
  130. class ConnectionHandler(threading.Thread):
  131. def __init__(self, socClient, server, addr):
  132. threading.Thread.__init__(self)
  133. self.clientClosed = False
  134. self.targetClosed = True
  135. self.client = socClient
  136. self.client_buffer = ''
  137. self.server = server
  138. self.log = 'Connection: ' + str(addr)
  139. def close(self):
  140. try:
  141. if not self.clientClosed:
  142. self.client.shutdown(socket.SHUT_RDWR)
  143. self.client.close()
  144. except:
  145. pass
  146. finally:
  147. self.clientClosed = True
  148. try:
  149. if not self.targetClosed:
  150. self.target.shutdown(socket.SHUT_RDWR)
  151. self.target.close()
  152. except:
  153. pass
  154. finally:
  155. self.targetClosed = True
  156. def run(self):
  157. try:
  158. self.client_buffer = self.client.recv(BUFLEN)
  159. hostPort = self.findHeader(self.client_buffer, 'X-Real-Host')
  160. if hostPort == '':
  161. hostPort = DEFAULT_HOST
  162. split = self.findHeader(self.client_buffer, 'X-Split')
  163. if split != '':
  164. self.client.recv(BUFLEN)
  165. if hostPort != '':
  166. passwd = self.findHeader(self.client_buffer, 'X-Pass')
  167. if len(PASS) != 0 and passwd == PASS:
  168. self.method_CONNECT(hostPort)
  169. elif len(PASS) != 0 and passwd != PASS:
  170. self.client.send('HTTP/1.1 400 WrongPass!\r\n\r\n')
  171. elif hostPort.startswith('127.0.0.1') or hostPort.startswith('localhost'):
  172. self.method_CONNECT(hostPort)
  173. else:
  174. self.client.send('HTTP/1.1 403 Forbidden!\r\n\r\n')
  175. else:
  176. print '- No X-Real-Host!'
  177. self.client.send('HTTP/1.1 400 NoXRealHost!\r\n\r\n')
  178. except Exception as e:
  179. self.log += ' - error: ' + e.strerror
  180. self.server.printLog(self.log)
  181. pass
  182. finally:
  183. self.close()
  184. self.server.removeConn(self)
  185. def findHeader(self, head, header):
  186. aux = head.find(header + ': ')
  187. if aux == -1:
  188. return ''
  189. aux = head.find(':', aux)
  190. head = head[aux+2:]
  191. aux = head.find('\r\n')
  192. if aux == -1:
  193. return ''
  194. return head[:aux];
  195. def connect_target(self, host):
  196. i = host.find(':')
  197. if i != -1:
  198. port = int(host[i+1:])
  199. host = host[:i]
  200. else:
  201. if self.method=='CONNECT':
  202. port = 443
  203. else:
  204. port = 80
  205. (soc_family, soc_type, proto, _, address) = socket.getaddrinfo(host, port)[0]
  206. self.target = socket.socket(soc_family, soc_type, proto)
  207. self.targetClosed = False
  208. self.target.connect(address)
  209. def method_CONNECT(self, path):
  210. self.log += ' - CONNECT ' + path
  211. self.connect_target(path)
  212. self.client.sendall(RESPONSE)
  213. self.client_buffer = ''
  214. self.server.printLog(self.log)
  215. self.doCONNECT()
  216. def doCONNECT(self):
  217. socs = [self.client, self.target]
  218. count = 0
  219. error = False
  220. while True:
  221. count += 1
  222. (recv, _, err) = select.select(socs, [], socs, 3)
  223. if err:
  224. error = True
  225. if recv:
  226. for in_ in recv:
  227. try:
  228. data = in_.recv(BUFLEN)
  229. if data:
  230. if in_ is self.target:
  231. self.client.send(data)
  232. else:
  233. while data:
  234. byte = self.target.send(data)
  235. data = data[byte:]
  236. count = 0
  237. else:
  238. break
  239. except:
  240. error = True
  241. break
  242. if count == TIMEOUT:
  243. error = True
  244. if error:
  245. break
  246. def print_usage():
  247. print 'Usage: proxy.py -p <port>'
  248. print ' proxy.py -b <bindAddr> -p <port>'
  249. print ' proxy.py -b 0.0.0.0 -p 1080'
  250. def parse_args(argv):
  251. global LISTENING_ADDR
  252. global LISTENING_PORT
  253. try:
  254. opts, args = getopt.getopt(argv,"hb:p:",["bind=","port="])
  255. except getopt.GetoptError:
  256. print_usage()
  257. sys.exit(2)
  258. for opt, arg in opts:
  259. if opt == '-h':
  260. print_usage()
  261. sys.exit()
  262. elif opt in ("-b", "--bind"):
  263. LISTENING_ADDR = arg
  264. elif opt in ("-p", "--port"):
  265. LISTENING_PORT = int(arg)
  266. def main(host=LISTENING_ADDR, port=LISTENING_PORT):
  267. print "\n ==============================\n"
  268. print "\n PYTHON PROXY \n"
  269. print "\n ==============================\n"
  270. print "corriendo ip: " + LISTENING_ADDR
  271. print "corriendo port: " + str(LISTENING_PORT) + "\n"
  272. print "Se ha Iniciado Por Favor Cierre el Terminal\n"
  273. server = Server(LISTENING_ADDR, LISTENING_PORT)
  274. server.start()
  275. while True:
  276. try:
  277. time.sleep(2)
  278. except KeyboardInterrupt:
  279. print 'Stopping...'
  280. server.close()
  281. break
  282. if __name__ == '__main__':
  283. parse_args(sys.argv[1:])
  284. main()
  285. EOF
  286. screen -dmS pythonwe python proxy.py -p 80&
  287. }
  288. clear
  289. clear
  290. echo -e "$barra"
  291. echo -e "\033[1;36mPAYLOAD + SSL \033[1;33m[BY KILLSHITO] "
  292. echo -e "$barra"
  293. echo -e "\033[1;32mSCRIPT AUTOCONFIGURACION "
  294. echo -e "$barra"
  295. echo -e "\033[1;37mRequiere tener el puerto libre ,80 y el 443"
  296. echo -e "$barra"
  297. echo -ne " \033[1;37mDeseja Prosseguir? [S/N]: "; read x
  298. [[ $x = @(n|N) ]] && echo -e "$barra" && exit 0
  299. echo -e "$barra"
  300. echo -e "\033[1;36m Instalando SSL.. "
  301. echo -e "$barra"
  302. fun_bar 'inst_ssl'
  303. echo -e "$barra"
  304. echo -e "\033[1;36m Configurando PYTHON.. "
  305. echo -e "$barra"
  306. fun_bar 'inst_py'
  307. rm -rf proxy.py
  308. echo -e "$barra"
  309. echo -e " \033[1;37mAHORA HAGA LO SIGUENTE "
  310. echo -e " \033[1;37mPARA CREAR UN USUARIO ESCRIBA :CREARUSER "
  311. echo -e " \033[1;37mPARA REMOVE UN USUARIO ESCRIBA :REMOUSER "
  312. echo -e "$barra"
  313. echo
  314. echo
  315. echo '
  316. echo
  317. read -p "Usuario :" name
  318. read -p "Contraseña :" pass
  319. useradd -M -s /bin/false $name
  320. (echo $pass; echo $pass)|passwd $name 2>/dev/null' > /bin/CREARUSER &&chmod +x /bin/CREARUSER
  321. echo '
  322. echo
  323. read -p "Escriba su usuario que desa remover :" user
  324. kill $(ps -u $user |awk '{print $1}') >/dev/null 2>/dev/null ; userdel --force $us' >/bin/REMOUSER &&chmod +x /bin/REMOUSER
  325. echo -e "\E[44;1;37mPRESIONA 0 PARA SALIR DE TODO\033[0m" "\E[41;1;37m[15]-AUTO MENU\033[0m"
  326. while [ "$opcion" != "0" ]
  327. do
  328. echo -ne "\E[41;1;37mOPCION:\033[0m""\033[1;37m>>\033[0m "; read opcion
  329. case $opcion in
  330. 15)/root/menu
  331. ;;
  332. esac
  333. exit
  334. done