Décrypter un Fichier Encrypté

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 132
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

Décrypter un Fichier Encrypté

#1

Message par Numeric »

Salut, :|
J'ai du mal à cerner les fonction de décryptage avec AutoIt...
1)Je voudrais encrypter les fichier.... _Crypt_EncryptFile()  :oops:
2)Mais aussi décrypter les fichiers encrypter en conservant leur extensions (Automatiquement) 8)
3)Les fichier est toujours illisible après décryptage _Crypt_DecryptFile :evil:
4)j'ai besoin d'aide :D
Modifié en dernier par Numeric le mer. 01 juin 2016 10:32, modifié 1 fois.
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: Décrypter un Fichier Encrypé

#2

Message par blacksoul305 »

Salut,

comment avez-vous procédé ? Parce que là sans code, c'est dur d'aider.
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 132
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

Re: Décrypter un Fichier Encrypé

#3

Message par Numeric »

OUI vous avez raison, j'ai pas le code explicite, mais celui suivant est un exemple, mon procédé est simple, je crée un autre bouton pour utiliser la fonction
_Crypt_DecryptFile() : en passant en paramètre aussi le path du fichier à décrypter :

Code : Tout sélectionner

#include <ComboConstants.au3>
#include <Crypt.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <StringConstants.au3>

Example()

Func Example()
	Local $iAlgorithm = $CALG_RC4

	Local $hGUI = GUICreate("File Encrypter", 425, 100)
	Local $idSourceInput = GUICtrlCreateInput("", 5, 5, 200, 20)
	Local $idSourceBrowse = GUICtrlCreateButton("...", 210, 5, 35, 20)

	Local $idDestinationInput = GUICtrlCreateInput("", 5, 30, 200, 20)
	Local $idDestinationBrowse = GUICtrlCreateButton("...", 210, 30, 35, 20)

	GUICtrlCreateLabel("Password:", 5, 60, 200, 20)
	Local $idPasswordInput = GUICtrlCreateInput("", 5, 75, 200, 20)

	Local $idCombo = GUICtrlCreateCombo("", 210, 75, 100, 20, $CBS_DROPDOWNLIST)
	GUICtrlSetData($idCombo, "3DES|AES (128bit)|AES (192bit)|AES (256bit)|DES|RC2|RC4", "RC4")
	Local $idEncrypt = GUICtrlCreateButton("Encrypt", 355, 70, 65, 25)
	GUISetState(@SW_SHOW, $hGUI)

	Local $sDestinationRead = "", $sFilePath = "", $sPasswordRead = "", $sSourceRead = ""
	While 1
		Switch GUIGetMsg()
			Case $GUI_EVENT_CLOSE
				ExitLoop

			Case $idSourceBrowse
				$sFilePath = FileOpenDialog("Select a file to encrypt.", "", "All files (*.*)") ; Select a file to encrypt.
				If @error Then
					ContinueLoop
				EndIf
				GUICtrlSetData($idSourceInput, $sFilePath) ; Set the inputbox with the filepath.

			Case $idDestinationBrowse
				$sFilePath = FileSaveDialog("Save the file as ...", "", "All files (*.*)") ; Select a file to save the encrypted data to.
				If @error Then
					ContinueLoop
				EndIf
				GUICtrlSetData($idDestinationInput, $sFilePath) ; Set the inputbox with the filepath.

			Case $idCombo ; Check when the combobox is selected and retrieve the correct algorithm.
				Switch GUICtrlRead($idCombo) ; Read the combobox selection.
					Case "3DES"
						$iAlgorithm = $CALG_3DES

					Case "AES (128bit)"
						$iAlgorithm = $CALG_AES_128

					Case "AES (192bit)"
						$iAlgorithm = $CALG_AES_192

					Case "AES (256bit)"
						$iAlgorithm = $CALG_AES_256

					Case "DES"
						$iAlgorithm = $CALG_DES

					Case "RC2"
						$iAlgorithm = $CALG_RC2

					Case "RC4"
						$iAlgorithm = $CALG_RC4

				EndSwitch

			Case $idEncrypt
				$sSourceRead = GUICtrlRead($idSourceInput) ; Read the source filepath input.
				$sDestinationRead = GUICtrlRead($idDestinationInput) ; Read the destination filepath input.
				$sPasswordRead = GUICtrlRead($idPasswordInput) ; Read the password input.
				If StringStripWS($sSourceRead, $STR_STRIPALL) <> "" And StringStripWS($sDestinationRead, $STR_STRIPALL) <> "" And StringStripWS($sPasswordRead, $STR_STRIPALL) <> "" And FileExists($sSourceRead) Then ; Check there is a file available to encrypt and a password has been set.
					If _Crypt_EncryptFile($sSourceRead, $sDestinationRead, $sPasswordRead, $iAlgorithm) Then ; Encrypt the file.
						MsgBox($MB_SYSTEMMODAL, "Success", "Operation succeeded.")
					Else
						Switch @error
							Case 1
								MsgBox($MB_SYSTEMMODAL, "Error", "Failed to create the key.")
							Case 2
								MsgBox($MB_SYSTEMMODAL, "Error", "Couldn't open the source file.")
							Case 3
								MsgBox($MB_SYSTEMMODAL, "Error", "Couldn't open the destination file.")
							Case 4 Or 5
								MsgBox($MB_SYSTEMMODAL, "Error", "Encryption error.")
						EndSwitch
					EndIf
				Else
					MsgBox($MB_SYSTEMMODAL, "Error", "Please ensure the relevant information has been entered correctly.")
				EndIf
		EndSwitch
	WEnd

	GUIDelete($hGUI) ; Delete the previous GUI and all controls.
EndFunc   ;==>Example
Modifié en dernier par Numeric le mer. 01 juin 2016 10:34, modifié 1 fois.
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: Décrypter un Fichier Encrypé

#4

Message par blacksoul305 »

Bonjour,

j'ai testé votre code en chiffrant un fichier MP3, ça a marché. Cela dit le fichier déchiffré demeurait illisible.

Code : Tout sélectionner

#include <Crypt.au3>

_Crypt_EncryptFile(@ScriptDir & "\test.mp3", @ScriptDir & "\test2.mp3", "lol", $CALG_RC4)
;~ _Crypt_DecryptFile(@ScriptDir & "\test2.mp3", @ScriptDir & "\test2.mp3", "lol", $CALG_RC4) ; fait planter le programme
_Crypt_DecryptFile(@ScriptDir & "\test2.mp3", @ScriptDir & "\test3.mp3", "lol", $CALG_RC4) ; marche à la perfection
Ainsi, je pense que la meilleure façon de chiffrer/déchiffrer un fichier est de changer de nom pour le fichier de destination, quitte à supprimer le fichier original et renommer le fichier chiffré.
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 132
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

Re: Décrypter un Fichier Encrypé

#5

Message par Numeric »

Effectivement, ça marche:mais comment peut t'on deviner l'algo? et y'a t-il le risque de perdre complètement le fichier si jamais on utilise pas le bon algo?
Ma remarque : des que je change l'algo de décryptage , le fichier devient illisible même si je replace le bon algo.....
Y 'a t'il une solution?
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: Décrypter un Fichier Encrypté  

#6

Message par blacksoul305 »

Re,

essayons de voir les choses sur un autre angle pour comprendre ce qu'il se passe.

Considérons les fichiers comme du simple texte, disons un roman, ou une nouvelle, peu importe. Ce texte a un sens, et s'il a un sens, c'est qu'il est écrit dans une langue (ici le nom de l'algorithme). Sauf que la langue est compliquée, puisque la même langue peut avoir des formes différentes. Les formes différentes se traduisent par une règle d'écriture différente définie par un mot (ici le mot de passe).
Maintenant, voyez le processus de chiffrement/déchiffrement comme une simple traduction vers un autre langue. Il évident que pour traduire le fichier de langue A à la langue B, il faut connaître la langue A et les règles qui la régissent pour pouvoir la comprendre. Et il en va de même pour l'étape inverse.

Prenons l'exemple suivant :

Code : Tout sélectionner

Texte initial : Je suis du texte.
traduireVersLangue : Répète syllabe.
grammaireLangue : Feu

---- processus de traduction --- 

Ajouter "Feu" à chaque mot." -> FeuJe Feusuis Feuun Feutexte.

Obtention du texte traduit : FeuJe Feusuis Feuun Feutexte.
Maintenant, si vous voulez retraduire la langue vers le français, vous êtes OBLIGÉ de vous souvenir à la fois de la langue mais aussi de sa grammaire.
Car si la ça peut paraître trivial, remplacez les caractères par de l'hexa et vous verrez que c'est assez compliqué de retrouver le texte sans en connaître les paramètres de chiffrement.

Je ne vais donc pas parler de méthodes avancées, mais retenez que pour déchiffrer un texte, il faut connaître l'algo et le mot de passe utilisé.

EDIT : Hop-là, je me permets un p'tit coup de pub pour recommander un livre super comme introduction à la cryptographie, présentant la cryptographie, ses enjeux etc... avec des p'tits exercices de cryptanalyse bref. Je l'ai emprunté à la BU et j'ai ADORÉ. Donc si jamais ça vous tente, je le recommande : Cryptologie & Codage : Comprendre les codes secrets - Pierre Vigoureux.
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 132
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

Re: Décrypter un Fichier Encrypté

#7

Message par Numeric »

Ok merci blacksoul305 , cette notion commence à s'éclaircir pour moi....
je révise un peu ma connaissance sur le sujet et je teste quelques exemples puis après je verrai si je n'ai aucune autre préoccupation majeure la dessus..
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric
Répondre