Моя команда разработала антибот для проекта, и теперь я проверяю его уязвимости. Я создал обход на решатель 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
Антибот -решатель Blackbox Testing выходит из строя после 200 пробежек ⇐ Javascript
Форум по Javascript
1749085027
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,
};
Подробнее здесь: [url]https://stackoverflow.com/questions/79653667/antibot-solver-blackbox-testing-fails-after-200-runs[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия