md5sum

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich schreib mir gerade ein kleines Tool, welches md5 Summen von Dateien berechnen soll und diese auch in *.md5-Datei abspeichern soll.

Das ist ja kein Problem. Es gibt auch unter python/Tools/Scripts/md5sum.py ein fertige Variante.

Weiß jemand ob es bei den .md5-Dateien ein bestimmtes Format gibt??? Ein quasi Standart?

EDIT: Ich möchte den ConfigParser dazu verwenden, damit auch ein paar zusatzinfos platz haben...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

md5summe ein oder mehrere leerzeichen dateiname
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Also ich nutzte den ConfigParser dazu, die Datei sieht dann so aus:

Code: Alles auswählen

[md5sum]
size = 141
md5sum = 1f2d9bbe5e3da433344da41c3c1fd607
mtime = 17 Nov 2005 10:06:45 +0000
filename = 01 - Leave In Silence.mp3
Die Angabe der Dateigröße (size) ist hilfreich, weil wenn die schon nicht stimmt, dann kann auch die MD5 summe nicht stimmen und muß somit für einen vergleich nicht neu berechnet werden ;)

Somit ist meine md5-Datei leider nicht allgemein Kompatibel. Ich könnte mir allerdings auch überlegen das ungefähr so zu machen:

Code: Alles auswählen

1f2d9bbe5e3da433344da41c3c1fd607 01 - Leave In Silence.mp3
#[md5sum]
#size = 141
#md5sum = 1f2d9bbe5e3da433344da41c3c1fd607
#mtime = 17 Nov 2005 10:06:45 +0000
#filename = 01 - Leave In Silence.mp3
Somit könnte es kompatibel zu anderen Programmen sein?!?!
Gibt es Kommentare in md5-Dateien???

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

jens hat geschrieben:Gibt es Kommentare in md5-Dateien???
Ich glaube nein
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

jens hat geschrieben:Weiß jemand ob es bei den .md5-Dateien ein bestimmtes Format gibt??? Ein quasi Standart?
OUCH. Das heißt Standard :evil:

Ja. Den Standard gibt es, der schaut so aus:

Code: Alles auswählen

^(.*?)\s+(.*?)$
group1 = md5 summe
group2 = dateiname

und der ist fix :)

Und nein, das mit der Dateizeit ist eine schlechte Idee, weil ich kann eine Datei touchen und dann ist die Zeit anders, aber der Inhalt gleich.
TUFKAB – the user formerly known as blackbird
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

blackbird hat geschrieben:Und nein, das mit der Dateizeit ist eine schlechte Idee, weil ich kann eine Datei touchen und dann ist die Zeit anders, aber der Inhalt gleich.
Die Dateizeiten werden natürlich nicht herrangezogen um eine Aussage zu treffen, ob die Datei vom Inhalt her gleich oder unterschiedlich ist! Es wird nur ein Hinweis ausgegeben, wenn die Zeiten unterschiedlich sind.
Nur die Dateigröße muß exakt stimmen... Bei großen Dateien braucht man dann nicht erst die md5 Summe zu bilden, wenn die Dateigrößen unterschiedlich sind ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

So, das fertige Tool gibt's nun hier:
http://www.jensdiemer.de/Programmieren/ ... ets/md5sum

Noch eine Frage...

Wie kann man Farbige Ausgaben machen??? Mit curses???

Wenn z.B. die MD5 summe falsch ist, sollte die Zeile rot Dargestellt werden, damit sie besser auffällt...

OK, curses gibt's nicht unter Windoof... Ein schneller Hack:

Code: Alles auswählen

    def set_color(self, color):
        """
        ändert die Komplette Hintergrundfarbe
        """
        if sys.platform == "win32":
            if color=="red":
                os.system("color 4f")
            elif color=="blue":
                os.system("color 1f")
Gibt's da eine Entsprechung unter Linux?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

jens hat geschrieben:Gibt's da eine Entsprechung unter Linux?
man console_codes

In Grunde gehen alle ANSI-Steuersequenzen, wie damals unter DOS:

Code: Alles auswählen

print "\033[1;31mfett rot\033[5;35;46mUnterstrichenes Lila auf Türkies :-P\033[m back to normal"
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

jens hat geschrieben:Die Dateizeiten werden natürlich nicht herrangezogen um eine Aussage zu treffen, ob die Datei vom Inhalt her gleich oder unterschiedlich ist! Es wird nur ein Hinweis ausgegeben, wenn die Zeiten unterschiedlich sind.
Wenn ich etwas runterlade wird das Datum der Datei auf das aktuelle Datum gesetzt, nicht das datum was die Datei auf dem Server hat. Von dem hier macht das auch nicht so viel Sinn.
jens hat geschrieben:Wie kann man Farbige Ausgaben machen??? Mit curses???

Wenn z.B. die MD5 summe falsch ist, sollte die Zeile rot Dargestellt werden, damit sie besser auffällt...

OK, curses gibt's nicht unter Windoof... Ein schneller Hack:
Gibt's da eine Entsprechung unter Linux?
curses. Und WConIO unter Windows.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

@Joghurt: Danke für den Hinweis. Leider klappen die Esc.Sequenzen bei mir unter Windows nicht. Ich denke dazu muß man evtl. ansi.sys laden?!?!

Da ich das tool erstmal nur unter Windows verwende, bleibe ich erstmal bei dem was ich bisher habe...

@Leonidas: Allerdings ist WConIO ein zusätzlich zu installierendes Modul, oder??? Für mein kleines Mini-Tool ist das aber total übertrieben...

Generell wäre evtl. eine TK-Oberfläche nett... Aber da ich in TK noch nicht's gemacht hab, ist das viel zu Aufwändig für mich ;)

Btw. interessant wäre evtl. das "konvertieren" bestehender MD5-Dateien nach dem "offiziellen" Skrickmuster zu meiner Variante ;) Aber da hab ich z.Z. keine richtige verwendung für, deswegen lass ich das...


Vielleicht hat ja einer von euch interesse daran und bastelt ein wenig damit rum...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

jens hat geschrieben:@Joghurt: Danke für den Hinweis. Leider klappen die Esc.Sequenzen bei mir unter Windows nicht. Ich denke dazu muß man evtl. ansi.sys laden?!?!
Funktioniert unter "richtigen" Windows-Versionen (NT-Serien ohne DOS Ballast) nicht mehr.
jens hat geschrieben:@Leonidas: Allerdings ist WConIO ein zusätzlich zu installierendes Modul, oder??? Für mein kleines Mini-Tool ist das aber total übertrieben...
Ja, allerdings ist es recht klein, soweit ich weiß nur ein pyd-Modul.
jens hat geschrieben:Generell wäre evtl. eine TK-Oberfläche nett... Aber da ich in TK noch nicht's gemacht hab, ist das viel zu Aufwändig für mich ;)
Tk? Nicht nett! Komische Integration in Python (über mehrere Ecken, so zum Beispiel den Tcl-Interpreter), wenige Features (viele Widgets musst du selbstmachen oder irgendwo fertige suchen) und das Look and Feel passt weder zu Linux noch Windows (davon abgesehen ist es sowieso mies). Und dass alles, wenn es doch mindestens zwei gute Alternativen gibt: PyGTK und wxPython (es gäbe noch PyQt, aber das ist nicht auf aktuellem Stand von Qt4 und außerdem bekommst du da den GPL-Maulkorb aufgesetzt, sonst ist es auch gut).
jens hat geschrieben:Vielleicht hat ja einer von euch interesse daran und bastelt ein wenig damit rum...
Ich denke, ich kann dir ein Grundskelett von einer PyGTK und eine wxPy GUI-Basteln, wenn du magst.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Naja, ich dachte an TK, weil es halt bei Python dabei ist und nicht weil es so toll ist ;)
Bei einem kleinen mini tool, wie das, möchte ich keinem zumuten irgendwas zusätzliches zu installieren (mir selber auch nicht :D )

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

jens hat geschrieben:Naja, ich dachte an TK, weil es halt bei Python dabei ist und nicht weil es so toll ist ;)
Ist es nicht. So habe ich bei mir Tcl/Tk komplett vom Rechner verbannt, weil es damit lauter Scherereien gab. Viele Linux-Distributionen haben auch noch ein extra python-tk Paket wo dann die ganzen Tk-Sachen drin sind.
jens hat geschrieben:Bei einem kleinen mini tool, wie das, möchte ich keinem zumuten irgendwas zusätzliches zu installieren (mir selber auch nicht :D )
Warum es dann in Python schreiben? Mit C oder Ocaml geht das doch genauso (da fällt mir ein, ich bin immer noch nicht dazu gekommen Ocaml zu lernen, zu viele interessante Python Sachen in letzter Zeit gefunden).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

jens hat geschrieben:@Joghurt: Danke für den Hinweis. Leider klappen die Esc.Sequenzen bei mir unter Windows nicht.
Hab ich auch nie behauptet. Ich dachte, du wolltest nur wissen, wie das unter Linux geht und dann je nach Betriebssystem verschiedene "Einfärberoutinen" aufrufen.
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Also ich finde ja das ganze ganz nett, aber ich sehe nur Nachteile zu einer originalen Implementation.
1.) die Zeiten sind sinnlose Werte, ändern sich leicht und haben keinen relevanten wert
2.) Dateigrößen ändern sich manchmal nicht und trotzdem ist die Datei verändert worden.
TUFKAB – the user formerly known as blackbird
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

blackbird hat geschrieben:2.) Dateigrößen ändern sich manchmal nicht und trotzdem ist die Datei verändert worden.
Ja und? Er testet ja auch, wenn die Dateigröße gleichgeblieben ist, aber halt nur dann...
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

blackbird hat geschrieben:1.) die Zeiten sind sinnlose Werte, ändern sich leicht und haben keinen relevanten wert
2.) Dateigrößen ändern sich manchmal nicht und trotzdem ist die Datei verändert worden.
Zu 1: Also zu den Zeiten hab ich ja schon erkärt, das es nur einen Hinweis ausgibt! Insbesondere ist es für mich interessant, ob die MD5-Datei vom Datum her mit der Original noch zusammen passt. Allerdings hätte ich dafür lieber einen lesbaren Wert, aber das ist ja nicht so einfach, s.: http://www.python-forum.de/viewtopic.php?t=4436

Zu 2: Da hast du dir das Skript aber nicht genau angeschaut. Sind die Dateigrößen gleich, wird die md5 neu berechnet und verglichen. Ist die Dateigröße aber schon unterschiedlich, loht sich die berechnung der MD5 garnicht. (Da ich das ganze ehr für Dateien im GB bereich benutzte, kann das manchmal schon sehr abkürzen)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten