Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   MD5Hash einer Datei ändern? (https://www.delphipraxis.net/202952-md5hash-einer-datei-aendern.html)

Koloss 28. Dez 2019 14:27

MD5Hash einer Datei ändern?
 
Hasllo, ich lese überall wie ich einen HD5Hash erzeugen kann oder von einer datei auslesen kann.
Aber ich finde nichts über den MD5Hash ändern einer Datei.

Verwende Delphi XE10.

jfheins 28. Dez 2019 14:37

AW: MD5Hash einer Datei ändern?
 
Ein solcher Hash berechnet sich aus dem Inhalt der Datei. Ändern sich die Bytes, ändert sich i.d.R. auch der Hash.
Man kann den Hash nicht ändern ohne den Inhalt zu ändern.

Aber um deine Frage präzise zu beantworten: Öffne die Datei in einem Editor deiner Wahl und füge ganz vorne ein "x" hinzu. Der Hash ist nun anders.

zeras 28. Dez 2019 19:10

AW: MD5Hash einer Datei ändern?
 
Zitat:

Zitat von jfheins (Beitrag 1454030)

Öffne die Datei in einem Editor deiner Wahl und füge ganz vorne ein "x" hinzu. Der Hash ist nun anders.

Oder ändere einfach einmal ein Byte in deiner Datei.

Koloss 8. Jan 2020 13:45

AW: MD5Hash einer Datei ändern?
 
Sorry, meines späten Feedback.

Das ich den Hash nicht einfach so ändern kann weis ich jetzt, da er sich errechnet.
Meine Frage war nicht ganz korrekt formuliert. Es geht eigentlich um RAR-Dateien und da ist scheinbar ein Hash gespeichert.

KodeZwerg 8. Jan 2020 13:47

AW: MD5Hash einer Datei ändern?
 
Eine Frage ist immer noch nicht klar definiert?

Koloss 8. Jan 2020 13:55

AW: MD5Hash einer Datei ändern?
 
Das wäre der Batch Code:
Code:
@echo off & setlocal
for %%a in ("%1*") do echo %2 >> %%a
Verstehe ihn leider nicht ganz
%1 = Pfad
%2 = neuer MD5Hash

Er nimmt alle Dateien in einem Ordner und ändert den Hash.
Hätte es gerne in Delphi umgesetzt. Hoffe das es jetzt ganz verständlich ist.

Dalai 8. Jan 2020 14:09

AW: MD5Hash einer Datei ändern?
 
Zitat:

Zitat von Koloss (Beitrag 1454629)
Er nimmt alle Dateien in einem Ordner und ändert den Hash.

Nö. Alles, was der Batchcode macht, ist an alle Objekte (Dateien+Verzeichnisse+Links+Junctions) im angegebenen Ort %1 den zweiten Parameter %2 (inkl. folgendem Leerzeichen) anzuhängen. Da sich dadurch der Inhalt der Dateien ändert, ist hinterher der Hash jeweils ein anderer. Gerade bei Archiven kann das aber dazu führen, dass sie kaputtgemacht werden, sich nicht mehr entpacken lassen; dann kommt es auf den Archivierer an, wie fehlertolerant der ist.

Damit ist aber trotzdem weiter unklar, mit welchen Parametern genau diese Batch gerufen wird. Davon abgesehen kann man Batches auch von einem Delphi-Programm aus aufrufen - Stichwort MSDN-Library durchsuchenShellExecuteEx.

Die Fragestellung bzw. welches Ziel eigentlich erreicht werden soll, ist zumindest mir immer noch unklar.

Grüße
Dalai

Neutral General 8. Jan 2020 14:15

AW: MD5Hash einer Datei ändern?
 
Ganz ehrlich: Was hast du vor? Was soll der Sinn davon sein?
Das ist alles kompletter Schwachsinn. Was ist dein Ziel?
Es gibt keinen Grund den Hash einer Datei ändern zu wollen. (Abgesehen davon, dass es wie gesagt auch gar nicht geht außer man ändert die Datei selbst).

Koloss 8. Jan 2020 14:54

AW: MD5Hash einer Datei ändern?
 
@Natural General: Über Sinn oder Unsinn, das las bitte mir über. Du brauchst doch hier nicht zu antworten wenn das für dich Schwachsinn ist.

@Dalai: Die Parameter habe ich oben beschrieben, 1=Pfad der Dateien und 2=MD5Hash
Die Batchdatei rufe ich eh schon in Delphi auf, das klappt eh. Wollte halt den Source in Delphi haben.

himitsu 8. Jan 2020 14:54

AW: MD5Hash einer Datei ändern?
 
Delphi-Referenz durchsuchenFindFirst/FindNext und dann in der Schleife jeweils > Delphi-Referenz durchsuchenAppend, Delphi-Referenz durchsuchenWrite und Delphi-Referenz durchsuchenClose.

oder in Neudephianisch:
Delphi-Quellcode:
for Filename in TDirectory.GetFiles(ParamStr(1), '*') do
  //TFile.WriteAllText(Filename, TFile.ReadAllText(Filename) + ParamStr(2));
  TFile.AppendAllText(Filename, ParamStr(2));
Und wie schon erwähnt wurde, ist soein Vorgehen natürlich nur für Textdateien halbwegs sinnvoll
und hat per se absolut nichts mit MD5 zu tun, außer dass sich natürlich der Hash jeder Datei ändert, wenn man deren Inhalt ändert.

Koloss 8. Jan 2020 15:04

AW: MD5Hash einer Datei ändern?
 
@himitsu: Danke für deine Antwort also du meinst er haut den hash hinten dazu? Damit ändert sich der hash natürlich von der Datei.

Das GetFiles usw. kenne ich schon, wirklich sehr gute Funktionen gibt es da.

Dalai 8. Jan 2020 15:13

AW: MD5Hash einer Datei ändern?
 
Zitat:

Zitat von Koloss (Beitrag 1454639)
[...] also du meinst er haut den hash hinten dazu?

Nein. Es wird irgendetwas an die Datei gehängt. Was dieses Etwas ist, hängt davon ab, mit welchen Parametern die Batch gerufen wird. Das kann ein einzelnes Zeichen sein oder ein ellenlanger String, oder auch gar nichts (so dass nur das Leerzeichen bleibt) - wir wissen es nicht.

Grüße
Dalai

KodeZwerg 8. Jan 2020 15:19

AW: MD5Hash einer Datei ändern?
 
Les doch mal bitte wikipedia und beschreibe wenigstens ansatzweise was der Sinn und Zweck sein soll, ansonsten geb ich NG zurecht Recht.

Koloss 8. Jan 2020 15:20

AW: MD5Hash einer Datei ändern?
 
Ich habe doch die Parameter beschrieben. 2 Parameter ist der Hash den übergebe ich ja.

Der Sinn ist das sich der Hash von der Datei ändern soll, weil dieser geprüft wird ob er gleich ist.

Dalai 8. Jan 2020 15:28

AW: MD5Hash einer Datei ändern?
 
Und die glaubst im Ernst, dass der an die Datei anzuhängende String dem letztlich resultierenden Hash der Datei entsprechen wird? Was ist, wenn die Batch mehrfach hintereinander gerufen wird? Irgendwie habe ich Zweifel daran, dass dir klar ist, was es mit Hashes auf sich hat.

Grüße
Dalai

hoika 8. Jan 2020 15:28

AW: MD5Hash einer Datei ändern?
 
Hallo,
for %%a in ("%1*") do echo %2 >> %%a

Hiermit wird der Hash (%s) als neue Zeile in der Textdatei (%1) angefügt.
(siehe auch https://stackoverflow.com/questions/...-file/19879594)

Und damit ändert sich natürlich auch der Hash der Datei.
Der alte Hash steht aber als letzte Zeile drin.

Lade ich die Datei (TStringList) und werfe die letzte Zeile (den Hash) wieder raus,
habe ich die Originaldatei und damit den Originalhash wieder.

Was das ganze soll, spielt doch keine Rolle.
Vielleicht geht es um Archivierung?

Zitat:

Der Sinn ist das sich der Hash von der Datei ändern soll,
OK, tut er durch das Anhängen mit >>

Zitat:

weil dieser geprüft wird ob er gleich ist.
Hier bin ich raus ;)

Koloss 8. Jan 2020 15:36

AW: MD5Hash einer Datei ändern?
 
Routine wird nur einmal aufgerufen.

himitsu 8. Jan 2020 15:43

AW: MD5Hash einer Datei ändern?
 
Also hängst du nur einen String/Text (hier ein MD5-Hash, also irgendeine Folge aus 32 hexadezimalen Zeichen) an jede Datei an?
An jede Datei den selben Hash, der mit den Dateien, wo er angehängt wird, nichts zu tun hat.

Heißt das "wie kann ich den Hash ÄNDERN" nun, dass bereits schon etwas dort in den Dateien drin steht, was einen Hash darstellt und du willst Diesen "ERSETZEN"?
Dann mußt du also die Texte der Dateien einlesen, ein ReplaceStr, bzw. vor dem Anhängen den alten Hash Text löschen (Delete), dann den neuen Hash anhängen und wieder speichern.

Es hat also so oder so garnichts mit einem HASH der Dateiinhalte zu tun, sondern nur mit einem Text in den Dateien, der einen Hash von irgendwas darstellt.



Das Delphi-Äquivalent zu Dem, was deine Batch macht, hatte ich ja schon erklärt.

Neutral General 8. Jan 2020 15:44

AW: MD5Hash einer Datei ändern?
 
Die Batchdatei tut nicht ansatzweise was du denkst was sie tut.
Und ich kann mir auch nur 1 Fall vorstellen wo das was du hier grob beschreibst im Ansatz Sinn macht und dass ist eine MD5 Kollision herbeizuführen um (d)eine Datei als etwas auszugeben was sie nicht ist und irgendeinen (Sicherheits-)Mechanismus zu umgehen.
In dem Fall weiß ich nicht ob du hier überhaupt dafür Hilfe kriegen solltest/wirst aber ich kann dir schon mal sagen, dass deine Batchdatei komplett nutzlos ist, es sei denn du hast vorher schon andersweitig berechnet was du an die Datei anhängen musst um eine Kollision zu erzeugen.

Der Grund warum wir fragen was du genau vorhast ist dass wir dir dann mit großer Wahrscheinlichkeit besser helfen können weil du zu 90%+ auf dem absolut falschem Weg bist.
Wenn du uns keine Informationen geben kannst, dann können wir nur sehr schwer rausfinden wie wir dir helfen können und ich sag mal so.. dann hat jeder so seine Gedanken darüber was du da am bauen bist.

Ich muss nicht Antworten wenn ich es für Schwachsinn halte, aber wenn sich jeder daran halten würde hätte dein Post jetzt exakt 0 Antworten weil ich mir sicher bin, dass jeder der bisher geantwortet hat das für schwachsinnig hält. Und meine Intention war trotzdem dir zu helfen, weswegen ich versucht habe aus dir die Informationen herauszulocken mit denen ich dir ggf. weiterhelfen könnte.

Aber da dein Vorhaben scheinbar Top-Secret ist bezweifel ich dass der Thread hier dich irgendwie weiterbringen wird.

hoika 8. Jan 2020 15:52

AW: MD5Hash einer Datei ändern?
 
Hallo,
Zitat:

An jede Datei den selben Hash
Stimmt, ist ja immer der gleiche Wert, weil das ja ein Parameter ist.

Er wird schon wissen, was er tut.

Neutral General 8. Jan 2020 15:55

AW: MD5Hash einer Datei ändern?
 
Zitat:

Zitat von hoika (Beitrag 1454651)
Er wird schon wissen, was er tut.

:lol:

Koloss 8. Jan 2020 15:56

AW: MD5Hash einer Datei ändern?
 
Ich will hier gar keine Sicherheitslücke umgehen etc. bitte mir nichts negatives unterstellen ! Danke.
Habe es ja schon erklärt was ich möchte, die Datei soll sich einfach geändert haben. Ohne das sich der eigentliche Content ändert.

Mir gefällt es immer wenn leute schreiben schreiben und 0 zur Lösung beitragen. Dann einfach nichts schreiben ist öfters besser.

himitsu 8. Jan 2020 16:00

AW: MD5Hash einer Datei ändern?
 
Zitat:

Zitat von Koloss (Beitrag 1454653)
Habe es ja schon erklärt was ich möchte,

Nicht so richtig, so das man es auch wirklich versteht.

Zitat:

Zitat von Koloss (Beitrag 1454653)
die Datei soll sich einfach geändert haben. Ohne das sich der eigentliche Content ändert.

Die/Mehrere Lösung(en) wurden bereits gezeigt. (muß ja nicht jeder das Selbe mehrfach wiederholen)

Koloss 8. Jan 2020 16:01

AW: MD5Hash einer Datei ändern?
 
Ja, eh bin mit den Antworten eh zufrieden. Ob es funktioniert hat werde ich feedback geben.

Luckie 8. Jan 2020 16:01

AW: MD5Hash einer Datei ändern?
 
Es macht nur Sinn, wenn man jemanden was "unterschieben" wollte. :roll:

Aber die Frage sollte schon erlaubt sein. Eventuell gibt es ja eine andere Lösung für dein Problem.

Dalai 8. Jan 2020 16:11

AW: MD5Hash einer Datei ändern?
 
Zitat:

Zitat von Koloss (Beitrag 1454653)
Habe es ja schon erklärt was ich möchte, die Datei soll sich einfach geändert haben. Ohne das sich der eigentliche Content ändert.

Und hier beweist du meiner Meinung nach, dass du tatsächlich nicht weißt, was Hashes sind und wie sie erzeugt werden. Ein Hash einer Datei oder einer Zeichenkette kann sich nur dann ändern, wenn sich der Inhalt einer Datei/Zeichenkette ändert. Anders ausgedrückt: Ohne den Inhalt einer Datei/Zeichenkette zu ändern, kann sich ein Hash niemals ändern.

Klar kann es Situationen bzw. Dateitypen geben, bei denen es nicht stört, wenn man etwas an sie anhängt, weil das interpretierende Programm diesen angehängten "Müll" ignoriert. Der Inhalt der Datei wird dennoch verändert (und dadurch der Hash). Sehr viele Dateitypen gehen aber durch solche Aktionen kaputt, weil ein bestimmtes Format erwartet wird. Von daher kann ich nur davon abraten, diesen Weg zu gehen (wozu auch immer das am Ende gut sein soll).

Grüße
Dalai

himitsu 8. Jan 2020 16:12

AW: MD5Hash einer Datei ändern?
 
Zitat:

Zitat von Luckie (Beitrag 1454657)
Aber die Frage sollte schon erlaubt sein. Eventuell gibt es ja eine andere Lösung für dein Problem.

Soll soviel heißen wie dein Vorgehen, als das was du grade machen willst, könnte auch falsch sein, womit die genannten Lösungen nicht passen könnten.
Drum wurde auch genauer gefragt was eigentlich gemacht werden soll, bzw. was der Sinn/Grund dafür ist.

p80286 8. Jan 2020 17:45

AW: MD5Hash einer Datei ändern?
 
Zitat:

Zitat von Koloss (Beitrag 1454653)
Habe es ja schon erklärt was ich möchte, die Datei soll sich einfach geändert haben. Ohne das sich der eigentliche Content ändert.

Mir gefällt es immer wenn leute schreiben schreiben und 0 zur Lösung beitragen. Dann einfach nichts schreiben ist öfters besser.

Nach meinem Verständnist nagelst Du an das Ende von Dateien einen String. Od dieser String eine Hexadezimale Representation eines Hashes ist laß ich mal dahingestellt, es können ja auch die vornamen unser letzten drei Bundespräsidenten sein. Egal um welche Zeichen Du eine Datei erweiterst, der Hash dieser Datei wird sich ändern. (Muß ich jetzt erwähnen, daß dieser auch erstellt werden muß?)

Da auch ich nicht zu denen gehöre die Dein Problem so eichtig verstanden haben, würde ich gerne eine nähere Erläuterung lesen.
Bitte entschuldige meine Begriffsstutzigkeit.

Gruß
K-H

hoika 8. Jan 2020 17:54

AW: MD5Hash einer Datei ändern?
 
Hallo,
Zitat:

die Datei soll sich einfach geändert haben. Ohne das sich der eigentliche Content ändert.
Ähem, mit der Batch-Datei ändert sich aber der "Content".

Textdatei-Original:
1
2
3
<Dateiende>

Hash der Datei: xxxx
jaja, xxxx ist nicht wirklich ein richtiger Hash ;)


Textdatei nach der Ausführung Batch-Datei:
1
2
3
Der Hash als Parameter %s
<Dateiende>

Hash der Datei: xxxx

Jetzt nehmen wir die letzte Zeile wieder weg

Textdatei ohne die letzte Zeile
1
2
3
<Dateiende>

Hash der Datei: xxxx wie vorher das Original

Koloss 8. Jan 2020 19:11

AW: MD5Hash einer Datei ändern?
 
Ja, genau! Ich kann irgendetwas dazuhängen und der Hash ist anders. Solange es der Dateityp zulässt passt es.

Mein Test hat funktioniert, mein rar lässt sich auch mit dem dazugehängten text entpacken.
Scheint zu funktionieren sozusagen, ob es für euch einen Sinn macht oder nicht sei dahingestellt.

Ihr habt mir ja geholfen also passt es so. Thx.

mensch72 8. Jan 2020 19:46

AW: MD5Hash einer Datei ändern?
 
..."Solange es der Dateityp zulässt passt es"...

Du denkst/machst es dir definitiv zu einfach!
Meist du ernsthaft, alles was auf ".rar" endet ist gleich?... und nicht jede RAR-Datei wird mit einem akuellem "org. WinRar" erzeugt oder gelesen.
"RARv4" und "RARv5" unterscheiden sich intern schon so gewaltig, das nicht jedes andere/ältere Programm damit klarkommt.
Deine "verlängerten" Archive würden bei meiner Software die definiv bestmöglich mit allen alten nund neuen RAR-Dateien kompatibel ist, herausfallen, weil der EOF Check schief geht... denn wenn die RAR Struktur voll durch geparst, muss der FilePointer auf EOF stehen!

Was du willst, würde ich via der dafür vorgesehenen Metadaten-Tag im RAR-Format machen, da kann mann biebige Kommentare, HASH-Werte oder was auch immer man will SAUBER hinzufügen&beliebig ändern, ohne des es etwas an den im RAR-Archiv komprimierten Daten ändert.
=> das wäre die 100% saubere&sichere Lösung für dein Vorhaben!
(für PNG/JPG gibt es auch solche von den Bildinformationen UNABHÄNGIGEN MetaTags, und NUR dieser Weg ist SAUBER und SICHER)

Mein Tip:
- beschäftige dich ernsthaft mit den Dokus zu deinen möglichen physischen Dateiformaten und ihren internen (historischen)Versionsunterschieden!
- trenne dich von der Annahme, das ".rar" nur zu WinRar gehört, oder ".doc" nur zu MS-Word... bestes Beispiel ist ".zip" da gibt es unendlich viel Software die damit incl. zig interner Versionen&Varianten arbeitet!
- denke auchmal an gute Virentests... die sperren "verlängerte" Standarddateien ganz fix&hart, denn denk dochmal nach wenn jeder Viren&Malware Programmierer seine bösen Zusatzbytes einfach so an Standard-Dateien anhängen könnte... vergiss also bitte das einfache "Anhängen"!

Dalai 8. Jan 2020 19:59

AW: MD5Hash einer Datei ändern?
 
Mal noch etwas Klugscheißerei ;)
Zitat:

Zitat von mensch72 (Beitrag 1454678)
und nicht jede RAR-Datei wird mit einem akuellem "org. WinRar" erzeugt oder gelesen.

Gelesen vielleicht nicht, mit dem aktuellen WinRAR vielleicht auch nicht, aber mit hundertprozentiger Sicherheit wird ein WinRAR oder dessen Kommandozeilen-Pendant (unter irgendeinem OS) zur Erzeugung von RAR-Archiven verwendet. WinRAR (und das Kommandozeilen-Pendant) ist Closed Source, nur UnRAR und die Formatspec ist offen AFAIK.

Der restlichen Argumentation hingegen kann ich vollumfänglich zustimmen. Und IMO wird die Geschichte spätestens mit Multipart-Archiven oder völlig anderen Dateitypen krachen gehen...

Grüße
Dalai

hoika 8. Jan 2020 20:40

AW: MD5Hash einer Datei ändern?
 
Hallo,
Zitat:

Mein Test hat funktioniert, mein rar lässt sich auch mit dem dazugehängten text entpacken.
Scheint zu funktionieren sozusagen, ob es für euch einen Sinn macht oder nicht sei dahingestellt.
Das ist doch super.
Dann lass doch den Thread schließen, damit nicht noch mehr Schlaumeier mehr
"könnte"-Sachen reinschreiben.

PS:
Seit der Oma-Attacke im WDR (?)

"Schlaumeier" war Ironie ...

Luckie 8. Jan 2020 21:20

AW: MD5Hash einer Datei ändern?
 
Wenn das Problem jetzt gelöst ist, darf man fragen wozu du das brauchst?

p80286 8. Jan 2020 22:54

AW: MD5Hash einer Datei ändern?
 
Zitat:

Zitat von Luckie (Beitrag 1454685)
Wenn das Problem jetzt gelöst ist, darf man fragen wozu du das brauchst?

na das liegt doch auf der Hand. Die meisten Editoren lesen eine Text-Datei nur bis zum EOF jetzt packst Du noch irgendwas dahinter, und das ist in einem Editor nicht zu sehen. Wenn Du eine Software hast, die z.B. immer vollständige Sektoren oder Cluster liest und schreibt, kannst Du zusätzliche Informationen mitgeben, die zunächst nicht offensichtlich sind.

Gruß
K-H

P.S.
Das kann man natürlich mit jeder Software machen, die sich nur an den logischen Strukturen orientiert.

DeddyH 9. Jan 2020 06:36

AW: MD5Hash einer Datei ändern?
 
Wenn die Frage gelautet hätte "wie ändere ich eine Datei, ohne dass sich ihr intern gespeicherter Hash ebenfalls ändert?", dann hätte dieser Thread für mich Sinn gemacht (Sinn oder Unsinn dieses Vorhabens einmal außen vor gelassen).

KodeZwerg 9. Jan 2020 07:02

AW: MD5Hash einer Datei ändern?
 
Bin mir gerade nicht so ganz sicher, aber für ausführbare dateien (.exe .dll .ocx .sys usw...) ändert da ein ADS auch den hash oder wird der ADS übersprungen?

Medium 9. Jan 2020 16:38

AW: MD5Hash einer Datei ändern?
 
Ich vermute das kommt auf das Programm an, das den Hash bildet. Da es ADS potenziell auf anderes OS nicht in identischer Form gibt, würde es für mich Sinn machen nur den reinen regulären Dateiinhalt selbst dafür zu nutzen.

Luckie 9. Jan 2020 16:43

AW: MD5Hash einer Datei ändern?
 
ADS stehen ja im Dateisystem des Datenträgers und sind mit der Datei verknüpft. Gehasht wird aber doch wohl nur die Datei selber.

Dalai 9. Jan 2020 17:17

AW: MD5Hash einer Datei ändern?
 
Es wäre schlimm, wenn ein ADS den Hash einer Datei ändern würde, denn dadurch gingen sämtliche signierte Dateien kaputt (die Signatur hängt ja auch am Hash der Datei).

Grüße
Dalai


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz