2014-09-25, 12:04 PM
بالنسبه للاكواد التي تثبت مقصدي واللي علي اساسها وضعت لك هذا التحليل
اولا عمليه سحب المعلومات من جدول اعضاء الفي بي
بعد ما قام بسحب المعلومات يذهب ليسجل كل حقل من الفي بي الي الحقل المشابه له في الماي بي بي ( لاحظ الخطوه دي )
دي المعلومات اللي سحبها ووضعها بمصفوفه ليتم سحب المطلوب واللي يهمني هنا ان نري انه اضاف ثلاث حقول كما قلت وهما
اخذ محتوي حقل الباسورد من الفي بي ووضعه داخل حقل passwordconvert واخذ محتوي حقل salt ووضعه في حقل passwordconvertsalt
والحقل الثالث اضع كلمه ثابته لكي يعلم علي اسكربت سوف يتم التحويل
ونري ايضا انه لم يقم بتسجيل شي في حقل password + salt وتركهم فارغين لحين التحويل ثم حيعيد تعبئتهم
نري طريقة التحويل : ( هناك بعض الاكواد خاصه بالتأكد من وجود محتوي وعدم وجود اخطاء وما الي ذلك فلم اذكره فقط حذكر المفيد لكي تضح لك الفكره )
هنا قام بعمل salt عشوائي من خلال الداله اللي ذكرنها من قبل بالموضوع والموقع الرسمي وبالنسبه للباس قام بتحديثه هنا ووضع ال salt ثم الباس
والثلاث حقول تركهم فارغين وعمل امر update للقاعده كما نري بالاخير وبعدها بيتم حذف الثلاث حقول
هذا اللي توصلت له بشكل سريع لتحليل عمليه التحويل
اولا عمليه سحب المعلومات من جدول اعضاء الفي بي
كود :
function import()
{
global $import_session;
// Get members
$query = $this->old_db->simple_select("user", "*", "", array('order_by' => 'userid', 'order_dir' => 'asc', 'limit_start' => $this->trackers['start_users'], 'limit' => $import_session['users_per_screen']));
while($user = $this->old_db->fetch_array($query))
{
$this->insert($user);
}
}
بعد ما قام بسحب المعلومات يذهب ليسجل كل حقل من الفي بي الي الحقل المشابه له في الماي بي بي ( لاحظ الخطوه دي )
كود :
function convert_data($data)
{
$insert_data = array();
// vBulletin 3 values
$insert_data['usergroup'] = $this->board->get_group_id($data['usergroupid'], array("not_multiple" => true));
$insert_data['additionalgroups'] = str_replace($insert_data['usergroup'], '', $this->board->get_group_id($data['usergroupid']));
$insert_data['displaygroup'] = $this->board->get_group_id($data['usergroupid'], array("not_multiple" => true));
$insert_data['import_usergroup'] = $this->board->get_group_id($data['usergroupid'], array("original" => true));
$insert_data['import_additionalgroups'] = $this->board->get_group_id($data['usergroupid'], array("original" => true));
$insert_data['import_displaygroup'] = $data['displaygroupid'];
$insert_data['import_uid'] = $data['userid'];
$insert_data['username'] = encode_to_utf8($data['username'], "user", "users");
$insert_data['email'] = $data['email'];
$insert_data['regdate'] = $data['joindate'];
$insert_data['lastactive'] = $data['lastactivity'];
$insert_data['lastvisit'] = $data['lastvisit'];
$insert_data['website'] = $data['homepage'];
$avatar = $this->get_avatar($data['avatarid']);
if(!$avatar)
{
$customavatar = $this->get_custom_avatar($data['userid']);
if(!$customavatar)
{
$insert_data['avatardimensions'] = '';
$insert_data['avatar'] = '';
$insert_data['avatartype'] = '';
}
}
else
{
list($width, $height) = @getimagesize($avatar['avatarpath']);
$insert_data['avatardimensions'] = $width.'|'.$height;
$insert_data['avatar'] = $avatar['avatarpath'];
$insert_data['avatartype'] = 'remote';
}
$insert_data['lastpost'] = $data['lastpost'];
$data['birthday'] = trim($data['birthday']);
if(!empty($data['birthday']))
{
$insert_data['birthday'] = $data['birthday'];
}
$insert_data['icq'] = $data['icq'];
$insert_data['aim'] = $data['aim'];
$insert_data['yahoo'] = $data['yahoo'];
$insert_data['msn'] = $data['msn'];
$insert_data['timezone'] = str_replace(array('.0', '.00'), array('', ''), $insert_data['timezone']);
$insert_data['style'] = 0;
$insert_data['referrer'] = $data['referrerid'];
$insert_data['regip'] = $data['ipaddress'];
$insert_data['totalpms'] = $data['pmtotal'];
$insert_data['unreadpms'] = $data['pmunread'];
$insert_data['passwordconvert'] = $data['password'];
$insert_data['passwordconverttype'] = 'vb3';
$insert_data['passwordconvertsalt'] = $data['salt'];
$insert_data['signature'] = encode_to_utf8($this->bbcode_parser->convert($this->get_signature($data['userid'])), "user", "users");
return $insert_data;
}
دي المعلومات اللي سحبها ووضعها بمصفوفه ليتم سحب المطلوب واللي يهمني هنا ان نري انه اضاف ثلاث حقول كما قلت وهما
كود :
$insert_data['passwordconvert'] = $data['password'];
$insert_data['passwordconverttype'] = 'vb3';
$insert_data['passwordconvertsalt'] = $data['salt'];
اخذ محتوي حقل الباسورد من الفي بي ووضعه داخل حقل passwordconvert واخذ محتوي حقل salt ووضعه في حقل passwordconvertsalt
والحقل الثالث اضع كلمه ثابته لكي يعلم علي اسكربت سوف يتم التحويل
ونري ايضا انه لم يقم بتسجيل شي في حقل password + salt وتركهم فارغين لحين التحويل ثم حيعيد تعبئتهم
نري طريقة التحويل : ( هناك بعض الاكواد خاصه بالتأكد من وجود محتوي وعدم وجود اخطاء وما الي ذلك فلم اذكره فقط حذكر المفيد لكي تضح لك الفكره )
كود :
// The password was correct, so use MyBB's method the next time (even if the captcha was wrong we can update the password)
$salt = generate_salt();
$update = array(
"salt" => $salt,
"password" => salt_password(md5($login->data['password']), $salt),
"loginkey" => generate_loginkey(),
"passwordconverttype" => "",
"passwordconvert" => "",
"passwordconvertsalt" => "",
);
$db->update_query("users", $update, "uid='{$user['uid']}'");
هنا قام بعمل salt عشوائي من خلال الداله اللي ذكرنها من قبل بالموضوع والموقع الرسمي وبالنسبه للباس قام بتحديثه هنا ووضع ال salt ثم الباس
والثلاث حقول تركهم فارغين وعمل امر update للقاعده كما نري بالاخير وبعدها بيتم حذف الثلاث حقول
هذا اللي توصلت له بشكل سريع لتحليل عمليه التحويل