begin process at 2012 05 26 03:31:31
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité

 > AS3-ASCIITEXTENCRYPTOR - CRYPTAGE / DÉCRYPTAGE DE TEXTE ASCII (CS4)

AS3-ASCIITEXTENCRYPTOR - CRYPTAGE / DÉCRYPTAGE DE TEXTE ASCII (CS4)


 Information sur la source

Note :
5,5 / 10 - par 2 personnes
5,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Sécurité Classé sous :cryptage, encodage, ASCII, AS3, CS4 Niveau :Débutant Date de création :27/05/2010 Date de mise à jour :29/05/2010 00:28:32 Vu / téléchargé :3 790 / 208

Auteur : LapinouFouSAT13

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

 Description

Cliquez pour voir la capture en taille normale
Introduction à l'encodage de texte au format ASCII avec code commenté et fonctions flexible. Tout est dans la source que je vous laisse découvrir.

Source

  • masterKey.text = "VotreMasterKey"; /// Texte de la masterKey.
  • infosTexte.text = "Bienvenue,\nASCII Text Encryptor By JALF."; /// Texte Infos d'intro.
  • Texte.text = "Legi, Patres colendissimi, in Arabum monumentis, interrogatum Abdalam 1 Sarracenum, quid in hac quasi mundana scaena admirandum maxime spectaretur, nihil spectari homine admirabilius respondisse. ";
  • /// ^Texte Pour Essai.^
  • //////////////////////////////////////
  • // CRYPTAGE //
  • //////////////////////////////////////
  • function crypte(txt:String, clef:String) { /// Fontion cryptage avec en arguments le "txt" à coder et la "clef" (voir ligne 89).
  • clearInterval(attenteInterval); /// Arrêt de l'interval de 100ms.
  • TexteCode.text = ""; /// Effacement de la zone texte de destination.
  • ClefsCodage = new Array(); /// Declaration du tableau pour récupéré les variable ASCII de la "masterKey".
  • for (i=0; i<clef.length; i++) { /// Pour chaque caractére de la "clef" a partir du premier (0), et jusque qu'a ça derniére lette :
  • var lettreClef:String = clef.substr(i, 1); /// Je déclare une variable "lettreClef"qui recupére le dit caractére,
  • var codeLettreASCII:Number = lettreClef.charCodeAt(0); /// je déclare une variable qui récupére le code ASCII du caractére
  • ClefsCodage.push(codeLettreASCII); /// et enfin je place le code caractére ASCII dans mon tableau.
  • }
  • j = 0; /// Mise à Zero de "j".
  • for (i=0; i<=txt.length; i++) { /// Pour chaque caractére du "txt" a partir du premier (0), et jusque qu'a ça derniére lettre :
  • if ( i == txt.length){ /// Si "i" a ateint la derniére lettre,
  • infosTexte.text = "Codage terminé."; /// j'indique que l'encodage est terminé.
  • } else { /// Sinon,
  • var lettre:String = txt.substr(i, 1); /// je récupére le caractére dans une variable,
  • var codeASCII :String = lettre.charCodeAt(0); /// je récupére le code ASCII du dit caractére dans une autre variable,
  • var codeCrypter:Number = Number(codeASCII)+Number(ClefsCodage[j]); /// puis j'additionne le code ASCII du caractére "txt" et du caractére "clef" en cours.
  • j++; /// j'implemente "j" pour atteindre à la prochaine boucle le prochain caractére "clef".
  • if (j == (ClefsCodage.length-1)) {/// si "j" dépasse le nombre de caractére de la "clef".
  • j = 0; /// remise à zero de "j".
  • } /// Pour avoir un code caractére ASCII qui a toujours 3 chiffre je vérifie sont format :
  • if (codeCrypter<10) { /// si le code ASCII est inférieur a la 10ène ,
  • codeASCIIEncode = "00"+codeCrypter;/// je lui met deux "0" devant.
  • } else if (codeCrypter<100) { /// Si le code ASCII est inférieur à la 100ène ,
  • codeASCIIEncode = "0"+codeCrypter; /// je lui met un seul "0" devant.
  • } else { /// Sinon,
  • codeASCIIEncode = codeCrypter; /// alors.
  • }
  • TexteCode.appendText(codeASCIIEncode); /// Puis pour finir j'implémente au fur et à mesure, chaque code ASCII de 3 caractére dans le texte de destination.
  • }
  • }
  • };
  • //////////////////////////////////////
  • // DECRYPTAGE //
  • //////////////////////////////////////
  • function decrypte(txt:String, clef:String) { /// Fontion décryptage avec en arguments le "txt" à décoder et la "clef" (voir ligne 105).
  • clearInterval(attenteInterval); /// Arrêt de l'interval de 100ms.
  • Texte.text = ""; /// Effacement de la zone texte de destination.
  • ClefsCodage = new Array(); /// Declaration du tableau pour récupéré les variable ASCII de la "masterKey".
  • for (i=0; i<clef.length; i++) {/// Pour chaque caractére de la "clef" a partir du premier (0), et jusque qu'a ça derniére lette :
  • var lettreClef:String = clef.substr(i, 1); /// Je déclare une variable "lettreClef"qui recupére le dit caractére,
  • var codeLettreASCII:Number = lettreClef.charCodeAt(0); /// je déclare une variable qui récupére le code ASCII du caractére
  • ClefsCodage.push(codeLettreASCII); /// et enfin je place le code caractére ASCII dans mon tableau.
  • }
  • j = 0; /// Mise à Zero de "j".
  • for (i=0; i<=(txt.length); i += 3) { /// Pour chaque code ASCII de 3 chiffres a partir du premier (0), et jusqu'au qu'au dernier :
  • if ( i == (txt.length)){ /// Si "i" a ateint la derniére lettre,
  • infosTexte.text = "Décodage terminé."; /// j'indique que le decodage est terminé.
  • } else { /// Sinon,
  • var codeCrypter:String = txt.substr(i, 3); /// je récupére le code ASCII de 3 chiffre dans une variable,
  • var codeLettreDecrypter:Number = Number(codeCrypter)-Number(ClefsCodage[j]); /// je soustrait le code caractére ASCII et le code ASCII du caractére "clef" en cours pour récupéré le code réel,
  • var lettreDecrypter:String = String.fromCharCode(codeLettreDecrypter);/// je récupére le véritable caractére par son code ASCII,
  • Texte.appendText(lettreDecrypter); /// j'implémente le caractére récupéré dans la zone texte de destination,
  • j++; /// j'implemente "j" pour atteindre à la prochaine boucle le prochain caractére "clef".
  • if (j == (ClefsCodage .length-1)) { /// si "j" dépasse le nombre de caractére de la "clef".
  • j = 0; /// remise à zero de "j".
  • }
  • }
  • }
  • };
  • //////////////////////////////////////
  • // ACTIONS BT "Coder" //
  • //////////////////////////////////////
  • bt_coder.addEventListener(MouseEvent.CLICK, codeText); /// Ecouteur du bonton "Coder".
  • function codeText (e:MouseEvent):void { /// Fonction du bonton "Coder".
  • if ( masterKey.text == ""){ /// Si la "MasterKey" est vide,
  • infosTexte.text = 'Veuillez entrer une "MasterKey".' ; /// alors.
  • } else if ( Texte.text == ""){ /// Si le "Texte :" à coder est vide,
  • infosTexte.text = 'Veuillez entrer un texte à encoder dans "Texte : ".'; /// alors.
  • } else { /// Sinon,
  • infosTexte.text = "Codage en cours,\nVeuillez patienter..."; /// alors,
  • attenteInterval = setInterval(crypte, 100, Texte.text, masterKey.text); /// et lancement de la fonction de cryptage "crypte" après 100ms,
  • /// avec comme arguments le "txt" et la "clef".
  • }
  • };
  • //////////////////////////////////////
  • // ACTIONS BT "Coder" //
  • //////////////////////////////////////
  • bt_decoder.addEventListener(MouseEvent.CLICK, decodeText); /// Ecouteur du bonton "Décoder".
  • function decodeText (e:MouseEvent):void { /// Fonction du bonton "Décoder".
  • if ( masterKey.text == ""){ /// Si la "MasterKey" est vide,
  • infosTexte.text = 'Veuillez entrer une "MasterKey".'; /// alors.
  • } else if ( TexteCode.text == ""){ /// Si le "Texte :" à coder est vide,
  • infosTexte.text = 'Veuillez entrer un texte à décoder dans "Texte Codé : ".'; /// alors.
  • } else { /// Sinon,
  • infosTexte.text = "Décodage en cours,\nVeuillez patienter...";
  • attenteInterval = setInterval(decrypte, 100, TexteCode.text, masterKey.text); /// et lancement de la fonction de décryptage "decrypte" après 100ms,
  • /// avec comme arguments le "txt" et la "clef".
  • }
  • };
  • ////////////////////////////////////////////
  • // ACTIONS DES BTs "Effacer" //
  • ////////////////////////////////////////////
  • bt_efftexte.addEventListener(MouseEvent.CLICK, effTexte); /// Ecouteur du bonton "Texte :"/ "Effacer".
  • function effTexte (e:MouseEvent):void { /// Fonction du bonton "Texte :"/ "Effacer".
  • Texte.text = "";
  • };
  • bt_efftextecode.addEventListener(MouseEvent.CLICK, effTexteCode); /// Ecouteur du bonton "Texte Codé :"/ "Effacer".
  • function effTexteCode (e:MouseEvent):void { /// Fonction du bonton "Texte Codé :"/ "Effacer".
  • TexteCode.text = "";
  • };
masterKey.text = "VotreMasterKey"; /// Texte de la masterKey.
infosTexte.text = "Bienvenue,\nASCII Text Encryptor By JALF.";  /// Texte Infos d'intro.
Texte.text = "Legi, Patres colendissimi, in Arabum monumentis, interrogatum Abdalam 1  Sarracenum, quid in hac quasi mundana scaena admirandum maxime spectaretur, nihil spectari homine admirabilius respondisse. ";
 /// ^Texte Pour Essai.^
 
//////////////////////////////////////
//    		 CRYPTAGE  			  //
//////////////////////////////////////
function crypte(txt:String, clef:String) {	 			/// Fontion cryptage avec en arguments le "txt" à coder et la "clef" (voir ligne 89).
	clearInterval(attenteInterval);							/// Arrêt de l'interval de 100ms.
	TexteCode.text = "";												/// Effacement de la zone texte de destination.
	ClefsCodage = new Array();									/// Declaration du tableau pour récupéré les variable ASCII de la "masterKey".
	for (i=0; i<clef.length; i++) {									/// Pour chaque caractére de la "clef" a partir du premier (0), et jusque qu'a ça derniére lette :
		var lettreClef:String = clef.substr(i, 1);			/// Je déclare une variable "lettreClef"qui recupére le dit caractére,
		var codeLettreASCII:Number = lettreClef.charCodeAt(0);  /// je déclare une variable  qui récupére le code ASCII du caractére
		ClefsCodage.push(codeLettreASCII); 			/// et enfin je place le code caractére ASCII dans mon tableau.
	}
	j = 0;																			/// Mise à Zero de "j".
	for (i=0; i<=txt.length; i++) {								/// Pour chaque caractére du "txt" a partir du premier (0), et jusque qu'a ça derniére lettre :
		if ( i == txt.length){												/// Si "i" a ateint la derniére lettre,
			infosTexte.text = "Codage terminé.";		/// j'indique que l'encodage est terminé.
		} else {																	/// Sinon,
			var lettre:String  = txt.substr(i, 1);				/// je récupére le caractére dans une variable,
			var codeASCII :String = lettre.charCodeAt(0);	/// je récupére le code ASCII du dit caractére dans une autre variable,
			var codeCrypter:Number = Number(codeASCII)+Number(ClefsCodage[j]);	/// puis j'additionne le code  ASCII du caractére "txt" et du caractére "clef" en cours.
			j++;																		/// j'implemente "j" pour atteindre à la prochaine boucle le prochain caractére "clef".
			if (j == (ClefsCodage.length-1)) 					{/// si "j" dépasse le nombre de caractére de la "clef".
				j = 0;																/// remise à zero de "j".
			}																			/// Pour avoir un code caractére ASCII qui a toujours 3 chiffre je vérifie sont format :
			if (codeCrypter<10) {									/// si le code ASCII est inférieur a la 10ène ,
				codeASCIIEncode = "00"+codeCrypter;/// je lui met deux "0" devant.
			} else if (codeCrypter<100) {						/// Si le code ASCII est inférieur à la 100ène ,
				codeASCIIEncode = "0"+codeCrypter; /// je lui met un seul "0" devant.
			} else {																/// Sinon,
				codeASCIIEncode = codeCrypter;			/// alors.
			}
			TexteCode.appendText(codeASCIIEncode); /// Puis pour finir j'implémente au fur et à mesure, chaque code ASCII de 3 caractére dans le texte de destination.
		}
	}
};

//////////////////////////////////////
// 			 DECRYPTAGE  		//
//////////////////////////////////////
function decrypte(txt:String, clef:String) {			/// Fontion décryptage avec en arguments le "txt" à décoder et la "clef" (voir ligne 105).
	clearInterval(attenteInterval);							/// Arrêt de l'interval de 100ms.
	Texte.text  = "";														/// Effacement de la zone texte de destination.
	ClefsCodage = new Array();									/// Declaration du tableau pour récupéré les variable ASCII de la "masterKey".
	for (i=0; i<clef.length; i++) 									{/// Pour chaque caractére de la "clef" a partir du premier (0), et jusque qu'a ça derniére lette :
		var lettreClef:String = clef.substr(i, 1);			/// Je déclare une variable "lettreClef"qui recupére le dit caractére,
		var codeLettreASCII:Number = lettreClef.charCodeAt(0); /// je déclare une variable  qui récupére le code ASCII du caractére
		ClefsCodage.push(codeLettreASCII);			/// et enfin je place le code caractére ASCII dans mon tableau.
	}
	j = 0;																			/// Mise à Zero de "j".
	for (i=0; i<=(txt.length); i += 3) {							/// Pour chaque code ASCII de 3 chiffres a partir du premier (0), et jusqu'au qu'au dernier :
		if ( i == (txt.length)){											/// Si "i" a ateint la derniére lettre,
			infosTexte.text = "Décodage terminé.";	/// j'indique que le decodage est terminé.
		} else {																	/// Sinon,
			var codeCrypter:String = txt.substr(i, 3);	/// je récupére le code ASCII de 3 chiffre dans une variable,
			var codeLettreDecrypter:Number = Number(codeCrypter)-Number(ClefsCodage[j]); /// je soustrait le code caractére ASCII et le code ASCII du caractére "clef" en cours pour récupéré le code réel,
			var lettreDecrypter:String = String.fromCharCode(codeLettreDecrypter);/// je récupére le véritable caractére par son code ASCII,
			Texte.appendText(lettreDecrypter);		/// j'implémente le caractére récupéré dans la zone texte de destination,
			j++;																		/// j'implemente "j" pour atteindre à la prochaine boucle le prochain caractére "clef".
			if (j == (ClefsCodage .length-1)) {				/// si "j" dépasse le nombre de caractére de la "clef".
				j = 0;																/// remise à zero de "j".
			}
		}
	}
};

//////////////////////////////////////
//    ACTIONS BT "Coder" 	//
//////////////////////////////////////
bt_coder.addEventListener(MouseEvent.CLICK, codeText);  									/// Ecouteur du bonton  "Coder".
function codeText (e:MouseEvent):void {																		 /// Fonction du bonton  "Coder".
	if ( masterKey.text == ""){																								 /// Si la "MasterKey" est vide,
		infosTexte.text = 'Veuillez entrer une "MasterKey".' ;											/// alors.
	} else if ( Texte.text == ""){ 																								/// Si le "Texte :" à coder est vide,
		infosTexte.text = 'Veuillez entrer un texte à encoder dans "Texte : ".';			/// alors.
	} else { 																																	/// Sinon,
		infosTexte.text = "Codage en cours,\nVeuillez patienter...";								/// alors,
		attenteInterval = setInterval(crypte, 100, Texte.text, masterKey.text);		/// et lancement de la fonction de cryptage "crypte" après 100ms,
																																					/// avec comme arguments le  "txt" et la "clef".
	}
};

//////////////////////////////////////
//    ACTIONS BT "Coder" 	//
//////////////////////////////////////
bt_decoder.addEventListener(MouseEvent.CLICK, decodeText); 											 /// Ecouteur du bonton  "Décoder".
function decodeText (e:MouseEvent):void { 																					/// Fonction du bonton  "Décoder".
	if ( masterKey.text == ""){																												/// Si la "MasterKey" est vide,
		infosTexte.text = 'Veuillez entrer une "MasterKey".';															/// alors.
	} else if ( TexteCode.text == ""){																										/// Si le "Texte :" à coder est vide,
		infosTexte.text = 'Veuillez entrer un texte à décoder dans "Texte Codé : ".';				/// alors.
	} else { 																																					/// Sinon,
		infosTexte.text = "Décodage en cours,\nVeuillez patienter...";
		attenteInterval = setInterval(decrypte, 100, TexteCode.text, masterKey.text);			/// et lancement de la fonction de décryptage "decrypte" après 100ms,
																																									/// avec comme arguments le  "txt" et la "clef".
	}
};

////////////////////////////////////////////
//  ACTIONS DES BTs "Effacer" //
////////////////////////////////////////////
bt_efftexte.addEventListener(MouseEvent.CLICK, effTexte);						 /// Ecouteur du bonton  "Texte :"/ "Effacer".
function effTexte (e:MouseEvent):void {																 /// Fonction  du bonton  "Texte :"/ "Effacer".
	Texte.text = "";
};

bt_efftextecode.addEventListener(MouseEvent.CLICK, effTexteCode); 	/// Ecouteur  du bonton  "Texte Codé :"/ "Effacer".
function effTexteCode (e:MouseEvent):void { 													/// Fonction  du bonton  "Texte Codé :"/ "Effacer".
	TexteCode.text = "";
};

 Conclusion

Enjoy !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

29 mai 2010 00:28:34 :
Mise en accord du fichier .zip avec la "charte" du site.

 Sources du même auteur

Source avec Zip Source avec une capture SAT13 - FPSCONVERTORV2.1 (AS2) - CALCULATEUR BALISTIQUE ET T...

 Sources de la même categorie

Source avec Zip Source avec une capture LECTEUR DE CARTES À PUCE PC/SC par Legolas211
Source avec Zip Source avec une capture SPACECRYPTER UN CRYPTEUR DE FICHIER .TXT par OoVeRdOoZe
Source avec Zip Source avec une capture CHIFFREMENT XOR PLUS ROBUSTE par dheroux
Source avec Zip CRYPTAGE MARANT par alpha5
Source avec Zip ACCÈS PAR MOT DE PASSE À FEUILLE EXCEL par mimiZanzan

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture ERYPIANO V2.03 CS4 AS3 par VBtoTRASH
Source avec Zip Source avec une capture ERYSTREAMING V2.05 CS4 AS3 par VBtoTRASH
Source avec Zip Source avec une capture ERYSOKOBAN V1.02 CS4 AS3 par VBtoTRASH
Source avec Zip Source avec une capture ERYSKYPLAYER_MINI par VBtoTRASH
Source avec Zip Source avec une capture ERYSKYVIDÉO V1.05 & V2.00 par VBtoTRASH

Commentaires et avis

Commentaire de LapinouFouSAT13 le 27/05/2010 21:58:05

J'oublier de dire merci à "Goovy",
http://www.flashkod.com/codes/CRYPTEUR-DECRYPTEUR-TEXTE-AVEC-CLE-CRYPTAGE_33420.aspx.

Commentaire de PetiteNonne le 30/05/2010 14:03:46 10/10

Super bien commentée cette source et je la trouve bien conçue. Je ne suis pas assez douée en flash pour donnée un avis plus technique. J'aime cette façon de faire, c'est propre et bien ordonné. Je donne une bonne note.

Commentaire de blunt1337 le 03/06/2010 20:30:24 1/10

Slt,
quelque amélioration s'impose :
exemple les Numbers remplaçable par int, ou encore déclarer des variables en dehors des boucles, sans oublier :

var lettreClef:String = clef.substr(i, 1); // = clef.charAt(i) aussi ...
var codeLettreASCII:Number = lettreClef.charCodeAt(0);

remplaçable par :

var codeLettreASCII:uint = clef.charCodeAt(i);

Commentaire de pegase31 le 04/06/2010 07:55:42 administrateur CS

Juste une petite précision pour Blunt1337 : les uint n'apportent rien dans flash, il est donc préférable de rester sur des int et de ne les utiliser que lorsqu'ils sont réellement indispensables (dans un paramétrage, par exemple).

Sachant qu'ils sont aussi codés sur 32 bits et que leurs traitement est plus lent que les int directement.

Peg'

Commentaire de stefbuet le 04/06/2010 23:32:56

Ah! Ah! tu viens de contredire ton message du 14/08/2008 sur space survivor! J'avais raison :)
Pegase31:
c'est surtout une question de mémoire ... un uint est moins lourd qu'un int, qui l'est encore moins qu'un Number ... pour ce qui est de la rapidité, ce sont tout les 3 des chiffres, donc quesiton "rapidité", je doute qu'il y ait des différences.

Commentaire de pegase31 le 04/06/2010 23:56:49 administrateur CS

bah, il n'y a que les imbéciles qui ne changent pas d'avis. Mais le passage au java permet de mettre au clair ces soucis de mémoire sous flash. Et j'ai fait des tests depuis.

Peg'

Commentaire de stefbuet le 05/06/2010 00:05:45

c'est sûr.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Différence AS3 entre CS3 et CS4? [ par projer ] Salut :) J'ai acheté un bouquin pour me mettre à l'AS3 mais je viens de m'appercevoir qu'il ne parle que de Flash CS3 et pas du tout de CS4... D'où CS4/AS3 : [ par mouahaha ] Bonjour à tous !Je me suis récemment mis à l'AS3, et à Flash CS4 (je regrette d'ailleurs de ne pas m'y être mis plus tôt ^^), et je m'y fais assez bie [as2 ou as3] Comment reproduire cet effet ? [ par theo75 ] Bonjour, j'aimerais savoir comment reproduire un effet comme http://www.finish.tv/ , je n'arrive pas a créer un effet de zoom. Merci d'avance pour vos charger une photo en as3 [ par kalif ] bonjour a tous,je me demandais comment charger une photo en as3 et controller sa taille ? en as2 j'utilisais loadmovie(photo, clip); merci d'avance Loading en AS3 [ par anas1976gh ] Bonjours , j'ai un fichier swf très lourd et je veut faire la barre de Loading qui s'affiche en début pour le chargement , je sais que cette question AS3 - Appeler une fonction de la classe principale depuis une sous-classe [ par mouahaha ] Salut à tous !Voici un exemple du type de problème auquel je suis confronté depuis mon passage à l'AS3 :J'ai un .fla dont le seul code sert à créer un Mix de codes AS2 et AS3 [ par needbobi ] Bonjour,J'ai presque trouvé mon bonheur dans les sources livrées sur le site ... à un détail.J'ai un code pour lancer une vidéo en plein écran via un AS3 Get variable par URL - bien du changement depuis AS2... HELP!!!!!! [ par mikamika ] Salut a tous,J'essaie dernierement de developper un petit diaporama flash AS3.Ma page php affiche 3 fois le meme swf, mais est supposee appeller chacu [AS3] problème avec gotoAndPlay [ par Akkou07 ] Bonjour à tous,je suis débutant en AS3 et j'ai écumer les forums et didacticiel pour trouver une réponse à mon problème. J'en ai trouvé et je croyais


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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 : 0,749 sec (3)

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