Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Datei binär einlesen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 25.10.2007, 22:33    Titel: Datei binär einlesen Antworten mit Zitat

Wie kann man eine Datei binär einlesen.
Hoffe, dass ihr mir schnell helfen könnt.

Mein Vorhaben:
Ich will mir zuerst einmal ein Abbild der Festplatte erschaffen.
Anschliessend gebe ich jede einzelne Datei als Binärcode über einen Screensaver aus.

Cu

Kann mir keiner schnell eine Lösung nennen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 25.10.2007, 22:39    Titel: Antworten mit Zitat

ähm, ja bestimmt, wir lesen mal eben die festplatte ab MBR mit FB unter Win aus.
Das geht nicht. (zumindest nicht, ohne ein paar tausend Zeilen Code)
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 25.10.2007, 22:40    Titel: Antworten mit Zitat

Wie kann man eine einzelne Datei binär einlesen.
Alle Dateien liegen doch binär auf der Festplatte...dann muss es auch möglich sein, diesen Binärcode einzulesen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 25.10.2007, 23:13    Titel: Antworten mit Zitat

Code:
Screen 17, 8
Dim As String fName
fName = "test.bin" 'Hier Dateiname angeben
Dim As Integer ff = Freefile, n=0, j
Open fName For Binary Access Read As #ff
Do Until Eof(ff)
  Get #ff,, j
  Print Hex(n, 8);" "; Bin(j, 32);" "; Hex(j, 8);" "; Mki(j)
  n = n + 4
  if (n mod 80)=0 then Sleep 1000
Loop
Close #ff
sleep

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 27.10.2007, 12:33    Titel: Antworten mit Zitat

@csderats:
Man kann auch ohne "tausende Zeilen Code" von der Festplatte lesen/auf sie schreiben. Nur sollte man beim Schreiben Vorsicht walten lassen, denn die wenigsten dürften Ahnung von der internen Struktur des Dateisystems haben.
Folgende Variante für NT/2000/XP, evtl. auch Vista?
Code:

#include "windows.bi"

Const BUF_SIZE=512

Dim As Handle hDevice
Dim As ZString * BUF_SIZE zsBuffer
Dim As Integer iBytesRead

hDevice=CreateFile("\\.\PhysicalDrive0", GENERIC_READ Or GENERIC_WRITE, _
                   FILE_SHARE_READ or FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0)


If hDevice=INVALID_HANDLE_VALUE Then
  Print "Konnte Laufwerk nicht oeffnen!"
  End
End If

ReadFile(hDevice, @zsBuffer, BUF_SIZE, @iBytesRead, 0)

For i As Integer=0 To iBytesRead
  Print Hex(zsBuffer[i]);
  Print " ";
Next i

CloseHandle(hDevice)

Der Code öffnet die erste Festplatte zum Lesen und (Achtung!) zum Schreiben, bei Bedarf die entsprechende Konstante (GENERIC_WRITE) rausnehmen.
Man kann auch auf einzelne Partitionen, oder aufs Diskettenlaufwerk zugreifen. Die "Dateien" sind dann z.B. \\.\A:\ oder \\.\C:\.

Variante für 95/98/ME kann ich nicht probieren, mangels fehlendem Betriebssystem.
Ich kann nur sagen, dass es dort AFAIR "\\.\SMARTVSD" heißt.

/edit:
Funktioniert natürlich nur mit Administratorrechten!
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz