
Кодируй. Декодируй. Идентифицируй. Умное декодирование для любых данных.
Кодируй. Декодируй. Идентифицируй. Умное декодирование любых данных.
Предрелиз, но уже пригоден к использованию. Рабочая среда запускается, движок обнаружения раскрывает многослойные полезные нагрузки, а отчёт об анализе завершён.
Впереди ещё: аудит доступности и проход по интернационализации. Дизассемблер и движок OCR намеренно вне области охвата — это отдельные проекты, а не операции.
Обычная модель для подобного инструмента предполагает, что вы уже знаете, что представляют собой ваши данные: вы выбираете операции, связываете их в цепочку, итерируете. Это нормально, когда вы узнаёте формат с первого взгляда, и бесполезно, когда нет — а это происходит в большинстве случаев, когда аналитик смотрит на что-то новое.
DecodeBox начинает с другого конца. Вы вставляете данные, а он определяет, что держит в руках: каждый слой раскрыт, каждый индикатор извлечён, каждая находка по безопасности объяснена, причём доказательства каждого утверждения видны, а не просто заявлены.
Всё работает в вашем браузере. Ни входные данные, ни рецепт, ни файл никогда не покидают вашу машину — отправлять их некуда, сервера нет.
Реальная полезная нагрузка из набора тестов: Base64 поверх Base64 поверх gzip поверх JSON, с загрузчиком PowerShell в одном из полей.
Findings 4 Indicators 7 Layers 8 257 ms
CRITICAL Cloud or service credential CWE-798
Input → Base64 → Base64 → gzip
AKIAIOSFODNN7EXAMPLE
CRITICAL PowerShell download-and-execute CWE-94
Input → Base64 → Base64 → gzip → JSON → Base64 → UTF-16LE
IEX (New-Object Net.WebClient).DownloadString
Вторая находка находится на шесть слоёв глубже, а последний переход пришёл из Base64-блоба внутри одного поля JSON. Ничто из того, что выполняет grep по исходному блобу, его не видит, и ничто из того, что разворачивает одну линейную цепочку, до него не добирается.
Base64 → Base64 → MD5), на остатке, который невозможно декодировать, например
на подписи JWT, или на честном признании, что достигнут предел и под ним может быть что-то ещё.Когда ни одно из объявленных объяснений не покрывает входные данные, DecodeBox перебирает каждый однобайтовый XOR-ключ и каждый сдвиг и оценивает каждый результат на читаемость — с уровнем уверенности, который прямо говорит, что это был поиск, а не совпадение.
DecodeBox по своей конструкции обрабатывает недоверенные, намеренно искажённые входные данные.
connect-src 'none'
и script-src 'self' плюс хеш для единственного встроенного скрипта. Шрифты встроены, а не
загружаются, и сборка падает, если в выводе когда-либо появится ссылка на CDN.eval, new Function и любой путь, который рендерит входные данные
как HTML, запрещены правилами линтера, а не соглашением.style-src действительно допускает 'unsafe-inline', потому что React пишет встроенные атрибуты
style; script-src, где кроется реальный риск, остаётся строгим. Чтобы сообщить об уязвимости, см.
SECURITY.md — пожалуйста, не открывайте публичный issue для отчётов о безопасности.
DecodeBox/
├── .github/workflows/ # CI, CodeQL, SBOM, markdown quality, Pages deployment
├── public/ # Bundled fonts, favicon, CNAME
├── src/
│ ├── engine/ # The analysis engine — the only half that knows about data
│ │ ├── index.ts # THE SEAM — the only module the interface imports from
│ │ ├── operations/ # One self-contained module per transformation
│ │ ├── detection/ # Entropy, charset, magic bytes, structural validity
│ │ ├── analysis/ # Recursive exploration, indicators, security findings
│ │ ├── ctf/ # Flag search, cipher key recovery, ranked hints
│ │ ├── core/ # Recipe executor, byte handling, ciphers, codecs
│ │ └── worker/ # The engine off the main thread, past a size threshold
│ ├── components/ # The interface: workspace, report, CTF mode
│ ├── store/ # One zustand store
│ ├── hooks/ # Interaction logic shared across components
│ ├── lib/ # Share links, saved recipes, recipe text format
│ ├── i18n/ # Every user-facing string
│ └── styles/ # Design tokens and themes
├── SECURITY.md
└── LICENSE
Интерфейс обращается к движку через один узкий фасад, предоставляющий семь функций —
listOperations, bake, detect, autoDecode, identify, analyse и hints. Обе половины
можно разрабатывать, тестировать и заменять независимо; рабочее пространство однажды было
пересобрано с нуля без единого изменения в движке. Добавление операции никогда не должно
требовать изменения UI.