Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Вызов С++ функции из PHP скрипта

Ответить
Настройки темы
[решено] Вызов С++ функции из PHP скрипта

Аватара для WhitePangolin

Старожил


Сообщения: 398
Благодарности: 49

Профиль | Отправить PM | Цитировать


Нужна помощь. Нашел алгоритм по которому Ventrilo шифрует пароли пользователей.
Код: Выделить весь код
/*

Ventrilo password hashing algorithm 0.1
by Luigi Auriemma
e-mail: aluigi@autistici.org
web:    aluigi.org


INTRODUCTION
============
This algorithm is the method used by the chat program Ventrilo
(http://www.ventrilo.com) for calculating the password hash used from
version 2.3.0.


HOW TO USE
==========
  u_char    hash[32];
  ventrilo_pwd_hash("mypassword", hash);


LICENSE
=======
    Copyright 2004,2005,2006 Luigi Auriemma

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA

    http://www.gnu.org/licenses/gpl.txt

*/

#include <string.h>
#ifdef WIN32
    #include <winsock.h>
#else
    #include <netinet/in.h>
#endif



void ventrilo_pwd_hash(unsigned char *pwd, unsigned char *out) {
    const static unsigned int   crc_table[] = {
        0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
        0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
        0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
        0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
        0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
        0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
        0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
        0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
        0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
        0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
        0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
        0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
        0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
        0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
        0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
        0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
        0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
        0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
        0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
        0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
        0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
        0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
        0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
        0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
        0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
        0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
        0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
        0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
        0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
        0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
        0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
        0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
        0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
        0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
        0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
        0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
        0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
        0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
        0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
        0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
        0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
        0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
        0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
        0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
        0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
        0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
        0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
        0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
        0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
        0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
        0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
        0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
        0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
        0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
        0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
        0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
        0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
        0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
        0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
        0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
        0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
        0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
        0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
        0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d };
    unsigned int    crc;
    int             i,
                    j,
                    edi,
                    cnt,
                    len,
                    chr;
    unsigned char   tmp[4],
                    *lptr;

    len = strlen(pwd);
    *(unsigned int *)tmp = 0;
    lptr = out;

    edi = 1;
    cnt = len;
    for(i = 0; i < 32; i++) {
        if(i < len) {
            chr = *pwd++;
        } else {
            chr = ((tmp[(cnt + 1) & 3] + *lptr) - 0x3f) & 0x7f;
            lptr++;
        }

        out[i] = chr;
        crc = 0;
        for(j = 0; j < edi; j++) {
            crc = crc_table[out[j] ^ (crc & 0xff)] ^ (crc >> 8);
        }
        *(unsigned int *)tmp = htonl(crc);

        cnt += chr;
        if(crc) {
            while(!tmp[cnt & 3]) cnt++;
        }

        out[i] += tmp[cnt & 3];
        cnt++;
        edi++;
    }
}
Необходимо из PHP скрипта передать пароль и получить его в зашифрованном виде.
Как это реализовать?

FreeBSD8.0+Apache2.2+PHP5.2

-------
"Будьте реалистами - требуйте невозможного!" (c) Ernesto Che Guevara


Отправлено: 10:13, 26-03-2010

 

Аватара для Arrest

runs with scissors


Сообщения: 642
Благодарности: 77

Профиль | Отправить PM | Цитировать


Вы можете написать расширение для PHP (что долго и, по сути, бессмысленно) или просто переписать эти две функции на PHP, что быстрее и проще.

-------
- Why do you call this version of software 'beta'?
- Coz it's beta than nothing.


Отправлено: 10:37, 26-03-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для WhitePangolin

Старожил


Сообщения: 398
Благодарности: 49

Профиль | Отправить PM | Цитировать


Цитата Arrest:
просто переписать эти две функции на PHP, что быстрее и проще »
Вот как раз из-за неспособности самостоятельно переделать его в PHP я и накатал пост... если это действительно так просто, может сможете помочь?

-------
"Будьте реалистами - требуйте невозможного!" (c) Ernesto Che Guevara


Отправлено: 10:44, 26-03-2010 | #3


Deadooshka


Сообщения: 2562
Благодарности: 697

Профиль | Отправить PM | Цитировать


в сети мб поискать...

PHP код: Выделить весь код

function ventrilo_hash($pwd$out)
{
    
$crc_table = array
    (
        
0x000000000x770730960xee0e612c0x990951ba,
        
0x076dc4190x706af48f0xe963a5350x9e6495a3,
        
0x0edb88320x79dcb8a40xe0d5e91e0x97d2d988,
        
0x09b64c2b0x7eb17cbd0xe7b82d070x90bf1d91,
        
0x1db710640x6ab020f20xf3b971480x84be41de,
        
0x1adad47d0x6ddde4eb0xf4d4b5510x83d385c7,
        
0x136c98560x646ba8c00xfd62f97a0x8a65c9ec,
        
0x14015c4f0x63066cd90xfa0f3d630x8d080df5,
        
0x3b6e20c80x4c69105e0xd56041e40xa2677172,
        
0x3c03e4d10x4b04d4470xd20d85fd0xa50ab56b,
        
0x35b5a8fa0x42b2986c0xdbbbc9d60xacbcf940,
        
0x32d86ce30x45df5c750xdcd60dcf0xabd13d59,
        
0x26d930ac0x51de003a0xc8d751800xbfd06116,
        
0x21b4f4b50x56b3c4230xcfba95990xb8bda50f,
        
0x2802b89e0x5f0588080xc60cd9b20xb10be924,
        
0x2f6f7c870x58684c110xc1611dab0xb6662d3d,
        
0x76dc41900x01db71060x98d220bc0xefd5102a,
        
0x71b185890x06b6b51f0x9fbfe4a50xe8b8d433,
        
0x7807c9a20x0f00f9340x9609a88e0xe10e9818,
        
0x7f6a0dbb0x086d3d2d0x91646c970xe6635c01,
        
0x6b6b51f40x1c6c61620x856530d80xf262004e,
        
0x6c0695ed0x1b01a57b0x8208f4c10xf50fc457,
        
0x65b0d9c60x12b7e9500x8bbeb8ea0xfcb9887c,
        
0x62dd1ddf0x15da2d490x8cd37cf30xfbd44c65,
        
0x4db261580x3ab551ce0xa3bc00740xd4bb30e2,
        
0x4adfa5410x3dd895d70xa4d1c46d0xd3d6f4fb,
        
0x4369e96a0x346ed9fc0xad6788460xda60b8d0,
        
0x44042d730x33031de50xaa0a4c5f0xdd0d7cc9,
        
0x5005713c0x270241aa0xbe0b10100xc90c2086,
        
0x5768b5250x206f85b30xb966d4090xce61e49f,
        
0x5edef90e0x29d9c9980xb0d098220xc7d7a8b4,
        
0x59b33d170x2eb40d810xb7bd5c3b0xc0ba6cad,
        
0xedb883200x9abfb3b60x03b6e20c0x74b1d29a,
        
0xead547390x9dd277af0x04db26150x73dc1683,
        
0xe3630b120x94643b840x0d6d6a3e0x7a6a5aa8,
        
0xe40ecf0b0x9309ff9d0x0a00ae270x7d079eb1,
        
0xf00f93440x8708a3d20x1e01f2680x6906c2fe,
        
0xf762575d0x806567cb0x196c36710x6e6b06e7,
        
0xfed41b760x89d32be00x10da7a5a0x67dd4acc,
        
0xf9b9df6f0x8ebeeff90x17b7be430x60b08ed5,
        
0xd6d6a3e80xa1d1937e0x38d8c2c40x4fdff252,
        
0xd1bb67f10xa6bc57670x3fb506dd0x48b2364b,
        
0xd80d2bda0xaf0a1b4c0x36034af60x41047a60,
        
0xdf60efc30xa867df550x316e8eef0x4669be79,
        
0xcb61b38c0xbc66831a0x256fd2a00x5268e236,
        
0xcc0c77950xbb0b47030x220216b90x5505262f,
        
0xc5ba3bbe0xb2bd0b280x2bb45a920x5cb36a04,
        
0xc2d7ffa70xb5d0cf310x2cd99e8b0x5bdeae1d,
        
0x9b64c2b00xec63f2260x756aa39c0x026d930a,
        
0x9c0906a90xeb0e363f0x720767850x05005713,
        
0x95bf4a820xe2b87a140x7bb12bae0x0cb61b38,
        
0x92d28e9b0xe5d5be0d0x7cdcefb70x0bdbdf21,
        
0x86d3d2d40xf1d4e2420x68ddb3f80x1fda836e,
        
0x81be16cd0xf6b9265b0x6fb077e10x18b74777,
        
0x88085ae60xff0f6a700x66063bca0x11010b5c,
        
0x8f659eff0xf862ae690x616bffd30x166ccf45,
        
0xa00ae2780xd70dd2ee0x4e0483540x3903b3c2,
        
0xa76726610xd06016f70x4969474d0x3e6e77db,
        
0xaed16a4a0xd9d65adc0x40df0b660x37d83bf0,
        
0xa9bcae530xdebb9ec50x47b2cf7f0x30b5ffe9,
        
0xbdbdf21c0xcabac28a0x53b393300x24b4a3a6,
        
0xbad036050xcdd706930x54de57290x23d967bf,
        
0xb3667a2e0xc4614ab80x5d681b020x2a6f2b94,
        
0xb40bbe370xc30c8ea10x5a05df1b0x2d02ef8d
    
);


    
$len strlen($pwd);
    
$tmp = array(0000);
    
$ii 0;
    
$iip 0;

    
$edi 1;
    
$cnt $len;

    for (
$i 0$i 32$i++)
    {
        if (
$i $len)
        {
            
$chr ord($pwd[$ii]);
            
$ii++;
        }

        else
        {
            
$chr = (($tmp[($cnt 1) & 3] + $out[$iip]) - 0x3f) & 0x7f;
            
$iip++;
        }

        
$out[$i] = $chr;

        
$crc 0;

        for (
$j 0$j $edi$j++)
        {
            
$crcold = (($crc >> 8) & 0xffffff) ;
            
$crc $crc_table[$out[$j] ^ ($crc 0xff)] ;
            
$crc $crc $crcold;
        }

        
$tmp[3] = $crc 0xff;

        
$tmp[2] = ($crc >> 8) & 0xff;
        
$tmp[1] = ($crc >> 16) & 0xff;
        
$tmp[0] = ($crc >> 24) & 0xff;

        
$cnt += $chr;

        if (
$crc)
        {
            while (!
$tmp[$cnt 3])
                
$cnt++;
        };

        
$out[$i] += $tmp[$cnt 3];

        
$out[$i] &= 0xff;

        
$cnt++;

        
$edi++;
    }

    return 
$out;
}

$mypwd "password";

$hash ventrilo_hash($mypwd$hash);

foreach(
$hash as $n) echo dechex($n); 

(c)
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:44, 26-03-2010 | #4


Аватара для WhitePangolin

Старожил


Сообщения: 398
Благодарности: 49

Профиль | Отправить PM | Цитировать


Спасибо

-------
"Будьте реалистами - требуйте невозможного!" (c) Ernesto Che Guevara


Отправлено: 13:22, 26-03-2010 | #5



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Вызов С++ функции из PHP скрипта

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
HotKeySet и вызов функции с параметрами r35p3ct AutoIt 4 24-09-2009 16:28
Delphi - Вызов функции Flash из Delphi btx Программирование и базы данных 1 27-02-2006 01:11
PHP->Sessions: вопрос по функции session_set_save_handler vadimiron Вебмастеру 2 20-09-2005 12:04
вопрос по PHP функции header mar Вебмастеру 10 13-06-2004 19:44
Установка PHP-скрипта Rudy Вебмастеру 2 10-06-2004 22:25




 
Переход