При наличии некоторой информации сделать это оказалось до смешного просто, несмотря на то, что я потратил на свой online unwrap уйму времени.
Для начала оговорюсь, что речь идет про Oracle 10-12 версии, т.е., в соответствии с этой темой, в начале кода должно быть
SQL код:
a000000
например
SQL код:
CREATE OR REPLACE FUNCTION SomeFunc wrapped
a000000
ab
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
8
1a2 12c
Sh+9JFcaiH9SAzc5qQFSernIHO0wgwHIAMvWfHQCmPFekSaibNtEdebgxQw6NfSIfaN/fPXe
vp2rEQ4m/PpCkpt+nUhL8VCTHFl1bwAki0M9JMH420KT50MU8AC4oHph5jyJiRgDZj2ea5Lp
...............
можете не пытаться декодировать приведенное выше, это мусор для примера. Можете вытащить любой требуемый код с помощью этого.
Далее, спускаемся до строки 1a2 12c. В простейшем случае берем второе число 12с, что в переводе в 10-ю систему счисления равно 300 и является длиной строки, которую необходимо взять для декодирования. Обратите внимание, что это длина строки с учетом переносов строк, которых в декодируемой строке быть не должно, а всем строкам необходимо делать trim! Я чуть не сдался, пока нашел эту гадость. Алгоритм простой, берем следующую за "1a2 12c" строку, если ее длина меньше 300 (в нашем случае), то добавляем к ней следующую за ней строку и т.д., пока не получим требуемую длину строки, не забывая, что каждая добавляемая строка у нас длиннее на один символ переноса строки.
В итоге получается длинная строка, очевидно, что зашифрованная в Base64. Соответственно, надо ее декодировать обратно Base64->UTF-8.
Получается достаточно интересный мусор, который мы усечем до 20го символа, отсекая информацию SHA-1, и получаем строку, которую надо перекодировать в соответствии с таблицей подстановки, заменяя одни символы на символы в таблице. Я ее нашел в открытом доступе, соответственно, ничто не помешает это же сделать и вам.
После этого остается распаковать строку через ZIP (я воспользовался обычным zlib_decompress) и вуа-ля, получили чистый исходный код.
При декодировании использовался интереснейший и, к сожалению, заброшенный .