| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389 |
- #!/bin/bash
- rm -rf /etc/stunnel/stunnel.pem
- barra="\033[0;34m—————————————————————————————————————————————————————— \033[0m"
- cor[0]="\033[0m" #SEN CORE
- cor[1]="\033[0;34m" #AZUL
- cor[2]="\033[1;32m" #VERDE
- cor[3]="\033[1;37m" #BRAN
- cor[4]="\033[1;36m" #MAG
- cor[5]="\033[1;33m" #AMAREL
- cor[6]="\033[1;35m" #MAGENTA
- cor[7]="\033[1;31m" #VERMELHO
- fun_bar () {
- comando[0]="$1"
- comando[1]="$2"
- (
- [[ -e $HOME/fim ]] && rm $HOME/fim
- ${comando[0]} > /dev/null 2>&1
- ${comando[1]} > /dev/null 2>&1
- touch $HOME/fim
- ) > /dev/null 2>&1 &
- tput civis
- echo -ne " \033[1;33mAGUARDE \033[1;37m- \033[1;33m["
- while true; do
- for((i=0; i<18; i++)); do
- echo -ne "\033[1;31m#"
- sleep 0.1s
- done
- [[ -e $HOME/fim ]] && rm $HOME/fim && break
- echo -e "\033[1;33m]"
- sleep 1s
- tput cuu1
- tput dl1
- echo -ne " \033[1;33mAGUARDE \033[1;37m- \033[1;33m["
- done
- echo -e "\033[1;33m]\033[1;37m -\033[1;32m INSTALADO !\033[1;37m"
- tput cnorm
- }
- inst_ssl () {
- pkill -f stunnel4
- pkill -f stunnel
- pkill -f 443
- pkill -f v2ray
- pkill -f v2-ui
- apt-get purge stunnel4 -y
- apt-get purge stunnel -y
- apt-get install stunnel4 -y
- apt-get install stunnel -y
- pt=$(netstat -nplt |grep 'sshd' | awk -F ":" NR==1{'print $2'} | cut -d " " -f 1)
- 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
- openssl genrsa -out key.pem 2048 > /dev/null 2>&1
- (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
- cat key.pem cert.pem >> /etc/stunnel/stunnel.pem
- sed -i 's/ENABLED=0/ENABLED=1/g' /etc/default/stunnel4
- service stunnel4 restart
- service stunnel restart
- service stunnel4 start
- }
-
- inst_py () {
-
- pkill -f 80
- pkill python
- apt install python -y
- apt install screen -y
-
- pt=$(netstat -nplt |grep 'sshd' | awk -F ":" NR==1{'print $2'} | cut -d " " -f 1)
-
- cat <<EOF > proxy.py
- import socket, threading, thread, select, signal, sys, time, getopt
-
- # CONFIG
- LISTENING_ADDR = '0.0.0.0'
- LISTENING_PORT = 1080
- PASS = ''
-
- # CONST
- BUFLEN = 4096 * 4
- TIMEOUT = 60
- DEFAULT_HOST = "127.0.0.1:$pt"
- RESPONSE = 'HTTP/1.1 101 Switching Protocols \r\n\r\n'
-
- class Server(threading.Thread):
- def __init__(self, host, port):
- threading.Thread.__init__(self)
- self.running = False
- self.host = host
- self.port = port
- self.threads = []
- self.threadsLock = threading.Lock()
- self.logLock = threading.Lock()
-
- def run(self):
- self.soc = socket.socket(socket.AF_INET)
- self.soc.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- self.soc.settimeout(2)
- self.soc.bind((self.host, self.port))
- self.soc.listen(0)
- self.running = True
-
- try:
- while self.running:
- try:
- c, addr = self.soc.accept()
- c.setblocking(1)
- except socket.timeout:
- continue
-
- conn = ConnectionHandler(c, self, addr)
- conn.start();
- self.addConn(conn)
- finally:
- self.running = False
- self.soc.close()
-
- def printLog(self, log):
- self.logLock.acquire()
- print log
- self.logLock.release()
-
- def addConn(self, conn):
- try:
- self.threadsLock.acquire()
- if self.running:
- self.threads.append(conn)
- finally:
- self.threadsLock.release()
-
- def removeConn(self, conn):
- try:
- self.threadsLock.acquire()
- self.threads.remove(conn)
- finally:
- self.threadsLock.release()
-
- def close(self):
- try:
- self.running = False
- self.threadsLock.acquire()
-
- threads = list(self.threads)
- for c in threads:
- c.close()
- finally:
- self.threadsLock.release()
-
-
- class ConnectionHandler(threading.Thread):
- def __init__(self, socClient, server, addr):
- threading.Thread.__init__(self)
- self.clientClosed = False
- self.targetClosed = True
- self.client = socClient
- self.client_buffer = ''
- self.server = server
- self.log = 'Connection: ' + str(addr)
-
- def close(self):
- try:
- if not self.clientClosed:
- self.client.shutdown(socket.SHUT_RDWR)
- self.client.close()
- except:
- pass
- finally:
- self.clientClosed = True
-
- try:
- if not self.targetClosed:
- self.target.shutdown(socket.SHUT_RDWR)
- self.target.close()
- except:
- pass
- finally:
- self.targetClosed = True
-
- def run(self):
- try:
- self.client_buffer = self.client.recv(BUFLEN)
-
- hostPort = self.findHeader(self.client_buffer, 'X-Real-Host')
-
- if hostPort == '':
- hostPort = DEFAULT_HOST
-
- split = self.findHeader(self.client_buffer, 'X-Split')
-
- if split != '':
- self.client.recv(BUFLEN)
-
- if hostPort != '':
- passwd = self.findHeader(self.client_buffer, 'X-Pass')
-
- if len(PASS) != 0 and passwd == PASS:
- self.method_CONNECT(hostPort)
- elif len(PASS) != 0 and passwd != PASS:
- self.client.send('HTTP/1.1 400 WrongPass!\r\n\r\n')
- elif hostPort.startswith('127.0.0.1') or hostPort.startswith('localhost'):
- self.method_CONNECT(hostPort)
- else:
- self.client.send('HTTP/1.1 403 Forbidden!\r\n\r\n')
- else:
- print '- No X-Real-Host!'
- self.client.send('HTTP/1.1 400 NoXRealHost!\r\n\r\n')
-
- except Exception as e:
- self.log += ' - error: ' + e.strerror
- self.server.printLog(self.log)
- pass
- finally:
- self.close()
- self.server.removeConn(self)
-
- def findHeader(self, head, header):
- aux = head.find(header + ': ')
-
- if aux == -1:
- return ''
-
- aux = head.find(':', aux)
- head = head[aux+2:]
- aux = head.find('\r\n')
-
- if aux == -1:
- return ''
-
- return head[:aux];
-
- def connect_target(self, host):
- i = host.find(':')
- if i != -1:
- port = int(host[i+1:])
- host = host[:i]
- else:
- if self.method=='CONNECT':
- port = 443
- else:
- port = 80
-
- (soc_family, soc_type, proto, _, address) = socket.getaddrinfo(host, port)[0]
-
- self.target = socket.socket(soc_family, soc_type, proto)
- self.targetClosed = False
- self.target.connect(address)
-
- def method_CONNECT(self, path):
- self.log += ' - CONNECT ' + path
-
- self.connect_target(path)
- self.client.sendall(RESPONSE)
- self.client_buffer = ''
-
- self.server.printLog(self.log)
- self.doCONNECT()
-
- def doCONNECT(self):
- socs = [self.client, self.target]
- count = 0
- error = False
- while True:
- count += 1
- (recv, _, err) = select.select(socs, [], socs, 3)
- if err:
- error = True
- if recv:
- for in_ in recv:
- try:
- data = in_.recv(BUFLEN)
- if data:
- if in_ is self.target:
- self.client.send(data)
- else:
- while data:
- byte = self.target.send(data)
- data = data[byte:]
-
- count = 0
- else:
- break
- except:
- error = True
- break
- if count == TIMEOUT:
- error = True
-
- if error:
- break
-
-
- def print_usage():
- print 'Usage: proxy.py -p <port>'
- print ' proxy.py -b <bindAddr> -p <port>'
- print ' proxy.py -b 0.0.0.0 -p 1080'
-
- def parse_args(argv):
- global LISTENING_ADDR
- global LISTENING_PORT
-
- try:
- opts, args = getopt.getopt(argv,"hb:p:",["bind=","port="])
- except getopt.GetoptError:
- print_usage()
- sys.exit(2)
- for opt, arg in opts:
- if opt == '-h':
- print_usage()
- sys.exit()
- elif opt in ("-b", "--bind"):
- LISTENING_ADDR = arg
- elif opt in ("-p", "--port"):
- LISTENING_PORT = int(arg)
-
-
- def main(host=LISTENING_ADDR, port=LISTENING_PORT):
-
- print "\n ==============================\n"
- print "\n PYTHON PROXY \n"
- print "\n ==============================\n"
- print "corriendo ip: " + LISTENING_ADDR
- print "corriendo port: " + str(LISTENING_PORT) + "\n"
- print "Se ha Iniciado Por Favor Cierre el Terminal\n"
-
- server = Server(LISTENING_ADDR, LISTENING_PORT)
- server.start()
-
- while True:
- try:
- time.sleep(2)
- except KeyboardInterrupt:
- print 'Stopping...'
- server.close()
- break
-
- if __name__ == '__main__':
- parse_args(sys.argv[1:])
- main()
- EOF
-
- screen -dmS pythonwe python proxy.py -p 80&
-
- }
-
- clear
- clear
- echo -e "$barra"
- echo -e "\033[1;36mPAYLOAD + SSL \033[1;33m[BY KILLSHITO] "
- echo -e "$barra"
- echo -e "\033[1;32mSCRIPT AUTOCONFIGURACION "
- echo -e "$barra"
- echo -e "\033[1;37mRequiere tener el puerto libre ,80 y el 443"
- echo -e "$barra"
- echo -ne " \033[1;37mDeseja Prosseguir? [S/N]: "; read x
- [[ $x = @(n|N) ]] && echo -e "$barra" && exit 0
- echo -e "$barra"
- echo -e "\033[1;36m Instalando SSL.. "
- echo -e "$barra"
- fun_bar 'inst_ssl'
- echo -e "$barra"
- echo -e "\033[1;36m Configurando PYTHON.. "
- echo -e "$barra"
- fun_bar 'inst_py'
- rm -rf proxy.py
- echo -e "$barra"
- echo -e " \033[1;37mAHORA HAGA LO SIGUENTE "
- echo -e " \033[1;37mPARA CREAR UN USUARIO ESCRIBA :CREARUSER "
- echo -e " \033[1;37mPARA REMOVE UN USUARIO ESCRIBA :REMOUSER "
- echo -e "$barra"
- echo
- echo
- echo '
- echo
- read -p "Usuario :" name
- read -p "Contraseña :" pass
- useradd -M -s /bin/false $name
- (echo $pass; echo $pass)|passwd $name 2>/dev/null' > /bin/CREARUSER &&chmod +x /bin/CREARUSER
- echo '
- echo
- read -p "Escriba su usuario que desa remover :" user
- kill $(ps -u $user |awk '{print $1}') >/dev/null 2>/dev/null ; userdel --force $us' >/bin/REMOUSER &&chmod +x /bin/REMOUSER
- echo -e "\E[44;1;37mPRESIONA 0 PARA SALIR DE TODO\033[0m" "\E[41;1;37m[15]-AUTO MENU\033[0m"
- while [ "$opcion" != "0" ]
- do
- echo -ne "\E[41;1;37mOPCION:\033[0m""\033[1;37m>>\033[0m "; read opcion
- case $opcion in
-
- 15)/root/menu
- ;;
- esac
- exit
- done
|