Антибот -решатель Blackbox Testing выходит из строя после 200 пробежекJavascript

Форум по Javascript
Ответить
Anonymous
 Антибот -решатель Blackbox Testing выходит из строя после 200 пробежек

Сообщение Anonymous »

Моя команда разработала антибот для проекта, и теперь я проверяю его уязвимости. Я создал обход на решатель Antibot, используя Python и JavaScript. Я сталкиваюсь с очень странной проблемой зависимости от времени выполнения, где мой решатель всегда терпит неудачу после попыток 200-210, но он снова начинает работать, если я сброшу сервер Solver. Как это работает: < /p>

[*] Антибот -решатель, размещенный как сервер Python Flask. Не имеет значения, если размещено локально или Google Cloud Run. < /Li>
Я запускаю какой-то клиентский код стороны, чтобы запросить сервер Solver < /li>
Сервер Solver возвращает подписную полезную нагрузку < /li>
< /ol>
после того, как моя клиентская сторона бит антибот 200-220 раз, он всегда начинает с ошибкой «ошибкой». Я тестирование черного ящика, так что не могу изучить его. Я пробовал много раз, и 200-220-это порог, когда он всегда начинает сбой. Тем не менее, отключение сервера Flask и перезапуск его немедленно позволяет мне добиться еще 200 успеха, а затем мне нужно снова перезапустить сервер Flask. Я думаю, что что -то, что становится инициирующим во время выполнения, например, UUID/HASH в каком -то модуле, и решатель начинает его отмечать. Или, может быть, после 200 попыток переполнены памяти в куче, и расчет подписи начинает падать из -за записи. Логика, импорт JS с использованием модуля Pythons JavaScript) < /p>
< /li>
solve.js (Javascript Code Hosting A Decopilled wasm) - Я предполагаю, что он использует кучу, создавая буфер < /p>
< /li>
Я не уверен, что все же случайные значения. Семена)

[*] Я добавил журналы в мой код JS, чтобы отслеживать использование памяти, память и куча выглядят прекрасно. Сервер.

[*] Я пытался импортировать модули внутри функций, а не верхнюю часть файла.


Новая идея


< /ul>
Проблема, с которой я столкнулся, заключается в том, что не безопасно перезагрузить 5 модулей Python в одновременной среде, где запросы на сервер Solver составляют случайное время и высокий объем (в настоящее время тестирование в 20 потоках). Основываясь на моем дизайне, как я могу перезагрузить все модули, я особенно заинтересован в перезагрузке модуля JavaScript , потому что это используется для импорта решателя JS. Может быть, перезагрузка LIBS не исправит это, но это происходит, когда решатель включается, если у кого -то есть лучшее предложение, я бы оценил это.from flask import Flask, request, jsonify
from google.oauth2 import service_account
from google.cloud import firestore
from gen import *

app = Flask(__name__)
creds = service_account.Credentials.from_service_account_file("service.json")
db = firestore.Client(credentials=creds)

@app.route('/recalculate', methods=['GET', 'POST'])
def recalculate():
try:
data = Calculate()

return jsonify(data), 200
except Exception as e:
return jsonify({"error": str(e)}), 500

if __name__ == '__main__':
port = int(os.environ.get('PORT', 8080))
app.run(host='0.0.0.0', port=port)
< /code>
gen.py
from javascript import require
import urllib.parse
import requests_go
import importlib
import hashlib
import random
import base64
import mmh3
import json
import math
import time
import gc

def Calculate(...):
try:
asyncFun = require("solve.js")
except Exception as e:
print(f"Failed to init js: {e}")
return "", ""

result = asyncFun['asyncSign'](...)

del asyncFun
gc.collect()

return result
< /code>
solve.js
// 26k lines of decompiled wasm

async function asyncSign() {
retasmFunc.A();

var0 = retasmFunc.y(var50["length"] + 1);
new Uint8Array(retasmFunc.v["buffer"], var0, var51["length"])["set"](var9);
}

module.exports = {
asyncSign: asyncSign,
};


Подробнее здесь: https://stackoverflow.com/questions/796 ... r-200-runs
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»