XenForo không dùng mã hoá MD5 mà dùng 2 loại thay đổi nhau là sha256 và sha1 Giả sử chúng ta dùng phpmyadmin export table xf_user_authenticate, column số 1 và lúc chọn export phải bỏ check "Use hexadecimal for binary fields" Ta có nội dung sau : Mã: INSERT INTO `xf_user_authenticate` VALUES (1, 'XenForo_Authentication_Core', 'a:3:{s:4:"hash";s:64:"7a8ac07ad66037cfaaec82279853fc9012d694507dcc6bd508abae7f0cec8904";s:4:"salt";s:64:"12346599240de8a18acae1620c48ce8b251cbe409d37906a8b7e1eff546ed2f4";s:8:"hashFunc";s:6:"sha256";}', 'c6b80f8aa640b8a22088b4146e3115ff1b1edff9'); Như vậy ta thấy nội dung của Authentication là 1 chuỗi array đã được serialize Mã: a:3:{s:4:"hash";s:64:"7a8ac07ad66037cfaaec82279853fc9012d694507dcc6bd508abae7f0cec8904";s:4:"salt";s:64:"12346599240de8a18acae1620c48ce8b251cbe409d37906a8b7e1eff546ed2f4";s:8:"hashFunc";s:6:"sha256";} Nếu ta unserialize nó sẽ có: Mã: Array ( [hash] => 7a8ac07ad66037cfaaec82279853fc9012d694507dcc6bd508abae7f0cec8904 [salt] => 12346599240de8a18acae1620c48ce8b251cbe409d37906a8b7e1eff546ed2f4 [hashFunc] => sha256 ) Password đặt cho user số 1 này là 1. Chúng ta dùng function sau để kiểm tra mật khẩu: Mã: function authenticate_pass( $password, $serialized_pass ) { $pass_array = unserialize( $serialized_pass ); switch( $pass_array['hashFunc'] ) { case 'sha256': return ( $pass_array['hash'] == hash( 'sha256', hash( 'sha256', $password ) . $pass_array['salt'] ) ); case 'sha1': return ( $pass_array['hash'] == sha1( sha1( $password ) . $pass_array['salt'] ) ); } } Chạy thử script PHP: Mã: <? function authenticate_pass( $password, $serialized_pass ) { $pass_array = unserialize( $serialized_pass ); switch( $pass_array['hashFunc'] ) { case 'sha256': return ( $pass_array['hash'] == hash( 'sha256', hash( 'sha256', $password ) . $pass_array['salt'] ) ); case 'sha1': return ( $pass_array['hash'] == sha1( sha1( $password ) . $pass_array['salt'] ) ); } } $serialized_pass ='a:3:{s:4:"hash";s:64:"7a8ac07ad66037cfaaec82279853fc9012d694507dcc6bd508abae7f0cec8904";s:4:"salt";s:64:"12346599240de8a18acae1620c48ce8b251cbe409d37906a8b7e1eff546ed2f4";s:8:"hashFunc";s:6:"sha256";}'; $check = authenticate_pass( '1',$serialized_pass ); if($check) echo 'true'; else echo 'false'; ?> Kết quả trả về sẽ là True. Như vậy thì nó sẽ mã hóa dựa vào hashFunc trong array pass là sha246 hay sha1. Sha56 : [hash] => 7a8ac07ad66037cfaaec82279853fc9012d694507dcc6bd508abae7f0cec8904 [salt] => 12346599240de8a18acae1620c48ce8b251cbe409d37906a8b7e1eff546ed2f4 [hashFunc] => sha256 Mã: hash( 'sha256', hash( 'sha256', '1' ) .'12346599240de8a18acae1620c48ce8b251cbe409d37906a8b7e1eff546ed2f4'); Hash trên ra đúng 7a8ac07ad66037cfaaec82279853fc9012d694507dcc6bd508abae7f0cec8904 vì hash vừa tạo ra bằng hash đã có sẵn nên TRUE. Sha1 thì cũng tương tự như trên. Theo MIF
mất pass thì forget pass là xong. nó gửi mail tới. ko nhớ mail ji thì vào phpmyadmin sửa lại email . xong . còn ko làm được 2 việc trên thì bỏ té là xong .
có phải vd : khi pass là 123456789 mã hoá thành dwhagrajkfasga khi login dùng pass 123456789 hệ thống vẫn cho login nhưng khi bị keylog thì thg carcked nhận dc dwhagrajkfasga phải ko bác ?
không phải đâu bạn khi bạn truy cập các table user trong phpmyadmin sẽ có một trường ký tự lằng nhằng đó là pass bị mã hóa, ở vbb thì mã hóa md5 còn xen thì mã hóa như chủ thớt nói
VBB ko đơn thuần md5 là còn chèn cả salt nữa Mất pass admin mà đúng lúc mail forget pass ko hoạt động thì sao bạn ? Cách đơn giản nhất là reg 1 user mới, nhớ lấy pass, rồi vô phpmyadmin, table xf_user tìm user mới reg = tên or email gì đó, tìm is_admin, chèn số 1, is_mod, chèn số 1, xong, lấy user mới vô adcp change lại pass admin
Chỉ cần bạn vô đc phpmyadmin thì chẳng cần nhờ ai cả, cách làm tớ nêu phía trên. host ko có phpad thì down về rùi up lên mà xài
Mình thử insert pass vào bảng xf_user_authenticate rồi tạo username, id trong bảng xf_user nhưng ko login vào diễn đàn dc. code của mình: MÌnh đang dùng xenforo 1.1.5