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

VB.NET Discussion :

Lire une chaine Hexa dans un fichier binaire, faire un XOR puis enregistrer le fichier modifié


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Electronicien
    Inscrit en
    Novembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Electronicien
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2014
    Messages : 13
    Points : 4
    Points
    4
    Par défaut Lire une chaine Hexa dans un fichier binaire, faire un XOR puis enregistrer le fichier modifié
    Bonjour
    Je suis à faire un petit utilitaire qui me permet d'ouvrir un fichier binaire (toujours de même taille)
    J'arrive à l'ouvrir et à lire et afficher les zones souhaitées dans des textbox mais je voudrai aller un peu + loin en modifiant une zone du fichier

    En clair, je voudrais:
    - Lire les données de l'adresse 0x200 à 0x207 (en hexa)
    - Appliquer l'opération Xor "FF" sur chaque octet
    - Remplacer les octets d'origine par ceux modifiés après l'opération Xor dans le fichier
    - Enregistrer le fichier modifié en gardant le nom du fichier d'origine + "__Patch" (ce qui permet de garder le fichier d'origine intact (par ex: binaire_origine.bin -> binaire_origine__Patch.bin)

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Imports System.Text
    Imports System.IO
    Public Class Form1
        Dim DumpBytes() As Byte
     
        Dim chaine_test As String
     
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
        End Sub
     
        Dim openFileDialogDump As New OpenFileDialog()
        Dim BinFileName As String
     
     
        Private Sub OpenDump_Click(sender As Object, e As EventArgs) Handles OpenDump.Click
     
     
            If openFileDialogDump.ShowDialog() = System.Windows.Forms.DialogResult.OK Then 
     
                    DumpBytes = System.IO.File.ReadAllBytes(openFileDialogDump.FileName)
     
                    chaine_test = 'récupérer ici les 8 octets du fichier en hexa et faire un XOR "FF" sur chaque octet
     
                    chaine_test_box.Text = chaine_test
            End If
     
        End Sub
     
    End Class
    Merci d'avance pour votre aide

  2. #2
    Candidat au Club
    Homme Profil pro
    Electronicien
    Inscrit en
    Novembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Electronicien
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2014
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Bonjour
    J'ai continué à chercher sur plein de post/forums... mais je ne trouve rien pour faire cette opération "lecture/Xor/écriture" que je pensais être simple pour un programmeur (pas pour un novice comme moi) mais je m'aperçois que c'est peut être + compliqué qu'il n'y parait

    Si vous avez une idée pour que je puisse avancer...

    Merci

  3. #3
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Bonjour,

    Soit pas si pressé, on est en vacances ...

    Je viens de faire un test de lecture - écriture d'un fichier en mode binaire, en passant par un vecteur de bytes sur lequel on peux faire, byte par byte, toutes les opérations souhaitées, dont un XOR.

    Le fichier FichierBinaire.zip est mon projet de test avec tous ses codes. J'espère qu'ils t'inspireront.
    L’illustration suivante est le mode d'emploi :
    Nom : XOR_.jpg
Affichages : 194
Taille : 60,3 Ko

  4. #4
    Candidat au Club
    Homme Profil pro
    Electronicien
    Inscrit en
    Novembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Electronicien
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2014
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Bonjour
    Merci pour cet exemple qui fonctionne très bien sur l'ensemble du fichier

    Me reste plus qu'à essayer de l'adapter pour lire une chaîne à une adresse précise et écrire que cette zone ensuite

  5. #5
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Bonjour,

    Il doit être possible de lire le fichier source et le copier vers le cible en comptant les octets lus.
    Il suffit alors d'effectuer les opérations sur les octets voulus.
    Exemple, pour modifier les octets de 205 à 212 :
    Lire les octets par tranches de 100 octets et les écrire dans le fichier cible en comptant : 100, 200.
    Arrivé à 200, je lis encore 100 octets et :
    j'en écris 5 dans le fichier cible
    je traite les 7 suivants (modifier et écire)
    j'écris le reste des 100 octets
    je continue les lecture et écriture jusqu'à la fin du fichier (cf. mon code).

    J'espère que ceci t'inspirera...

Discussions similaires

  1. lire des données hexa dans un fichier
    Par neurodoxx dans le forum C++
    Réponses: 1
    Dernier message: 11/02/2011, 15h43
  2. Lire une ligne spécifique dans un fichier texte
    Par ZRemi dans le forum MATLAB
    Réponses: 2
    Dernier message: 26/04/2010, 13h58
  3. recherche d'une chaine caractère dans un fichier
    Par maitre.dohko dans le forum VBScript
    Réponses: 6
    Dernier message: 21/04/2010, 12h13
  4. Comment lire une image contenue dans un fichier PDF
    Par colorid dans le forum Langage
    Réponses: 1
    Dernier message: 15/05/2009, 19h59
  5. Comment chercher une chaine hexa dans un fichier ?
    Par marchphi dans le forum Langage
    Réponses: 4
    Dernier message: 26/02/2008, 07h59

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