Files
drhider/History/2026-07-13-sonnet-response-obfuscation-analysis.md
T
2026-07-13 12:41:08 +04:00

3.5 KiB
Raw Blame History

Sonnet: анализ обфускации — TMP-файлы vs текущий код

Дата: 2026-07-13


Главный вывод

TMP-файлы созданы СТАРОЙ версией кода. Они не были сгенерированы текущим _next_token()-кодом. Это не баг в текущем коде — это артефакт предыдущей реализации.


Доказательства

1. Имена файлов — старый формат

Текущий obfuscator.py генерирует имена вида договор-НУБЕС001-03700.md (меняет расширение). TMP-файлы: договор-XXX001-03700_obfuscated.md — суффикс _obfuscated и XXX-маскировка в имени. Текущий код так не делает.

2. Тип text — fallback из builder.py, не из сканера

build_mapping_csv() определяет тип постфактум по паттернам. Если ни один не совпал → "text". Типа text нет в TYPE_POOLS scanner.py. Значит строки вида:

text,Исполнителем Заказчику Сторонами,Кузнецов О.В.

попали из старого кода, который не фильтровал роли (Исполнитель, Заказчик) — текущий LLM-промпт их явно исключает.

3. Одна сущность → разные замены

email,info@nubes.ru,ypiorej@company.local   ← файл 1
email,info@nubes.ru,qifdckke@org.example.ru ← файл 2

Текущий TwoPassObfuscator гарантирует глобальную согласованность. Старый код обрабатывал файлы по одному — отсюда расхождения.

4. Реалистичные замены невозможны из _next_token()

TYPE_POOLS = {
    "phone": (["+7_000_000"], "phone"),  # → "+7_000_000_0001"
    "email": (["email"], "email"),        # → "email_0001"
}

+7 (495) 906-87-80 или ypiorej@company.local физически не могут выйти из этих пулов.


Ответ на главный вопрос

Кто и где генерирует замены в обход _next_token()?

Никто в текущем коде. Это артефакты старого кода (версии до v3). Текущий _next_token() написан позже.


Что реально нужно проверить

Вопрос Как проверить
Работает ли текущий код? Прогнать оригиналы через v0.0.12, посмотреть mapping.csv
Regex ловит все сущности? Проверить config.py паттерны на примерах из TMP
Адрес 115404, г. Москва... — почему не заменён? ENTITY_PATTERNS не содержит тип address
ООО "НУБЕС" в тексте не заменён? Возможно кавычки — regex матчит «» но не ""

Итог

Ложное противоречие — сравнивались TMP-файлы (старый код) с текущим scanner.py. Нужно прогнать текущий код на тех же документах и посмотреть результат.