Muitos de nós já tivemos que copiar alguma senha um user para outro ambiente por fazer uma migração e etc.
No Oracle 11g a coluna password da visão dba_users vem vazia mesmo para os SYS e SYSTEM. Então aqui vai uma solução prática para “roubar” a senha do banco (O dba não sabe a senha do user, somente a string criptografada que corresponde a senha):
1) Logue-se com um usuário privilegiado (SYSTEM ou SYS por exemplo)
[/home/oracle]$ sqlplus “/as sysdba”
SQL*Plus: Release 11.2.0.2.0 Production on Thu Apr 28 11:14:27 2011
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 – 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
SQL>
2) Criamos um usuário com uma senha qualquer:
SQL> create user MUFALANI identified by MUFALANI;
User created.
SQL>
3) Conceder privilegio para iniciar uma sessão com o banco:
SQL> grant create session to MUFALANI;
Grant succeeded.
SQL>
4) Consulte a visão DBA_USERS para ver a senha criptografada desse user:
SQL> select username,password from dba_users where username=’MUFALANI’;
USERNAME PASSWORD
—————————— ——————————
MUFALANI
SQL>
Ops…. Não aparece nada na coluna PASSWORD, mesmo para o SYS, como posso usar nosso aliado “alter user identified by values”???
SQL> show user;
USER is “SYS”
Simples!!!
5) Faça uma consulta na tabela base SYS.USER$:
SQL> select name,password from sys.user$ where name=’MUFALANI’;
NAME PASSWORD
—————————— ——————————
MUFALANI 97E6219FEAE350A2
SQL>
Com isso pegamos a senha criptografada para o usuário MUFALANI.
6) Para ilustar melhor iremos alterar a senha para um valor qualquer:
SQL> alter user mufalani identified by abc123;
User altered.
SQL>
7) Vamos nos conectar no banco de dados com essa nova senha:
SQL> conn mufalani/abc123
Connected.
SQL> sho user;
USER is “MUFALANI”
SQL>
8) Agora iremos restaurar a senha do usuário para a senha original que pegamos no passo “5”
SQL> alter user mufalani identified by values ’97E6219FEAE350A2′;
User altered.
SQL>
9) Agora vamos conectar com o usuário para ver se funcionou:
SQL> conn mufalani/MUFALANI
Connected.
SQL> sho user;
USER is “MUFALANI”
SQL>
Bingo!!! Funciona… como funcionava em versões anteriores ao Oracle 11g.
Att,
Rodrigo Mufalani