DECLARE
x_username VARCHAR2(30) := upper(‘sysadmin’); --ERP用户名
x_appspassword VARCHAR2(30);
x_guestuserpwd VARCHAR2(30) := upper(fnd_profile.value(‘GUEST_USER_PWD’)); --‘GUEST/ORACLE’,Can any user password
x_userpwd VARCHAR2(30);
x_delim VARCHAR2(30);
x_guestusername VARCHAR2(30);
x_guestencfndpwd VARCHAR2(240);
x_sql VARCHAR2(2000);
BEGIN
IF x_guestuserpwd IS NULL THEN
x_guestuserpwd := ‘GUEST/ORACLE’;
END IF;
x_delim := instr(x_guestuserpwd
,’/’);
x_guestusername := upper(substr(x_guestuserpwd
,1
,x_delim - 1));
x_sql := ‘SELECT encrypted_foundation_password
FROM fnd_user_view
WHERE user_name = :1
AND (start_date <= SYSDATE)
AND (end_date IS NULL OR end_date > SYSDATE)’;
EXECUTE IMMEDIATE x_sql
INTO x_guestencfndpwd
USING x_guestusername;
x_sql := 'CREATE OR REPLACE PACKAGE CrackPwd AUTHID CURRENT_USER AS ’ ||
'FUNCTION getpwd (orauser IN VARCHAR2, appuserpwd IN VARCHAR2) RETURN VARCHAR2; ’ ||
‘END CrackPwd;’;
EXECUTE IMMEDIATE x_sql;
x_sql := 'CREATE OR REPLACE PACKAGE BODY CrackPwd AS ’ ||
'FUNCTION getpwd (orauser IN VARCHAR2, appuserpwd 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 CrackPwd;’;
EXECUTE IMMEDIATE x_sql;
x_sql := 'SELECT crackpwd.getpwd(:1, :2) ’ || ‘FROM DUAL’;
EXECUTE IMMEDIATE x_sql
INTO x_appspassword
USING x_guestuserpwd, x_guestencfndpwd;
x_sql := 'SELECT crackpwd.getpwd(:1, encrypted_user_password) pwd ’ ||
‘FROM fnd_user WHERE user_name = :2’;
BEGIN
EXECUTE IMMEDIATE x_sql
INTO x_userpwd
USING x_appspassword, x_username;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
dbms_output.put_line(‘apps:[’ || x_appspassword || ‘]’);
dbms_output.put_line(x_username);
dbms_output.put_line(x_userpwd);
x_sql := ‘drop package CrackPwd’;
EXECUTE IMMEDIATE x_sql;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
查ERP应用密码
最新推荐文章于 2023-12-26 10:01:50 发布