• STATISTIQUES
  • Il y a eu un total de 0 membres et 9023 visiteurs sur le site dans les dernières 24h pour un total de 9 023 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Zenk-Security
    La communauté zenk-security a pour objet principal la sécurité informatique, nous sommes des tou...
    Hacking
    [EN] phrack
    Lot's of stuff !
    Hacking
    [EN] Sabre Films
    Site de challenge présenté sous la forme d'une quête. Vous êtes un détective et devrez résoudre d...
    Challenges
    [EN] Reddit
    Subreddit dédié à la sécurité informatique.
    Hacking
    [EN] HackQuest
    Logic: 12, JavaScript: 14, Applet: 6, CrackIt: 13, Crypto: 11, Internet: 3, Exploit: 7, Stegano: 12, Flash: 1, Programmi...
    Challenges
    [EN] Lost-chall
    Site de challenge présenté sous la forme de différente saison. Pour passer une saison vous devez avoir accumulÃ...
    Challenges
    [EN] wechall
    Pour les gens n'étant pas familiers avec les sites de challenges, un site de challenges est un site propos...
    Hacking

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!

    €



Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Php] Chiffrement/Stéganographie de donnée sous la forme d'un array multi-dimension
30-07-2012, 09h20 (Modification du message : 19-11-2012, 18h42 par InstinctHack.)
Message : #1
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
[Php] Chiffrement/Stéganographie de donnée sous la forme d'un array multi-dimension
Voilà sur quoi je travaille actuellement, c'est pas encore fonctionnel mais bientot Smile
Je vous le met après avoir effectuer quelques opérations d' ""obscuration"" simple :p (juste pour éviter les kikoo lol et les script-kiddis :p et puis avouez que les défis vous adorez ça et celui-là c'est trop facile)
Si vous avez des questions, des propositions, n'hésitez-pas, je suis toujours dispo Wink

J'ai BEAUCOUP améliorer le systeme en javascript Smile
Code PHP :
<?php
ob_start
();
set_time_limit(5);
mb_internal_encoding ('UTF-8');
ini_set('display_errors',1);
error_reporting(E_ALL);
//
/*
$s="16594958435a5e144b464f585e020d7e5f0a5a4f584e590d03111605594958435a5e14"; $uh="";
foreach(str_split($s,2) as $o) $uh .= chr(hexdec($o));
echo $uh ^ str_repeat('*', strlen($uh));
*/


// FONCTIONS PHP

/*
    window.frames["iframe"].document.getElementById("unique_button").onclick();
    alert(document.getElementById('iframe').contentDocument.getElementById('test').innerHTML);document.getElementById('iframe').contentDocument.getElementById('test').onclick();

    $test=$datas_array[1];
    list_array(array($test=>$$test),'liste');

    echo '<pre>';print_r(str_split(base_64_2(str_replace('=','',base64_encode("http://n-pn.fr"))),8));echo '</pre>';exit();

    //imagepng($picture, 'img.png');file_get_contents('img.png');
    $data = base64_encode((binary)ob_get_contents());
    ob_end_clean();
    echo $data;
    $im = imagecreatefromstring($data);
    if ($im !== false)
    {
        header('Content-Type: image/png');
        imagepng($im);imagedestroy($im);
    }
    else
    {
        echo 'An error occurred.';
    }

    $monfichier = fopen('data.hack', 'w+');
    fputs($monfichier, gzdeflate(crypter($_POST['data'],$_POST['key'])));
    fclose($monfichier);

    echo 'Vous avez envoyé les données suivantes :<br />',
        htmlspecialchars($_POST['data']),'<br />',
        'avec la clé : <br />',
        htmlspecialchars($_POST['key']),
        '<br /><br />';

    $a=decoupage($_POST['data'],'encode');//on découpe les données non decodées et on stocke le nom du super array

    list_array(array($a=>$$a),'ligne','test');//on stocke les données en ligne dans une variable
    echo 'Voilà les données encodées en base64 :<br />',
        htmlspecialchars($test),
        '<br /><br />';

    $data=crypter($test,$_POST['key']);
    echo 'Maintenant crypter :<br />',
        htmlspecialchars($data),
        '<br /><br />';

    $data=gzdeflate($data,9);

    echo 'Et pour terminer, les compresser :<br />',
        htmlspecialchars($data);

    $data=base64_encode($data);
    //$data=gzencode($data,9);
    //$data=gzcompress($data);

    echo 'Et pour terminer, les compresser :<br />',
        htmlspecialchars($data);

        echo htmlspecialchars(decrypter($data,$_POST['key']));




/*
        if(progression==2)//passage Ã  l'étape 2
        {
            document.getElementById('iframe').setAttribute('src','data_absolue.php?mode='+array_src_mode[progression]);
            var iframe=document.getElementById('iframe');
alert(document.getElementById('iframe').document.getElementById("test").innerHTML);

/*
            var salut_2=iframe.document.getElementById('test');
alert(salut_2);

            salut_2.onclick();

        document.getElementById('iframe').contentDocument.getElementById('test').innerHTML;

getElementById('unique_button').onclick();
*/

/*

<button onclick="document.getElementById('frame1').setAttribute('src','data_complet.php?mode=telechargement_start')"></button>
<iframe id="frame1" src=""></iframe>
 var oFrame = window.frames["myFrame"].document.getElementById("idElement").innerHTML; 

<button onclick="parent.document.getElementById('progression_variable').innerHTML='3';parent.document.body.onload();"></button>
document.getElementById('formulaire').submit();

*/

function decoupage($datas_string='',$mode='')
{
    if(empty(
$datas_string)||empty($mode))
    {
        echo 
'variable(s) manquante(s) pour la fonction decoupage';return;
    }

    
$datas_string=trim($datas_string);
    
$datas_string=str_replace(array('<','>','_','..'),array('.<.','.>.','._.','.'),$datas_string);/*on met un séparateur commun Ã  tous les méta-caractères en oubliant de retirer les doublons*/
    
$datas_string=substr($datas_string,1, -1);/*on retire les deux caractères de début et de fin (qui sont toujours des ".") pour Ã©viter des données vides */
    
$datas_array=explode('.',$datas_string);/* on découpe les données selon le séparateur */

    
global $$datas_array[1];
    
$level=0;/* le niveau de profondeur des données */
    
$courant='$';/* la variable actuellement en train d'être analysée */

    
foreach($datas_array as $key => $value )/* on explore l'array des données */
    
{
        if(
$mode=='encode')
        {
            @
$next_data=$datas_array[$key+1];/* on decode la donnée suivante */
        
}
        elseif(
$mode='decode')
        {
            @
$next_data=base64_decode($datas_array[$key+1]);/* on decode la donnée suivante */
        
}
        else
        {
            echo 
'False mode for function decoupage';return;
        }

        if(
$value=='<')/* si on s'enfonce dans les profondeur de l'array*/
        
{
            if(
$level==0)/*si on est au niveau 0 et que donc le nom du super array n'est pas encore connu */
            
{
                
$courant.=$next_data;/* on ajoute le nom de la données Ã  "courant"*/
            
}
            else
            {
                
$courant.='[\''.$next_data.'\']';/*on rajoute [next_data] Ã  la variable actuelle */
            
}
            
$level--;/* on retire un niveau */
        
}
        elseif(
$value=='>')/* si on remonte Ã  la surface */
        
{
            
$courant=substr($courant,0,strrpos($courant,'['));/* on retire une partie de la variable "courant" */
            
$level++;/* on ajoute un niveau */
        
}
        elseif(
$value=='_')/* si on entre dans un array ou une variable */
        
{
            if(
$next_data!='<'&&$next_data!='>')/* si la prochaine donnée n'est pas un méta-caractère */
            
{
                $
$courant=$next_data;/* on crée la variable et on l'as remplie */
            
}
        }
    }
    return 
$datas_array[1];
}

function 
list_array($array,$mode,$var)
{
    if(empty(
$array)||empty($mode))
    {
        echo 
'données vide for function list_array';return;
    }
    if(
$mode=='liste')
    {
        foreach(
$array as $key => $value)
        {
            if(
is_array($value))
            {
                @
$GLOBALS[$var].=$key.' :<ul>';
                
list_array($value,$mode,$var);
                @
$GLOBALS[$var].='</ul><br />';
            }
            else
            {
                @
$GLOBALS[$var].='<li>'.$key.' = '.$value.'</li>';
            }
        }
    }
    elseif(
$mode='ligne')
    {
        foreach(
$array as $key => $value)
        {
            if(
is_array($value))
            {
                @
$GLOBALS[$var].='<'.base64_encode($key).'_';
                
list_array($value,$mode,$var);
                @
$GLOBALS[$var].='>';
            }
            else
            {
                @
$GLOBALS[$var].='<'.base64_encode($key).'_'.base64_encode($value).'>';
            }
        }
    }
    else
    {
        echo 
'error variable "mode" in function list_array';return;
    }
}

/*
    Ces deux fonctions de """"""chiffrement""""" ont Ã©taient trouver sur internet, mais elles ne valent rien
    comme véritable chiffrement, c'est uniquement pour avoir un systeme qui ne se base sur aucune librairies
    (En clair je les garde juste comme Ã§a :p )
    et faudras que je l'améliore quand meme quand j'aurais le temps ^^"
*/

function chiffrement($mode,$string,$key)
{
    
$key hash('whirlpool',$key);
    
$letter = -1;
    
$newstr '';

    
//$string = base64_decode($string);

    
$strlen strlen($string);
    for ( 
$i 0$i $strlen$i++ )
    {
        
$letter++;
        if ( 
$letter 31 )
        {
            
$letter 0;
        }
        if(
$mode='chiffrement')
        {
            
$neword ord($string{$i}) + ord($key{$letter});
        }
        elseif(
$mode='dechiffrement')
        {
            
$neword ord($string{$i}) - ord($key{$letter});
        }


        if(
$mode='chiffrement')
        {
            if ( 
$neword 255 )
            {
                
$neword -= 256;
            }
        }
        elseif(
$mode='dechiffrement')
        {
            if ( 
$neword )
            {
                
$neword += 256;
            }
        }
        
$newstr .= chr($neword);
    }
    
//$newstr=base64_encode($newstr);
    
return $newstr;
}

function 
chiffrement_2($chiffre,$string,$key,$level)
{

    if(
$level==1)        {$key md5($key);}
    elseif(
$level==2)    {$key sha1($key);}
    else                    {
$key hash('whirlpool',$key);}

    
$string=str_split(base64_encode($string),1);
    
$key=str_split($key,1);

    
$resultat='';

    echo 
count($string).'<br />';
    if(
$chiffre==1)
    {
        foreach(
$string as $key2=>$value)
        {
            
$resultat.=chr(ord($value)+1);
            
//$resultat.=chr((ord($value)+ord($key[$key2 % (count($string)-1)]))%256);
        
}
        echo 
"chaine chiffrer : ".$resultat;
    }
    elseif(
$chiffre==2)
    {
        foreach(
$string as $key2=>$value)
        {
            
$resultat.=chr(ord($value)-1);
            
//$resultat.=chr((ord($value)-ord($key[$key2 % (count($string)-1)]))%256);
        
}
        echo 
"chaine déchiffrer : ".$resultat;
    }
    else
    {
        echo 
'error mode fonction chiffrement';
    }
}

function 
base_64_2($chaine)
{
    return 
str_replace(
        array(
            
'A','B','C','D','E','F','G','H','I','J','K','L','M',
            
'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
            
'a','b','c','d','e','f','g','h','i','j','k','l','m',
            
'n','o','p','q','r','s','t','u','v','w','x','y','z',
            
'0','1','2','3','4','5','6','7','8','9',
            
'+','/')
        ,
        array(
            
000000,000001,000010,000011,000100,000101,000110,000111,
            
001000,001001,001010,001011,001100,001101,001110,001111,
            
010000,010001,010010,010011,010100,010101,010110,010111,
            
011000,011001,011010,011011,011100,011101,011110,011111,
            
100000,100001,100010,100011,100100,100101,100110,100111,
            
101000,101001,101010,101011,101100,101101,101110,101111,
            
110000,110001,110010,110011,110100,110101,110110,110111,
            
111000,111001,111010,111011,111100,111101,111110,111111)
        ,
        
$chaine
    
);
}

function 
steganographie($mode,$url_picture,$chaine,$taille_bloc=null,$count_blocs=null)
{
    if(
$mode=='cache')
    {
        
//$picture = imagecreatefrompng($url_picture);
        
$pictureimagecreatetruecolor(35,35);
        
imagealphablending($picture,true);
        
imagesavealpha($picturefalse);

        
$white=imagecolorallocatealpha($picture,255,255,255,0);//on met l'image en fond blanc

        
$width=imagesx($picture);
        
$height=imagesy($picture);

        
$chaine=base_64_2($chaine);
        
$taille_bloc=8;
        
$nbr_valeur_par_pixel=3;
        
$blocs=str_split($chaine,$taille_bloc);
        
$nbr_blocs=count($blocs);
        
$nbr_valeur_actuel=0;

        if(
$nbr_blocs>($width*$height*$nbr_valeur_par_pixel))
        {
            echo 
'error';exit();
        }

        for(
$y=0;$y<$height;$y++)
        {
            for(
$x=0;$x<$width;$x++)
            {
                
$pixel=imagecolorsforindex($picture,imagecolorat($picture,$x,$y));//on récupère les valeurs des trois couleurs du pixel
                
$alpha=$pixel['alpha'];//on sauvegarde le canal alpha
                
unset($pixel['alpha']);//on supprime le canal alpha inutilisé
/*
                echo '<pre>pixel de coordonnées x= '.$x.' et y= '.$y.'<br />Avant l\'operation : ';
                    print_r($pixel);
*/
                
foreach($pixel as $key=>$value)//on parcours les trois valeurs du pixel
                
{
                    
$nbr_valeur_actuel++;//on dit que l'on veut le bloc suivant
                    
if($nbr_valeur_actuel<=$nbr_blocs-1)//si il reste des données Ã  mettre
                    
{
                        
$pixel[$key]= base_convert($pixel[$key],10,2);//on converti la valeur en binaire
                        
while(strlen($pixel[$key])<8)//tant que la longueur de la chaine en binaire n'est pas Ã©gale Ã  un octet
                        
{
                            
$pixel[$key]='0'.$pixel[$key];//on rajoute un zéro sans valeur devant
                        
}

                        
$pixel[$key]= substr($pixel[$key],0, -($taille_bloc));//on supprime le nombre de caractère d'un bloc Ã  la valeur
                        
$pixel[$key]= $pixel[$key].$blocs[$nbr_valeur_actuel];//on remplit ce qu'on vient de supprimer
                        
$pixel[$key]=base_convert($pixel[$key],2,10);//on reconverti le résultat en décimale
                    
}
                }
                
//désormais on peut ajouter les valeurs de la chaine Ã  stéganographier dans le pixel

                
if($nbr_valeur_actuel<=$nbr_blocs-1)//si il reste des données Ã  mettre
                
{
                    
$lol=imagecolorallocatealpha(
                        
$picture,
                        
$pixel['red'],
                        
$pixel['green'],
                        
$pixel['blue'],
                        
$alpha
                    
);
                    
imagesetpixel ($picture,$x,$y,$lol);
                }
                else
                {
                    
imagesetpixel ($picture,$x,$y,imagecolorallocatealpha($picture,0,0,250,0));
                }
/*
                echo 'Après l\'operation :<br />';
                    print_r($pixel);
                echo '</pre>pixel terminé <br />';
*/
            
}
        }
        
header('Content-Type: image/png');
        
imagepng($picture);imagedestroy($picture);
        exit();
    }
    elseif(
$mode=='decache')
    {
        
//function steganographie($mode,$url_picture,$chaine,$taille_bloc=null,$count_blocs=null)

        //imagecreatefromstring($data);
        //$picture = imagecreatefrompng($url_picture);

        
$pictureimagecreatetruecolor(35,35);
        
imagealphablending($picture,true);
        
imagesavealpha($picturefalse);

        
$width=imagesx($picture);
        
$height=imagesy($picture);

        
$taille_bloc=$taille_bloc;
        
$count_blocs=$count_blocs;

        
$nbr_valeur_par_pixel=3;
    
        
$chaine="";
//        echo 'if('.$nbr_blocs.'>'.($width*$height*$nbr_valeur_par_pixel).')';
        
if($nbr_blocs>($width*$height*$nbr_valeur_par_pixel))
        {
            echo 
'error';exit();
        }

        for(
$y=0;$y<$height;$y++)
        {
            for(
$x=0;$x<$width;$x++)
            {
                
$pixel=imagecolorsforindex($picture,imagecolorat($picture,$x,$y));//on récupère les valeurs des trois couleurs du pixel
                
$alpha=$pixel['alpha'];//on sauvegarde le canal alpha
                
unset($pixel['alpha']);//on supprime le canal alpha inutilisé
/*
                echo '<pre>pixel de coordonnées x= '.$x.' et y= '.$y.'<br />Avant l\'operation : ';
                    print_r($pixel);
*/
                
foreach($pixel as $key=>$value)//on parcours les trois valeurs du pixel
                
{
                    if(
$nbr_valeur_actuel<=$nbr_blocs-1)//si il reste des données Ã  mettre
                    
{
                        
$pixel[$key]= base_convert($pixel[$key],10,2);//on converti la valeur en binaire
                        
while(strlen($pixel[$key])<8)//tant que la longueur de la chaine en binaire n'est pas Ã©gale Ã  un octet
                        
{
                            
$pixel[$key]='0'.$pixel[$key];//on rajoute un zéro sans valeur devant
                        
}

                        
$pixel[$key]=substr ($test, -($taille_bloc));//on recupere les PRECIEUX bits :p
                        
$pixel[$key]=base_convert($pixel[$key],2,10);//on reconverti le résultat en décimale
                    
}
                }
                
//désormais on peut ajouter les valeurs de la chaine Ã  stéganographier dans le pixel

                
if($nbr_valeur_actuel<=$nbr_blocs-1)//si il reste des données Ã  mettre
                
{
                    
$lol=imagecolorallocatealpha(
                        
$picture,
                        
$pixel['red'],
                        
$pixel['green'],
                        
$pixel['blue'],
                        
$alpha
                    
);
                    
imagesetpixel ($picture,$x,$y,$lol);
                }
                else
                {
                    
imagesetpixel ($picture,$x,$y,imagecolorallocatealpha($picture,0,0,250,0));
                }
/*
                echo 'Après l\'operation :<br />';
                    print_r($pixel);
                echo '</pre>pixel terminé <br />';
*/
            
}
        }
        
header('Content-Type: image/png');
        
imagepng($picture);
        
imagedestroy($picture);
        exit();
    }
    else
    {
        echo 
'error!';
    }
}


?>
<!DOCTYPE html>
<html>
    <head>
        <title>Système de chiffrement/Stéganographie de donnée sous la forme d'un array multi-dimensionnel</title>
        <meta charset="utf-8"/>

<!-- LE FICHIER CSS GLOBAL -->

        <style>
#progression_entier/*le systeme de progression en entier*/
{
    border-radius:10px;/*une bordure rond*/
    border:2px solid black;/*la bordure */
    width: 1000px;/*la largeur*/
    padding: 20px;/*les marges intérieur*/
}
#progression_variable/*l'id qui contient le niveau de progression*/
{
    display: none;/*on le cache*/
}
#progression_liste_title/*La liste des title des différentes Ã©tapes de la progression*/
{
    padding:10px;
    border-radius:10px 10px 0px 0px;
    background-color: black;
}
#progression_liste_title div/*Chaque Ã©tape de la progression*/
{
    vertical-align: middle;
    display: table-cell;
    text-align: center;
    border-radius:50px;
    border: 2px solid white;
    min-width: 100px;
    height: 100px;
    background-color: grey;
    padding: 10px;
}

#progression_liste_contenu/*La liste des contenu des Ã©tapes de la progression*/
{
    display: none;/*on la cache*/
}
#progression_affichage/*L'id que l'on vient remplir et modifier */
{
    border-radius: 0px 0px 10px 10px;
    background-color: grey;
    min-height: 300px;
    padding: 10px;
}

.array
{
    /*vide*/
}

#formulaire
{
    display: none;
}
#unique_button
{
    display: none;
}

        </style>

<!-- FIN DU FICHIER CSS -->

<!-- LE FICHIER JS GLOBAL -->

        <script>

var nombre_array=0;
var nombre_valeur=0;
var survol=0;
var tab=0;
var affichage="text";
var objet_temporaire=null;
var element_temporaire=null;

function init()//fonction activer au chargement de la page
{
    var array = document.querySelectorAll("#progression_liste_title .progression_title");/*on selectionne les Ã©léments qu'on veut*/
    var longueur=array.length;
    for(var abc=0;abc<longueur;abc++)/*on les parcours*/
    {
        /*on leur ajoute les Ã©vénèment qu'on veut*/
        array[abc].setAttribute('onmouseover',"progression_survol_start(this);");
        array[abc].setAttribute('onmouseout',"progression_survol_end();");
    }
    /*pareil pour lui*/
    document.getElementById('progression_button').setAttribute('onclick',"progression_avancer();");

    /*on met Ã  jour*/
    progression_maj();
}

function trouve_numero_element_liste_css(css,objet)
{
    var boucle=document.querySelectorAll(css);
    var longueur=boucle.length;
    for(var abc=0;abc<longueur;abc++)
    {
        if(boucle[abc]==objet)
        {
            return abc+1;
        }
    }
    return false;
}

function progression_maj()
{
    var progression=parseInt(document.getElementById('progression_variable').innerHTML);

    var array = document.querySelectorAll("#progression_liste_title .progression_title");
    var longueur = array.length;

    for(var a = 0; a < longueur; a++)
    {
        var numero=trouve_numero_element_liste_css('#progression_liste_title .progression_title',array[a]);
        if(numero<progression)
        {
            array[a].style.border="2px solid green";
        }
        if(numero==progression)
        {
            array[a].style.border="2px solid blue";
            document.getElementById("progression_affichage").innerHTML=array[a].innerHTML;
        }
        if(numero>progression)
        {
            array[a].style.border="2px solid white";
        }
    }
    if(survol!=null && survol!=0)
    {
        document.querySelectorAll("#progression_liste_title .progression_title")[survol-1].style.border="2px solid red";
        document.getElementById("progression_affichage").innerHTML=document.querySelectorAll("#progression_liste_contenu .progression_contenu")[survol-1].innerHTML;
    }
}

function progression_survol_start(objet)
{
    survol=trouve_numero_element_liste_css('#progression_liste_title .progression_title',objet);
    progression_maj();
}

function progression_survol_end()
{
    survol=0;
    progression_maj();
}

function progression_avancer()
{
    var progression=parseInt(document.getElementById('progression_variable').innerHTML)+1;

    if(document.querySelectorAll("#progression_liste_title .progression_title").length>=progression)
    {
        document.getElementById('progression_variable').innerHTML=progression;
        if(progression==2)//si on va Ã  la création
        {
            document.getElementById('iframe').setAttribute('src','data_absolue.php?mode=creation');//on modifie le src de l'iframe
        }
        if(progression==3)//si on va au formatage
        {
            document.getElementById('iframe').contentDocument.getElementById("div_creation").style.display='none';
            document.getElementById('iframe').contentDocument.getElementById("formulaire").style.display='block';
        }
        if(progression==4)//si on va au visionnement
        {
            //document.getElementById('iframe').contentDocument.getElementById('unique_button').onclick();
        }
        if(progression==5)//si on va au téléchargement
        {
            document.getElementById('iframe').contentDocument.getElementById('formulaire').submit();
        }
    }
    else
    {
        alert("Tu veux aller trop loin :p");
    }
    progression_maj();
}

function create_array(emplacement)
{
    var array = document.createElement('fieldset');
        array.setAttribute("class","array");

    array.appendChild(create_button_erase_element());
    array.appendChild(create_button_modif_affichage_data_element());
    array.appendChild(create_button_modif_temp_affichage_data_element());
    array.appendChild(create_button_rajoute_enfant_element());
    array.appendChild(create_button_rajoute_attribut_array());
    if(emplacement!="racine")
    {
        array.appendChild(create_button_transform_array_valeur());
    }

    array.appendChild(document.createElement('br'));
    array.appendChild(document.createElement('br'));

        var ul_1=document.createElement('ul');
        ul_1.setAttribute("class","debut_liste_attribut");
    array.appendChild(ul_1);

//  /!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\
        //rajoute_attribut(array,'name');ERROR
//  /!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\


        var truc=document.createElement('span');
        truc.setAttribute('class','fin_liste_attribut');
    array.appendChild(truc);

        var span_1 = document.createElement('span');
            span_1.setAttribute("class","debut_liste_key");
    array.appendChild(span_1);

        var truc2=document.createElement('span');
        truc2.setAttribute("class","fin_liste_key");
    array.appendChild(truc2);



        var span_2 = document.createElement('span');
            span_2.setAttribute("class","fin_array");
    array.appendChild(span_2);

    return array;
}

function create_enfant()
{
    var enfant=document.createElement('span');
        enfant.setAttribute('class','enfant');

    var enfant_1 = document.createElement('input');
        enfant_1.setAttribute('class', 'enfant_key');
        enfant_1.setAttribute('placeholder', 'key');
        enfant_1.setAttribute("type",affichage);
    enfant.appendChild(enfant_1);

    var enfant_2 = document.createElement('span');
        enfant_2.setAttribute('class', 'enfant_=');
        enfant_2.appendChild(document.createTextNode(' = '));
    enfant.appendChild(enfant_2);

    var enfant_3 = document.createElement('input');
        enfant_3.setAttribute('class', 'enfant_value');
        enfant_3.setAttribute('placeholder', 'value'+(nombre_valeur+1));
        enfant_3.setAttribute("type",affichage);
    enfant.appendChild(enfant_3);

    enfant.appendChild(create_button_erase_element());

    enfant.appendChild(create_button_transform_valeur_array());

    var enfant_5 = document.createElement('br');
    enfant.appendChild(enfant_5);

    return enfant;
}

function create_attribut(name_key)
{
    var attribut=document.createElement("li");
        attribut.setAttribute("class",'attribut');

        var input_1=document.createElement('input');
        input_1.setAttribute("class",'attribut_key');
        input_1.setAttribute("type",affichage);
        if(name_key!=null)
        {
                input_1.setAttribute('value',name_key);
                input_1.setAttribute('disabled','');
        }
    attribut.appendChild(input_1);

        var span_1=document.createElement("span");
            span_1.setAttribute("class","attribut_=");

            var text_1=document.createTextNode("=");
        span_1.appendChild(text_1);

    attribut.appendChild(span_1);

        var input_2=document.createElement('input');
        input_2.setAttribute("class",'attribut_value');
        input_2.setAttribute("type",affichage);
    attribut.appendChild(input_2);

        var span_2=document.createElement("span");
            span_2.setAttribute("class","attribut_fin");
    attribut.appendChild(span_2);

    return attribut;
}

function create_button_transform_array_valeur()
{
    var element = document.createElement("button");
        element.style.backgroundColor="orange";
        element.setAttribute('onclick','this.parentNode.parentNode.replaceChild(create_enfant(), this.parentNode);');
        element.innerHTML="Transformer en valeur";
    return element;
}

function create_button_transform_valeur_array()
{
    var element = document.createElement("button");
        element.style.backgroundColor="violet";
        element.setAttribute('onclick','this.parentNode.parentNode.replaceChild(create_array(), this.parentNode);');
        element.innerHTML="Transformer en array";
    return element;
}

function create_button_erase_element()
{
    var element = document.createElement("button");
        element.style.backgroundColor="red";
        element.setAttribute('onclick','this.parentNode.parentNode.removeChild(this.parentNode);');
        element.innerHTML="effacer cet Ã©lement";
    return element;
}

function create_button_modif_affichage_data_element()
{
    var element=document.createElement('button');
        element.style.backgroundColor="green";
        element.setAttribute("onclick","salut_all(this,this.parentNode);");
        element.innerHTML="Cacher les données";
    return element;
}

function create_button_modif_temp_affichage_data_element()
{
    var element=document.createElement('button');
        element.style.backgroundColor="blue";
        element.setAttribute("onclick","salut_temp(this,this.parentNode);");
        element.innerHTML="Changer l'affichage des données pendant 5 secondes";
    return element;
}

function create_button_rajoute_enfant_element()
{
    var element = document.createElement('button');
        element.style.backgroundColor="yellow";
        element.setAttribute("id","button_"+(nombre_array+1));
        element.setAttribute("onclick","rajoute_enfant(this.parentNode);");
        element.innerHTML="ajouter une valeur";
    return element;
}

function create_button_rajoute_attribut_array()
{
    var element=document.createElement('button');
        element.setAttribute('onclick','rajoute_attribut(this.parentNode);');
        element.innerHTML='rajouter un attribut Ã  cet array';
    return element;
}

function rajoute_array(id_objet)
{
    if(id_objet=='racine')
    {
        var array=create_array('racine');
    }
    else
    {
        var array=create_array();
    }
    nombre_array++;
    parent = document.getElementById(id_objet);
    parent.appendChild(array);
}

function rajoute_enfant(objet)
{
    nombre_valeur++;
    objet.querySelectorAll(".debut_liste_key")[0].appendChild(create_enfant());
}

function rajoute_attribut(objet,name_key)
{
    objet.querySelectorAll(".debut_liste_attribut")[0].appendChild(create_attribut(name_key));
}

function explore_new_total(objet)
{
    var donnees=document.getElementById('data');
    var contenu="";

    function add_text(texte)
    {
        var ajout=""
        for(var salut=0;salut<tab;salut++)
        {
            contenu+="\t";
        }
        contenu+=texte;
    }

    function explore_new(objet)
    {
        //add_text("debut d'une exploration\n");

        for(var abc=0;abc<objet.childNodes.length;abc++)
        {
            var element=objet.childNodes[abc];

            if(element.nodeType==3)
            {
                //add_text("text: "+element.nodeValue+"\n");
            }
            else
            {

                classe=element.getAttribute("class");

                essai_1=contenu+"<";
                valeur_1=essai_1.match(new RegExp('<','gi')).length-1;
    
                essai_2=contenu+">";
                valeur_2=essai_2.match(new RegExp('>','gi')).length-1;

                nombre_tab=valeur_1-valeur_2;

                if(classe=="fin_array"){nombre_tab--;}

                for(b=0,tab='';b<nombre_tab;b++)
                {
                    tab+='\t';
                }

                //if(classe!=null){contenu+=classe+"\n";}

                switch (classe)
                {
                    case 'array':
                        contenu+="[\n";
                    break;

                    case 'debut_liste_attribut':
                        contenu+="(";
                    break;

                    case 'attribut_key':
                        contenu+=element.value;
                    break;

                    case 'attribut_=':
                        contenu+='=';
                    break;

                    case 'attribut_value':
                        contenu+=element.value;
                    break;

                    case 'attribut_fin':
                        contenu+=',';
                    break;

                    case 'fin_liste_attribut':
                        contenu+=')\n';
                    break;

                    case 'debut_liste_key':
                        contenu+='{';
                    break;

                    case 'enfant_key':
                        contenu+='<'+element.value;
                    break;

                    case 'enfant_=':
                        contenu+='_';
                    break;

                    case 'enfant_value':
                        contenu+=element.value+'>';
                    break;

                    case 'fin_liste_key':
                        contenu+='}\n';
                    break;

                    case 'fin_array':
                        contenu+=']';
                    break;

                }
                if(element.childNodes.length>0)
                {
                    explore_new(element);
                }
                else
                {
                    //add_text("element : "+element.getAttribute("fonction")+"\n");
                }
            }
        }
        //add_text("fin d'une exploration\n");
    }
    explore_new(objet);
    donnees.innerHTML+=contenu;
    alert(contenu);
}

function salut_all(element,objet)
{
    if(affichage=="text")
    {
        var valeur="password";
        element.innerHTML="Réafficher les données";
    }
    if(affichage=="password")
    {
        var valeur="text";
        element.innerHTML="Cacher les données";
    }
    affichage=valeur;
    function salut(objet)
    {
        for(var abc=0;abc<objet.childNodes.length;abc++)
        {
            var element=objet.childNodes[abc];
            if(element.nodeType!=3)
            {
                classe=element.getAttribute("fonction");

                if(classe=="attribut_key"||classe=="attribut_value"||classe=="enfant_key"||classe=="enfant_value")
                {
                    element.setAttribute("type",valeur);
                }

                if(element.childNodes.length>0)
                {
                    salut(element);
                }
            }
        }
    }

    salut(objet);
}

function salut_temp(element,objet)
{
    if(objet_temporaire==null && element_temporaire==null)
    {
        objet_temporaire=objet;
        element_temporaire=element;

        salut_all(element,objet);

        element_temporaire.innerHTML="5";
        setTimeout('element_temporaire.innerHTML="4";',1000);
        setTimeout('element_temporaire.innerHTML="3";',2000);
        setTimeout('element_temporaire.innerHTML="2";',3000);
        setTimeout('element_temporaire.innerHTML="1";',4000);
        var text_eval="salut_all(element_temporaire,objet_temporaire);";
        text_eval+="element_temporaire.innerHTML=\"Changer l'affichage des données pendant 5 secondes\";";
        text_eval+="objet_temporaire=null;element_temporaire=null;";
        setTimeout(text_eval,5000);
    }
    else
    {
        alert("Attendez que le script de temporisation se termine !");
    }

}





        </script>

<!-- FIN DU FICHIER JS -->
    </head>
<?php
if(empty($_GET['mode']))
{
    
$_GET['mode']='';
    
?>
    <body onload="init();">
        <div id="page">
            <div id="progression_entier">

                <button id="progression_button">Cliquer ici pour avancer</button>

                <span id="progression_variable">1</span>

                <div id="progression_liste_title">
                    <div class="progression_title">Présentation</div>
                    <div class="progression_title">Création</div>
                    <div class="progression_title">Formatage</div>
                    <div class="progression_title">Visionage</div>
                    <div class="progression_title">Téléchargement</div>
                    <div class="progression_title">Upload</div>
                    <div class="progression_title">Téléchargement</div>
                </div>

                <div id="progression_liste_contenu">
                    <div class="progression_contenu">
                        Bienvenue dans ce script qui va vous permettre de chiffrer et/ou stéganographier vos données sous la forme d'un array multi-dimensionnel.<br />
                    </div>
                    <div class="progression_contenu">
                        Maintenant que la présentation est finie, on passe Ã  la création des données.<br />
                        Pour commencer, insérez des informations dans le formulaire, en créant des array, puis des valeurs Ã  l'intérieur,<br />
                        <!--
                            Vous pouvez aussi modifier un array en valeur ou l'inverse, voire le supprimer.<br />
                            Une fois terminé, choisisez les dernières options et valider le formulaire.<br />
                        -->
                        <br />
                        /!\ Attention les données contenant des : <br />
                            [ ] ( ) < > _ = , { <br />
                        peuvent encore posez des problèmes, ils seront résolu par la suite.<br />
                        <br />
                        <br />
                        Reste Ã  faire :
                        <ul>
                            <li>Ajout de la conversion array/valeur</li>
                            <li>Ajout de la suppression d'éléments</li>
                            <li></li>
                        </ul>
                    </div>
                    <div class="progression_contenu">
                        Les données sont prêtes, maintenant il faut les formater, cliquer sur suivant pour le faire.<br />
                    </div>
                    <div class="progression_contenu">
                        Voilà les données formatés :p<br />
                    </div>
                    <div class="progression_contenu">
                        VIDE /!\<br />
                    </div>
                    <div class="progression_contenu">
                        VIDE /!\<br />
                    </div>
                    <div class="progression_contenu">
                        VIDE /!\<br />
                    </div>

                </div>

                <div id="progression_affichage"></div>
            </div>

            <iframe id="iframe" src="data_absolue.php" width="1000px" height="500px"></iframe>
        </div>
    </body>
    <?php
}







elseif(
$_GET['mode']=="creation")
{
    
?>
    <button onclick="salut_all(this,document.getElementById('racine'));">Cliquer ici pour cacher les données</button>
    <button onclick="salut_temp(this,document.getElementById('racine'));">Changer l'affichage des données pendant 5 secondes</button>
<br />
    <button id="unique_buttona" onclick="explore_new_total(document.getElementById('racine'));">explore_new</button>
<br />
    <div id="div_creation">
        <button onclick="rajoute_array('racine');">Créer un array Ã  la racine</button>
        <div id="racine" ></div>
    </div>

    <br />
    <form id="formulaire" action="data_absolue.php?mode=telechargement_start" method="post">
        <textarea id="data" rows="15" cols="100" name="data"></textarea>
    </form>
    <?php
}





elseif(
$_GET['mode']=='telechargement_start')
{
    
ob_clean();
    if(!empty(
$_POST['data']))
    {
        
$tmpfname tempnam("/tmp""FOO");
        
$handle fopen($tmpfname"w");
        
fwrite($handle,$_POST['data']);
        
fwrite($handle,PHP_EOL);

        
$iv_size=mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_ECB);
        
$iv=mcrypt_create_iv($iv_size,MCRYPT_RAND);
        
$key_max=mcrypt_get_key_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_ECB);
        
fwrite($handle,'iv= '.$iv.PHP_EOL);
        
$key="http://n-pn.fr";
        
$key.=base_convert(hash('whirlpool',$key),16,36);
        
$key=substr($key,0,$key_max); 
        
fwrite($handle,'key= '.$key.PHP_EOL);
        
$crypt_text=mcrypt_encrypt(MCRYPT_RIJNDAEL_256,$key,$_POST['data'],MCRYPT_MODE_ECB,$iv);
        
fwrite($handle,'crypt= '.$crypt_text.PHP_EOL);
        
fwrite($handle,'crypt_encode= '.base64_encode($crypt_text).PHP_EOL);

        
fclose($handle);

        
header('Cache-control: private');
        
header('Content-Type: application/octet-stream');
        
header('Content-Length: '.filesize($tmpfname));
        
header('Content-Disposition: filename=test.txt');

        
$file fopen($tmpfname"r");
        while(!
feof($file))
        {
            print 
fread($file,filesize($tmpfname));
            
flush();
        }
        
fclose($file);

        
unlink($tmpfname);
    }
    else
    {
        echo 
'error, data null';
    }
    exit();
}
?>
</html> 
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre


Messages dans ce sujet
[Php] Chiffrement/Stéganographie de donnée sous la forme d'un array multi-dimension - par InstinctHack - 30-07-2012, 09h20
RE - par fr0g - 30-07-2012, 09h42
RE: Système de chiffrement.. - par Luxerails - 30-07-2012, 12h56

Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  Tester les sous-domaines d'un site cacaphonie 5 491 29-12-2014, 04h23
Dernier message: GreenBlood
  chercher des sous-chaines dans une chaine et dans l'ordre gruik 13 748 21-03-2014, 14h02
Dernier message: b0fh
  [Python] La stéganographie BMP Kiwazaru 1 256 02-07-2013, 23h29
Dernier message: oosfalte
  [JavaScript] Fonction Array Shirobi 18 1,116 29-10-2012, 22h36
Dernier message: InstinctHack
  [UNDEFINED] Chiffrement RSA plus Key ? InstinctHack 4 315 26-09-2012, 15h26
Dernier message: InstinctHack
  [Php] Chiffrement de données Apache9 15 1,171 11-07-2012, 18h38
Dernier message: Booster2ooo
  [Php] Toutes les méthodes pour faire une sauvegarde de la base de donnée CyberSee 0 134 05-07-2011, 19h42
Dernier message: CyberSee

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut