il est en cours. pas prêt d'être terminé pour le moment.
Annonce
Réduire
Aucune annonce.
Algo de crypto by me
Réduire
X
-
-
Bon, je suis pas un boss en crypto mais comme les solutions les plus simples sont souvent les meilleurs que je ne rien faire de compliqués dans ce domaines je peut toujours essayer.
Si j'ai bien compris tu voudrais que i(=image=caractères spéciaux) ne soit pas visible dans l'algo c'est bien ça?Are hackers a threat? The degree of threat presented by any conduct, whether legal or illegal, depends on the actions and intent of the individual and the harm they cause.
Kevin Mitnick
Commentaire
-
Si je comprend bien, tu cherches à chiffrer une image avec un algorithme récursif (x=...x...) en modifiant les pixels de l'image, tout en rajoutant tes informations à transférer. Une sorte de stéganographie polymorphe. Est-ce que c'est ça ?
Sinon ton post est assez énigmatique, j'essaye tant bien que mal de déchiffrer =D
Edit : Ou non explication 2 possible. Tu cherches à avoir un algorithme qui soit à la fois l'information chiffré et l'algorithme de déchiffrement. En soit un fichier contenant l'algorithme qui va lui permettre de se déchiffrer lui même pour afficher le message (texte ou image).
Alors j'ai bon ou pas ?Dernière modification par Yarflam, 02 décembre 2012, 00h32.
Commentaire
-
1] Non.
2] Non.
En fait, c'est tout simple, je ne me suis peut-être pas exprimé au mieux.
Pour faire clair :
===MACHINE A===
1. Ouverture logiciel de chiffrement.
2. Edition de l'input (du bon français, donc ; ou tout autre langue, bref).
3. Conversion de l'input en [texte <--> caractères non ASCII] = output.
4. Envoi de l'output à un destinataire.
===MACHINE B===
1. Ouverture logiciel de déchiffrement.
2. Conversion du message chiffré en message déchiffré
Tout simple (à ce stade de conception de l'algo ; il n'y a aucun échange de clé pour le moment, rien).
Donc, ma seule question ici est :
- Comment faire en sorte que le logiciel (développé en C) puisse convertir "lettre alphabet arabe = A" en "lettre alphabet spécial = SYMBOLE_1" sans que celui-ci puisse être "rétroingéniéré". Car, en effet, si on accède au source, on voit que "A = $" et il ne suffit plus qu'à générer la table de conversion pour faire sauter l'algo. En gros, ce que je dis est que la faille est située dans le logiciel qui pourrait être RE. Et ma question est donc :
- Comment obfusquer de façon efficace mon code source afin qu'il ne soit pas désobfuscable ?
Et accessoirement une autre question :
- Comment faire de ces symboles non-ASCII des symboles lisibles sur n'importe quelle machine SANS l'aide du logiciel. En gros, créer un "nouvel alphabet" conçu de caractères qui ne sont, actuellement, non pris en charge par la norme en vigueur. Je suis quasi sûr qu'il y a possibilité de le faire, mais je ne vois pas comment.
Commentaire
-
C'est aussi clair que de l'eau de roche, merci.
Finalement ma deuxième explication possible permet de répondre à ta question.
Tu connais le MD5 ... forcément ! Le principe se base sur l'intégrité du contenu. Une petite modification est le code est totalement différent.
Imagines maintenant un code de ce genre (php) :
Code:$variable="SdUIkilPSlldIDjSjhfdKO97sjds7sds24421cdsd978"; eval(decrypt($variable)); function decrypt($data) { ... }
La seconde ligne exécute la variable après l'avoir déchiffré.
Et la dernière ligne est la fonction qui déchiffre le message.
Un hacker va modifier ce code par :
Code:$variable="SdUIkilPSlldIDjSjhfdKO97sjds7sds24421cdsd978"; echo decrypt($variable); function decrypt($data) { ... }
Sauf qu'avec une technique pour sauvegarder l'intégrité, on ne pourra pas modifier le code source.
Cette valeur d'intégrité n'est d'autre que le hash du code source que l'on injecte pour décrypter la $variable chiffré. (le hash est la clef de chiffrement/déchiffrement)
Après il faut trouver des techniques pour éviter qu'un exécutable extérieur s'occupe de récupérer le hash et modifie la fonction decrypt().
Mais le principe est là. De toutes manières ces murs ne seront jamais blindés. Le RE est quelque chose d'inusable et de passionnant.
La deuxième question est un peux plus compliqué. Peut-être en créant sa propre police de caractère. Ou sa fonction d'affichage (afficher l'image 'c1.jpg' si X == 10)
J'espère t'avoir aidé et je vais tenter de le mettre en pratique avec ce concept qui me turlupine depuis déjà un bon moment
Edit : le problème que pose cette algorithme est l'équivalence entre le hash et la clef de déchiffrement. Si on modifie le code chiffré après avoir trouvé le hash, le hash ne vaut plus rien. Le md5 n'est donc pas une solution (trop facile à trouver en plus).
Edit 2 : j’approfondis encore mon idée, mais pour le moment je remarque qu'on peut toujours copier le code source dans un autre fichier ou dans une autre variable pour déchiffrer le message. A réfléchir ... Ça semble vain toutefois même si c'est la meilleur solution que j'ai trouvé.Dernière modification par Yarflam, 03 décembre 2012, 02h53.
Commentaire
-
Comme tu dis... "ça semble vain". Et, moi aussi, plus je me penche sur la question, plus je me dis qu'il est bien plus simple de RE plutôt que de faire un source non-"REable". Le md5... bon, tu t'es répondu dans ton premier edit.
Hormis ce foutu problème de faire un soft non "REable", la question 2 me paraît, quant à elle, solvable. Non pas "afficher l'image", mais créer son propre charset. J'avais déjà un peu creusé cela, et... je n'étais pas parvenu après quelques recherches à trouver ce que je souhaitais... Mais je pense ne pas avoir suffisamment poussé mes recherches.
Commentaire
-
Ça devrai te plaire : http://cyberzoide.developpez.com/securite/obfuscation/
Bien sur, ce sont des pseudo-solutions mais j'ai quelques idées qui traînent.
Commentaire
-
Je crois être déjà passé par là^^ Mais merci quand même je vais le (re)lire.
Commentaire
-
J'ai essayé d'obfusquer un code python, pour qu'il soit difficilement RE avec un logiciel.
Si tu veux essayer de le casser (et trouver le flag ) : http://pastebin.com/Wraijv1jDernière modification par Yarflam, 09 décembre 2012, 06h39.
Commentaire
-
Non ce n'est pas encore la bonne obfuscation ... trop classique et trop instable malgré les variables.
Le script suivant le désobfusque sans problème :
Code:def desobf(data): while data.index('exec') >= 0: data=data.replace("exec","data=") exec(data) print data raw_input()
Impossible dans ce cas de distraire le second avec un code de désobfuscation. Si ce dernier est créé aléatoirement lorsque le code se lance, on ne peut pas modifier quoi ce soit.
Et donc ça garde son intégrité. Il faut pour le RE trouver le cryptage finement réfléchie et en générer un modèle qui peut ne pas fonctionner correctement.
[... hum des idées, Sakarov t'as réussi à attiré ma curiosité ! Impossible de m'arrêter là ... ]
Edit : j'ai trouvé un site sur l'obfuscation en parallèle http://palizine.plynt.com/issues/200...control-flows/Dernière modification par Yarflam, 11 décembre 2012, 22h53.
Commentaire
-
j'étais dans un de mes DDX et j'ai retrouvé un symbole :
http://cl.ly/image/3t3C3p3R2r2O
Sinon, j'ai up une vidéo de 15mn où j'explique l'algo, sur Vimeo, pour les intéressés (ça doit faire 2 ou 3 semaines mais j'avais zappé de le dire...)
Commentaire
-
" Comment faire de ces symboles non-ASCII des symboles lisibles sur n'importe quelle machine SANS l'aide du logiciel. En gros, créer un "nouvel alphabet" conçu de caractères qui ne sont, actuellement, non pris en charge par la norme en vigueur. Je suis quasi sûr qu'il y a possibilité de le faire, mais je ne vois pas comment."
Comment veux tu qu'une machine lise des caractères nouveaux et que donc elle ne connait pas, sans un logiciel qui les interprète en caractère qu'elle connait ???sigpic
Notre Liberté Ne Doit Pas Être Limitée
Pour Permettre A Une Minorité De S’enrichir
Commentaire
-
y'a deux pistes :
La première est de créer un nouveau charset ;
La seconde est d'affecter une valeur à chaque image dans le code, et de charger l'image sur l'output et dans la GUI du soft.
La première est donc bien évidemment largement meilleure que la seconde mais on avait pas trop trop creusé à l'époque la "création d'un charset" qui sera interprété.
Commentaire
Commentaire