begin process at 2012 02 16 10:35:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Divers

 > 

Débutants

 > 

Remplacer des octets dans un fichier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Remplacer des octets dans un fichier

dimanche 1 avril 2007 à 15:01:34 | Remplacer des octets dans un fichier

nandofive

Bonjour à tous

Je souhaite faire un programme qui modifie 2 octets dans deux fichier différents et pour cela j'ai utilisé le code suivant :

    Friend Class Form1
    Inherits System.Windows.Forms.Form
    Dim Offset_A, i, Offset_B As Integer
    Dim Octet As New VB6.FixedLengthString(1)
    Dim Fichier As String
    Dim KeyAscii As Short
    Dim a, b As Integer

    Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
        ComboBox1.Items.Add("Fichier1")
        ComboBox1.Items.Add("Fichier2")
    End Sub

    Private Sub ComboBox1_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedValueChanged
        Select Case (ComboBox1.Text)
            Case Is = "Fichier1"
                Fichier = "C:\Documents and Settings\Nandofive\Bureau\Fichier1.exe"
                FileOpen(1, Fichier, OpenMode.Binary)
                TextBox2.Text = ""
                For a = &H37715 To &H37716
                    FileGet(1, Octet.Value, a)
                    TextBox2.Text = TextBox2.Text & VB6.Format(Hex(Asc(Octet.Value)), "00") & " "
                Next a
                FileClose(1)
            Case Is = "Fichier2"
                Fichier = "C:\Documents and Settings\Nandofive\Bureau\Fichier2.exe"
                FileOpen(1, Fichier, OpenMode.Binary)
                TextBox2.Text = ""
                For a = &H37720 To &H37721
                    FileGet(1, Octet.Value, a)
                    TextBox2.Text = TextBox2.Text & VB6.Format(Hex(Asc(Octet.Value)), "00") & " "
                Next a
                FileClose(1)
        End Select
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Que mettre ici
    End Sub
End Class


Le problème c'est que je ne sais pas quoi mettre dans le FilePut pour remplacer ces deux octets par la valeurs hexadecimal "B0B0"

Pour modifier la zone de texte j'aurais mis : FilePut(1, B0B0", &H37715) pour le fichier 1 et FilePut(1, B0B0", &H37715), mais moi je cherche à modifier les valeurs hexadécimales.

Merci de votre aide.

dimanche 1 avril 2007 à 17:01:24 | Re : Remplacer des octets dans un fichier

jack

Administrateur CodeS-SourceS
Salut
Traficoter des EXE, c'est pas net ... sans jeu de mot

Bref : Tu sais lire les octets
Un octet n'est qu'une valeur numérique
Il te suffit de la modifier.
Ensuite, comme tu as fait pour la lire, tu l'écris
Ce sera facile si tu le fais juste après ta lecture.
Il faudra mémoriser chaque Octet dans une variable distincte si tu pouvoir les modifier après coup puis les réécrire dans le fichier.
Donc, la boucle For-Next est superflue, il te suffit de lire le premier Octet, puis le second (mais dans une autre variable)
Pour le deuxième fichier, idem, soit 4 variables au total.
Ensuite seulement, occupe toi de les afficher avec le format de ton choix dans tes, euh ..., ta TextBox
Tu n'as plus qu'à jongler avec les conversions déc-hexa-déc, Char pourquoi pas ...
Pour la réécriture : Tu as les instructions : Lis l'aide à ce sujet et tu sauras tout.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on
dimanche 1 avril 2007 à 21:30:48 | Re : Remplacer des octets dans un fichier

nandofive

"Traficoter des EXE, c'est pas net ... sans jeu de mot"

Fichier1.exe & Fichier2.exe ce n'est qu'un exemple je souhaite modifier des fichiers de type .afs mais afin d'évité les questions sur le type de fichier j'ai choisi un type connu. Cela aurait pu être .txt.
Est-il possible d'attribuer par défault des valeurs définis à l'offset &H37711 à l'offset &H37715 de mon premier fichier1.txt. Exemple les valeurs "D8 0D EC 49 B8"

1/ Ouvrir le fichier1.txt
2/ Attribuer les valeurs "D8 0D EC 49 B8" de l'offset &H37711 à l'offset &H37715
3/ Enregistrer et fermer

PS: Merci de ton aide.
lundi 2 avril 2007 à 00:11:45 | Re : Remplacer des octets dans un fichier

hvb

Membre Club

Private Sub modifyfile1( ByVal chemin As String )

Dim hbread As New BinaryReader(File.OpenRead(chemin))

Dim F_array( CInt (FileLen(chemin) - 1)) As Byte

hbread.BaseStream.Seek(0, SeekOrigin.Begin)

'defini le pointeur de lecture au debut du fichier

hbread.BaseStream.Read(F_array, 0,

CInt (FileLen(chemin))) 'on lit le fichier octet par octet que l'on stocke dans le tableau, on specifie ensuite à partir de quel index du tableau on va copier les fichiers (0), et le nbre d'octets que l'on veux (l'equivalent donc ici, de la taille du fichier)

hbread.BaseStream.Flush()

'on libere le buffer

hbread.Close()

'D8 0D EC 49 B8

F_array(&H37711) = &HD8&

'on modifie la valeur de l'index du tableau correspondant à l'offset ou l'on veux modifier le fichier

F_array(&H37712) = &HD&

F_array(&H37713) = &HEC&

F_array(&H37714) = &H49&

F_array(&H37715) = &HB8&

Dim hbwrite As New BinaryWriter(File.OpenWrite(chemin)) 'on defini hbwrite comme BinaryWriter, auquel on doit specifier le mode d'ouverture (File.OpenWrite) et le chemin du fichier

hbwrite.BaseStream.Seek(0, SeekOrigin.Begin)

'defini le pointeur d'ecriture au debut du fichier

hbwrite.Write(F_array)

'on ecrit le contenu de teststr dans le fichier ouvert en ecriture, vu que l'on veux ecrire tout le tableau, il n'est pas obligé de specifier l'index de depart et le nbre d'octets

hbwrite.BaseStream.Flush()

'on libere le buffer

hbwrite.Flush()

'on libere le buffer

hbwrite.Close()

End Sub


code pris ici, une petite recherche n'aurait pas été de trop :
http://www.vbfrance.com/codes/ACCES-BINAIRE-FICHIERS-ECRITURE-LECTURE-PETITS-EXEMPLES-SIMPLES_5746.aspx

Hvb aka Batto
bato.ltd at gmail.com
lundi 2 avril 2007 à 17:51:44 | Re : Remplacer des octets dans un fichier

nandofive

Merci hvb. Tu as raison sur la recherche je m'incline je plaide coupable.

lundi 2 avril 2007 à 21:24:32 | Re : Remplacer des octets dans un fichier

hvb

Membre Club
et en forme ça donnerait plutot ça :

PrivateSub modifyfile1(ByVal chemin AsString)

Dim patch(4) AsByte

patch(0) = &HD8

patch(1) = &HD

patch(2) = &HEC

patch(3) = &H49

patch(4) = &HB8

Dim hbwrite AsNew BinaryWriter(File.OpenWrite(chemin)) 'on defini hbwrite comme BinaryWriter, auquel on doit specifier le mode d'ouverture (File.OpenWrite) et le chemin du fichier

hbwrite.BaseStream.Seek(&H37711, SeekOrigin.Begin)

'defini le pointeur d'ecriture a l'offset necessaire du fichier

hbwrite.Write(patch)

'on ecrit le contenu de patch dans le fichier ouvert en ecriture, vu que l'on veux ecrire tout le tableau, il n'est pas obligé de specifier l'index de depart et le nbre d'octets

hbwrite.BaseStream.Flush()

'on libere le buffer

hbwrite.Flush()

'on libere le buffer

hbwrite.Close()

EndSub
beaucoup plus court, sans ouverture de fichier inutile etant donné que tu connait l'offset d'écriture.
c'est donc moi qui m'excuse, je vais mettre à jour mon code.

PS : pense à reponse acceptée, cela "ferme" le topic.

Hvb aka Batto
bato.ltd at gmail.com


Cette discussion est classée dans : fichier, text, system, octet, textbox2


Répondre à ce message

Sujets en rapport avec ce message

impression avec choix de l'imprimante [ par nvb23 ] nvb23  salut c difficile a expliquer mais j'utilise visual studio 2005 et le code qui se trouve ci-dessous devrait imprimer un fichier dont le nom modification d'une note dans un fichier [ par ar1du62 ] Bonjour, <o VB.Net Imports System.Text.ASCIIEncoding qui fonctionne bisarement [ par MagDix ] Bonjour Je rempli un tableau à partir d'un fichier texte et certains caratères (par exmeple le "é") sont remplacés par des carrés. Je me suis fais su comment faire un questionnaire [ par tutux1 ] Bonjour tout la monde, Je fais appel à votre grande connaissance en programmation vb moi qui ne suis qu'un débutant. Je cherche à mettre en place un Manip Fichier Texte [ par thomasf007 ] Bonjour à tous, J'utilise VB pour stocké des donnée, via un fichier Texte. Ecrire dans un fichier .txt, il n'y a pas de soucis pour le moment avec VB comment envoyer les données (vb2008) [ par toufou2006 ] Donc voila tout mon code j ai donc reussi a connecter le clien et el serveur a traiter les infos recu du plug in 3d et les preparer pour l'envoie l Ajout dans BD MySql avec VB 2008 [ par walid3iag ] J'ai un probléme concernant l'ajout des champs dans une base de donnée MySql via vb 2008. Voilà le code : Code : Private Sub Button1_Click(ByVal sen pb avec fichier system.mdw [ par jojojules ] Bonjour, j'ai créé il y a quelques années une appli Access sécurisée par un mot de passe. On me demande maintenant de la reprendre pour l'enrichir On copier fichier text vers Excel implementé par VB.Net. [ par sihammaster ] slt a tous. je veux faire une application qui pourras copier le rapport d'un fichier text de "EVEREST" vers Excel implementé par VB.Net. j'ai besoin Soucis de "count" avec Active Directory [ par novice69 ] Bonjour, je cherche le nombres d'utilisateurs dans un groupe AD. Mon soucis, lorsque que les groupes contiennent plus d'environ 1000 users ( estimati


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,950 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales