1152 lines
37 KiB
Bash
1152 lines
37 KiB
Bash
#!/bin/bash
|
||
|
||
_Key='/etc/cghkey'
|
||
|
||
clear
|
||
|
||
[[ ! -e ${_Key} ]] && exit
|
||
|
||
clear
|
||
function chekKEY {
|
||
[[ -z ${IP} ]] && IP=$(mip)
|
||
[[ -z ${IP} ]] && IP=$(wget -qO- ifconfig.me)
|
||
Key="$(cat /etc/cghkey)"
|
||
_double=$(curl -sSL "https://gitea.com/drowkid01/scriptdk1/raw/branch/main/Control/Control-BOT")
|
||
IiP="$(ofus "$Key" | grep -vE '127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -o -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')"
|
||
[[ -e /file ]] && _double=$(cat < /file) || {
|
||
wget -q -O /file https://gitea.com/drowkid01/scriptdk1/raw/branch/main/Control/Control-BOT
|
||
_double=$(cat < /file)
|
||
}
|
||
_check2="$(echo -e "$_double" | grep ${IiP})"
|
||
[[ ! -e /etc/folteto ]] && {
|
||
wget --no-check-certificate -O /etc/folteto $IiP:81/ChumoGH/checkIP.log
|
||
cheklist="$(cat /etc/folteto)"
|
||
echo -e "$(echo -e "$cheklist" | grep ${IP})" > /etc/folteto
|
||
}
|
||
[[ -z ${_check2} ]] && {
|
||
mss_='\n BotGEN NO AUTORIZADO POR @drowkid01 '
|
||
cat <<EOF >/bin/menu
|
||
clear && clear
|
||
echo -e "\n\n\033[1;31m==================================================\n <20><> <20>253 KEY BANEADA <20>253 ! CONTACTE Su ADMINISTRADOR! \n==================================================\n <20><> FECHA DE BANEO :$(date +%d/%m/%Y) HORA :$(date +%H:%M:%S) \n==================================================\n\n<><6E> ${mss_} \n\n==================================================\n"
|
||
echo -e " \e[1;32m --- SI CONSIDERA QUE FUE UN ERROR --- " | pv -qL 60
|
||
echo -e " \e[1;32m -- ${mss_} -- " | pv -qL 60
|
||
echo -e "\n \e[1;93m --- TECLEA \e[1;93m --- \e[1;97mcgh -fix\e[1;93m --- " | pv -qL 50
|
||
echo -e "\n\033[1;31m==================================================\n\n"
|
||
#echo "/etc/adm-lite/menu" > /bin/menu && chmod +x /bin/menu
|
||
EOF
|
||
|
||
rm -f /etc/folteto
|
||
rm -f /etc/adm-lite/menu*
|
||
MENSAJE="${TTini}${m3ssg}MSG RECIVIDO${m3ssg}${TTfin}\n"
|
||
MENSAJE+=" ---------------------------------------------\n"
|
||
MENSAJE+=" IP Clon: ${IP} Rechazada\n"
|
||
MENSAJE+=" ---------------------------------------------\n"
|
||
MENSAJE+=" INSECTO DETECTADO EN Sock Python\n"
|
||
MENSAJE+=" ---------------------------------------------\n"
|
||
MENSAJE+=" Key : ${Key}\n"
|
||
MENSAJE+=" ---------------------------------------------\n"
|
||
MENSAJE+=" HORA : $(printf '%(%D-%H:%M:%S)T')\n"
|
||
MENSAJE+=" ---------------------------------------------\n"
|
||
MENSAJE+=" ${rUlq} Bot ADMcgh de keyS ${rUlq}\n"
|
||
MENSAJE+=" ${pUn5A} By @drowkid01 ${pUn5A} \n"
|
||
MENSAJE+=" ---------------------------------------------\n"
|
||
curl -s --max-time 10 -d "chat_id=$ID&disable_web_page_preview=1&text=$(echo -e "$MENSAJE")" $urlBOT &>/dev/null
|
||
exit && exit
|
||
}
|
||
}
|
||
|
||
source <(curl -sSL https://gitea.com/drowkid01/scriptdk1/raw/branch/main/Recursos/module)
|
||
#[[ -e /bin/ejecutar/msg ]] && source /bin/ejecutar/msg
|
||
source msg
|
||
msg -bar3
|
||
ADM_inst="/etc/adm-lite" && [[ ! -d ${ADM_inst} ]] && exit
|
||
system=$(cat -n /etc/issue |grep 1 |cut -d ' ' -f6,7,8 |sed 's/1//' |sed 's/ //')
|
||
vercion=$(echo $system|awk '{print $2}'|cut -d '.' -f1,2)
|
||
echo -e "ESPERE UN MOMENTO MIENTRAS FIXEAMOS SU SISTEMA "
|
||
|
||
fun_upgrade() {
|
||
sync
|
||
echo 3 >/proc/sys/vm/drop_caches
|
||
sync && sysctl -w vm.drop_caches=3
|
||
sysctl -w vm.drop_caches=0
|
||
swapoff -a
|
||
swapon -a
|
||
sudo apt install software-properties-common -y &> /dev/null
|
||
apt install python2 -y &> /dev/null
|
||
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1 &> /dev/null
|
||
rm -rf /tmp/* > /dev/null 2>&1
|
||
killall kswapd0 > /dev/null 2>&1
|
||
killall tcpdump > /dev/null 2>&1
|
||
killall ksoftirqd > /dev/null 2>&1
|
||
echo > /etc/fixpython
|
||
}
|
||
|
||
function aguarde() {
|
||
sleep .1
|
||
echo -e "SU VERSION DE UBUNTU ${vercion} ES SUPERIOR A 18.04 "
|
||
helice() {
|
||
fun_upgrade >/dev/null 2>&1 &
|
||
tput civis
|
||
while [ -d /proc/$! ]; do
|
||
for i in / - \\ \|; do
|
||
sleep .1
|
||
echo -ne "\e[1D$i"
|
||
done
|
||
done
|
||
tput cnorm
|
||
}
|
||
echo -ne "\033[1;37m OPTIMIZANDO Y \033[1;32mFIXEANDO \033[1;37mPYTHON \033[1;32m.\033[1;32m.\033[1;33m.\033[1;31m. \033[1;33m"
|
||
helice
|
||
echo -e "\e[1DOk"
|
||
}
|
||
|
||
[[ "${vercion}" > "20" ]] && {
|
||
echo -e ""
|
||
msg -bar3
|
||
[[ -e /etc/fixpython ]] || aguarde
|
||
} || {
|
||
echo
|
||
[[ -e /etc/fixpython ]] || {
|
||
echo -e " SU VERSION DE UBUNTU ${vercion} ES INFERIOR O 18.04 "
|
||
apt-get install python -y &>/dev/null
|
||
apt-get install python3 -y &>/dev/null
|
||
touch /etc/fixpython
|
||
}
|
||
}
|
||
|
||
clear
|
||
|
||
mportas () {
|
||
unset portas
|
||
portas_var=$(lsof -V -i tcp -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND" | grep "LISTEN")
|
||
while read port; do
|
||
var1=$(echo $port | awk '{print $1}') && var2=$(echo $port | awk '{print $9}' | awk -F ":" '{print $2}')
|
||
[[ "$(echo -e $portas|grep "$var1 $var2")" ]] || portas+="$var1 $var2\n"
|
||
done <<< "$portas_var"
|
||
i=1
|
||
echo -e "$portas"
|
||
}
|
||
|
||
stop_all () {
|
||
_ps="$(ps x)"
|
||
ck_py=$(lsof -V -i tcp -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND"|grep "python")
|
||
[[ -z ${ck_py} ]] && ck_py=$(lsof -V -i tcp -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND"|grep "WS-Epro")
|
||
if [[ -z $(echo "$ck_py" | awk '{print $1}' | head -n 1) ]]; then
|
||
print_center -verm "Puertos PYTHON no encontrados"
|
||
msg -bar3
|
||
else
|
||
ck_port=$(echo "$ck_py" | awk '{print $9}' | awk -F ":" '{print $2}')
|
||
[[ -z ${ck_port} ]] && ck_port=$(echo -e "${_ps}" | grep PDirect | grep -v grep | awk '{print $7}')
|
||
for i in $ck_port; do
|
||
kill -9 $(echo -e "${_ps}"| grep PDirect | grep -v grep | head -n 1 | awk '{print $1}') &>/dev/null
|
||
systemctl stop python.${i} &>/dev/null
|
||
systemctl disable python.${i} &>/dev/null
|
||
rm -f /etc/systemd/system/python.${i}.service
|
||
rm -f /etc/adm-lite/PDirect
|
||
done
|
||
for pidproxy in $(screen -ls | grep ".ws" | awk {'print $1'}); do
|
||
screen -r -S "$pidproxy" -X quit
|
||
done
|
||
[[ $(grep -wc "PDirect.py" /bin/autoboot) != '0' ]] && {
|
||
sed -i '/PDirect/d' /bin/autoboot
|
||
sed -i '/python/d' /bin/autoboot
|
||
}
|
||
rm -f /etc/adm-lite/PDirect
|
||
screen -wipe &>/dev/null
|
||
kill -9 $(echo -e "${_ps}" | grep -w python | grep -v grep | awk '{print $1}') &>/dev/null
|
||
print_center -verd "Puertos PYTHON detenidos"
|
||
msg -bar3
|
||
fi
|
||
sleep 0.5
|
||
}
|
||
|
||
stop_port () {
|
||
sleep 0.5
|
||
clear
|
||
STPY="$(mportas | grep python| awk '{print $2}')"
|
||
STPY+=" $(mportas |grep WS-Epro| awk '{print $2}')"
|
||
msg -bar3
|
||
print_center -ama "DETENER UN PUERTO"
|
||
msg -bar3
|
||
n=1
|
||
for i in $STPY; do
|
||
echo -e " \033[1;32m[$n] \033[1;31m> \033[1;37m$i\033[0m"
|
||
pypr[$n]=$i
|
||
let n++
|
||
done
|
||
|
||
msg -bar3
|
||
echo -ne "$(msg -verd " [0]") $(msg -verm2 ">") " && msg -bra "\033[1;41mVOLVER"
|
||
msg -bar3
|
||
echo -ne "\033[1;37m opcion: " && read prpy
|
||
tput cuu1 && tput dl1
|
||
|
||
[[ $prpy = "0" ]] && return
|
||
systemctl stop python.${pypr[$prpy]} &>/dev/null
|
||
systemctl disable python.${pypr[$prpy]} &>/dev/null
|
||
rm /etc/systemd/system/python.${pypr[$prpy]}.service &>/dev/null
|
||
sed -i "/ws${pypr[$prpy]}/d" /bin/autoboot &>/dev/null
|
||
kill -9 $(echo -e "${_ps}"| grep -w "ws${pypr[$prpy]}" | grep -v grep | head -n 1 | awk '{print $1}') &>/dev/null
|
||
kill $(echo -e "${_ps}"| grep -w "${pypr[$prpy]}" | grep -v grep | awk '{print $1}') &>/dev/null
|
||
sed -i '/PDirect${pypr[$prpy]}/d' /bin/autoboot
|
||
screen -wipe &>/dev/null
|
||
print_center -verd "PUERTO PYTHON ${pypr[$prpy]} RETIRADO"
|
||
msg -bar3
|
||
sleep 0.5
|
||
}
|
||
|
||
colector(){
|
||
conect="$1"
|
||
clear
|
||
msg -bar3
|
||
print_center -azu " Puerto Principal, para Proxy Directo"
|
||
msg -bar3
|
||
|
||
while [[ -z $porta_socket ]]; do
|
||
echo -ne "\033[1;37m Digite el Puerto: " && read porta_socket
|
||
porta_socket=$(echo ${porta_socket}|sed 's/[^0-9]//g')
|
||
tput cuu1 && tput dl1
|
||
|
||
[[ $(mportas|grep -w "${porta_socket}") = "" ]] && {
|
||
echo -e "\033[1;33m Puerto python:\033[1;32m ${porta_socket} VALIDO"
|
||
msg -bar3
|
||
} || {
|
||
echo -e "\033[1;33m Puerto python:\033[1;31m ${porta_socket} OCUPADO" && sleep 1
|
||
tput cuu1 && tput dl1
|
||
unset porta_socket
|
||
}
|
||
done
|
||
|
||
if [[ $conect = "PDirect" ]]; then
|
||
print_center -azu " Puerto Local SSH/DROPBEAR/OPENVPN"
|
||
msg -bar3
|
||
|
||
while [[ -z $local ]]; do
|
||
echo -ne "\033[1;97m Digite el Puerto: \033[0m" && read local
|
||
local=$(echo ${local}|sed 's/[^0-9]//g')
|
||
tput cuu1 && tput dl1
|
||
|
||
[[ $(mportas|grep -w "${local}") = "" ]] && {
|
||
echo -e "\033[1;33m Puerto local:\033[1;31m ${local} NO EXISTE" && sleep 1
|
||
tput cuu1 && tput dl1
|
||
unset local
|
||
} || {
|
||
echo -e "\033[1;33m Puerto local:\033[1;32m ${local} VALIDO"
|
||
msg -bar3
|
||
tput cuu1 && tput dl1
|
||
}
|
||
done
|
||
msg -bar3
|
||
echo -e " Respuesta de Encabezado (101,200,484,500,etc) \033[1;37m"
|
||
msg -bar3
|
||
print_center -azu "Response personalizado (enter por defecto 200)"
|
||
print_center -ama "NOTA : Para OVER WEBSOCKET escribe (101)"
|
||
msg -bar3
|
||
echo -ne "\033[1;97m ENCABEZADO : \033[0m" && read response
|
||
response=$(echo ${response}|sed 's/[^0-9]//g')
|
||
tput cuu1 && tput dl1
|
||
if [[ -z $response ]]; then
|
||
response="200"
|
||
echo -e "\033[1;33m CABECERA :\033[1;32m ${response} VALIDA"
|
||
else
|
||
echo -e "\033[1;33m CABECERA :\033[1;32m ${response} VALIDA"
|
||
fi
|
||
msg -bar3
|
||
fi
|
||
|
||
if [[ ! $conect = "PGet" ]] && [[ ! $conect = "POpen" ]]; then
|
||
print_center -azu "Introdusca su Mini-Banner"
|
||
msg -bar3
|
||
print_center -azu "Introduzca un texto [NORMAL] o en [HTML]"
|
||
echo -ne "-> : "
|
||
read texto_soket
|
||
fi
|
||
|
||
if [[ $conect = "PPriv" ]]; then
|
||
py="python3"
|
||
IP=$(fun_ip)
|
||
elif [[ $conect = "PGet" ]]; then
|
||
echo "master=ChumoGH" > ${ADM_tmp}/pwd.pwd
|
||
while read service; do
|
||
[[ -z $service ]] && break
|
||
echo "127.0.0.1:$(echo $service|cut -d' ' -f2)=$(echo $service|cut -d' ' -f1)" >> ${ADM_tmp}/pwd.pwd
|
||
done <<< "$(mportas)"
|
||
porta_bind="0.0.0.0:$porta_socket"
|
||
pass_file="${ADM_tmp}/pwd.pwd"
|
||
py="python"
|
||
else
|
||
py="python"
|
||
fi
|
||
[[ -z ${texto_soket} ]] && texto_soket='<span style=color: #ff0000;><strong><span style="color: #ff0000;">C</span><span style="color: #ff9900;">h</span><span style="color: #008000;">u</span><span style="color: #0000ff;">m</span><span style="color: #ff0000;">o</span><span style="color: #ff9900;">G</span><span style="color: #008000;">H</span><span style="color: #0000ff;"><3E></span><span style="color: #ff0000;">P</span><span style="color: #ff9900;">l</span><span style="color: #008000;">u</span><span style="color: #0000ff;">s</span></strong></span>'
|
||
|
||
mod1() {
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
msg -ama " BINARIO OFICIAL DE Epro Dev Team "
|
||
sleep 2s && tput cuu1 && tput dl1
|
||
[[ -e /etc/adm-lite/PDirect ]] && {
|
||
echo -e "[Unit]
|
||
Description=WS-Epro Service by @drowkid01
|
||
After=network.target
|
||
StartLimitIntervalSec=0
|
||
|
||
[Service]
|
||
Type=simple
|
||
User=root
|
||
WorkingDirectory=/root
|
||
ExecStart=/bin/WS-Epro -salome -listen :${porta_socket} -ssh 127.0.0.1:${local} -f /etc/adm-lite/PDirect
|
||
Restart=always
|
||
RestartSec=3s
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target" > /etc/systemd/system/python.$porta_socket.service
|
||
} || {
|
||
echo "# verbose level 0=info, 1=verbose, 2=very verbose
|
||
verbose: 0
|
||
listen:
|
||
- target_host: 127.0.0.1
|
||
target_port: ${local}
|
||
listen_port: ${porta_socket}" > /etc/adm-lite/PDirect
|
||
|
||
echo -e "[Unit]
|
||
Description=WS-Epro Service by @drowkid01
|
||
After=network.target
|
||
StartLimitIntervalSec=0
|
||
|
||
[Service]
|
||
Type=simple
|
||
User=root
|
||
WorkingDirectory=/root
|
||
ExecStart=/bin/WS-Epro -f /etc/adm-lite/PDirect
|
||
Restart=always
|
||
RestartSec=3s
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target" > /etc/systemd/system/python.$porta_socket.service
|
||
}
|
||
systemctl enable python.$porta_socket &>/dev/null
|
||
systemctl start python.$porta_socket &>/dev/null
|
||
|
||
if [[ $conect = "PGet" ]]; then
|
||
[[ "$(ps x | grep "PGet.py" | grep -v "grep" | awk -F "pts" '{print $1}')" ]] && {
|
||
print_center -verd "Gettunel Iniciado com Exito"
|
||
print_center -azu "Su Contrase<73>a Gettunel es: $(msg -ama "ChumoGH")"
|
||
msg -bar3
|
||
} || {
|
||
print_center -verm2 "Gettunel no fue iniciado"
|
||
msg -bar3
|
||
}
|
||
fi
|
||
}
|
||
|
||
mod2() {
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
texto="$(echo ${texto_soket} | sed 's/\"//g')"
|
||
#texto_soket="$(echo $texto|sed 'y/áÁàÂ54ãÒâÀ32é<32> 30ê<30>`íÍóÀ34õ<34> 22ôÀ35ú<35>añÀ30ç<30> 21ªº/aAaAaAaAeEeEiIoOoOoOuUnNcCao/')"
|
||
[[ ! -z $porta_bind ]] && conf=" 80 " || conf="$porta_socket "
|
||
#[[ ! -z $pass_file ]] && conf+="-p $pass_file"
|
||
#[[ ! -z $local ]] && conf+="-l $local "
|
||
#[[ ! -z $response ]] && conf+="-r $response "
|
||
#[[ ! -z $IP ]] && conf+="-i $IP "
|
||
[[ ! -z $texto_soket ]] && conf+=" '$texto_soket'"
|
||
cp ${ADM_inst}/$1.py $HOME/PDirect.py
|
||
systemctl stop python.${porta_socket} &>/dev/null
|
||
systemctl disable python.${porta_socket} &>/dev/null
|
||
rm -f /etc/systemd/system/python.${porta_socket}.service &>/dev/null
|
||
#================================================================
|
||
(
|
||
less << PYTHON > ${ADM_inst}/PDirect.py
|
||
#!/usr/bin/env python
|
||
# encoding: utf-8
|
||
import socket, threading, thread, select, signal, sys, time, getopt
|
||
|
||
# Listen
|
||
LISTENING_ADDR = '0.0.0.0'
|
||
if sys.argv[1:]:
|
||
LISTENING_PORT = sys.argv[1]
|
||
else:
|
||
LISTENING_PORT = 80
|
||
#Pass
|
||
PASS = ''
|
||
# CONST
|
||
BUFLEN = 4096 * 4
|
||
TIMEOUT = 60
|
||
DEFAULT_HOST = '127.0.0.1:$local'
|
||
MSG = '$texto'
|
||
STATUS_RESP = '$response'
|
||
FTAG = '\r\nContent-length: 0\r\n\r\nHTTP/1.1 200 Connection established\r\n\r\n'
|
||
|
||
if STATUS_RESP == '101':
|
||
STATUS_TXT = '<font color="green">Web Socket Protocol</font>'
|
||
else:
|
||
STATUS_TXT = '<font color="red">Connection established</font>'
|
||
|
||
RESPONSE = "HTTP/1.1 " + str(STATUS_RESP) + ' ' + str(STATUS_TXT) + ' ' + str(MSG) + ' ' + str(FTAG)
|
||
|
||
|
||
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)
|
||
intport = int(self.port)
|
||
self.soc.bind((self.host, intport))
|
||
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 = 22
|
||
else:
|
||
port = sys.argv[1]
|
||
|
||
(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 80'
|
||
|
||
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 "\033[0;34m<34>01"*8,"\033[1;32m PROXY PYTHON WEBSOCKET","\033[0;34m<EFBFBD>01"*8,"\n"
|
||
print "\033[1;33mIP:\033[1;32m " + LISTENING_ADDR
|
||
print "\033[1;33mPORTA:\033[1;32m " + str(LISTENING_PORT) + "\n"
|
||
print "\033[0;34m<EFBFBD>01"*10,"\033[1;32m ChumoGH ADM - LITE","\033[0;34m<EFBFBD>01\033[1;37m"*11,"\n"
|
||
|
||
|
||
server = Server(LISTENING_ADDR, LISTENING_PORT)
|
||
server.start()
|
||
|
||
while True:
|
||
try:
|
||
time.sleep(2)
|
||
except KeyboardInterrupt:
|
||
print 'Parando...'
|
||
server.close()
|
||
break
|
||
|
||
if __name__ == '__main__':
|
||
parse_args(sys.argv[1:])
|
||
main()
|
||
PYTHON
|
||
) > $HOME/proxy.log
|
||
|
||
msg -bar3
|
||
#systemctl start $py.$porta_socket &>/dev/null
|
||
chmod +x ${ADM_inst}/$1.py
|
||
|
||
echo -e "[Unit]
|
||
Description=$1 Parametizado Service by @drowkid01
|
||
After=network.target
|
||
StartLimitIntervalSec=0
|
||
|
||
[Service]
|
||
Type=simple
|
||
User=root
|
||
WorkingDirectory=/root
|
||
ExecStart=/usr/bin/$py ${ADM_inst}/${1}.py $conf
|
||
Restart=always
|
||
RestartSec=3s
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target" > /etc/systemd/system/python.$porta_socket.service
|
||
systemctl enable python.$porta_socket &>/dev/null
|
||
systemctl start python.$porta_socket &>/dev/null
|
||
[[ -e $HOME/$1.py ]] && echo -e "\n\n Fichero Alojado en : ${ADM_inst}/$1.py \n\n Respaldo alojado en : $HOME/$1.py \n"
|
||
#================================================================
|
||
[[ -e /etc/systemd/system/python.$porta_socket.service ]] && {
|
||
msg -bar3
|
||
print_center -verd " INICIANDO SOCK Python Puerto ${porta_socket} "
|
||
sleep 1s && tput cuu1 && tput dl1
|
||
} || {
|
||
print_center -azu " FALTA ALGUN PARAMETRO PARA INICIAR"
|
||
sleep 1s && tput cuu1 && tput dl1
|
||
return
|
||
}
|
||
[[ ! -e /bin/ejecutar/PortPD.log ]] && echo -e "${conf}" > /bin/ejecutar/PortPD.log
|
||
}
|
||
|
||
mod3() {
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
tput cuu1 && tput dl1
|
||
texto="$(echo ${texto_soket} | sed 's/\"//g')"
|
||
[[ ! -z $porta_bind ]] && conf=" 80 " || conf="$porta_socket "
|
||
[[ ! -z $texto_soket ]] && conf+=" '$texto_soket'"
|
||
cp ${ADM_inst}/$1.py $HOME/PDirect.py
|
||
systemctl stop python.${porta_socket} &>/dev/null
|
||
systemctl disable python.${porta_socket} &>/dev/null
|
||
rm -f /etc/systemd/system/python.${porta_socket}.service &>/dev/null
|
||
#================================================================
|
||
less << PYTHON > ${ADM_inst}/PDirect.py
|
||
#!/usr/bin/env python
|
||
# encoding: utf-8
|
||
import socket, threading, thread, select, signal, sys, time, getopt
|
||
|
||
# Listen
|
||
LISTENING_ADDR = '0.0.0.0'
|
||
if sys.argv[1:]:
|
||
LISTENING_PORT = sys.argv[1]
|
||
else:
|
||
LISTENING_PORT = 80
|
||
#Pass
|
||
PASS = ''
|
||
# CONST
|
||
BUFLEN = 4096 * 4
|
||
TIMEOUT = 60
|
||
DEFAULT_HOST = '127.0.0.1:$local'
|
||
MSG = '$texto'
|
||
STATUS_RESP = '$response'
|
||
FTAG = '\r\nContent-length: 0\r\n\r\nHTTP/1.1 $STATUS_RESP Connection established\r\n\r\n'
|
||
|
||
if STATUS_RESP == '101':
|
||
STATUS_TXT = '<font color="green">Web Socket Protocol</font>'
|
||
else:
|
||
STATUS_TXT = '<font color="red">Connection established</font>'
|
||
|
||
#RESPONSE = "HTTP/1.1 " + str(STATUS_RESP) + ' ' + str(STATUS_TXT) + ' ' + str(MSG) + ' ' + str(FTAG)
|
||
RESPONSE = "HTTP/1.1 " + str(STATUS_RESP) + ' ' + str(MSG) + ' ' + str(FTAG)
|
||
|
||
|
||
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)
|
||
intport = int(self.port)
|
||
self.soc.bind((self.host, intport))
|
||
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 = 22
|
||
else:
|
||
port = sys.argv[1]
|
||
|
||
(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 80'
|
||
|
||
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 "\033[0;34m<EFBFBD>01"*8,"\033[1;32m PROXY PYTHON WEBSOCKET","\033[0;34m%01"*8,"\n"
|
||
print "\033[1;33mIP:\033[1;32m " + LISTENING_ADDR
|
||
print "\033[1;33mPORTA:\033[1;32m " + str(LISTENING_PORT) + "\n"
|
||
print "\033[0;34m<EFBFBD>01"*10,"\033[1;32m ChumoGH ADMcgh Plus","\033[0;34m<EFBFBD>01\033[1;37m"*11,"\n"
|
||
|
||
server = Server(LISTENING_ADDR, LISTENING_PORT)
|
||
server.start()
|
||
|
||
while True:
|
||
try:
|
||
time.sleep(2)
|
||
except KeyboardInterrupt:
|
||
print 'Parando...'
|
||
server.close()
|
||
break
|
||
|
||
if __name__ == '__main__':
|
||
parse_args(sys.argv[1:])
|
||
main()
|
||
PYTHON
|
||
msg -bar3
|
||
chmod +x ${ADM_inst}/$1.py
|
||
tput cuu1 && tput dl1
|
||
screen -dmS ws$porta_socket python ${ADM_inst}/PDirect.py ${porta_socket} & > /root/proxy.log
|
||
print_center -verd " ${aLerT} VERIFICANDO ACTIVIDAD DE SOCK PYTHON ${aLerT} \n ${aLerT} PORVAFOR ESPERE !! ${aLerT} "
|
||
sleep 2s && tput cuu1 && tput dl1
|
||
sleep 1s && tput cuu1 && tput dl1
|
||
[[ -e $HOME/$1.py ]] && echo -e "\n\n Fichero Alojado en : ${ADM_inst}/$1.py \n\n Respaldo alojado en : $HOME/$1.py \n"
|
||
#================================================================
|
||
[[ $(ps x | grep "ws$porta_socket python" |grep -v grep ) ]] && {
|
||
msg -bar3
|
||
print_center -verd " REACTIVADOR DE SOCK Python ${porta_socket} ENCENDIDO "
|
||
[[ $(grep -wc "ws$porta_socket" /bin/autoboot) = '0' ]] && {
|
||
echo -e "netstat -tlpn | grep -w $porta_socket > /dev/null || { screen -r -S 'ws$porta_socket' -X quit; screen -dmS ws$porta_socket python ${ADM_inst}/$1.py ${porta_socket} & >> /root/proxy.log ; }" >>/bin/autoboot
|
||
} || {
|
||
sed -i '/ws${porta_socket}/d' /bin/autoboot
|
||
echo -e "netstat -tlpn | grep -w $porta_socket > /dev/null || { screen -r -S 'ws$porta_socket' -X quit; screen -dmS ws$porta_socket python ${ADM_inst}/$1.py ${porta_socket} & >> /root/proxy.log ; }" >>/bin/autoboot
|
||
}
|
||
sleep 2s && tput cuu1 && tput dl1
|
||
} || {
|
||
print_center -azu " FALTA ALGUN PARAMETRO PARA INICIAR REACTIVADOR "
|
||
sleep 2s && tput cuu1 && tput dl1
|
||
return
|
||
}
|
||
[[ ! -e /bin/ejecutar/PortPD.log ]] && echo -e "${conf}" > /bin/ejecutar/PortPD.log
|
||
}
|
||
|
||
#-----------SELECCION------------
|
||
selecPython () {
|
||
msg -bar3
|
||
menu_func "Socks WS OFICIAL ( SCREEM )" "$(msg -ama "Socks WS BETA ( SYSTEM )")" "$(msg -verm2 "Socks WS/Proxy (EPro)( SYSTEM )")"
|
||
msg -bar3
|
||
echo -ne "$(msg -verd " [0]") $(msg -verm2 ">") " && msg -bra " \033[1;41m VOLVER \033[0m"
|
||
msg -bar3
|
||
selection=$(selection_fun 3)
|
||
case ${selection} in
|
||
1)
|
||
mod3 "${conect}"
|
||
sleep 2s
|
||
;;
|
||
2)
|
||
mod2 "${conect}"
|
||
sleep 2s
|
||
;;
|
||
3)
|
||
[[ $(uname -m 2> /dev/null) != x86_64 ]] && {
|
||
msg -ama " BINARIO NO COMPATIBLE CON ARM64 "
|
||
read -p "PRESIONE ENTER PARA RETORNAR"
|
||
exit
|
||
} || {
|
||
if wget -O /bin/WS-Epro https://gitea.com/drowkid01/scriptdk1/raw/branch/main/Recursos/binarios/SockWS/autoStart &>/dev/null ; then
|
||
chmod 777 /bin/WS-Epro
|
||
fi
|
||
mod1 "${conect}"
|
||
sleep 2s
|
||
}
|
||
;;
|
||
0) return 1;;
|
||
esac
|
||
return 1
|
||
}
|
||
#-----------FIN SELECCION--------
|
||
selecPython
|
||
tput cuu1 && tput dl1
|
||
msg -bar3
|
||
[[ $(ps x | grep "PDirect" | grep -v "grep" | awk -F "pts" '{print $1}') ]] && print_center -verd "PYTHON INICIADO CON EXITO!!!" || print_center -ama " ERROR AL INICIAR PYTHON!!!"
|
||
msg -bar3
|
||
sleep 1
|
||
}
|
||
|
||
iniciarsocks () {
|
||
pidproxy=$(ps x | grep -w "PPub.py" | grep -v "grep" | awk -F "pts" '{print $1}') && [[ ! -z $pidproxy ]] && P1="\033[1;32m[ON]" || P1="\033[1;31m[OFF]"
|
||
pidproxy2=$(ps x | grep -w "PPriv.py" | grep -v "grep" | awk -F "pts" '{print $1}') && [[ ! -z $pidproxy2 ]] && P2="\033[1;32m[ON]" || P2="\033[1;31m[OFF]"
|
||
pidproxy3=$(ps x | grep -w "PDirect" | grep -v "grep" | awk -F "pts" '{print $1}') && [[ ! -z $pidproxy3 ]] && P3="\033[1;32m[ON]" || P3="\033[1;31m[OFF]"
|
||
pidproxy4=$(ps x | grep -w "POpen.py" | grep -v "grep" | awk -F "pts" '{print $1}') && [[ ! -z $pidproxy4 ]] && P4="\033[1;32m[ON]" || P4="\033[1;31m[OFF]"
|
||
pidproxy5=$(ps x | grep "PGet.py" | grep -v "grep" | awk -F "pts" '{print $1}') && [[ ! -z $pidproxy5 ]] && P5="\033[1;32m[ON]" || P5="\033[1;31m[OFF]"
|
||
pidproxy6=$(ps x | grep "scktcheck" | grep -v "grep" | awk -F "pts" '{print $1}') && [[ ! -z $pidproxy6 ]] && P6="\033[1;32m[ON]" || P6="\033[1;31m[OFF]"
|
||
tittle
|
||
menu_func "SOCKS-PYTHON SIMPLE $P1" \
|
||
"SOCKS-PYTHON SEGURO $P2" \
|
||
"SOCKS-PYTHON DIRECT $P3" \
|
||
"SOCKS-PYTHON OPENVPN $P4" \
|
||
"SOCKS-PYTHON GETTUNEL $P5" \
|
||
"SOCKS-PYTHON TCPBYPASS $P6"
|
||
#echo -e "\e[91m\e[43m ==== SCRIPT MOD ChumoGH|EDICION ==== \033[0m \e[1;97m[$(less ${ADM_inst}/v-local.log)]"
|
||
#msg -bar3
|
||
#echo -ne "$(msg -verd " [1]") $(msg -verm2 ">") " && msg -azu "Socks Python SIMPLE $P1"
|
||
#echo -ne "$(msg -verd " [2]") $(msg -verm2 ">") " && msg -azu "Socks Python SEGURO $P2"
|
||
#echo -ne "$(msg -verd " [3]") $(msg -verm2 ">") " && msg -azu "Socks Python DIRETO (WS) $P3"
|
||
#echo -ne "$(msg -verd " [4]") $(msg -verm2 ">") " && msg -azu "Socks Python OPENVPN $P4"
|
||
#echo -ne "$(msg -verd " [5]") $(msg -verm2 ">") " && msg -azu "Socks Python GETTUNEL $P5"
|
||
#echo -ne "$(msg -verd " [6]") $(msg -verm2 ">") " && msg -azu "Socks Python TCP BYPASS $P6"
|
||
|
||
#echo -e "\033[0;35m [\033[0;36m1\033[0;35m]\e[1;97m ${flech} SOCKS-PYTHON SIMPLE $P1"
|
||
#echo -e "\033[0;35m [\033[0;36m2\033[0;35m]\e[1;97m ${flech} SOCKS-PYTHON SEGURO $P2"
|
||
#echo -e "\033[0;35m [\033[0;36m3\033[0;35m]\e[1;97m ${flech} SOCKS-PYTHON DIRECT $P3"
|
||
#echo -e "\033[0;35m [\033[0;36m4\033[0;35m]\e[1;97m ${flech} SOCKS-PYTHON OPENVPN $P4"
|
||
#echo -e "\033[0;35m [\033[0;36m5\033[0;35m]\e[1;97m ${flech} SOCKS-PYTHON GETTUNEL $P5"
|
||
#echo -e "\033[0;35m [\033[0;36m6\033[0;35m]\e[1;97m ${flech} SOCKS-PYTHON TCP-BYPASS $P6"
|
||
|
||
msg -bar
|
||
|
||
py=7
|
||
var_p="$(lsof -V -i tcp -P -n|grep -v "ESTABLISHED"|grep -v "COMMAND"|grep "WS-Epro"| wc -l) "
|
||
var_w="$(lsof -V -i tcp -P -n|grep -v "ESTABLISHED"|grep -v "COMMAND"|grep "python"|wc -l)"
|
||
var_check=$(( ${var_p} + ${var_w} ))
|
||
if [[ ${var_check} -ge "2" ]]; then
|
||
|
||
echo -e "\033[0;35m [\033[0;36m7\033[0;35m]\e[1;33m ${flech} $(msg -verm 'ANULAR TODOS')"
|
||
echo -e "\033[0;35m [\033[0;36m8\033[0;35m]\e[1;33m ${flech} $(msg -verm 'ELIMINAR UN PUERTO')"
|
||
#echo -e "$(msg -verd " [7]") $(msg -verm2 ">") $(msg -azu "ANULAR TODOS") $(msg -verd " [8]") $(msg -verm2 ">") $(msg -azu "ELIMINAR UN PUERTO")"
|
||
py=8
|
||
else
|
||
echo -e "\033[0;35m [\033[0;36m7\033[0;35m]\e[1;33m ${flech} $(msg -verm 'ELIMINAR TODOS')"
|
||
#echo -e "$(msg -verd " [7]") $(msg -verm2 ">") $(msg -azu "ELIMINAR TODOS")"
|
||
fi
|
||
|
||
back
|
||
#msg -bar3
|
||
#echo -ne "$(msg -verd " [0]") $(msg -verm2 ">") " && msg -bra " \033[1;41m VOLVER \033[0m"
|
||
#msg -bar3
|
||
selection=$(selection_fun ${py})
|
||
case ${selection} in
|
||
1)colector PPub;;
|
||
2)colector PPriv;;
|
||
3)colector PDirect;;
|
||
4)colector POpen;;
|
||
5)colector PGet;;
|
||
6);;
|
||
7)stop_all;;
|
||
8)stop_port;;
|
||
0)return 1;;
|
||
esac
|
||
return 1
|
||
}
|
||
chekKEY &> /dev/null 2>&1
|
||
iniciarsocks
|
||
|
||
ofus () {
|
||
unset txtofus
|
||
number=$(expr length $1)
|
||
for((i=1; i<$number+1; i++)); do
|
||
txt[$i]=$(echo "$1" | cut -b $i)
|
||
case ${txt[$i]} in
|
||
".")txt[$i]="x";;
|
||
"x")txt[$i]=".";;
|
||
"5")txt[$i]="s";;
|
||
"s")txt[$i]="5";;
|
||
"1")txt[$i]="@";;
|
||
"@")txt[$i]="1";;
|
||
"2")txt[$i]="?";;
|
||
"?")txt[$i]="2";;
|
||
"4")txt[$i]="0";;
|
||
"0")txt[$i]="4";;
|
||
"/")txt[$i]="K";;
|
||
"K")txt[$i]="/";;
|
||
esac
|
||
txtofus+="${txt[$i]}"
|
||
done
|
||
echo "$txtofus" | rev
|
||
}
|
||
|