Добрый вечер, товарищи! Есть crypto-js.min.js, вызываемый из обфусцированного Javascript файла, все это на сайте. Расшифровка чрезвычайно трудна (там что-то отдаленно напоминающее Brainfuck и отсутствие eval) потому решил пойти другим путем и подменил путь к CryptoJS на свой. Основная задача - достать ключ и прочие данные, необходимые для расшифровки некоторых данных. Для этого в crypto-js.min.js в блоке кода CryptoJS.lib.Cipher непосредственно после Code: _createHelper: (function () { нашел объявление функции decrypt и в нее добавил вывод всего что мне нужно в лог. Функция стала выглядеть следующим образом: Code: decrypt: function (ciphertext, key, cfg) { fucklog("decrypt: key=" + key + "\ncfg="+vardump(cfg)+"\n\nmsg="+ciphertext); var x=selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg); fucklog("decrypted: " + x); return x; } Подскажите, пожалуйста, как достать имя самого алгоритма шифрования в этом месте? Т.е. скажем в обфусцированном файле вызывается CryptoJS.AES.decrypt() с параметрами, параметры я отлавливаю без проблем, а как понять AES там или 3DES например? Есть там объект-переменная cipher, но пройдясь по его полям я ничего такого не обнаружил. Спасибо.
Попробуй внутри функции посмотреть на this.constructor или заюзай http://www.eriwen.com/javascript/js-stack-trace/
this.constructor в этом месте выдает тип объекта function и значение Code: function Object() { [native code] } Версия файла отсюда либо очень похож на него. Но идея хорошая, вот этот вариант Code: var err = new Error(); fucklog("STACK2: "+err.stack); кое-что выдал включая 1 имя брейнфаковской функции, которой не было в сохраненном исходнике, а значит там либо 2 уровня шифрования исходника либо это полиморфный js. Но в принципе уже понял куда копать - нужно еще похукать функции генерации ключа из пароля типа PBKDF2()