begin process at 2010 02 10 10:53:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité & Cryptage

 > CRYPTAGE/DÉCRYPTAGE ALÉATOIRE (ONE TIME PASSWORD)

CRYPTAGE/DÉCRYPTAGE ALÉATOIRE (ONE TIME PASSWORD)


 Information sur la source

Note :
5,67 / 10 - par 6 personnes
5,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Sécurité & Cryptage Niveau :Débutant Date de création :14/01/2005 Vu :12 168

Auteur : malik7934

Ecrire un message privé
Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note

 Description

Bah bah... il s'agit d'une technique que j'ai pondue ce matin (???! J'ai rien inventé, je sais!) pour crypter/décrypter un texte de manière à ce que ce ne soit jamais le même cryptage, contrairement à ce que fait un système comme SHA-1 ou MD5.
C'est tout bête:
- génération d'un seed
- msg XOR seed
et c'est tout!

Pour décrypter, on fait crypt XOR seed (forcément, avec XOR, l'avantage c'est que a XOR b XOR b ça fait a !)

Voilà! C'est pour les paranos du mail ou de la connexion à une bd, sinon je vois pas à quoi ça sert comme ça ;o)

Source

  • -- formulaire pour insérer le texte à crypter
  • <HTML><TITLE>CRYPTAGE SYMETRIQUE</TITLE>
  • <BODY bgcolor=#ccddee>
  • Seuls les caractères suivants sont acceptés: <B>ABCDEFGHIJKLMNOPQRSTUVWXYZ .,;-@</B><BR />
  • <FORM action="hex2.php" method="post">
  • <textarea name="texte" rows="20" cols="40"></textarea>
  • <input type="submit" name="valider" value="Valider">
  • </form>
  • </BODY></HTML>
  • -- fichier hex2.php pour crypter/décrypter
  • <?php
  • // Entrées de la fonction convert_dec: le message et le tableau
  • // qui retournera les positions dans l'alphabet
  • function convert_dec($msg,&$dec){
  • $size = strlen($msg);
  • $lettres = "ABCDEFGHIJKLMNOPQRSTUVWXYZ .,;-@";
  • for ($i=0;$i<$size;$i++){
  • switch(substr($msg,$i,1)){
  • case 'A': $dec[$i] = 0; break;
  • case 'B': $dec[$i] = 1; break;
  • case 'C': $dec[$i] = 2; break;
  • case 'D': $dec[$i] = 3; break;
  • case 'E': $dec[$i] = 4; break;
  • case 'F': $dec[$i] = 5; break;
  • case 'G': $dec[$i] = 6; break;
  • case 'H': $dec[$i] = 7; break;
  • case 'I': $dec[$i] = 8; break;
  • case 'J': $dec[$i] = 9; break;
  • case 'K': $dec[$i] =10; break;
  • case 'L': $dec[$i] =11; break;
  • case 'M': $dec[$i] =12; break;
  • case 'N': $dec[$i] =13; break;
  • case 'O': $dec[$i] =14; break;
  • case 'P': $dec[$i] =15; break;
  • case 'Q': $dec[$i] =16; break;
  • case 'R': $dec[$i] =17; break;
  • case 'S': $dec[$i] =18; break;
  • case 'T': $dec[$i] =19; break;
  • case 'U': $dec[$i] =20; break;
  • case 'V': $dec[$i] =21; break;
  • case 'W': $dec[$i] =22; break;
  • case 'X': $dec[$i] =23; break;
  • case 'Y': $dec[$i] =24; break;
  • case 'Z': $dec[$i] =25; break;
  • case ' ': $dec[$i] =26; break;
  • case '.': $dec[$i] =27; break;
  • case ',': $dec[$i] =28; break;
  • case ';': $dec[$i] =29; break;
  • case '-': $dec[$i] =30; break;
  • case '@': $dec[$i] =31; break;
  • }
  • }
  • }
  • // Entrées de la fonction convert_str: le tableau des positions dans l'alphabet,
  • // la taille du string et le string en retour
  • function convert_str($tab,$size,&$str){
  • $str = "";
  • for ($i=0;$i<$size;$i++){
  • switch($tab[$i]){
  • case '0' : $str .="A"; break;
  • case '1' : $str .="B"; break;
  • case '2' : $str .="C"; break;
  • case '3' : $str .="D"; break;
  • case '4' : $str .="E"; break;
  • case '5' : $str .="F"; break;
  • case '6' : $str .="G"; break;
  • case '7' : $str .="H"; break;
  • case '8' : $str .="I"; break;
  • case '9' : $str .="J"; break;
  • case '10': $str .="K"; break;
  • case '11': $str .="L"; break;
  • case '12': $str .="M"; break;
  • case '13': $str .="N"; break;
  • case '14': $str .="O"; break;
  • case '15': $str .="P"; break;
  • case '16': $str .="Q"; break;
  • case '17': $str .="R"; break;
  • case '18': $str .="S"; break;
  • case '19': $str .="T"; break;
  • case '20': $str .="U"; break;
  • case '21': $str .="V"; break;
  • case '22': $str .="W"; break;
  • case '23': $str .="X"; break;
  • case '24': $str .="Y"; break;
  • case '25': $str .="Z"; break;
  • case '26': $str .=" "; break;
  • case '27': $str .="."; break;
  • case '28': $str .=","; break;
  • case '29': $str .=";"; break;
  • case '30': $str .="-"; break;
  • case '31': $str .="@"; break;
  • }
  • }
  • }
  • // Fonction pour générer le seed
  • function generateSeed($size, &$seed){
  • $lettres = "ABCDEFGHIJKLMNOPQRSTUVWXYZ .,;-@";
  • $seed = "";
  • for ($i=0;$i<$size;$i++){
  • $seed .= substr($lettres, (md5((time()*rand()))%($size))%32, 1);
  • }
  • }
  • // Fonction de cryptage en utilisant XOR
  • function cryptXor($mssg,$seed,&$crypted){
  • $size = strlen($mssg);
  • convert_dec($mssg,$dec_mssg);
  • convert_dec($seed,$dec_seed);
  • // message XOR seed
  • for ($i=0;$i<$size;$i++){
  • $crypt[$i] = ($dec_mssg[$i] ^ $dec_seed[$i])%32;
  • }
  • //Conversion du résultat du XOR en décimal
  • convert_str($crypt,strlen($mssg),$crypted);
  • }
  • function decryptXor($crypted,$seed,&$decrypted){
  • $size=strlen($crypted);
  • convert_dec($crypted,$dec_crypted);
  • convert_dec($seed,$dec_seed);
  • for ($i=0;$i<$size;$i++){
  • $decrypt[$i] = ($dec_crypted[$i] ^ $dec_seed[$i])%32;
  • }
  • convert_str($decrypt,$size,$decrypted);
  • }
  • $mssg = $_POST['texte'];
  • $size = strlen($mssg);
  • generateSeed($size,$seed);
  • cryptXor($mssg,$seed,$crypted);
  • decryptXor($crypted,$seed,$decrypted);
  • echo "Message: ".$mssg."<BR /><BR />";
  • //echo "Seed : ".$seed."<BR />";
  • echo "Crypted: ".$crypted."<BR /><BR />";
  • echo "Decrypt: ".$decrypted."<BR />";
  • ?>
-- formulaire pour insérer le texte à crypter

<HTML><TITLE>CRYPTAGE SYMETRIQUE</TITLE>
<BODY bgcolor=#ccddee>
Seuls les caractères suivants sont acceptés: <B>ABCDEFGHIJKLMNOPQRSTUVWXYZ .,;-@</B><BR />
<FORM action="hex2.php" method="post">
<textarea name="texte" rows="20" cols="40"></textarea>
<input type="submit" name="valider" value="Valider">
</form>
</BODY></HTML>

-- fichier hex2.php pour crypter/décrypter

<?php

// Entrées de la fonction convert_dec: le message et le tableau 
// qui retournera les positions dans l'alphabet
function convert_dec($msg,&$dec){
	
	$size = strlen($msg);
	$lettres = "ABCDEFGHIJKLMNOPQRSTUVWXYZ .,;-@";
	
	for ($i=0;$i<$size;$i++){
		switch(substr($msg,$i,1)){
			case 'A': $dec[$i] = 0; break;
			case 'B': $dec[$i] = 1; break;
			case 'C': $dec[$i] = 2; break;
			case 'D': $dec[$i] = 3; break;
			case 'E': $dec[$i] = 4; break;
			case 'F': $dec[$i] = 5; break;
			case 'G': $dec[$i] = 6; break;
			case 'H': $dec[$i] = 7; break;
			case 'I': $dec[$i] = 8; break;
			case 'J': $dec[$i] = 9; break;
			case 'K': $dec[$i] =10; break;
			case 'L': $dec[$i] =11; break;
			case 'M': $dec[$i] =12; break;
			case 'N': $dec[$i] =13; break;
			case 'O': $dec[$i] =14; break;
			case 'P': $dec[$i] =15; break;
			case 'Q': $dec[$i] =16; break;
			case 'R': $dec[$i] =17; break;
			case 'S': $dec[$i] =18; break;
			case 'T': $dec[$i] =19; break;
			case 'U': $dec[$i] =20; break;
			case 'V': $dec[$i] =21; break;
			case 'W': $dec[$i] =22; break;
			case 'X': $dec[$i] =23; break;
			case 'Y': $dec[$i] =24; break;
			case 'Z': $dec[$i] =25; break;
			case ' ': $dec[$i] =26; break;
			case '.': $dec[$i] =27; break;
			case ',': $dec[$i] =28; break;
			case ';': $dec[$i] =29; break;
			case '-': $dec[$i] =30; break;
			case '@': $dec[$i] =31; break;
		}
	}
			
}

// Entrées de la fonction convert_str: le tableau des positions dans l'alphabet,
// la taille du string et le string en retour

function convert_str($tab,$size,&$str){
	
	$str = "";
	for ($i=0;$i<$size;$i++){
		switch($tab[$i]){
			case '0' : $str .="A"; break;
			case '1' : $str .="B"; break;
			case '2' : $str .="C"; break;
			case '3' : $str .="D"; break;
			case '4' : $str .="E"; break;
			case '5' : $str .="F"; break;
			case '6' : $str .="G"; break;
			case '7' : $str .="H"; break;
			case '8' : $str .="I"; break;
			case '9' : $str .="J"; break;
			case '10': $str .="K"; break;
			case '11': $str .="L"; break;
			case '12': $str .="M"; break;
			case '13': $str .="N"; break;
			case '14': $str .="O"; break;
			case '15': $str .="P"; break;
			case '16': $str .="Q"; break;
			case '17': $str .="R"; break;
			case '18': $str .="S"; break;
			case '19': $str .="T"; break;
			case '20': $str .="U"; break;
			case '21': $str .="V"; break;
			case '22': $str .="W"; break;
			case '23': $str .="X"; break;
			case '24': $str .="Y"; break;
			case '25': $str .="Z"; break;
			case '26': $str .=" "; break;
			case '27': $str .="."; break;
			case '28': $str .=","; break;
			case '29': $str .=";"; break;
			case '30': $str .="-"; break;
			case '31': $str .="@"; break;
		}
	}
}

// Fonction pour générer le seed

function generateSeed($size, &$seed){

	$lettres = "ABCDEFGHIJKLMNOPQRSTUVWXYZ .,;-@";
       
	$seed = "";
	for ($i=0;$i<$size;$i++){
	$seed .= substr($lettres, (md5((time()*rand()))%($size))%32, 1);
                    }
}

// Fonction de cryptage en utilisant XOR

function cryptXor($mssg,$seed,&$crypted){

	$size = strlen($mssg);
	convert_dec($mssg,$dec_mssg);
	convert_dec($seed,$dec_seed);
	
	// message XOR seed

	for ($i=0;$i<$size;$i++){
		$crypt[$i] = ($dec_mssg[$i] ^ $dec_seed[$i])%32;
	}
	
	//Conversion du résultat du XOR en décimal

	convert_str($crypt,strlen($mssg),$crypted);
}

function decryptXor($crypted,$seed,&$decrypted){

	$size=strlen($crypted);
	convert_dec($crypted,$dec_crypted);
	convert_dec($seed,$dec_seed);
	
	for ($i=0;$i<$size;$i++){
 		$decrypt[$i] = ($dec_crypted[$i] ^ $dec_seed[$i])%32;
	}

	convert_str($decrypt,$size,$decrypted);
}

$mssg = $_POST['texte'];
$size = strlen($mssg);

generateSeed($size,$seed);

cryptXor($mssg,$seed,$crypted);

decryptXor($crypted,$seed,$decrypted);

echo "Message: ".$mssg."<BR /><BR />";
//echo "Seed   : ".$seed."<BR />";
echo "Crypted: ".$crypted."<BR /><BR />";
echo "Decrypt: ".$decrypted."<BR />";
?>

 Conclusion

C'est basé sur l'alphabet ABCDEFGHIJKLMNOPQRSTUVWXYZ .,;-@

Un exemple d'exécution:

Pour le message "KENNST DU DAS LAND WO DIE ZITRONEN BLUHEN" (c'est bô, c'est de Johann Wolfgang von Goethe ;o)) on a une fois:
Message: KENNST DU DAS LAND WO DIE ZITRONEN BLUHEN
Crypted: KELNK Y -DIS-LANBKWYNDIAH-ITDOFENYFJTHDF
Decrypt: KENNST DU DAS LAND WO DIE ZITRONEN BLUHEN

Une autre fois:
Message: KENNST DU DAS LAND WO DIE ZITRONEN BLUHEN
Crypted: KEQGUT DU AEN@.YK,XWK QOA OITROHEM-CLUUNN
Decrypt: KENNST DU DAS LAND WO DIE ZITRONEN BLUHEN


 Sources du même auteur

Source avec Zip Source avec une capture EXÉCUTER UN SCRIPT AU-DELÀ DU TIMEOUT DE PHP
Source avec une capture SAUVEGARDE AUTOMATISÉE DE VOS BASES DE DONNÉES
SAVOIR QUI CONNAÎT QUI DANS UN FORUM/CHAT/...
Source avec une capture CACHER UNE SIGNATURE DANS UNE IMAGE
NOUVEAUX MESSAGES SUR YAHOO MAIL

 Sources de la même categorie

ALGORITHME DE CÉSAR SUR LA TABLE ASCII par Nementon
Source avec une capture CODEC D'OBFUSCATION DE LIEN HTML (PHP5) par masternico
GÉRER UN .HTPASSWD par coockiesch
Source avec Zip SERSESSIONS > CLASS PHP5 POUR GERER LES SESSIONS SIMPLEMENT par Astalavista
Source avec Zip PROTECTION CONTRE LES FAILLES CSRF : CROSS SITE REQUEST FORG... par aKheNathOn

Commentaires et avis

Commentaire de coucou747 le 14/01/2005 23:28:39

KENNST DU DAS LAND WO DIE ZITRONEN BLUHEN=connais tu le pays ou les citrons poussent ?

juste comme ça, il y a mieux de Goethe.... par exemple les souffrances du jeune Werthert, et tout un tas de poèmes, si tu veux pousser dans la culture allemande, tu peux aussi chercher Die Arzte (mach die augen zu, allein in der nacht, shrei nach liebe, revolution, mir ist langweillig ...), ou de Honner (Viva Colonia)

Enfin tout ça pour te dire que ton texte est court, et ici, le crypter ne présente aucun interet, et fort heureusemnet, on n'avais pas fait souvent de XOR ici, on avait fait cesar, enigma, DES, MD5 (ce qui n'est pas du cryptage), mais c'est tout, le meilleur d'entre tout ces algos c'est DES, ton XOR ne lui arrive pas à la cheville à part si ta clef fait plus de la taille du texte à crypter...

DES te bat aussi niveau vitesse et compréhention du code car il est implémenté dans php...

sinon, pour la crypto, t'as AES RSA et un autre truc assymétrique dont je n'ai que peu entendu parlé...

Commentaire de malik7934 le 15/01/2005 07:47:20

Hello...
- y a peut-être mieux de Goethe selon toi, c'est chacun ces goûts
- md5 est une fonction de hashage, pas de cryptage, , y a pas de soucis à ce sujet
- cesar, ça se base sur un simple décalage alphabetique, enigma sur des rotors et des connexions, c'est deux univers totalement différents (j'ai bossé sur Enigma, je dis pas ça au bol donc).
- DES n'est pas le meilleur algo de cryptage, il y en a des bien plus puissants
- DES est implémenté en php et n'a donc aucun intérêt niveau programmation tel quel
- AES, RSA etc sont effectivement d'autres algorithmes de cryptages, AES est symétrique (si ma mémoire est bonne), RSA pas

Alors oui, mon algorithme ici c'est du pipi de chat à coté de ces standards que sont DES, AES, RSA... mais je m'en fouts, mon but était de pondre quelque chose. De plus, mon one-time-password n'est pas cassable par un analyseur, alors tu comprendras que je trouve ta remarque un peu hautaine et ton "4" facile...

Commentaire de coucou747 le 15/01/2005 11:57:30

RSA assymétrique, AES symétrique, je sais tout ça, et DES n'est pas le meilleur des symétriqes, je ne crois aps avoir dit ça non plus, mais ça reste meilleur que ton XOR...

Quand à mon 4, accuses donc qqn d'autre, je ne t'ai pas noté... Cette personne était extrèmement lache car elle n'a pas cherché à te donner des amélioratrion possibles...

si tu veux de la doc sur la crypto, laisse moi ton mail...

Pour tes switchs, tu aurais pu faire une chaine et un for...

Commentaire de malik7934 le 15/01/2005 12:58:54

ok... pour la crypto, merci j'ai déjà de la doc. J'ai un cours de sécurité et cryptographie dans mon école (http://lasecwww.epfl.ch/).

Je sais bien que DES et compagnie sont mieux que mes XOR, ce ne seraient pas des standards sinon! J'ai voulu faire quelque chose par moi même, qui me suffise au niveau sécurité, c'est tout. Mais ça a pas lâire de plaire ;o) Tant pis, je ferai mieux pour ma prochaine soure !!!

See you

Commentaire de coucou747 le 15/01/2005 13:22:30

c'est pas que ça ne me plait pas (je dois adopter un système de crypto, mais je ne sais pas lequel choisir...), c'est juste que ça me semble peu efficace, quand on saitque meteofrance avait en 2000 un ordi qui faisait seulement 10* moins de calculs en 48 h qu'il n'en faut pour casser une clef RSA 155... quand on sait que l'ordi de meteofrance aparaissait à l'époque en  en 47 ème position des orids les plus puissants de la planète et que tout les ans, le meilleur ordi est battu.... Quand on sait que le RSA 155 est interdit et que l'on doit faire du RSA 128 au maximum... Enfin voila, si on peut casser facilement du RSA 155 de nos jours, que doit on faire du XOR ??

L'avantage du XOR, c'est qu'il n'a pas de taille de clef prédéfinie, donc on peut faire un XOR avec une iamge ISO de 4 GO, ce qui pourra crypter quasi nimporte quel fichier avec une sécuritée maximale...

seul problème : le passage de la clef...

On ne passe pas facilement une clef de 4GO...

et si tu le fait en local, ça veut dire que tu as la clef sur toi...

Enfin voila, c'est irréalisable...

C'est pour cette raison que j'aimes bien les principes de RSA... et tout ce qui est assymétrique...

Il existe une autre méthode puissante de crypto assymétrique, avec des équations très jolies en "bules" si tu connais, je suis prenneur, je n'ai pas de doc sur celle la, et j'en aurais vraiment besoin pour choisir ma méthode... (il existe des choses qui ne devraint ni êtres lues, ni êtres vécues...) J'ai vraiment besoin de crypter, je ne peux passer un fichier de 4GO sur le net, donc j'ai vraiment besoin de cette doc...

Je dois ajouter : je n'ai pas mis de note, et il vaut plus que 4 pour te prouver que je n'ai pas mis de notes, je met 8/10...

Commentaire de malik7934 le 15/01/2005 13:35:25

Il est clair que le problème avec les XOR se "déplasse", puisque'il faut enxuite passer la clé. C'est pour cela qu'il existe des valises diplomatiques d'ailleurs ;o)
Si je trouve qqch sur les équations en bulles, je te contacte!

Commentaire de coucou747 le 15/01/2005 14:21:31

re
http://tpe.crypto.free.fr/index.html?http://tpe.crypto.free.fr/contenu/clef_publique/courbes_elliptiques/?page=test1
J'ai trouvé avec un énorme coup de chance, parmi tout mes fichiers persos, et tout mes MO de log amsn, j'ai trouvé le bon !

si ça t'interesse on peut faire équipe... Pour programmer ça soit en PHP soit en CPP (la méthode php peut être aisée pour débuter ce domaine, puis C++ pour faire qqch de puissant...)

Commentaire de malik7934 le 15/01/2005 17:02:06

Ben visiblement, les courbes elliptiques ça te plaît ;o)

Vas voir http://lasecwww.epfl.ch/php_code/publications/search.php?ref=Mon02 et http://lasecwww.epfl.ch/php_code/publications/search.php?ref=LMVV04, ça peut te servir!

Merci pour l'offre de prog, mais j'ai mes examens finaux sous peu, alors je ne suis pas dispo avant mars. Mais si ça te dérange pas d'attendre jusque là, pourquoi pas! En attendant, il faudrait un cahier des charges... peut-être qu'on devrait poursuivre en privé la discussion ;o)

Commentaire de coucou747 le 15/01/2005 17:09:51

Ah mars... Je ne peux pas me permetre de ne pas crypter en attendant... Le rsa c'est joli, mais comme je l'ai expliqué plus haut...

Le symétrique... bah je ne peux pas envoyer les clefs...

Commentaire de malik7934 le 15/01/2005 17:16:38

ouais... ça doit pas être si dur de trouver une implémentation de ECC ou un soft... regarde libtomcrypt par exemple (c'est une bonne librairie en c que tu connais sûrement déjà) http://libtomcrypt.org ... il l'implémente!

Commentaire de malik7934 le 15/01/2005 17:18:18

et http://www.certicom.com/index.php aussi pour la doc!

Commentaire de np78 le 17/01/2005 10:26:19

bonjour,

Ce script est super pour moi car , j'ai besoin de crypter un texte en php , et de le décrypter le texte lu par une application VB (il faut donc que je puisse convertir cette fonction en vb).

Donc, je sais qu'il existe la biblio mcrypt en php, mais pour avoir la même chose en vb, c'est plus dur a trouver.

Mon besoin est simple :
- j'ai une appli vb qui interroge une page html
- Cette page est générer par un script php qui affiche des données cryptées
- les données sont lues par l'appli
- puis l'appli les décrypte.

Voila merci pour le script, je vais l'essayer, de plus il est facile a convertir en vb.


Nicolas

Commentaire de darkchyper le 30/12/2005 12:10:49

huum je dois avouer que je n'ai pas vraiment pris le temps de lire  toute cette guguerre  "intélectuelle" mais j'aurais une question bete ( surtout) et méchante:
si j'utilise ton script pour crypter  un mot de pass a mettre dans une base de données je peux ensuite le décrypter ??? plus tard, par exemple lors d'un login ?
si c'est le cas ton script m'intéresse pas mal
slut

Commentaire de malik7934 le 30/12/2005 12:20:50

si tu stockes le seed et en bricolant un peu... oui!

Commentaire de SliWoiD le 10/01/2006 10:17:05

Je n'ai lu que le début des réponses mais je me permets simplement de signaler qu'à chaque situation correspond un cryptage en conquéquence... Si vous ne voulez pas que votre petite soeur de 4 ans décrypte des conneries que vous protégez, un cryptage façon César suffira :D
Le cryptage XOR, j'en ai fait un en VB parce que je voulais crypter n'importe quel type de fichier (1Mo à 20Go on va imaginer... ^^) et parce que le projet devait être présenté à un examen sans être "trop important" en terme de lignes de code.
Maintenant, félicitation pour ton code, il est intéressant ! Je met 8/10

Commentaire de BelphegorCLC le 04/02/2006 19:48:05

Code intéressant, c'est sur que ca n'a rien à voir avec les cryptages DES et compagnie mais pour quelqu'un qui souhaite un petit cryptage sans avoir à installer l'extension mcrypt c'est très utile.

Je met donc 8/10 à cette source ;)

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,950 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales