Desenvolvi uma rotina que extraí os códigos customizados do Synchro separando-os em arquivos texto, a rotina encontra-se em http://www.adrive.com/public/d76aa68237bf8dabc1567b9d9295443ec4204a47e0a349bdd4fce8cb45d7b65a.html
terça-feira, 8 de fevereiro de 2011
Criptografia com Wrapper
Olá!
Hoje em dia, para proteger o código fonte e enviar à terceiros ou executar os códigos em outras empresas, usa-se os recursos de criptografia para proteger o código fonte, no Oracle, podemos encontrar esse recurso em um aplicativo externo ao banco de dados, chamado Wripper.
O Wrapper não é um pacote ou serviço do banco de dados Oracle, ele poderá ser encontrado nos servidores Windows, dentro da pasta Oracle Home\Bin e seu executavel é o Wrap.exe, é um aplicativo executado em MS-DOS. Por isso não se assuste, por que ele é mais simples do que pensamos.
As vantagens de utilizar o Wrapper são muitas:
- Segurança nos Códigos PL/SQL;
- Os processos de Import/Export normais aceitam as rotinas geradas pelo Wrapper;
- Referências das variáveis Bind são carregadas ao tempo de carga;
- Apenas os servidores Oracle são capazes de descriptografar essas rotinas, dando exclusividade ao código.
Porém, o Wrapper traz algumas desvatagens na utilização do desenvolvimento, deixando ele de fora dos projetos, pois ele não consegue trabalhar com o bloco de PL/SQL por completo, englobando todas as funções da linguagem, apenas com alguns comandos específicos:
- Create Procedure;
- Create Functions;
- Create Package;
- Create Package body.
Os demais comandos em PL/SQL são ignorados pelo aplicativo, tais como:
- Create Index;
- Create View;
- Create Type;
- Create Database Link e etc.
Por outro lado, um ponto interessante é o modo que ele trata os comentários de código, REM ou --, porque onde à essas instruções na fonte de dados, o compilador de criptografia os remove, a não ser que o desenvolvedor os inclua dentro da parte de especificações do código a ser gerado.
O modo de gerarmos códigos criptografados com Wrapper é muito simples, basta abrirmos o MS-DOS e dentro das pastas dos arquivos fontes, executar a linha de comando abaixo:
wrap iname=ra_ex.sql oname=ra_ex_s.plb
Na linha de comando, percebemos a utilização de apenas dois parâmetros, um de entrada e outro de saída dos arquivos. No parâmentro de entrada, o INAME (INPUT NAME = Nome de Entrada) é onde iremos dizer qual arquivo será criptografado, sempre com extensão .SQL, e o parâmetro de saída o ONAME (OUTPUT NAME = Nome de saída) é onde vamos dizer qual é o nome do arquivo que será gerado com extensão .PLB, esse será o resultado final, o código criptografado, caso não colocamos essa especificação, e executarmos o aplicativo, será gerado um arquivo .PLB com o mesmo nome do arquivo de entrada, essa função é padrão do Wrapper.
Para fixar os processos de criptografia do Wrapper, vamos fazer um exemplo em SQL e abrir o código gerado em PLB.
Arquivo ra_ex.sql
CREATE OR REPLACE FUNCTION FUNCIONARIO (CARGOFUNC IN VARCHAR2) IS
CURSOR C1 IS SELECT NOMEFUNC FROM EMPREGADOS WHERE CARGO = CARGOFUNC;
NOME VARCHAR2(100);
CONTADOR NUMBER(10) := 1;
BEGIN
DBMS_OUTPUT.ENABLE(1000);
FOR R1 IN C1 LOOP
DBMS_OUTPUT.PUT_LINE ('NUMERO DE FUNCIONARIOS : ' || TO_CHAR(CONTADOR));
CONTADOR = CONTADOR + 1;
END LOOP;
DBMS_OUTPUT.PUT_LINE ('TOTAL DE FUNCIONARIOS NESSE CARGO :' || TO_CHAR(CONTADOR));
REM CREDITOS DO EXEMPLO
DBMS_OUTPUT.PUT_LINE ('EXEMPLO POR RODRIGO ALMEIDA - www.usinabrasil.com.br')
RETURN CONTADOR;
END FUNCIONARIO;
Após passar pelo Wrapper, o código será exibido assim:
Arquivo ra_ex_s.plb
CREATE OR REPLACE FUNCTION FUNCIONARIO WRAPPED
ABCD
ABCD
0
------------------------------------
1ENABLE:
1PUT_LINE:
0
21
0
7D 45 AM 3E 95 GY 4H
BD 3W 1Q C9 F8 AG GF
0G VQ A7 32 S9 6J 1L
A1 X5 J7 51 S8 U7 ZA
1W 46 ID Z9 PA QN 4I
QV BT 6S 3K N6 DS Q7
12 J3 SY CQ ZP SE TT
6H M0 LS XW VH TK D6
Em um modo geral o código fonte do arquivo PLB será sempre maior que o SQL, porém com um criptografia em seus dados de saída.
Com a utilização dos métodos de criptografia com o Wrapper, a troca de códigos em PL/SQL entre empresas fica mais seguro e garante os créditos de desenvolvimento do script para o programador de origem. Ajundando a todos.
Espero que tenham gostado e até a próxima.
Fonte: http://www.linhadecodigo.com.br/artigo/469/Criptografia-com-Wrapper.aspx
SAP acessando banco de dados externo
- Using transaction SE11, create a table (ZTABLE) with the same fields as the table in the external database, make sure that the type and lengths of the fields are identical.
- Using transaction SE11, create a view (ZTABLE_VIEW, projection view) using BASIS table ZTABLE
- Using SVRMGRL> (it's not a transaction.. it's a Oracle Utility)
create dblink REMOTE_DB as connect to remote_user identified by password; (database link created)
drop table ZTABLE; (table dropped)
create synonym ZTABLE for ZTABLE@REMOTE_DB; (synonym created)
- Using transaction SE16 , type in ZTABLE_VIEW and hit RETURN
- Enter value in key fields and hit execute. (displays rows from the remote table)
Fonte: http://www.saptechies.com/how-to-access-an-external-database-from-abap-via-dblink-oracle/