[MANUAL] Сменить пароли mssql

Тема в разделе "Установка и настройка (Setup and configuration)", создана пользователем root, 29 сен 2014.

  1. root

    root Administrator Команда форума Administrator Moderator Developers Team

    Регистрация:
    23 авг 2014
    Сообщения:
    254
    Симпатии:
    58
    Баллы:
    11
    Для начала создадим таблицу логов в которой будут записываться новые пароли и аккаунты (для логов)
    Код:
    USE [lin2db]
    GO
    CREATE TABLE [dbo].[user_auth_newpass](
        [account] [varchar](25) NULL,
        [password] [varchar](25) NULL,
    ) ON [PRIMARY]
    
    Дальше создаем php файл - сам сменщик паролей. К примеру назовём его change_pass.php
    Код:
    //Script by © slims ICQ: 369398809 //Подключение к базе данных 
    $host = "localhost"; 
    $login = "sa"; 
    $pass = "vb3nv-3n9An-v5lAD-Nyv81-25nsd_g7W41"; 
    $l2db = "lin2db"; 
    //Запросы 
    include("func.php"); 
    //Поддключаемся к базе данных 
    $dbconnect=mssql_connect($host,$login,$pass); 
    mssql_select_db($l2db); 
    //Создаем цикл 
    $i=1; 
    $accname=array(); 
    $r = mssql_query("SELECT account FROM user_auth "); // ищем все аккаунты с таблици user_auth 
    $i=1; 
    while($rr = mssql_fetch_array($r)) 
        { 
            $accname[$i]=$rr['account']; 
            $i++; 
        } 
    $i=1; 
    while($accname[$i]) 
        { 
            if(mssql_num_rows($r)>0) 
            { 
            $r3 = mssql_query("SELECT * FROM user_auth_newpass WHERE account = '$accname[$i]' "); 
                if(mssql_num_rows($r3)==0) 
                    { 
                        $newpassword = mt_rand(1000000,9999999); 
                        $newpassword = md5($newpassword); 
                        $newpassword = substr($newpassword, 0, 11); 
                        $encnewpassword = encrypt($newpassword); 
                         
                        mssql_query(sprintf(UPDATE_PASSWORD, $encnewpassword, $accname[$i])); 
                                 
                     
                    } 
                //Записываем результаты 
                //Запись в базу  
                mssql_query(sprintf(SAVE_NEW_PASS, $accname[$i],$newpassword)); 
                //Запись в текстовый документ 
                $success = "Аккаунту: $accname[$i] был изменён пароль от аккаунта. Новый пароль:$newpassword \r\n"; 
                $file = fopen("new_pass.txt", "a+"); 
                fwrite($file, $success); 
                fclose($file); 
            } 
            $i++;         
        } 
    ?>
    Дальше создаем файл func.php (именно такой и сохранить его в ту же папку где ваш рание созданный change_pass.php)
    Код:
    <? DEFINE("UPDATE_PASSWORD","UPDATE user_auth 
    SET password = %s 
    WHERE account = '%s' "); 
    
    
    DEFINE("SAVE_NEW_PASS", "INSERT INTO user_auth_newpass (account,password) 
    VALUES ('%s','%s')"); 
    
    
    function encrypt($str) { 
        $key = array(); 
        $dst = array(); 
        $i = 0; 
    
    
        $nBytes = strlen($str); 
                while ($i < $nBytes){ 
                        $i++; 
                        $key[$i] = ord(substr($str, $i - 1, 1)); 
                        $dst[$i] = $key[$i]; 
        } 
    
    
        $rslt = $key[1] + $key[2]*256 + $key[3]*65536 + $key[4]*16777216; 
        $one = $rslt * 213119 + 2529077; 
        $one = $one - intval($one/ 4294967296) * 4294967296; 
    
    
        $rslt = $key[5] + $key[6]*256 + $key[7]*65536 + $key[8]*16777216; 
        $two = $rslt * 213247 + 2529089; 
        $two = $two - intval($two/ 4294967296) * 4294967296; 
    
    
        $rslt = $key[9] + $key[10]*256 + $key[11]*65536 + $key[12]*16777216; 
        $three = $rslt * 213203 + 2529589; 
        $three = $three - intval($three/ 4294967296) * 4294967296; 
    
    
        $rslt = $key[13] + $key[14]*256 + $key[15]*65536 + $key[16]*16777216; 
        $four = $rslt * 213821 + 2529997; 
        $four = $four - intval($four/ 4294967296) * 4294967296; 
    
    
        $key[4] = intval($one/16777216); 
        $key[3] = intval(($one - $key[4] * 16777216) / 65535); 
        $key[2] = intval(($one - $key[4] * 16777216 - $key[3] * 65536) / 256); 
        $key[1] = intval(($one - $key[4] * 16777216 - $key[3] * 65536 - $key[2] * 256)); 
    
    
        $key[8] = intval($two/16777216); 
        $key[7] = intval(($two - $key[8] * 16777216) / 65535); 
        $key[6] = intval(($two - $key[8] * 16777216 - $key[7] * 65536) / 256); 
        $key[5] = intval(($two - $key[8] * 16777216 - $key[7] * 65536 - $key[6] * 256)); 
    
    
        $key[12] = intval($three/16777216); 
        $key[11] = intval(($three - $key[12] * 16777216) / 65535); 
        $key[10] = intval(($three - $key[12] * 16777216 - $key[11] * 65536) / 256); 
        $key[9] = intval(($three - $key[12] * 16777216 - $key[11] * 65536 - $key[10] * 256)); 
    
    
        $key[16] = intval($four/16777216); 
        $key[15] = intval(($four - $key[16] * 16777216) / 65535); 
        $key[14] = intval(($four - $key[16] * 16777216 - $key[15] * 65536) / 256); 
        $key[13] = intval(($four - $key[16] * 16777216 - $key[15] * 65536 - $key[14] * 256)); 
    
    
        $dst[1] = $dst[1] ^ $key[1]; 
    
    
        $i=1; 
        while ($i<16){ 
            $i++; 
            $dst[$i] = $dst[$i] ^ $dst[$i-1] ^ $key[$i]; 
        } 
    
    
        $i=0; 
        while ($i<16){ 
            $i++; 
            if ($dst[$i] == 0) { 
                $dst[$i] = 102; 
            } 
        } 
    
    
        $encrypt = "0x"; 
        $i=0; 
        while ($i<16){ 
            $i++; 
            if ($dst[$i] < 16) { 
                $encrypt = $encrypt . "0" . dechex($dst[$i]); 
            } else { 
                $encrypt = $encrypt . dechex($dst[$i]); 
            } 
        } 
    
    
        return $encrypt; 
    } 
    
    
    ?>
    И так результат примерно такой будет:1 вариант с базы показывать не буду, не хочу опять мазать все и скрин заливать
    2 вариант будет создан новый файл в той же папке под названием new_pass.txt, Ниже пример как будут заполнятся данные.
    Код:
    Аккаунту: 010591 был изменён пароль от аккаунта. Новый пароль:b9c56e6a4d1 
    Аккаунту: 010592 был изменён пароль от аккаунта. Новый пароль:78951fbb68e 
    Аккаунту: 01061999 был изменён пароль от аккаунта. Новый пароль:eca96d3de7f 
    Аккаунту: 0108 был изменён пароль от аккаунта. Новый пароль:a72cf8fb6a9 
    Аккаунту: 011014017 был изменён пароль от аккаунта. Новый пароль:f950ac79ed8 
    Аккаунту: 01101991 был изменён пароль от аккаунта. Новый пароль:8f3d492786e 
    Аккаунту: 0120302 был изменён пароль от аккаунта. Новый пароль:d03b243a466 
    Аккаунту: 0123 был изменён пароль от аккаунта. Новый пароль:3efdc63380a 
    Аккаунту: 01231993 был изменён пароль от аккаунта. Новый пароль:d6c98736c45 
    Аккаунту: 0149 был изменён пароль от аккаунта. Новый пароль:20cad26b4e7 
    Аккаунту: 0174b был изменён пароль от аккаунта. Новый пароль:ebb7e093a81 
    Аккаунту: 020202 был изменён пароль от аккаунта. Новый пароль:5ad9a9f0b5f 
    Аккаунту: 02051993 был изменён пароль от аккаунта. Новый пароль:40298a8ccd0 
    Аккаунту: 0207 был изменён пароль от аккаунта. Новый пароль:50d4400b05a 
    Аккаунту: 02101987 был изменён пароль от аккаунта. Новый пароль:e99158f02f1 
    Аккаунту: 021021 был изменён пароль от аккаунта. Новый пароль:194dd3a443d 
    Аккаунту: 021092 был изменён пароль от аккаунта. Новый пароль:53b06267b68 
    Аккаунту: 022715711 был изменён пароль от аккаунта. Новый пароль:a361229e850 
    Аккаунту: 02300230 был изменён пароль от аккаунта. Новый пароль:ec0f1f3db48 
    Аккаунту: 0230134679852 был изменён пароль от аккаунта. Новый пароль:cdc34b36313 
    Аккаунту: 023120843 был изменён пароль от аккаунта. Новый пароль:5cb7d6076ac 
    Аккаунту: 023121180 был изменён пароль от аккаунта. Новый пароль:4a32d4aaffd 
    Аккаунту: 023121181 был изменён пароль от аккаунта. Новый пароль:2bac063d721 
    Аккаунту: 023121182 был изменён пароль от аккаунта. Новый пароль:b5597ac6de4 
    Аккаунту: 023139232 был изменён пароль от аккаунта. Новый пароль:13b89963b21 
    Аккаунту: 025021554 был изменён пароль от аккаунта. Новый пароль:b43bb671246 
    Аккаунту: 025022409 был изменён пароль от аккаунта. Новый пароль:e15517e37b6 
    *****Обязательно дождаться когда скрипт будет выполнен до конца. Чем больше аккаунтов тем дольше он будет выполняться.