Connexion

Récupérer mon mot de passe

Qui est en ligne ?
Il y a en tout 0 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 0 Invité :: 1 Moteur de recherche

Aucun

Le record du nombre d'utilisateurs en ligne est de 21 le Jeu 17 Oct 2013, 13:40
Derniers sujets
Flux RSS



Flag Counter
Partenaires

[Bat] Filtre stéganographique Ultra performant

Voir le sujet précédent Voir le sujet suivant Aller en bas

[Bat] Filtre stéganographique Ultra performant

Message par Sachadee le Mar 12 Nov 2013, 17:50

Voici une des possibilité d'application de ce projet.

J'ai fais un filtre sténographique assez puissant puisque qu'il joue sur plusieurs niveau de difficulté :

- une mappe de caractère avec ordre définissable par le codeur
- une relation pseudo hexa de cette mappe également définissable par le codeur.
- Un positionnement à choix sur l'un des 4 bits d'un pixels (R,G,B,transparence)
- Une définition par le codeur de l'espacement entre chaque lettres cachés dans l'image.

Donc bonne chance à ceux qui veulent tenter un décodage, En plus selon l'image et l'algorithme on peut rendre un code absolument indétectable
Je le démontrerai plus loin.

Le traitement ce fait de nouveau sur un testpixel.txt generer par PNG2HEX.EXE.

Vous pouvez l'utiliser telquel avec les options par défaut ou analyser un peu le code pour changer les variables pour personaliser votre
codification.


C'est vraiment très pusissant et ce n'est là qu'un exemple très basique de traitement on peu compliqué la chose, sans problème.


Stegano.bat :

Code:
::://
::://Algorithme steganographique
::://SachaDee (C) 2013
::://

@echo off
setlocal enabledelayedexpansion
IF EXIST PIXELSECRET.TXT DEL PIXELSECRET.TXT

:::CREATION DE LA MAP ASCII PERSONALISEE
:::ICI ON A TOUT DANS L'ORDRE MAIS ON PEUT FAIRE COMME ON VEUT
:::ICI JE NE TRAITE PAS LES MAJUSCULE (PAS VRAIMENT IMPORTANT POUR UN MESSAGE SECRET)
:::L'ESPACE SERA TRAITÉ PAR FF (MON CHOIX)

set $MAP=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 #

:::CREATION DE LA CORRESPONDANCE HEXA BIDON
:::ICI VOUS METTEZ DES VALEURS QUI DEVRONT ETRE LES MEME POUR LE DECODADGE
:::CES VALEURS DOIVENT ETRE COMPRISE ENTRE 00 et FF (HEXA)
:::MAIS N"ONT AUCUNE RELATION (ASCII->DEC->HEXA)
:::C'EST EN FAIT LA PREMIERE CLE DE L'ALGORITHME
:::C'EST POUR COMPLIQUER LE TRAVAIL DE LA NSA

SET $SEC=AF AA  BC FB DA 0C EC 0A 0B BC 01 10 5B 3F DD CC DC AC BD AD BE 0E 1E 9F 8A 7C FF

:::DONC LA LETTE A SERA CODÉE PAR AF, LE B PAR AA, LE C PAR BC, etc...(CORRESPONDANCE ENTRE $MAP ET $SEC)


:::MAINTENANT ON PEUT DETERMINER L'ESPACE (EN PIXEL) ENTRE CHAQUE LETTRE DANS
:::L'IMAGE ICI ON VA DIRE 15 (DONC TOUS LES 15 PIXELS ON AURA UNE LETTRE CACHE)

set $SWITCHCODE=15

:::ET ENFIN SUR QUEL BIT ON VA PLACER LA LETTRE (R G B A-> 1 2 3 4)
:::ICI SUR LE VERT 2

set $BIT=2

:::
:::A PATIR DE LÀ ON PEUT CONSTRUIR NOTRE ALGORITHME
:::

set $var=
set $l=

set /p $var=Entrez votre message secret :
if ["%$var%"]==[""] set $var=ON ENMERDE LA NSA
echo Traitement de : %$var%

:::Decomposition de la liste (test=t e s t)

:test
if defined $var (                    
                 set $CHAR=%$var:~0,1%
                 IF "!$CHAR!"==" " set $CHAR=#
                 set $l=!$l! !$CHAR!
                 set $var=%$var:~1%
                 goto:test)
set $l=!$l:~1!

ECHO !$L!



:::TRANSFORMATION EN EQUIVALENCE PSEUDO HEXA

for %%a in (!$l!) do (CALL:EQUIVAL %%a
                      SET $LN=!$LN! !$equival!)


:::ON RAJOUTE EGALEMENT UN CARCATERE DE FIN A NOTRE LISTE
:::POUR QUE LORS DE LA RECONSTRUCTION DU MESSAGE ON SACHE
:::QUE C'EST LA FIN DU MESSAGE SECRET MOI (ICI EE)

SET $LN=!$LN:~1! EE

ECHO [!$L!]
ECHO [!$LN!]


:::LA RECUPERATION (DANS TESTPIXEL.TXT) ET CODAGE DES PIXELS (DANS PIXELSECRET.TXT)

SET $C=0
SET $TESTSWITCHCODE=!$SWITCHCODE!
for %%A in (!$LN!) do (
                       FOR /F "DELIMS=" %%B IN (TESTPIXEL.TXT) DO (
                                                                   IF !$C! EQU !$TESTSWITCHCODE! (
                                                                      SET $PT=%%B
                                                                      IF !$BIT! EQU 1 (SET $PT=%%A!$PT:~2,6!)
                                                                      IF !$BIT! EQU 2 (SET $PT=!$PT:~0,2!%%A!$PT:~4,4!)
                                                                      IF !$BIT! EQU 3 (SET $PT=!$PT:~0,4!%%A!$PT:~6,8!)
                                                                      IF !$BIT! EQU 4 (SET $PT=!$PT:~0,6!%%A!)
                                                                      ECHO.!$PT!>>PIXELSECRET.TXT)
                                                                    IF NOT !$C! EQU !$TESTSWITCHCODE! (                                                                                             
                                                                                              ECHO.%%B>>PIXELSECRET.TXT)
                                                                    SET /A $C+=1)
                       MOVE PIXELSECRET.TXT TESTPIXEL.TXT
                       SET /a $TESTSWITCHCODE+=!$SWITCHCODE!
                       SET $C=0)
                                                              
EXIT /B

:::LA FONCTION (:EQUIVAL) QUI NOUS RETEOURNE
:::L'EQUIVALENCE ENRE NOS 2 LISTES IL NOUS SUFFIRA D'INVERSER LES LISTE
:::POUR RECONSTRUIRE NOTRE CODE

::::FONCTION EQUIVAL [LETTRE] RETOURNE LA PSEUDO VALEUR HEXA DEFINI DANS $SEC
::::RETOURNE $EQUIVAL
::::USAGE CALL:EQUIVAL LETTRE

:EQUIVAL

SET $CAR=%~1
SET $C=1
FOR %%A in (%$MAP%) do (ECHO %%A %$car%
                        SET $C1=1
                        IF /I %$CAR%==%%A FOR %%B in (%$SEC%) DO (ECHO ----%%B !$c! !$c1!
                                                                  IF !$C! EQU !$C1! (SET $EQUIVAL=%%B
                                                                                     EXIT /B)
                                                                  SET /A $C1+=1)
                        SET /A $C+=1)
Tutoriel D'utilisation :


Nous allon préalablement choisir une image qui va contenir le message, Pour vous démontrer son fonctionnement je vais reprendre ma petite mire de 20x20 que j'avais créé pour m'aider lors de la création de mes commandes.

C'est clair que pour un cas réel on va prendre une image plus grande plus colorée, Ou mieux pour cacher un code une image ou chaque pixel est generé aléatoirement ce qui rendra le décodage impossible, pour celui qui n'a pas la bonne clé.



Elle est très pratique car lorsqu'on l'agrandie on voit facilement les défaut ou changement lors de l'application d'un filtre par exemple.

ici en 1442% on voit bien chaque pixel 20x20 (400 pixel au total)



donc je vais passer mire.jpg dans PNG2HEXE.EXE pour génerer le testpixel.txt avec les 400 valeurs Hexa de nos pixels.

ensuite j'éxecute stégano.bat, qui va me demander le message secret à emboutir dans l'image, on rentre le texte et ENTER.

voilà il va générer un autre testpixel.txt avec les valeurs Hexa modifiées.

Attention le temps de traitement suivant la taille du message et la taille de l'image peuvent être longue, car pour chaque lettre
il reparcours chaque ligne de tous le fichiers. Donc il faut être patient. Mais si c'est pour un message important et ultra secret
ça en vaut la peine.

Ensuite vous reconstruiser l'image grâce à HEX2PNG.exe et voilà le résultat.

Je vous montre ici les différences visible dans le cas d'une mire pour vous donnér une idée concrete du fonctionnement.
Dans la rálité on travaillera sur des choses plus complexes ou aléatoire pour rendre le déchiffrement impossible (et lorsque je dis impossible je pèse mes mots).

Donc voici la mire de 20x20 pixels avec le code "ON ENMERDE LA NSA" emboutie dans l'image à savoir une lettre tous les 15 pixels sur le bits vert.
avec des pseudo valeurs HEXA défini par le codeur.

agrandie de nouveau à 1442% :



Vous pouvez ainsi matèrialiser le fonctionnement.

AU CONTRAIRE D'AUTRES PROGRAMMES QUI NE PEUVENT TRAVAILLER QUE SUR LE HEADER DE L'IMAGE, ICI ON EST LIBRE DE TRAVAILLER
SUR N'IMPORTE QUEL BITS DE N'IMPORTE QUEL PIXEL AVEC LA CODIFICATION DE NOTRE CHOIX. ET CERISE SUR LE GÂTEAU LA TAILLE
DU FICHIER DE SORTIE EST IDENTIQUE...

 


L'algorithme de décodage va suivre.....

VOICI L'ALGORITHME DE DECODAGE :

Attention les mappes doivent être les même que pour le codage le $BIT et $SWITCHCODE également.
Si vous n'avez rien touché dans la partie codification vous pouvez l'utiliser tel quel.

Il vous suffite de passer l'image codée dans PNG2HEX.EXE et lancer decode.bat il vous sortira le code en retour.

Decode.bat
Code:
::://
::://Algorithme steganographique
::://RECONSTRUCTION
::://SachaDee (C) 2013
::://

@echo off
setlocal enabledelayedexpansion

:DECODE

::::La reconstructuin depuis testpixel.txt genere par PNG2HEX.TXT sur l'image contenant le code

::::LES LISTES DE CONXTRUCTION MAIS INVERSÈS ($SEC est devenu $MAP)

set $SEC=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 #
SET $MAP=AF AA BC FB DA 0C EC 0A 0B BC 01 10 5B 3F DD CC DC AC BD AD BE 0E 1E 9F 8A 7C FF
set $SWITCHCODE=15
set $BIT=2

:::ON VA RECUPERER DANS UNE LISTE TOUS LES $SWITCHCODE LE $BIT BIT DES pixelS CODÉ JUSQU'À AVOIR EE (FIN DU CODE)

SET $C=0
SET $TESTSWITCHCODE=%$SWITCHCODE%

FOR /F "DELIMS=" %%A IN (TESTPIXEL.TXT) DO (IF !$C! EQU !$TESTSWITCHCODE! (
                                                                           SET $PT=%%A
                                                                           IF %$BIT% EQU 1 (SET $PT=!$PT:~0,2!)
                                                                           IF %$BIT% EQU 2 (SET $PT=!$PT:~2,2!)
                                                                           IF %$BIT% EQU 3 (SET $PT=!$PT:~4,2!)
                                                                           IF %$BIT% EQU 4 (SET $PT=!$PT:~6,2!)
                                                                           IF /I !$PT!==EE (GOTO:INVERSE)
                                                                           SET $LR=!$LR! !$PT!
                                                                           SET /A $TESTSWITCHCODE+=!$SWITCHCODE!)
                                             SET /A $C+=1)

:INVERSE
ECHO !$LR!

FOR %%A IN (!$LR!) DO (CALL:EQUIVAL %%A
                       IF $EQUIVAL==# SET $EQUIVAL=
                      SET $SECRET=!$SECRET!!$EQUIVAL!)

ECHO LE MESSAGE SECRET EST : !$SECRET!

EXIT /B                                                            


:::LA FONCTION (:EQUIVAL) QUI NOUS RETEOURNE
:::L'EQUIVALENCE ENRE NOS 2 LISTES IL NOUS SUFFIRA D'INVERSER LES LISTE
:::POUR RECONSTRUIRE NOTRE CODE

::::FONCTION EQUIVAL [LETTRE] RETOURNE LA PSEUDO VALEUR HEXA DEFINI DANS $SEC
::::RETOURNE $EQUIVAL
::::USAGE CALL:EQUIVAL LETTRE


:EQUIVAL

SET $CAR=%~1
SET $C=1
FOR %%A in (%$MAP%) do (ECHO %%A %$car%
                        SET $C1=1
                        IF /I %$CAR%==%%A FOR %%B in (%$SEC%) DO (ECHO ----%%B !$c! !$c1!
                                                                  IF !$C! EQU !$C1! (SET $EQUIVAL=%%B
                                                                                     EXIT /B)
                                                                  SET /A $C1+=1)
                        SET /A $C+=1)
à vous de nous faire des algorithmes de fou....

On peut également caher plusieurs messages dans la même image, Il suffit de traiter chaque message sur une position ou un bits différent. Ce qui
complique encore les choses pour le décodage.

LA STEGANOGRAPHIE EST ENFIN LIBERER POUR LE BAT.....

A+

_________________
@SachaDee
avatar
Sachadee
Admin
Admin

Mensagens : 591
Data de inscrição : 04/06/2013

http://bbat.forumeiro.com

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum