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

Shell et commandes GNU Discussion :

Modification de valeurs hexadécimales


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Mécanicien
    Inscrit en
    Novembre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Mécanicien

    Informations forums :
    Inscription : Novembre 2020
    Messages : 17
    Par défaut Modification de valeurs hexadécimales
    Bonjour,


    Je suis sur un projet personnel qui me permettrai de remplacer une chaîne de valeurs hexadécimales par une autre dans un fichier binaire.

    Par exemple:

    J'ai un fichier bin de 2mo
    En lecture hexadécimale, j'ai la chaîne 02 01 01 00 0C 3B à l'adresse 1F3F84.
    Je souhaite modifier la chaîne en 00 00 01 00 0C 3B.

    J'ai déjà réussi à faire un petit script bash qui me permet d'ouvrir le fichier voulu de modifier un octet à un endroit précis et enregistrer le fichier modifier avec la commande dd.

    Mais je suis face à un problème et c'est la que je sollicite votre aide.
    Selon la version software, ma chaîne ne se trouve pas à la même adresse et je n'ai pas trouvé d'option à dd qui permet de rechercher une chaîne hexadécimal, mes recherches m'on conduit vers sed mais je n'ai trouvé des cas que pour du fichier txt.


    Merci par avance pour les tuyaux que vous pourrez me donner.
    Au plaisir de vous lire.
    Jon.

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour

    Première question : pourquoi n'utilises-tu pas xxd ?
    Ainsi, tu transformerais du binaire en texte et du texte en binaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    xxd fichier.dat > fichier.txt
    sed 'blablabla' fichier.txt > fichier_corrigé.txt
    xxd -r fichier_corrigé.txt >fichier_corrigé.dat

  3. #3
    Membre averti
    Homme Profil pro
    Mécanicien
    Inscrit en
    Novembre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Mécanicien

    Informations forums :
    Inscription : Novembre 2020
    Messages : 17
    Par défaut
    Bonsoir Flodelarab

    Merci pour ta participation

    Je viens d'essayer avec xxd mais la taille de mon fichier est vraiment différente 8.6mo pour le fichier txt contre 2mo pour le fichier bin d'origine.
    De plus , je n'arrive pas a retrouver ma chaine de caractère une fois le fichier converti par xxd.

    Merci beaucoup pour ton aide et désolé si mes questions sont idiotes mais je suis un vrai débutant.


    EDIT:

    J'ai trouvé ma chaîne mais elle est sous la forme 0201 0100 0c3b et la fonction recherche de l’éditeur de texte de fedora ne trouvait pas la chaîne (même sous la bonne forme) mais en me rendant manuellement à la bonne adresse je l'ai trouvé .
    je vais maintenant chercher la commande qui va bien avec sed et je ferai un retour de l'avancée des choses.

    Merci encore pour ton aide.

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    je n'arrive pas a retrouver ma chaine de caractère
    Tu as l'adresse et le code. Tu dois y arriver.

    Pour afficher octet par octet, utilise "-g 1". Si tu ne trouves pas ta chaîne, c'est qu'elle est sur 2 lignes. À toi de couper en 2 ton remplacement.

  5. #5
    Membre averti
    Homme Profil pro
    Mécanicien
    Inscrit en
    Novembre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Mécanicien

    Informations forums :
    Inscription : Novembre 2020
    Messages : 17
    Par défaut
    Oui effectivement j'ai trouvé. je viens d'éditer mon message précédent , nous nous sommes croisés.

  6. #6
    Membre averti
    Homme Profil pro
    Mécanicien
    Inscrit en
    Novembre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Mécanicien

    Informations forums :
    Inscription : Novembre 2020
    Messages : 17
    Par défaut
    Rebonsoir,

    @Flodelarab cela fonctionne parfaitement! Merci beaucoup vraiment.

    Voici ce que j'ai fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    xxd $fichier > copie.txt
    sed -e "s/0201 0100 0c3b/0000 0100 0c3b/g" copie.txt>fichier_mod.txt
    xxd -r fichier_mod.txt > fichier_mod.bin
    rm fichier_mod.txt && rm copie.txt
    Merci encore pour ton aide.
    Ce post évoluera certainement car ce n'est qu'une des nombreuses taches que j'aimerais que ce script fasse.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/07/2006, 12h02
  2. [c#]Modifer la valeur d'une DataGrid
    Par guillaume16 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 09/05/2006, 16h21
  3. Modifer une valeur dans un panier sans la valider
    Par budiste dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/03/2006, 09h53
  4. [VB6]Modification de valeurs dans une MSflexgrid
    Par Tyrael62 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 14/02/2006, 08h48
  5. [C#] Datagrid et modification de valeur
    Par Kaïn dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/01/2006, 11h48

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