scriptdk1/Recursos/test/SockPython.sh
2025-05-26 15:48:09 -06:00

1152 lines
37 KiB
Bash
Raw Blame History

#!/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
}