Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Oracle

Как декодировать зашифрованный через wrap код PL/SQL Oracle : Oracle

22.11.2024 12:20


05.01.2016 12:37
При наличии некоторой информации сделать это оказалось до смешного просто, несмотря на то, что я потратил на свой 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) и вуа-ля, получили чистый исходный код.

При декодировании использовался интереснейший и, к сожалению, заброшенный .
Часовой пояс GMT +3, время: 12:20.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.