Beispiel #1
0
	<th align="right" colspan="2">&nbsp;
	</th>
       </tr>
       <tr>
	   	   <!-- BEGIN Nodi connessi -->
	<td class="formsubtitle" colspan="2"><img src='img/connect.gif' alt=''>&nbsp;
        <?php 
    $idquery = "SELECT value FROM config WHERE MAIN_GROUP='SHARE' AND SUBKEY='" . $SNAME . "' AND FKEY='ID';";
    $idriga = $db->get_var($idquery);
    $req_nod[INFO][FORUM][0] = @pack("H*", $idriga);
    $core = new CoreSock();
    if (!@$core->Connect()) {
        echo "<font color=red>Core offline!</font>";
    } else {
        $core->Send($req_nod);
        if (!($risposta = $core->Read())) {
            echo "<font color=red>" . ($lang['timeout'] . "</font><br>");
        } else {
            if (!$risposta[INFO][FORUM][$req_nod[INFO][FORUM][0]][NUM_NODI]) {
                echo $lang['perl_noderror3'];
            } else {
                echo $lang['perl_node1'] . $risposta[INFO][FORUM][$req_nod[INFO][FORUM][0]][NUM_NODI] . $lang['perl_node2'];
            }
        }
    }
    ?>
        </td>
       </tr>
	   <!-- End Nodi connessi -->
       <tr>
   	   <!-- Begin  totale messaggi -->
     "Ok <br><br>\n";
 }
 //add user hash returned from the core (md5) into the private key
 if (empty($risp['MD5'])) {
     $std->Error("Core didn't return TRUEMD5, aborting!");
 }
 $truemd5 = $risp['MD5'];
 //var_dump($risp);
 // echo "TRUEMD5: " . $truemd5 . "<br><br>";
 // dedump private key....
 $req[FUNC][BlowDump2var][Data] = base64_decode($chiavi[priv]);
 $req[FUNC][BlowDump2var][Key] = $password;
 if (!$core->Send($req)) {
     $std->Error("Timeout sending data  to the core, aborting.");
 }
 $resp = $core->Read();
 $newprivkey = $resp[FUNC][BlowDump2var];
 if (!$newprivkey) {
     $std->Error("Error receiving data from the core, aborting.");
 }
 //....add user hash....
 $newprivkey[hash] = $truemd5;
 // var_dump($newprivkey);
 // ...dump the new private key....we'll get it in base64...
 //unset($req);
 $req2[FUNC][var2BlowDump64][Key] = $password;
 $req2[FUNC][var2BlowDump64][Data] = $newprivkey;
 //var_dump($req2);
 //echo "<br>FATTO REQ2<br><br>";
 if (!$core->Send($req2)) {
     $std->Error("Timeout sending data to the core, aborting.");
$KEY_DECRYPT = pack('H*', md5($_SESSION[$SNAME]['sess_nick'] . $_SESSION[$SNAME]['sess_password']));
// = password per decriptare la chiave privata in localmember (16byte)
$query = "SELECT PASSWORD FROM " . $SNAME . "_localmember WHERE HASH='{$IDENTIFICATORE}';";
$password = $db->get_var($query);
if (!$password) {
    $std->Error("niente password");
} else {
    $privkey = base64_decode($password);
}
$req[FUNC][BlowDump2var][Key] = $KEY_DECRYPT;
$req[FUNC][BlowDump2var][Data] = $privkey;
$core = new CoreSock();
if (!$core->Send($req)) {
    $std->Error("Error sending data to the core");
}
if (!($risp = $core->Read())) {
    $std->Error("Error receiving data from the core");
}
$oldprivkey = $risp[FUNC][BlowDump2var];
if (!$oldprivkey) {
    $std->Error("Error receiving data from the core, aborting.");
}
$query = "SELECT hash FROM {$SNAME}_membri WHERE PKEYDEC='" . $oldprivkey['private']['_n'] . "';";
$userhash = $db->get_var($query);
if (empty($userhash)) {
    $std->Error("User not found!");
}
$oldprivkey[hash] = $userhash;
$req2[FUNC][var2BlowDump64][Key] = $KEY_DECRYPT;
$req2[FUNC][var2BlowDump64][Data] = $oldprivkey;
//var_dump($req2);
Beispiel #4
0
function get_my_info()
{
    /* RETURN: Array( hash - id ) */
    global $std, $SNAME, $userdata;
    if (!$_SESSION[$SNAME]['sess_nick']) {
        return "";
    }
    if (!$userdata) {
        return "";
    }
    $KEY_DECRYPT = pack('H*', md5($_SESSION[$SNAME]['sess_nick'] . $_SESSION[$SNAME]['sess_password']));
    // = password per decriptare la chiave privata in localmember (16byte)
    $privkey = base64_decode($userdata->PASSWORD);
    $PKEY = $std->getpkey($SNAME);
    $req[FUNC][Base642Dec] = $PKEY;
    $req[FUNC][BlowDump2var][Key] = $KEY_DECRYPT;
    $req[FUNC][BlowDump2var][Data] = $privkey;
    $core = new CoreSock();
    if (!$core->Send($req)) {
        return NULL;
    }
    if (!($risp = $core->Read())) {
        return NULL;
    }
    $return[0] = $risp[FUNC]["BlowDump2var"]["hash"];
    //dell'utente loggato in questo momento
    list($asd, $return[1]) = unpack('H*', $return[0]);
    return $return;
}
<?php

include "testa.php";
// carico la lingua per la index
$lang += $std->load_lang('lang_index', $blanguage);
$corereq['RSA']['GENKEY']['CONSOLE_OUTPUT'] = 0;
$coresk = new CoreSock();
if (!$coresk->Send($corereq)) {
    $std->Error("Errore in send!");
}
$coreresp = $coresk->Read(60);
if (!$coreresp) {
    $std->Error("Errore in read!");
}
echo "pub: " . $coreresp['RSA']['GENKEY']['pub'] . "<br>";
echo "priv: " . $coreresp['RSA']['GENKEY']['priv'] . "<br>";
//include("end.php");
if (!empty($nick) and !empty($password) and empty($privkey)) {
    // create a new user
    $identif = md5(md5($password, TRUE) . $nick);
    $idforum = $std->getidforum($SNAME);
    print "l'id del forum è {$idforum}\n<br>";
    $corereq['RSA']['GENKEY']['CONSOLE_OUTPUT'] = 0;
    $corereq['RSA']['GENKEY']['PWD'] = md5($nick . md5($password, TRUE), TRUE);
    #$corereq['RSA']['GENKEY']['NICK'] = $nick;
    #$corereq['RSA']['GENKEY']['PKEY64'] = $PKEY64;
    // quando invio una richiesta GENKEY dove è presente NICK sto generando una chiave per un utente, il core mi ritorna anche la PKEY in decimale in ['pkeydec']
    // e l'hash del messaggio in ['hash'] così evito di fare richieste/conti dopo
    $coresk = new CoreSock();
    if (!$coresk->Send($corereq)) {
        die("Errore in send1!");
    }
    $coreresp = $coresk->Read(120);
    if (!$coreresp) {
        die("Errore in read1!");
    }
    $rsapub = $coreresp['RSA']['GENKEY']['pub'];
    // in decimale
    $rsapriv = $coreresp['RSA']['GENKEY']['priv'];
    // in base64
    #$PKEY = $coreresp['RSA']['GENKEY']['pkeydec'];		//pkey del forum in decimale
    #$date = $coreresp['RSA']['GENKEY']['date'];			// la prendo così perchè deve essere quella usata per creare l'hash
    #$hash = $coreresp['RSA']['GENKEY']['hash'];
    print "Chiave pubblica {$rsapub}<br>e privata:<br>{$rsapriv}<br>\n";
    unset($coreresp, $corereq);
    #if ( strlen($PKEY) < 120 ) die("".$lang['reg_keynotvalid']."");
    $corereq['FUNC']['Dec2Bin'] = $rsapub;
    // converto la chiave pubblica in binario
$IDENTIFICATORE = md5($_SESSION[$SNAME]['sess_password'] . $_SESSION[$SNAME]['sess_nick']);
// = identificatore dell'utente nella tabella localmember. easadecimale
$KEY_DECRYPT = pack('H*', md5($_SESSION[$SNAME]['sess_nick'] . $_SESSION[$SNAME]['sess_password']));
// = password per decriptare la chiave privata in localmember (16byte)
$query = "SELECT PASSWORD FROM " . $SNAME . "_localmember WHERE HASH='" . $IDENTIFICATORE . "';";
$privkey = base64_decode($db->get_var($query));
$PKEY = $std->getpkey($SNAME);
//$req[FUNC][Base642Dec]=$PKEY;
$req[FUNC][BlowDump2var][Key] = $KEY_DECRYPT;
$req[FUNC][BlowDump2var][Data] = $privkey;
$core = new CoreSock();
if (!$core->Send($req)) {
    $std->Error($lang['reply_core'], $_REQUEST['body']);
}
// timeout ?
if (!($risp = $core->Read())) {
    $std->Error($lang['reply_timeout'], $_REQUEST['body']);
}
//$PKEY=$risp[FUNC][Base642Dec];
if (strlen($PKEY) < 120) {
    $std->Error($lang['reply_admin'], $_REQUEST['body']);
}
if (strlen($risp[FUNC][BlowDump2var][hash]) != 16) {
    $std->Error($lang['reply_pdata'], $_REQUEST['body']);
}
$userhash = $risp[FUNC][BlowDump2var][hash];
if (get_magic_quotes_gpc()) {
    $userhash = stripslashes($userhash);
}
$userhash = mysql_real_escape_string($userhash);
$querysql = "SELECT count(1) FROM {$SNAME}_newmsg WHERE HASH='" . mysql_escape_string($MSG_HASH) . "'";
<?php 
$core = new CoreSock();
$sesname = $_POST[name];
// Copio le variabili di POST in scalari normali. funza
if (strlen($sesname) != 5) {
    die("Il nome del forum deve essere di 5 caratteri");
}
if (strlen($_POST[pkey]) > 150) {
    $pkey_dec = $_POST[pkey];
    $forum_id = sha1($pkey_dec);
    // Calcolo l'ID del forum in esadecimale, funziona
    $req['FUNC']['Dec2Base64'] = $pkey_dec;
    if (!$core->Send($req)) {
        die("Errore mentre si tentava di comunicare con il core: " . $core->errmsg);
    }
    if (!($risp = $core->Read(6))) {
        die("Errore mentre si tentava di comunicare con il core: " . $core->errmsg);
    }
    $pkey_base64 = $risp['FUNC']['Dec2Base64'];
} else {
    $req[RSA][GENKEY][GEN] = 1;
    $req[RSA][GENKEY][CONSOLE_OUTPUT] = 1;
    if (!$core->Send($req)) {
        die("Errore mentre si tentava di comunicare con il core: " . $core->errmsg);
    }
    if (!($risp = $core->Read(120))) {
        die("Errore mentre si tentava di comunicare con il core: " . $core->errmsg);
    }
    $forum_id = sha1($risp[RSA][GENKEY][pub]);
    $pkey_dec = $risp[RSA][GENKEY][pub];
    print "Chiave pubblica:<textarea cols=40 rows=10>" . $risp[RSA][GENKEY][pub] . "</textarea><br><br>";
    print "Non hai una sessesione\n";
}
$sez[SEZID] = 10;
$sez[SEZ_NAME] = 'alfa test';
$sez[SEZ_DESC] = 'descrizione della sezione alfa test';
$sez[ORDINE] = 2;
//è la seconda sezione
$core = new CoreSock();
// Per momotizzare una variabile dobbiamo usare l'insieme delle funzione chiamate TMPVAR.
// La funzione che momorizza si chiama ADDVAR
// Visto che ci possono essere anche più sessioni memorizzate noi inseriamo la nostra variabile in una sottochiave di session_id();
// EditSez è il nome della funzione che nel core crea e modifica le sezioni.
// il vettore numero ci suggerisce che possiamo inserire un insieme di puù sezioni nello stesso comando.
$req[TMPVAR][ADDVAR][session_id()][EditSez][0] = $sez;
$core->Send($req);
$core->Read();
//buttiamo via la risposta, che ce ne frega?
/* Una volta che abbiamo inserito la variabile nel core ci possiamo anche disconnettere.
  Possiamo chiudere il browser. Possiamo andare a casa fare la doccia...etc.
  La variabile che abbiamo messo dentro resta memorizzata fino
  a quando nn viene riavviato il core o non usiam l'apposita funzione.
*/
// Deciamo di aggiungere una nuova sezione:
$sez[SEZID] = 20;
$sez[SEZ_NAME] = 'beta test';
$sez[SEZ_DESC] = 'descrizione della sezione abeta test';
$sez[ORDINE] = 1;
//è la prima sezione
$secreq[TMPVAR][ADDVAR][session_id()][EditSez][1] = $sez;
$core->Send($secreq);
//facciamo un altro store
?>


<?php 
if ($submit) {
    require "functions.php";
    include "core.php";
    $corereq['RSA']['GENKEY']['CONSOLE_OUTPUT'] = 0;
    $coresk = new CoreSock();
    echo "<div align=center>";
    echo $lang['newbrd_keygen'];
    flush();
    if (!$coresk->Send($corereq)) {
        $std->Error($lang['newbrd_senderr']);
    }
    $coreresp = $coresk->Read($globaltimeout);
    if (!$coreresp) {
        die($lang['newbrd_coretimeout']);
    }
    $bname = $_REQUEST['bsession'];
    $bdesc = $_REQUEST['bdesc'];
    $pubkey = $coreresp['RSA']['GENKEY']['pub'];
    $privkey = $coreresp['RSA']['GENKEY']['priv'];
    $bid = sha1($pubkey);
    $xmlcont = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n    <BOARD>\n    \t<NAME>{$bname}</NAME>\n    \t<SESSION>{$bname}</SESSION>\n    \t<DESC>{$bdesc}</DESC>\n    \t<LANG>IT</LANG>\n    \t<PKEY>{$pubkey}</PKEY>\n    \t<ID>{$bid}</ID>\n    \t<STARTUP>*</STARTUP>\n  </BOARD>";
    echo "<b>" . $lang['newbrd_pk'] . "</b> <br>";
    echo "<textarea rows='5' name='chiave' cols='70' readonly class='row2' style='border: none; overflow: auto'>{$pubkey}</textarea><br><br>";
    echo "<b>" . $lang['newbrd_brdid'] . "</b><br>";
    echo "<textarea rows='1' name='chiave' cols='70' readonly class='row2' style='border: none; overflow: auto'>{$bid}</textarea><br><br>";
    echo "<b>" . $lang['newbrd_xmlfile'] . " (es {$bname}.kfb) " . $lang['newbrd_infoxml'] . ": </b><br>";
    echo "<textarea rows='15' name='chiave' cols='70' readonly class='row2' style='border: none; overflow: auto'>{$xmlcont}</textarea><br><br>";
     if ($_REQUEST['home']) {
         $Home = 1;
     } else {
         $Home = 0;
     }
 }
 if ($_REQUEST['lock'] xor $Lock) {
     if ($_REQUEST['lock']) {
         $core = new CoreSock();
         if (@$core->Connect()) {
             // Questa parte mi serve solo per ottenere una risposta dal core, così da leggerne il timestamp GMT
             $idquery = "SELECT value FROM config WHERE MAIN_GROUP='SHARE' AND SUBKEY='" . $SNAME . "' AND FKEY='ID';";
             $idriga = $db->get_var($idquery);
             $req_nod[INFO][FORUM][0] = @pack("H*", $idriga);
             $core->Send($req_nod);
             $risp = $core->Read();
             // Fine parte fittizia
             $Lock = $risp['CORE']['INFO']['GMT_TIME'];
             $change = 1;
         }
     } else {
         $Lock = 0;
         $change = 1;
     }
 }
 if ($change) {
     $extvar[update_thread] = 1;
     // Eseguo l'update sul thread
     $extvar[pinned] = $Pinned;
     $extvar[fixed] = $Fixed;
     $extvar[home] = $Home;
if (empty($ORDER)) {
    $ORDER = "DESC";
}
if (empty($LIMIT)) {
    $LIMIT = 200;
}
$PKEY = $std->getpkey($_SERVER['sesname']);
if (empty($MODO) or empty($PKEY)) {
    $std->Error("Error on request!\n");
} else {
    $coreconn = new CoreSock();
    $convreq['FUNC']['Base642Dec'] = $PKEY;
    if (!$coreconn->Send($convreq)) {
        $std->Error("Error sending request to core!\n");
    }
    $pkeydec = $coreconn->Read();
    if (!$pkeydec) {
        $std->Error("Error receiving core data!\n");
    }
    $pkeysha1 = sha1($pkeydec['FUNC']['Base642Dec']);
    $forumid = pack("H*", $pkeysha1);
    $hashreq['HASHREQ'][$forumid]['MODO'] = $MODO;
    $hashreq['HASHREQ'][$forumid]['LIMIT'] = $LIMIT;
    $hashreq['HASHREQ'][$forumid]['ORDER'] = $ORDER;
    if (!empty($_REQUEST['MAX_DATE'])) {
        $hashreq['HASHREQ'][$forumid]['MAX_DATE'] = $_REQUEST['MAX_DATE'];
    }
    if (!empty($_REQUEST['MIN_DATE'])) {
        $hashreq['HASHREQ'][$forumid]['MIN_DATE'] = $_REQUEST['MIN_DATE'];
    }
    switch ($MODO) {