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

C++ Discussion :

calcul d'un crc16 (polynome 0x1021)


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 117
    Par défaut calcul d'un crc16 (polynome 0x1021)
    Salut à tous!!!

    Je cherche le moyen de calculer le crc d'une trame (stockée dans un buffer) avec le polynome 0x1021!!!

    Je ne sais ps comment procéder!!!

    Merci pour votre aide!!!

    Bonne journée!!!

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    En suivant les trois étapes classiques:

    • Analyse: questionner le client (toi meme) pour définir clairement ce qu'il faut (valeurs entrées, valeurs de sorties ...)
    • Conception: concevoir l'algorithme qui permettra, sur base des valeurs entrées, d'obtenir la valeur de sortie
    • Mise en oeuvre:coder l'application qui mettra l'algorithme en oeuvre


    L'analyse se fera sous la forme de
    En travaillant sous <tel OS>, je veux créer une application <graphique/console> qui récupérera les trames de <telle manière> en <telle quantité> dans un buffer géré de <telle manière> et en calculera le CRC16 <si graphique, avec telle bibliotheque>.

    Le CRC16 est obtenu en applicant le <<polynome de 0x1021>>, c'est à dire <description textuelle du CRC16>

    Apres calcul du CRC16, l'application devra <gestion finale du résultat>
    La conception devra se faire sous la forme de
    • Création de l'algorithme pour calculer le CRC16
    • Création de l'algorithme pour récupération des trames dans le buffer
    • Création de l'algorithme pour la vérification du CRC16 de l'ensemble des trames
    • Création de l'algorithme pour la gestion du résultat final


    Sur base de ces quatre algorithmes, sous réserve que j'en ai oublié, il ne te restera plus qu'à coder l'application qui les mets en oeuvre

    De manière génréale, le premier conseil donné sur un forum c'est "aide nous à t'aider"...

    On peut, certes, t'aider pour chacune de ces étapes, mais il n'est pas dans les habitudes de tout faire non plus, principalement parce que c'est le pire des services à te rendre que de tout faire pour toi, et de te donner un code qui fonctionne sans que tu n'ai réfléchi et surtout compris ce qui est fait...

    Pour nous aider à t'aider, fournis nous déjà l'analyse complete et cohérente, les algorithmes que tu as trouvés/envisagés, ou dis nous sur lequel tu bloque, et, éventuellement, un code minimum compilable si c'est au niveau du code meme que tu coinces...

    Sur base du travail que TU auras effectué, il sera alors possible de t'aiguiller le plus efficacement possible, en évitant - si possible- de te faire reprendre l'ensemble du code
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 117
    Par défaut
    Merci beaucoup pour la réponse!!

    En fait, il ne me manque que l'algorithme du crc...
    Je t'explique je suis sensée deviner l'alogorithme de calcul du crc (selon le polynome 0x1021) à partir du résultat que j'ai dans une trame qui en contient...

    Je t'explique encore plus en fait j'ai la trame suivante :00 35 01 06...A5 E2
    les octets en rouge correspondent au crc...or je suis sensée trouvé l'algorithme qi me permet de trouver ces deux octets!!! je suis sensé faire le chemin inverse quoi!!!

    Sauf que d'après mes connaissances, ça ne marche pas comme ça, il faut avoir un algorithme qui te permet de calculer ton crc et non le contraire!!!

    Ma question en fait c'était est ce que c'est possible de faire ce chemin inverse et comment justement!!!

    Merci beaucoup beaucoup pour ta patience!!!

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Alors, déjà, n'oublie pas que ...

    Une rapide recherche t'aurait menée tout droit sur=>ce fichier pdf<= qui traite tant des CRC que des reverses CRC (dont, meme si c'est présenté sous une forme assembleur, une partie pour le CRC16), voire, sur =>cet article<= (du site sur lequel tu te trouves ) et sur bien d'autres ressources que je n'ai pas toutes parcourrues...

    L'avantage d'un CRC, c'est, justement, qu'il est réversible, à l'opposé des sommes md5 et similaires (qui sont "destructifs" dans le sens où tu ne peux pas récupérer les données au départ de la somme)

    Même si ca n'a pas grand chose à voir (le lien traite en fait du RAID), les explications données =>ici<= devraient te permettre de comprendre pourquoi, et surtout, comment, le CRC peut etre inversé

    Une bonne partie des liens que je te fournis ici sont, tout simplement issus de ==>cette recherche<==

    Fait ce que tu peux, et reviens nous voir si tu coinces réellement sur un point précis
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 117
    Par défaut
    re-Merci beaucoup beaucoup

    je vais éplucher les docs que tu m'a fournit!!

    je te souhaite une très bonne soirée!!

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 117
    Par défaut
    Bonjour à tous,

    Je reviens parce qu'en fait je n'ai pas trouvé de solution à mon problème!!!

    Je veux savoir si c'est possible de reconstituer (de deviner!!!) l'algorithme d'un crc16, sachant que tout ce dont je dispose c'est deux malheureux petits octets en fin de trame et le fait qu'il est basé sur le polynome 0x1021!!!!

    a ma connaissance non...

    Toutes contribution serait la bienvenue!!!

    bonne journée!!!

  7. #7
    Membre expérimenté
    Inscrit en
    Décembre 2003
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 272
    Par défaut
    Citation Envoyé par sanatou
    Je veux savoir si c'est possible de reconstituer (de deviner!!!) l'algorithme d'un crc16, sachant [...] qu'il est basé sur le polynome 0x1021!!!!
    Tout est dit. Qu'est ce qu'il te manque ?

  8. #8
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 117
    Par défaut
    Je me dit que je ne peut pas reconstituer un algorithme de crc16 avec pour seul base de travail un polynome et 2 octets...la démarche ne me semble pas logique et c'est sela que j'ai envi de vérifier jhustement :

    plus clairement est ce que à partir de deux octets et d'un polynome on peut reconstituer l'algorithme qui donne comme résultat ces même deux octets????????

  9. #9
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    A partir du moment ou tu sais que c'est un CRC, le polynome suffit. Avec le resultat pour un exemple, tu peux lever les doutes eventuels que tu aurais sur certaine details. Ce dont tu n'as pas l'air de te rendre compte, c'est que CRC, ca designe un algorithme bien precis et pas n'importe quelle maniere de calculer une somme de controle.

Discussions similaires

  1. Calcul CRC16 en c#
    Par petitours dans le forum C#
    Réponses: 2
    Dernier message: 05/09/2011, 23h34
  2. Calcul de crc16
    Par bifur dans le forum Assembleur
    Réponses: 6
    Dernier message: 21/02/2011, 06h30
  3. calculer le gradient d'un polynome avec matlab
    Par wajdiisi2007 dans le forum MATLAB
    Réponses: 2
    Dernier message: 18/01/2009, 22h34
  4. Programme calculant les racines d'un polynome de degré 2
    Par Invité dans le forum C++Builder
    Réponses: 4
    Dernier message: 01/03/2007, 17h17

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