Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Entfernung eines Dateiheaders

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.01.2008, 20:02 Uhr
Sascha



Hallo!

Zunächst muss ich erst mal sagen, dass ich absoluter Anfänger bin. Ich wollte früher immer mal mehr mit dem PC machen und auch Programmierung machen und bin dann leider nie dazu gekommen, lediglich Microsoft Visual Studio 6 hatte ich mir damals mal zugelegt. Meine bisherige Programmiererfahrung ist leider nur auf meine Kindheit und dem C64 begrenzt. Die letzten Tage habe ich mich nun mit einem komprimierten Archiv herumgeschlagen, dass ich einfach nicht entpacken konnte. Ich hab die Datei mit meinem Hex-Editor analysiert und festgestellt, dass an Position 13/14 der Header für eine ZLib Verschlüsselung steht. Also habe ich die ersten byte des Headers entfernt und mit einer Bat-Datei und einer kleinen ZLib.exe das Archiv zumindest entschlüsselt. Nun ja, leider kann ich die Datei nun zwar zum Teil lesen, aber nicht in die Einzelteile zerlegen, obwohl ich schon einen Teil des neuen Headers und der "einzelnen Dateiheader im Archiv" entschlüsselt habe. Leider ist es kein gängiges Archiv sondern (so denke ich) ggf. ein mit DOS/C++ erstelltes Archiv. Irgendwann möchte ich dieses Problem vollständig lösen, aber ich möchte klein anfangen, daher nun meine Frage.

Aufgrund dieser Archive hab ich mir gedacht, dass ich doch mal versuchen könnte hierdurch ein wenig in C++ hereinzuschnuppern und zu sehen, ob ich damit klarkomme und Spass dran bekomme. Also würde ich gerne vielleicht ein kleines Programm machen, dass automatisch den Header entfernt, damit diese Datei dann direkt mit dem ZLib-Header anfängt und mit dem anderen Tool entschlüsselt wird. Im Moment mache ich das mit hex, was kein Problem ist, aber ich dachte mir, das könnte doch ein netter Versuch sein was zu lernen. Vielleicht könnte man sowas sogar ohne BAT-Datei machen und alles direkt in einer Anwendung, aber davon habe ich noch keine Ahnung.

Wäre ggf. jemand so nett und hätte die Zeit und Geduld einem älteren (35) Anfänger hierbei ein wenig zu helfen und mit ihm bzw. mir so ein Programm zu schreiben? Ich denke, dass das Programm zum Entfernen von Bytes bestimmt recht klein ist, und der "helfende und zeigende" Aufwand hoffentlich sehr klein ist.

Sascha

P.S.: Ich hoffe ich habe auch das richtige Forum erwischt...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.01.2008, 21:41 Uhr
0xdeadbeef
Gott
(Operator)


Den VC6 würde ich ganz schnell durch einen richtigen Compiler ersetzen...das Ding ist älter als der C++-Standard, und ziemlich kaputt. Du kannst z.B. von der Microsoft-Seite Visual Studio Express runterladen, ansonsten wirst du immer wieder in Probleme mit völlig korrektem Code laufen. VS Express bringt ein paar Bibliotheken nicht mit, die bei der Vollversion dabei sind, die sind aber für deine Zwecke eh völlig unnötig.

Ansonsten, wenn ich dich richtig verstehe, geht es ja nur darum, eine Datei anhand der Zip-Header zu zerlegen; das sollte machbar sein. Unter UNIX würd ich im Zweifel ein bisschen mit csplit rumspielen, aber das hast du ja nicht zur Verfügung...

Aaalso, das Problem ist nicht trivial, d.h. du wirst erstmal ein paar Grundlagen lernen müssen, bevor du das hinkriegst. Wichtige Punkte zum Nachlesen sind std::ifstream, std::ofstream, std::string und std::ostringstream. Als Referenzen auf Webseiten kann ich http://cplusplus.com/reference/iostream/ und www.sgi.com/tech/stl empfehlen, allerdings solltest du dir wirklich ein gutes Buch zulegen. Gute Wahlen sind Der C++ Primer (aber nicht der C++ Primer Plus oder ein ähnlich benanntes Buch, die sind durch die Bank scheiße und versuchen nur, durch die Namensähnlichkeit Geld zu scheffeln), oder Accelerated C++. Oh, und kauf bloß nichts, wo "Markt & Technik", "Data Becker" oder "in 21 Tagen" draufsteht.

Ansonsten stehen wir für spezifische Fragen gern zur Verfügung.

Prinzipiell ist die Herangehensweise in diesem Fall, öffne Datei, lies Datei ein, finde ersten Header, finde zweiten Header, öffne Datei, schreibe den Kram zwischen den Headern in die Datei. finde nächsten Header, öffne neue Datei, schreibe den Kram zwischen den Headern in die Datei, usw. bis zum Ende der Eingabedatei.

...oder gib mir mal die Endung der Datei, die du da hast, vielleicht finde ich ein tool dazu.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 15.01.2008 um 21:46 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.01.2008, 04:21 Uhr
Hans
Library Walker
(Operator)


Hi,

zuerst einmal: Der C-64 ist immer noch ein geniales Gerät, auch wenn er mittlerweile total veraltet ist.

Zu Deinem Archiv: so wie ich das sehe haust Du da zwei Dinge durcheinander, nämlich Komprimierung und Verschlüsselung. Die Komprimierung dient dazu, eine grosse Datei kleiner zu machen, ohne das vom Inhalt etwas verloren geht. Die Verschlüsselung hat dagegen die Aufgabe, den Inhalt einer Datei zu verstecken, so das man damit nichts anfangen kann, wenn man den Schlüssel nicht hat, mit dem die Datei "aufgeschlossen" d.h. entschlüsselt werden kann.

Dann kann ich mich nur 0xdeadbeef anschliessen, wenn er die Endung der Datei wissen will. Meisst ist das schon ein Hinweis auf das Programm, mit dem die Datei, in diesem Fall das komprimierte Archiv erstellt wurde. Da Du ja schon mit einem Hexeditor auf die Datei losgegangen bist, kannst Du ja mal gucken, wie die ersten vier Bytes der Datei lauten. Sollte da 50 4B 03 04 stehen, handelt es sich um ein ZIP-Archiv. Das kannst Du dann mit Programmen wie WinZip, PowerArchiver oder anderen entpacken. Sie müssen lediglich das ZIP-Format verarbeiten können. Dabei ist es übrigens egal, ob das Archiv unter DOS oder einem anderen Betriebssystem erstellt wurde.
Übrigens: zlib ist auch eine Bibliothek, also eine Sammlung von Unterprogrammen, zum Daten komprimieren. Wenn du mehr darüber wissen willst, siehe hier.

Was Deine Ambitionen zum C++ lernen angeht, dazu der Library Walker
Vor dem Kauf eines Buches würde ich erst mal in die Bibliothek gehen, und es mir da ausleihen, um festzustellen, wie ich damit klar komme. Wenn es gut ist, kann ich es immer noch kaufen. Wenn ich dagegen nicht gut mit dem Werk klar komme, weil zu schwierig oder was auch immer, geb ich es einfach wieder zurück und kann das so gesparte Geld für was anderes ausgeben.
Empfehlenswert sind u.a. folgende Bücher:


(Amazon link)


(Amazon link)


(Amazon link)

Das sollte erst mal genügen. Natürlich solltest Du auch die anderen Bücher ansehen, die die Bibliothek zum Thema C++ lernen hat. Aber das hier sind so mit die Besten, die es auf Deutsch gibt. (Wenn Du auf ein C++ Buch von einem gewissen Herrn Stroustrup trifst, dann handelt es sich zwar um ein gutes und wichtiges Buch, allerdings ist das für Einsteiger nicht zu empfehlen.)

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.01.2008, 21:39 Uhr
Sascha



Vielen Dank für die Antworten und die Tipps. Versuche mal direkt am Wochenende die Mayersche zu besuchen und mal zu sehen was mir von den genannten Büchern am besten gefällt.

Was die Dateiendung angeht, sowie den Header den ich entfernen muss um ZLib anzuwenden, beide sind unbrauchbar da sie offensichtlich Eigenkreationen die die wirkliche Datei verstecken sollen. Nach ZLib existiert praktisch kein "Dateikennungsheader" mehr, dann weist die Datei nur noch Archivinformationen auf wie z.B.

4C2B0BF
CBF8400
0800320
0048ED0
0000000
0000000
1E50221
0000000
0000000
0B7D8C0
01CCBD4

Wobei die erste Größe die Archivgöße in Byte darstellt (ohne header). Vor den Dateien findet man (je nach Dateityp) z.T. auch die Längenangaben. Leider ist es wohl kein TGA oder ZIP und auch kein anderes von mir bekanntes Format. Da gab es damals mal ein DOS Archiv, LBR, LU oder sowas in der Art. Könnte es sowas sein?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.01.2008, 00:06 Uhr
Hans
Library Walker
(Operator)


Hi,

Zitat von Sascha:
Vielen Dank für die Antworten und die Tipps. Versuche mal direkt am Wochenende die Mayersche zu besuchen und mal zu sehen was mir von den genannten Büchern am besten gefällt.

das ist auch ein guter Ansatz. - ich empfehle aber, von den dort vorhandenen Leseplätzen gebrauch zu machen, um nicht zu viel Geld da zu lassen...


Zitat:
Leider ist es wohl kein TGA oder ZIP und auch kein anderes von mir bekanntes Format. Da gab es damals mal ein DOS Archiv, LBR, LU oder sowas in der Art. Könnte es sowas sein?


Also wenn Du mehr Informationen über Dateiformate suchst, da ist Wotsit die beste Adresse, die mir bekannt ist. Es gibt auch noch das Werk über Dateiformate von Günter Born, aber wahrscheinlich nur noch in Bibliotheken. Die letzte Auflage davon ist im Jahr 2000 erschinen. (Ich tippe mal darauf, das der Autor keine Lust mehr hatte, das Werk weiter zu führen, weil es in den vorhergehenden 90er Jahren fast jedes Jahr eine Neuauflage gab, die zudem immer dicker wurde. Meine Ausgabe von '92 hat rund 800 Seiten, die von 2000 hat 1100.)

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.01.2008, 08:00 Uhr
0xdeadbeef
Gott
(Operator)


LBR? Ach du Scheiße, das ist ja _ur_alt. Aaalso, ne Beschreibung des Formats gibt es hier, das sollte bei der Implementierung wohl notwendig sein.

Ansonsten würde ich mal das Internet nach Programmen abgrasen, die das entpacken können; vielleicht ist schonmal jemand auf das selbe Problem gestoßen. Ich kenne jetzt keins, aber ich hab auch seit 15 Jahren oder so kein LBR-Archiv mehr gesehen.

Nachtrag: Ich hab eins gefunden, http://rus.members.beeb.net/lbrate.html
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 18.01.2008 um 08:01 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
19.01.2008, 11:39 Uhr
Sascha



Vielen Dank!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: