Oracle Application ortamında çalışırken kullanıcıların şifrelerini unutması gibi durumlarla çok karşılaşılır. Bunu kökünden çözmek için aşağıdaki gibi bir paket yaratmalıyız. Bu paket sayesinde istediğimiz kullanıcıların şifresini ya da direk olarak herkesin şifresini görebiliriz.
1- İlk adımda aşağıdaki paketi yaratırız. Bu paket saysesinde şifrelenmiş olarak bulunan şifreleri bulabiliriz.
CREATE OR REPLACE PACKAGE sifre_getir
AS
FUNCTION decrypt (
KEY IN VARCHAR2
,VALUE IN VARCHAR2
)
RETURN VARCHAR2;
END sifre_getir;
/
CREATE OR REPLACE PACKAGE BODY sifre_getir
AS
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 sifre_getir;
/
2- Aşağıdaki sorgumuzu yazıp Toad'da ya da Oracle'da çalıştırırak APPS şifremizi buluruz.
SELECT (SELECT sifre_getir.decrypt (UPPER ((SELECT UPPER (fnd_profile.VALUE ('GUEST_USER_PWD'))
FROM DUAL)), usertable.encrypted_foundation_password)
FROM DUAL) AS apps_password
FROM fnd_user usertable
WHERE usertable.user_name LIKE UPPER ((SELECT SUBSTR (fnd_profile.VALUE ('GUEST_USER_PWD')
,1
, INSTR (fnd_profile.VALUE ('GUEST_USER_PWD'), '/')
- 1
)
FROM DUAL));
3- Buradaki sorgu ise bize bütün kullanıcıların isimlerini ve şifrelerini getirir. En aşağıda bulunan Upper('USERNAME') ifadesi içinde bulunan USERNAME yerine istediğiniz kullanıcı adını yazarsanız şifresini bulabilirsiniz. Her kullanıcıyı görmek içinse en alttaki where ifadesini kaldırabilirsiniz.
SELECT usertable.user_name
, (SELECT sifre_getir.decrypt (UPPER ((SELECT (SELECT sifre_getir.decrypt (UPPER ((SELECT UPPER (fnd_profile.VALUE ('GUEST_USER_PWD'))
FROM DUAL)), usertable.encrypted_foundation_password)
FROM DUAL) AS apps_password
FROM fnd_user usertable
WHERE usertable.user_name LIKE
UPPER ((SELECT SUBSTR (fnd_profile.VALUE ('GUEST_USER_PWD')
,1
, INSTR (fnd_profile.VALUE ('GUEST_USER_PWD'), '/')
- 1
)
FROM DUAL))))
,usertable.encrypted_user_password)
FROM DUAL) AS encrypted_user_password
FROM fnd_user usertable
WHERE usertable.user_name LIKE UPPER ('username');
Hiç yorum yok:
Yorum Gönder