begin process at 2010 03 21 10:38:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité

 > STÉGANOGRAPHIE CRYPTÉE AVEC VIGENERE

STÉGANOGRAPHIE CRYPTÉE AVEC VIGENERE


 Information sur la source

Note :
Aucune note
Catégorie :Sécurité Source .NET ( DotNet ) Classé sous :Cryptage, Vigénère, Stéganographie, Classe, Image Niveau :Initié Date de création :12/10/2008 Date de mise à jour :12/10/2008 17:19:43 Vu / téléchargé :3 347 / 192

Auteur : Papymuzo

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

 Description

Cliquez pour voir la capture en taille normale
Stéganographie cryptée avec Vigénère (VB 2008)

Voici un petit programme sans prétention qui permet de cacher du texte dans une image.


Le fonctionnement :

L'utilisateur entre un texte qu'il veut cacher dans une image, qui est l'image de référence (Ref.bmp).
Ensuite, il choisit une Clef de cryptage unique, servant à crypter ET à décrypter le texte.

S'en suivent plusieurs étapes pour utiliser l'algorithme de Vigénère.
Ensuite, on inscrit un à un les pixels en fonction du code binaire du texte à crypter.
Le code parle de lui-même et explique mieux qu'un long discours ;)

Le programme utilise une image de référence de 8 pixels de haut sur 1000 de large (on inscrit le mot binaire de 8 bits de longueur sur "une rangée" maximale de 1000 mots, donc de 1000 caractères à crypter).
Une fois l'image enregistrée, vous verrez qu'elle est remplie de pixels rouges et blancs. Il faut savoir que les pixels rouge représentent un 1 et les pixels blancs un 0. Vous vous direz : "mais j'ai écrit un texte de 3 caractères, pourquoi l'image entière (de 1000 caractères) est écrite ?". Eh bien tout simplement parce que l'image de base est remplie de pixels "presque rouges" et "presque blancs" (donc invisible à l'oeil nu, mais pas par l'ordi ;)).


Composition de la source :

La source est composée de trois classes :
Une pour le cryptage, une pour le décryptage, et une pour la stéganographie elle-même, donc il est possible de les réutiliser dans des programmes annexes.

NOTE TRES IMPORTANTE : LES ACCENTS NE SONT PAS PRIS EN COMPTE DANS LE TEXTE A CRYPTER.

Source

  • Toute critique et tout commentaire est le bienvenu..
Toute critique et tout commentaire est le bienvenu..

 Conclusion

J'espère que ce petit programme vous donnera des idées, qu'il vous sera utile et qu'il vous permettra d'en apprendre un peu plus sur le vb.Net. Je veux que vous me critiquez (il faut qu'on me fasse des critiques si je veux me perfectionner), mais tout en restant poli et courtois ;) Les commentaires sont appréciés aussi :p

Vous en pensez quoi du fonctionnement même du programme ?
Le programme est-il bien codé ?
Comment l'améliorer ?
Est ce que ce procédé garantit une bonne sécurité à votre avis ?
Avez-vous des questions ?
Des suggestions ?
Voulez-vous avoir des explications ?

En espérant vous avoir été utile,
Papymuzo/kAm

 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

12 octobre 2008 17:19:44 :
Changement de la présentation du code, qui était pas tip top en fait

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) FILE RENAME - CHANGER LES NOMS DE VOS FICHIERS EN TOUTE SIMP...
Source avec Zip Source avec une capture Source .NET (Dotnet) KEYGEN - GÉNÉRATEUR DE CLEF AVEC PRIVILÈGES

 Sources de la même categorie

Source avec Zip Source avec une capture VPN LIFEGUARD - AUTORECONNEXION DE SON VPN ET BLOCAGE D'APPL... par Philippe734
Source avec Zip Source avec une capture Source .NET (Dotnet) APPARTENANCE AUX GROUPES DE SÉCURITÉ par legranche
Source avec Zip Source avec une capture Source .NET (Dotnet) REMOTE KEYLOGGER par elguevel
Source avec Zip PETITE IMPLEMENTATION DE L'ALGO SERVANT AU CRYPTAGE RSA par ccgousset
Source avec Zip SAUVEGARDES FICHIERS par claude440

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CALCULATRICE STÉGANOGRAPHIQUE par Christ_OFF
Source avec Zip Source avec une capture Source .NET (Dotnet) STÉGANOGRAPHIE, OU L'ART DE DISSIMULER par dheroux
Source avec Zip Source avec une capture OBTENEZ L'ICÔNE D'UN FICHIER GRÂCE À SON EXTENSION. par WariorProg
Source avec Zip Source avec une capture CLASSES POUR RECUPERER DES INFOS SUR LES FICHIERS BMP,GIF,PN... par violent_ken
Source avec Zip Source avec une capture STEGANOGRAPHIE AVEC ENCODAGE DE TEXTE par MalcolMZ

Commentaires et avis

Commentaire de Papymuzo le 12/10/2008 13:12:49

Faites moi des critiques que je puisse en apprendre ;)

Commentaire de MadM@tt le 12/10/2008 14:23:39

Si il était possible d'arranger un peu la présentation de la source ;-)

Commentaire de gillardg le 12/10/2008 21:00:37

salut,
ton interface est trop noire ( à mon gout) !
ce serait bien de pouvoir choisir une autre image de départ :))
si c'est un problème de couleurs tu pourrais réserver 2 couleurs :
analyse de l'image > si une des 2 couleurs modifier les pixels ensuite seulement accepter l'image.
parce que serieusement si on utilise toujours la même image c'est pas très pratique  :)
ou alors il faudrait au moins que ce soit une jolie image que l'on puisse l'inserer dans un site ( la c'est bien que ce soi toujours la même image :)

Commentaire de Papymuzo le 12/10/2008 21:12:26

Oui tu as raison Gillardg, mais je progresse petit à petit.
J'ai fait plusieurs versions de ce code. La première regardait chaque caractère (if caractere = "a", if caractere = "b",..).
Ensuite j'ai fait avec le code Ascii, puis j'ai inséré l'algorithme de Vigénère dans une troisième version.
La prochaine étape est de créer une image sur deux "lignes" (donc une image de 16*1000).
Une fois que j'aurai récupéré le principe, je pourrai l'appliquer à une image existante.

Mais le principal est de régler le problème des accents, qui vient du fait que le code Ascii est supérieur à 255 (allez savoir pourquoi !).

Il faut aussi savoir que ce petit programme est fait pour envoyer des images "truquées" à ses potes via msn par exemple, et que ce n'est pas un truc sérieux ^^
Mais j'avoue que l'image est bien moche !

Commentaire de gillardg le 12/10/2008 22:29:24

ça peut servir à des trucs tout à fait serieux :
un site internet ou chaque image contiendrais un message  :)))))

Commentaire de Papymuzo le 12/10/2008 22:31:13

Oui ^^
Mais a la base le programme était fait pour ma "satisfaction personnelle", parce que je voulais le faire depuis 1 an et que je me suis décidé à le faire.
D'où le manque de commentaires :s

Commentaire de NHenry le 20/10/2008 09:06:08

Quelques remarques constructives sur le code :
- vu dans Cryptage.vb :
Public Function Crypter(ByVal pTexteACrypter As String, ByVal pClef As String)

Où est le type de retour ?

Private _TexteCrypte
Le type ?

-Dans le même module :
Me._CodeAsciiLettreTexteCrypte = Me._CodeAsciiLettreLueTexteACrypter + Me._CodeAsciiLettreLueClef

Donc, tu ne gère pas les accents afin d'éviter une erreur de dépassement.
Me._CodeAsciiLettreTexteCrypte = (Me._CodeAsciiLettreLueTexteACrypter + Me._CodeAsciiLettreLueClef) mod 256
serait une solution

-Quelques variables pourraient être locale à la fonction plutôt qu'au module

-Tu pourrais faire un traitement avec de l'UTF8 ou 16 afin de faire une gestion plus propre des accents (à ce moment là, c'est bosser sur des Byte() au lieu des String.

-Tu mets les valeurs dans un tableau de chaine de caractères (1 élément reoprésentant 1 bit), il serait mieux (à mon gout) de bosser sur les masques et avec des opérateurs binaires.

Sinon bon code.

Juste une dernière chose, je te conseil de faire en sorte que l'on puisse choisir une image, afin de cacher réellement le message dedans.

Commentaire de Papymuzo le 20/10/2008 14:54:07

Pour te répondre, NHenry, je pense avoir trouvé la solution pour les accents.

Je pense faire ainsi :

If CodeAsciiLettreTexteCrypte > 255 then CodeAsciiLettreTexteCrypte -= 255

En fait, je fais un peu comme le cryptage masque jetable : j'enlève 255 si le code Ascii dépasse 255, et pour le décryptage j'ajoute 255 s'il est négatif (http://fr.wikipedia.org/wiki/Masque_jetable).

Je pense ainsi résoudre les problèmes d'accents (car j'ai remarqué qu'avec les accents, le code Ascii dépasse 255).

Pour le reste, je vais tenir compte de tes commentaires et lorsque j'aurai le temps, je vais essayer de faire une version mieux codée et permettant d'ouvrir l'image de notre choix.
Aussi, je pense faire une représentation graphique de la clef grâce à un système de cryptage "maison" ^^

Merci pour tes commentaires :)

Commentaire de NHenry le 20/10/2008 16:36:48

Bonjour,

If CodeAsciiLettreTexteCrypte > 255 then CodeAsciiLettreTexteCrypte -= 255
c'est bien long alors qu'avec
Me._CodeAsciiLettreTexteCrypte = cbyte((cint(Me._CodeAsciiLettreLueTexteACrypter) + Me._CodeAsciiLettreLueClef) mod 256)
c'est tout fait en une ligne.

Pour le décryptage, tu peux mettre +255 avec le Mod 256.

Un autre conseil, toujours mettre "Option Strict" et "Option Explicit" à On.

Commentaire de Papymuzo le 21/10/2008 17:13:03

Salut !

Il y a un petit "truc" qui me "dérange" dans le code que tu me proposes.
Si j'ai bien compris, le code AscII de la lettre une fois cryptée sera faite en fonction du reste de la division avec 256.
Mais il est possible d'avoir deux codes AscII ayant le même reste non ? Par exemple 5 mod 10 = 0 et 2 mod 10 = 0.

J'ai vu plusieurs cryptages qui utilisent le mod 256 mais je ne comprends pas comment ça marche, si tu pouvais m'éclairer ça serait super sympa :) ;)

Et pi sinon pour le "Private _TexteCrypte", je l'ai arrangé et j'ai mis un type String (c'était un oubli de ma part puisque je ne mets jamais de type Variant, mais merci de me l'avoir fait remarqué :)).

Sinon pour Option Strict, c'est une bonne idée mais je n'aime pas déclarer tous mes compteurs (i, j, k,..), je préfère les utiliser directement.

En te remerciant,

Bonne prog à toi :)
Encore merci pour tes commentaires qui m'aident à optimiser mon code :)

-Papy/kAm-

Commentaire de NHenry le 21/10/2008 20:49:26

Mod, c'est le reste de la division :
5 mod 10=5
2 mod 10=2
0 mod 10=0
10 mod 10=0

Variant n'existe pas en .NET, c'est Object (juste pour rappel).

For i as integer=0 to 10
=
dim i as integer
for i=0 to 10

Voilà.

Commentaire de Papymuzo le 21/10/2008 23:21:17

Tu vas me trouver un peu neuneu mais si 5 mod 10 = 5, alors 2 mod 10 = 8 ?

Je croyais que 5 mod 10 = 0 (car 10 = 2 * 5), et que 2 mod 10 = 0 (car 10 = 5 * 2). Par exemple on aurait 2 mod 11 = 1 (car 11 = 2 * 5 +1).

Commentaire de NHenry le 22/10/2008 08:50:21

Non, c'est le reste de la division.
Quand tu fais une division à la mais (sans les virgules), il te reste parfois un nombre :
25/10=2*10+5, donc il te reste 5.
Ou sous un autre format :
25|10
-20|2
5

25 mod 10=5
Je ne vois pas comment faire plus simple.

Commentaire de Papymuzo le 22/10/2008 15:10:42

Ah mais je viens de comprendre !

En fait pour moi, 2 mod 10 était le reste de la division de 10 par 2, donc 0.
Alors que 10 mod 2 = 2.

Autant pour moi ^^
Du coup je comprends comment sa marche !!! ^^

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

classe + dll + event [ par sebV ] Je suis en train de créer un dll de cryptage, et je voudrait avoir un evenement de retour pour savoir ou en est le cryptage, j'ai mis un Event dans la VBA image cryptage [ par pascal01 ] Salut,Je voudrais insérer une image dans un document word grâce à un pgm en VBA (générateur de document word). Pour des raisons de confidentialité, il Image en tableau d'octet [ par M51 ] Salut,j'ai une image (classe image) que je souhaite enregistrer dans un fichier binaire (qui contriendra d'autres infos que mon image). Pour cela je s Classe héritée de System.Drawing.Image [ par kyle ] Bonjour à tous,Voilà j'aimerais créer une classe héritée de la classe Image seulement voilà j'obtiens ce message d'erreur : La clase 'ImageX' doit déc Ajout d'image dans une base de donnes access via un controle de vb6 [ par DjSAD ] Bonjour tout le monde,je suis entrain de créer un projet en vb6, et je voufrai savoir comment ajouter des photos de personne dans une base de données Bug : Insertion Image + Lien [ par mortalino ] Help me please :( Je crack [ par scottmat ] Bonjours à tous, dans un richtextbox j'insère une image à l'aide du code suivant :  </ Recuperation d'un objet dans une arraylist [ par Lordthias ] Bonjour, question toute bête, je stocke des objets d'une classe que j'ai crée dans un arraylist. Pour l'instant rien de trés sorcier. &lt; br /&gt; C vb net 2005 : Comment initialiser des propriétés et lancer des sub d'une classe au démarrage ? [ par SAXOBIC ] Bonjour,j'ai créé une classe avec différentes propriétés et routines.j'aurais besoin  que certaines propriétés récupèrent des valeurs de routines de c image, lors du survol de la souris [VB6] [ par petchy ] bonsoirdans une Listview je récupère des données qui se trouve dans ma base ACCESSest ce possible ,lors du survol de la souris sur une données de ma L


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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,889 sec (3)

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