Wrap et Unwrap de code PL/SQL

Wrapper un code PL/SQL (procédure, fonction ou package) contenu dans un fichier nommé greg.sql est simple. Cela nécessite d’utiliser la commande wrap comme décrit dans la documentation et illustré ci-dessous ;

wrap iname=greg.sql oname=greg.pls

Si vous pensez que cette méthode peut contribuer à sécuriser votre application, jetez un oeil sur le site http://www.codecrete.net/UnwrapIt/, Copyright ©2011 Manuel Bleichenbacher.

Voici un exemple d’utilisation du site avec curl et sed :

cat greg.sql 

create or replace procedure greg is
begin
dbms_output.put_line('Hello Slacker');
end;
/


wrap iname=greg.sql oname=greg.pls

PL/SQL Wrapper: Release 11.2.0.2.0- Production on Thu Jul 14 19:49:31 2011

Copyright (c) 1993, 2009, Oracle. All rights reserved.

Processing greg.sql to greg.pls


cat greg.pls

create or replace procedure greg wrapped
a000000
1
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
47 85
+eZAzTft5XUNvshjJ3doThsaFyQwg5nnm7+fMr2ywFxalvIu6qV0i8DAMv7ShglpabhSm7JK
/iiyveeysx0GMCyuJOqyMtB3bm7PAo9u212Kd2YyLvbR6iQf9jmms6q2/g==

/


MYFILE=greg.plb

curl -s -F "file=@${MYFILE}"
-F "ShowLineNumbers=false"
-F "UnwrapFile=Unwrap File"
http://www.codecrete.net/UnwrapIt/ |
sed '0,/pre class/d' | sed '/pre>/,$d' | tee ${MYFILE}.unwrapped


PROCEDURE greg IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello Slacker');
END;

Mettez un peu de contenu et vous verrez ! C’est juste impressionnant…

5 réflexions sur “Wrap et Unwrap de code PL/SQL”

  1. Article très intéressant, juste une question au passage : pourquoi ça ne marche pas avec dbms_stat ? je tente le unwrap mais ça ne marche pas. Si tu as une explication je suis preneur et merci d’avance.

  2. On voit ça souvent chez les éditeurs de progiciels qui à juste titre ne veulent pas que leurs clients puissent accéder au code PL/SQL du produit.

  3. Excellent !!!
    Je devais faire un petit mémo sur l’existence du binaire Wrap…et bien je crois que je ne vais plus le faire 🙂

Les commentaires sont fermés.