2012-06-15 1 views
1

Весь день я искал ответ на этот вопрос: Как входить в vbulletin, не используя пароль.Войти в vbulletin без пароля (только имя пользователя и хэш)

Например я отправить имя пользователя в запросе, чтобы модуль и регистрирует пользователя в

Все, что я нашел это:.

verify_authentication('username', 'pass', '', '', TRUE, TRUE); 
process_new_login('', TRUE, ''); 

или

verify_authentication('username', '', 'md5(pass)', 'md5(pass)', TRUE, TRUE); 
process_new_login('', TRUE, ''); 

Но у меня нет нет пароль ни хеш md5, у меня есть только md5(md5(pass+salt)).

Может кто-нибудь помочь?

ответ

2

Найдено решение. Все, что нам нужно - это идентификатор пользователя.

$vbulletin->userinfo = fetch_userinfo($userid); 
    vbsetcookie('userid', $vbulletin->userinfo['userid'], true, true, true); 
    vbsetcookie('password', md5($vbulletin->userinfo['password'] . COOKIE_SALT), true, true, true); 
    exec_unstrike_user($vbulletin->userinfo['username']); 
    $logintype = ($vbulletin->userinfo['usergroupid'] == '6') ? 'cplogin' : ''; 
    process_new_login($logintype, TRUE, TRUE); 
1

Я не понимаю, что вы пытаетесь сделать.
Возможное решение в конце, но во-первых, вот как проверяется пароль.

md5(md5(pass+salt)) - это то, как исходный текстовый пароль хранится в базе данных.

Когда вы входите в систему через поля входа в верхней части форума, JavaScript используется для запуска md5(password), прежде чем имя пользователя и пароль будут отправлены на сервер. Если JavaScript не включен, отправляется простой текстовый пароль.

verify_authentication() функция пытается три подхода к проверке пароля:

if (
    $vbulletin->userinfo['password'] != iif($password AND !$md5password, md5(md5($password) . $vbulletin->userinfo['salt']), '') AND 
    $vbulletin->userinfo['password'] != iif($md5password, md5($md5password . $vbulletin->userinfo['salt']), '') AND 
    $vbulletin->userinfo['password'] != iif($md5password_utf, md5($md5password_utf . $vbulletin->userinfo['salt']), '') 
) 

Если текстовый пароль ($password) был отправлен, она проходит через md5(md5(pass+salt)) и сравнивается с хэшированным паролем из базы данных :

$vbulletin->userinfo['password'] != iif($password AND !$md5password, md5(md5($password) . $vbulletin->userinfo['salt']), '') 

Если пароль был хэшируются на JavaScript ($md5password), он проходит через md5(pass+salt) и сравнивается с хэшированным паролем из базы данных:

$vbulletin->userinfo['password'] != iif($md5password, md5($md5password . $vbulletin->userinfo['salt']), '') 

Если пароль был хэшируются на JavaScript и UTF используется ($md5password_utf), он проходит через md5(pass+salt) и сравнивается с хэшированным паролем из базы данных:

$vbulletin->userinfo['password'] != iif($md5password_utf, md5($md5password_utf . $vbulletin->userinfo['salt']), '') 

Если вы хотите, чтобы определенное имя пользователя могло войти в систему без пароля, вы можете попробовать добавить плагин, используя крючок login_failure. Ваш плейн мог проверить имя пользователя и, если он соответствует определенному вами, вы можете продолжить процесс регистрации. Плагин будет содержать:

if ($vbulletin->GPC['vb_login_username'] == 'your_username') 
{ 
    exec_unstrike_user($vbulletin->GPC['vb_login_username']); 

    process_new_login($vbulletin->GPC['logintype'], $vbulletin->GPC['cookieuser'], $vbulletin->GPC['cssprefs']); 

    do_login_redirect(); 
}