IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Trouver une fonction "simple" (reverse engineering)


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut Trouver une fonction "simple" (reverse engineering)
    Salut,

    Pour décrypter un code (j'en ai déjà décrypté une partie), il me reste ceci:
    (f est une fonction de h^6 vers h^4, où h est l'ensemble des caractères hexa)
    f(x) = y :

    f(b71184) = 32d5
    f(a920b8) = 785d
    f(35496e) = 5fc4
    f(1cfcbd) = 3b30
    ...

    Avez-vous une méthode pour trouver une fonction simple (j'ai essayé en force brute des XOR (y(1) = x(1) XOR x(2)... etc... Mais pas de résultat).
    Je ne vois vraiment pas quelle fonction "simple" a pu être utilisée...

    Merci d'avance...

  2. #2
    Membre actif Avatar de larnicebafteur
    Inscrit en
    Mai 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 133
    Par défaut
    Que veux dire "simple" pour une fonction ?

    Une fonction avec uniquement des opérateurs logique ? Une fonction numérique linéaire ou autre ?

    La fonction est-elle forcement bijective ?

    Je crois qu'il fait déjà avoir une petite idée de la "tete" de la fonction pour pouvoir la trouver.

  3. #3
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par larnicebafteur
    Que veux dire "simple" pour une fonction ?

    Une fonction avec uniquement des opérateurs logique ? Une fonction numérique linéaire ou autre ?

    La fonction est-elle forcement bijective ?

    Je crois qu'il fait déjà avoir une petite idée de la "tete" de la fonction pour pouvoir la trouver.
    Je dirais une fonction avec uniquement des opérateurs logiques (même des rotations gauche-droite, on sait jamais).
    Ah oui, je n'ai pas précisé, la fonction est surjective, mais non injective. Elle n'a pas de raison d'être linéaire...

  4. #4
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Recherche les algo de minimisation booleennes.

  5. #5
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    f(81bed1) = 2c24
    f(3ac294) = 5a4f
    f(9d6bc3) = 7bf4
    f(624110) = 3254
    Dispose t'on de beaucoup de données de ce type ?

  6. #6
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par Graffito
    Bonjour,


    Dispose t'on de beaucoup de données de ce type ?
    oui... énormément...

    Par contre, j'ai dit que la fonction était non injective... Celle-là on n'en sait rien...


    Sinon, oui, la fonction est déterministe

  7. #7
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Avec beaucoup de données, on peut déjà voir pour tous les bits de la chaine 6, si il existe un bit correspondant dans la chaine4.
    Par exemple, si quand le bit 2 de c6 est à 1, le bit 18 de C4 a toujours la même valeur.

    Si c'est pas le cas, f n'est pas aussi simple (exemple : combinaison de 3 bits -> 2bits).

  8. #8
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par Graffito
    Bonjour,

    Avec beaucoup de données, on peut déjà voir pour tous les bits de la chaine 6, si il existe un bit correspondant dans la chaine4.
    Par exemple, si quand le bit 2 de c6 est à 1, le bit 18 de C4 a toujours la même valeur.

    Si c'est pas le cas, f n'est pas aussi simple (exemple : combinaison de 3 bits -> 2bits).
    En voici quelques unes (tout en hexa, même si ya pas le 0x devant):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    b71184 -> 32d5
    a920b8 -> 785d
    35496e -> 5fc4
    1cfcbd -> 3b30
    472a03 -> 87ba
    cef35f -> 4423
    babc71 -> 930b
    25141a -> bb6a
    fefa78 -> 7df3
    7122a5 -> 0dd2
    7733ae -> 47be
    41b03e -> ce12
    e97ba4 -> df72
    2d8f2c -> 4316
    f13590 -> 8a4f
    c26ff9 -> db59
    442f90 -> e8aa
    Je ne vois vraiment pas...

  9. #9
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut
    est-on certain que f soit déterministe ?

  10. #10
    Membre émérite
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Par défaut
    Si tu peux forcer la valeur du paramètre de la fonction avec des valeurs particulières (genre 0x000000, 0xFFFFFF, 0x000001, 0x000100, ...) et voir ce que cela donne, ça peut être interessant.

    Sinon, affiche les nombres en binaires, tu y veras peut-être plus clair.

    Enfin, regarde le code assembleur.

  11. #11
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Bit à bit j'ai essayé, mais il n'y a pas de relation flagrante...

    Sinon, non je ne peux pas obtenir des valeurs telles que 0x000000...
    En fait je peux récupérer un couple (x,y) tel que f(x) = y, mais c'est "au hasard"...

  12. #12
    Membre Expert Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Par défaut
    Citation Envoyé par ®om
    Bit à bit j'ai essayé, mais il n'y a pas de relation flagrante...

    Sinon, non je ne peux pas obtenir des valeurs telles que 0x000000...
    En fait je peux récupérer un couple (x,y) tel que f(x) = y, mais c'est "au hasard"...
    T'as classé par paquets de x ayant tous un même y?

  13. #13
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    @Nemerle
    Non, je n'ai aucun exemple ou deux y sont identiques (c'est aléatoire le couple x,y que j'obtiens).

    @D[r]eadLock
    Je ne pense pas que ça soit une telle fonction (cos et sin sont de R dans R, et là c'est de Z dans Z).

    Je n'ai pas l'ASM, en fait c'est sur un site, un script php dont les images affichées ne dépendent que d'une clé, contenue dans l'url de l'image...

  14. #14
    Membre Expert Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Par défaut
    [QUOTE=®om]@Nemerle
    Non, je n'ai aucun exemple ou deux y sont identiques (c'est aléatoire le couple x,y que j'obtiens).
    QUOTE]

    Cela n'est pas possible, car ta fonction est de h^6 vers h^4 !!! Tu dois bien avoir x1 et x2 qui donnent un même y ! Car il y a envoi de 16^6 éléments vers 16^4...

  15. #15
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Je ne sais pas si tu as tenté cela mais ca peut être une idée.
    Un exemple du type de chiffrement que cela pourrait être:
    b71184 -> 32d5
    (b7 + un decalage modulo de 0xFF) xor 11 = 32 => decalage = 6b
    (b7 + un decalage modulo de 0xFF) xor 84 = d5 => decalage = 99

    Faire ceci avec tes autres nombres en h^6 et voir s'il y a un lien dans les décalages avec la valeur de l'octet de poids fort.

    Mais tenter aussi en prennant l'octet du milieu ou de début comme masque suivi d'un décalage:
    b71184 -> 32d5
    (11 + un decalage modulo de 0xFF) xor b7 = 32 => decalage = ?
    (11 + un decalage modulo de 0xFF) xor 84 = d5 => decalage = ?

    Voir même tenter cela:

    (b7 + un decalage modulo de 0xFF) xor 84 = 32 => decalage = ?
    (b7 + un decalage modulo de 0xFF) xor 11 = d5 => decalage = ?

    Enfin voilà, ca peut être des pisteset j'esseairais de trouver un lien mais c'est pas gagné...

    Bon courage

  16. #16
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par homeostasie
    Je ne sais pas si tu as tenté cela mais ca peut être une idée.
    Un exemple du type de chiffrement que cela pourrait être:

    (b7 + un decalage modulo de 0xFF) xor 11 = 32 => decalage = 6b
    (b7 + un decalage modulo de 0xFF) xor 84 = d5 => decalage = 99

    Faire ceci avec tes autres nombres en h^6 et voir s'il y a un lien dans les décalages avec la valeur de l'octet de poids fort.

    Mais tenter aussi en prennant l'octet du milieu ou de début comme masque suivi d'un décalage:

    (11 + un decalage modulo de 0xFF) xor b7 = 32 => decalage = ?
    (11 + un decalage modulo de 0xFF) xor 84 = d5 => decalage = ?

    Voir même tenter cela:

    (b7 + un decalage modulo de 0xFF) xor 84 = 32 => decalage = ?
    (b7 + un decalage modulo de 0xFF) xor 11 = d5 => decalage = ?

    Enfin voilà, ca peut être des pisteset j'esseairais de trouver un lien mais c'est pas gagné...

    Bon courage
    Je regarderais, ça n'a pas l'air simple de trouver, vu le nombre de combinaisons o_O

  17. #17
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Je regarderais, ça n'a pas l'air simple de trouver, vu le nombre de combinaisons o_O
    Avec un petit algo, ca peut se faire rapidement de trouver le décalage. Mais c'est vrai qu'il y a pas mal de combinaisons à tester sans être sur que cela soit l'une d'elles la solution... Mais si tu trouves, alors tu seras tout !

    De toute facon, le problème auquel tu es confronté demande de nombreuses tentatives de déchiffrement, de la réflexion pour trouver l'éventuel lien logique, de la chance aussi et donc pas mal de temps!

  18. #18
    Membre émérite
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Par défaut
    T'es sur que ce n'est pas une fonction mathématique (genre cos(), ou sin(), ou dans ce genre) ?
    Tu as dit que tu peux avoir beaucoup de valeurs, tu peux les poster toutes (voire en fichier attaché...), et dedans, rien de remarquable (le hasard peut faire les choses bien ) ?

    À propos de l'asm, tu n'as pas le code (compilé) ?

Discussions similaires

  1. Résultat bizarre d'une fonction numérique simple
    Par feynman dans le forum Fortran
    Réponses: 9
    Dernier message: 19/11/2007, 22h07
  2. Trouver une fonctions dans des DLL
    Par Mercenary Developer dans le forum Langage
    Réponses: 2
    Dernier message: 08/09/2005, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo