Page 1 sur 2
Read Write XOR Encoded String - V2.0.0
Publié : dim. 12/juin/2011 2:19
par Guimauve
Bonjour à tous,
Pas de quoi pour gagner un prix Nobel... Il s'agit simplement d'une micro librairie d'encodage de type XOR. Une version de Lecture et d'Écriture sur fichier binaire est également incluse.
Le code est compatible en mode Ascii et Unicode (En mode Unicode la chaîne encodé n'est pas lisible, possiblement que la valeur des caractères encodés sont trop grandes pour correspondre à des valeurs valides, cela ne gène en rien le fonctionnement.)
A+
Guimauve
Code : Tout sélectionner
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : Read/Write XOR Encoded String
; Nom du fichier : Read Write XOR Encoded String.pb
; Version du fichier : 1.0.0
; Programmation : OK
; Programmé par : Guimauve
; Date : 11-06-2011
; Mise à jour : 11-06-2011
; Code PureBasic : 4.60 Beta 3
; Plateforme : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Macro Looping(P_Number, P_Minimum, P_Maximum)
P_Number = P_Number + 1
If P_Number > P_Maximum
P_Number = P_Minimum
EndIf
EndMacro
Procedure.s XOREncodeString(Key.s, Text.s)
KeyLength = Len(Key)
TextLength = Len(Text)
For Index = 1 To TextLength
Looping(KeyIndex, 1, KeyLength)
Encoded.s = Encoded + Chr(Asc(Mid(Text, Index, 1)) ! ~Asc(Mid(Key, KeyIndex, 1)))
Next
ProcedureReturn Encoded
EndProcedure
Procedure WriteXOREncodedString(FileID.l, Key.s, Text.s)
KeyLength = Len(Key)
TextLength = Len(Text)
WriteLong(FileID, TextLength)
For Index = 1 To TextLength
Looping(KeyIndex, 1, KeyLength)
WriteCharacter(FileID, Asc(Mid(Text, Index, 1)) ! ~Asc(Mid(Key, KeyIndex, 1)))
Next
EndProcedure
Procedure.s ReadXOREncodedString(FileID.l, Key.s)
KeyLength = Len(Key)
TextLength = ReadLong(FileID)
For Index = 1 To TextLength
Looping(KeyIndex, 1, KeyLength)
Encoded.s = Encoded + Chr(ReadCharacter(FileID) ! ~Asc(Mid(Key, KeyIndex, 1)))
Next
ProcedureReturn Encoded
EndProcedure
Key.s = "PureBasic 4.60 Beta 3"
Text.s = "J'aime les déesses nordiques super sexy !"
Encoded.s = XOREncodeString(Key, Text)
Decoded.s = XOREncodeString(Key, Encoded)
Debug "; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
Debug "; Essai sur chaîne de caractère"
Debug ""
Debug Text
Debug Encoded
Debug Decoded
Debug ""
Debug "; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
Debug "; Essai sur fichier"
Debug "Original : " + Text
If CreateFile(0, "Test.Enc")
WriteXOREncodedString(0, Key, Text)
CloseFile(0)
EndIf
If ReadFile(1, "Test.Enc")
Debug "Depuis le fichier : " + ReadXOREncodedString(1, Key)
CloseFile(1)
DeleteFile("Test.Enc")
EndIf
; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<
Re: Read Write XOR Encoded String
Publié : dim. 12/juin/2011 10:24
par Ar-S
Merci pour ce partage, ça va surement servir.
Re: Read Write XOR Encoded String
Publié : dim. 12/juin/2011 18:41
par Kwai chang caine
Je ne sais pas si ça a un rapport avec l’opérateur XOR, c'est vrai on entend souvent ce nom de codage, apparemment c'est quelque chose souvent utilisé
Merci beaucoup GUIMAUVE pour ce partage.

Re: Read Write XOR Encoded String
Publié : lun. 13/juin/2011 20:47
par Guimauve
Bonjour à tous,
Une nouvelle version qui est un peu plus solide au point de vue de l'encodage dans le sens où chacun des caractères du texte est traité par toute la clé. Il est certain que plus la clé est longue, plus l'encodage est long. Je donne ici la version 2.0.0 et je laisse la version 1.0.0 dans mon premier message.
De plus, pour éviter un problème avec une clé vide, la clé par défaut est "XOREncode", pas très original mais bon au moins cela fonctionne.
A+
Guimauve
Code : Tout sélectionner
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : Read/Write XOR Encoded String
; Nom du fichier : Read Write XOR Encoded String.pb
; Version du fichier : 2.0.0
; Programmation : OK
; Programmé par : Guimauve
; Date : 11-06-2011
; Mise à jour : 13-06-2011
; Code PureBasic : 4.60
; Plateforme : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Procedure.s XOREncodeString(Key.s, Text.s)
If Key = ""
Key = "XOREncode"
EndIf
KeyLength = Len(Key)
TextLength = Len(Text)
For TextIndex = 1 To TextLength
For KeyIndex = 1 To KeyLength
Char.c = Asc(Mid(Text, TextIndex, 1)) ! ~Asc(Mid(Key, KeyIndex, 1))
Next
Encoded.s = Encoded + Chr(Char)
Next
ProcedureReturn Encoded
EndProcedure
Procedure WriteXOREncodedString(FileID.l, Key.s, Text.s)
If Key = ""
Key = "XOREncode"
EndIf
KeyLength = Len(Key)
TextLength = Len(Text)
WriteLong(FileID, TextLength)
For TextIndex = 1 To TextLength
For KeyIndex = 1 To KeyLength
Char.c = Asc(Mid(Text, TextIndex, 1)) ! ~Asc(Mid(Key, KeyIndex, 1))
Next
WriteCharacter(FileID, Char)
Next
EndProcedure
Procedure.s ReadXOREncodedString(FileID.l, Key.s)
If Key = ""
Key = "XOREncode"
EndIf
KeyLength = Len(Key)
TextLength = ReadLong(FileID)
For TextIndex = 1 To TextLength
CharEncoded.c = ReadCharacter(FileID)
For KeyIndex = 1 To KeyLength
Char.c = CharEncoded ! ~Asc(Mid(Key, KeyIndex, 1))
Next
Encoded.s = Encoded + Chr(Char)
Next
ProcedureReturn Encoded
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< !!! WARNING - YOU ARE NOW IN A TESTING ZONE - WARNING !!! <<<<<
; <<<<< !!! WARNING - THIS CODE SHOULD BE COMMENTED - WARNING !!! <<<<<
; <<<<< !!! WARNING - BEFORE THE FINAL COMPILATION. - WARNING !!! <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Key.s = "PureBasic 4.60 Beta 3"
Text.s = "J'aime les déesses nordiques super sexy !"
Encoded.s = XOREncodeString(Key, Text)
Decoded.s = XOREncodeString(Key, Encoded)
Debug "; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
Debug "; Essai sur chaine de caractère"
Debug ""
Debug Text
Debug Encoded
Debug Decoded
Debug ""
Debug "; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
Debug "; Essai sur fichier"
Debug "Texte Original : " + Text
If CreateFile(0, "Test.Enc")
WriteXOREncodedString(0, Key, Text)
CloseFile(0)
EndIf
If ReadFile(1, "Test.Enc")
Debug "Depuis le fichier : " + ReadXOREncodedString(1, Key)
CloseFile(1)
DeleteFile("Test.Enc")
EndIf
; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<
Re: Read Write XOR Encoded String - V2.0.0
Publié : ven. 10/févr./2012 18:14
par G-Rom
Désolé du déterrage , mais j'avais pas envi de me claqué l'écriture de ces fonctions , merci du partage guimauve.
Re: Read Write XOR Encoded String - V2.0.0
Publié : ven. 10/févr./2012 18:57
par Guimauve
Bonjour G-Rom,
Si je me souviens bien, mon code est basé sur celui-ci :
http://www.purearea.net/pb/CodeArchiv/E ... &Decode.pb
Mais je l'ai tellement modifié que les deux codes ne ressemble plus.
A+
Guimauve
Re: Read Write XOR Encoded String - V2.0.0
Publié : sam. 11/févr./2012 12:53
par Ulix
Boujour a tous
Juste une petite question :
La ligne "Debug Encoded" ne devrait-elle pas afficher le texte encoder ?
Or dans mes essais, elle est en clair ? Pourquoi ?
Le code marche t-il vraiment ?
Je suis sous Linux, est-il multiplaformes ?
Merci d'avance

Re: Read Write XOR Encoded String - V2.0.0
Publié : lun. 13/févr./2012 0:35
par G-Rom
on est tout les 3 sous linux alors , ici ca marche bien (x64) :
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Essai sur chaine de caractère
J'aime les déesses nordiques super sexy !
륡©ì ©¿ì?%©¿¿©¿ì¢£??¥?¹©¿ì¿¹?©?ì¿©?µìí
J'aime les déesses nordiques super sexy !
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Essai sur fichier
Texte Original : J'aime les déesses nordiques super sexy !
Depuis le fichier : J'aime les déesses nordiques super sexy !
Re: Read Write XOR Encoded String - V2.0.0
Publié : lun. 13/févr./2012 9:47
par Ar-S
Un autre système de cryptage bienvenu.
Merci

Re: Read Write XOR Encoded String - V2.0.0
Publié : lun. 13/févr./2012 16:04
par dayvid
cool, merci du partage Guimauve

Re: Read Write XOR Encoded String - V2.0.0
Publié : mar. 14/févr./2012 0:05
par Guimauve
Ar-S a écrit :Un autre système de cryptage bienvenu.
Merci

Ce n'est pas un système de cryptage hyper solide. Il permet d’empêcher un bot qui voudrait récupérer des chaînes caractères bien précise.
@Ulix
Si je me souviens bien j'ai testé le code sous Windows XP et Linux Ubuntu x64 et LinuxMint 12 x64 sans problème. J'ai pas fait de test sous MacOSX puisque je n'ai pas de machine de ce type.
Mais je m'explique mal comment le code présenté ci-haut ne fonctionne pas chez toi. Alors que tout les autres indique que ça fonctionne. Est-ce que tu as modifié l'exemple par hasard ? Si oui montre le pour que l'on puisse comprendre ce qui ce passe.
A+
Guimauve
Re: Read Write XOR Encoded String - V2.0.0
Publié : mar. 14/févr./2012 11:21
par Ulix
@Guimauve
Salut !
J'ai trouvé d'où vient l'erreur ! (erreur si l'on veut

)
Il s'agit d'une directive du compilateur, "option compilateur - Activer le support unicode".
Si l'option est activé, alors la ligne "Debug Encoded" est en clair, pas de codage du texte.
Fait le test, est dit moi si pour toi c'est aussi le cas, si la ligne "Debug Encoded" est en clair.
Je pense que pour que le codage soit complet,
il faut prendre en compte l'unicode, donc faire :
CompilerIf #PB_Compiler_Unicode
; Ici codage unicode
; a faire
CompilerElse
; Ici codage normal (ascii)
; codage existant
CompilerEndIf
Bref un truc de ce genre !
Merci d'avance

Re: Read Write XOR Encoded String - V2.0.0
Publié : mar. 14/févr./2012 12:44
par Guimauve
Bonjour Ulix,
Chez moi avec le code présenté ci-haut avec :
Linux Mint 12 x64 + Gnome-Shell
PureBasic 4.61 Beta1 x64
Voici ce que le débogueur affiche en mode Ascii :
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Essai sur chaîne de caractères
J'aime les déesses nordiques super sexy !
륡©ì ©¿ì?%©¿¿©¿ì¢£??¥?¹©¿ì¿¹?©?ì¿©?µìí
J'aime les déesses nordiques super sexy !
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Essai sur fichier
Texte Original : J'aime les déesses nordiques super sexy !
Depuis le fichier : J'aime les déesses nordiques super sexy !
Et en mode Unicode :
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Essai sur chaîne de caractères
J'aime les déesses nordiques super sexy !
J'aime les déesses nordiques super sexy !
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Essai sur fichier
Texte Original : J'aime les déesses nordiques super sexy !
Depuis le fichier : J'aime les déesses nordiques super sexy !
Comme on peut le voir, le débogueur n'affiche plus rien et pourtant il retourne bien la chaîne décodée à partir de la chaîne encodée. C'est peut être dû au fait que l'Éditeur PureBasic soit compilé en mode Ascii. Si non, la chaîne "Encoded" est bien encodé dans les deux cas de figure (Ascii et Unicode).
A+
Guimauve
Re: Read Write XOR Encoded String - V2.0.0
Publié : mar. 14/févr./2012 12:55
par Backup
C'est peut être dû au fait que l'Éditeur PureBasic soit compilé en mode Ascii. Si non, la chaîne "Encoded" est bien encodé dans les deux cas de figure (Ascii et Unicode).
je confirme !
car avec EPB en mode unicode ou ascii (seven 64x compilation x86/x64)
[12 :54 :17] ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
[12 :54 :17] ; Essai sur chaine de caractère
[12 :54 :17]
[12 :54 :17] J'aime les déesses nordiques super sexy !
[12 :54 :17] ニ→ᆳᆬᄀᄅ↓ᅠᄅ↓ᄄEᄅᄅ↓ᄁᆪᄒᄄᆬᄑᄍᄅ↓ᄍᄐᄅᄒ↓ᄅᄡᄉ↓■
[12 :54 :17] J'aime les déesses nordiques super sexy !
[12 :54 :17]
[12 :54 :17] ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
[12 :54 :17] ; Essai sur fichier
[12 :54 :17] Texte Original : J'aime les déesses nordiques super sexy !
[12 :54 :17] Depuis le fichier : J'aime les déesses nordiques super sexy !
ça marche
ps : ça marche aussi avec japbe

Re: Read Write XOR Encoded String - V2.0.0
Publié : mar. 14/févr./2012 14:11
par Ulix
Merci a vous deux, Guimauve et Dobro de m'avoir éclaire
Je commençais a me poser des questions sur mon système Linux - Ubuntu
Encore Merci !
@Dobro
Citation:
C'est peut être dû au fait que l'Éditeur PureBasic soit compilé en mode Ascii. Si non, la chaîne "Encoded" est bien encodé dans les deux cas de figure (Ascii et Unicode).
je confirme !
car avec EPB en mode unicode ou ascii (seven 64x compilation x86/x64)
Apparement EPB, affiche sans problême le "debug Encoded" !
Je regrette de plus en plus qu'il ne soit qu'en version Windows.
EPB m'a l'air sacrement bon. Je l'envie en version Linux.
Merci.