Как конвертировать текст в хэш phpbb? - PullRequest
4 голосов
/ 13 марта 2011

Я пытаюсь преобразовать тестовый пароль (testing4) в хэш phpbb3. Это код, который я пробовал:

<?php
/** 
*
* @package phpBB3
* @version $Id: v3_dbal.xml 44 2007-07-25 11:06:55Z smithy_dll $
* @copyright (c) 2005 phpBB Group 
* @license http://opensource.org/licenses/gpl-license.php GNU Public License 
*
*/

/**
* @ignore
*/
define('IN_PHPBB', true);
include ("functions_phpbb.php");

$data['new_password'] = "testing4";

$user_row = array(
    'user_password' => phpbb_hash($data['new_password'])
    );

$hash = $user_row['user_password'];

echo $hash;
?>

и это тоже не работает:

$pass = "testing4";
$hash = phpbb_hash($pass);

Оба раза я получаю следующее сообщение об ошибке:

Fatal error: Call to a member function sql_escape() on a non-object in /home/a8544020/public_html/Pass/functions_phpbb.php on line 149

Я пробовал это на 2 разных хостах без удачи. Иначе есть ли онлайн-сервис, который просто конвертирует текст в хеш?

Заранее спасибо

Ответы [ 3 ]

5 голосов
/ 13 марта 2011

Я предполагаю, что ваш functions_phpbb.php файл является копией includes/functions.php файла пакета phpBB3.

Теперь причина того, что вы получаете эту ошибку, заключается в том, что функция phpbb_hash использует функцию phpBB unique_id для энтропии, которая зависит от соединения с базой данных (для изменения и сохранения энтропии при каждом запросе).

Есть два способа это исправить.

a) включает phpBB common.php, который загрузит ваш код для phpBB (включая соединение с БД, обработчики ошибок и т. Д.).

b) phpBB3 использует phpass для хеширования. Я предлагаю вам просто загрузить автономный пакет phpass и использовать его для генерации хэша.

Небольшое предостережение: phpBB3 меняет идентификатор хеша с '$ P $' на '$ H $' (не спрашивайте меня, почему), поэтому вам придется изменить эту строку:

$output = '$P$';

до:

$output = '$H$';

Поскольку опция a) добавляет довольно много служебной информации, и вы, вероятно, хотите использовать только функции хеширования, я бы предложил вариант b).

0 голосов
/ 26 мая 2012

Может быть, другой путь. Я использовал библиотеку из: http://www.openwall.com/phpass/ Чтобы она работала, вы должны изменить первые 3 символа сгенерированного HASH:

$P$

до

$H$

используется в phpbb

0 голосов
/ 13 марта 2011

Интересно, почему они запускают хэш пароля через функцию экранирования SQL ... но вы можете просто попытаться определить эту функцию как фиктивную:

function sql_escape($str) { return $str; }
...