Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

[PHP] Datei, die den eigenen Hash kennt bzw. prüft

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
Gagget
PostRank 2
PostRank 2
Beiträge: 30
Registriert: 02.08.2006, 03:57

Beitrag von Gagget » 25.01.2007, 06:15

Es geht im weitesten Sinne darum, dass ein PHP Datei sich selbst prüfen kann ob Sie verändert worden ist. Dazu mal ein kleiner Code Kern. (Ich finde Code sagt einem immer am meisten).

Code: Alles auswählen

$_SELFHASH = '#___SELFHASH___#';

   $hash = md5_file(__FILE__);
       if( $hash != $_SELFHASH )
          die( 'Datei wurde verändert !');
Natürlich wird dann #___SELFHASH___# gegen den richtigen Hash ausgestausht. Aber ich verfall da immer in eine Endlosschleife beim denken. Weil sobald ich ja den Hash in die Datei schreibe ändert sich ja der Hash der Datei auch damit wieder. Also muss ich den neuen Hash ziehen und den reinschreiben, aber dadurch ändert sich der Hash schon wieder ... usw.
Über diesen Weg also quasi unmöglich, aber theoretisch muss diese Kombination doch möglich sein, also das die Datei ihren eigenen Hash kennt.

Einer meiner Kollgen hat es gestern gut auf den Punkt gebracht.
"Ein klassisches Huhn / Ei Problem, ohne Huhn kein Ei und ohne Ei kein Huhn, aber da es Fakt is das es Hühner gibt, muss sich das ganze auch irgendwie lösen lassen."

Würde mich freuen wenn mir einer helfen kann oder evtl nur eine gute Idee dazu hat.

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


nachfrag
PostRank 4
PostRank 4
Beiträge: 174
Registriert: 30.05.2006, 21:20
Wohnort: Westerwald

Beitrag von nachfrag » 25.01.2007, 08:59

moin,

kann sein, dass ich so früh nach dem Aufstehen nicht richtig verstanden habe, ich antworte trotzdem mal:

Die Datei kann wohl nur einen ("ihren" aktuellen) hash kennen.
Ob der verändert wurde, kann man denke ich nur feststellen wenn man den alten hash irgendwo gespeichert hat, z.B. in der DB.

Angenommen du hast das Holen des Hash aus der DB in einer Funktion getHashFromDB($fileName) (gibt den alten hash zurück), kannst du vergleichen, etwa so:

Code: Alles auswählen

if( $hash != getHashFromDB(__FILE__))
          die( 'Datei wurde verändert !'); 
grüße

SloMo
PostRank 10
PostRank 10
Beiträge: 4880
Registriert: 04.01.2005, 18:26

Beitrag von SloMo » 25.01.2007, 09:08

Du musst die Zeile, in der der Hashwert steht, von der Hashberechnung ausnehmen.

godzilla
PostRank 4
PostRank 4
Beiträge: 104
Registriert: 28.05.2005, 21:29
Wohnort: Pilsting

Beitrag von godzilla » 25.01.2007, 09:08

Abgesehen davon lässt sich dieser Schutz innerhalb von 5 Sekunden aushebeln. :D

Gagget
PostRank 2
PostRank 2
Beiträge: 30
Registriert: 02.08.2006, 03:57

Beitrag von Gagget » 25.01.2007, 09:45

Ich kann ja mal was weiter ausholen ... man verschlüssele x php dateien mit einem schlüssel (crypt) und merke sich deren hash wert. Die Hashwerte aller Dateien bilden eine weitere Datei, die damit in der lage ist die bereits verschlüsselten Dateien auf Änderungen zu kontrolieren (diese Datei wird natürlich von den anderen Datein zur Ausführung benötigt). Nun müsste nur noch diese "Schlüssel Datei" in der Lage sein breits in reintext form den hash wert ihrer eigenen verschlüsselten form zu kennen. Um sich so selbst vor Änderungen zu schützen.

Ich weiß im Moment auch gar nicht mehr so genau ob ich mich da nicht irgendwo drin verdenke. Ich "glaube" das lässt sich dann nicht mehr so leicht aushebeln , aber egal wie oft ich es durchdenke ... mein kopf blockiert irgendwann. Kann das ein guter Ansatz werden ? oder nur Schwachsinn eines übermüdeten Coders ?

Gagget
PostRank 2
PostRank 2
Beiträge: 30
Registriert: 02.08.2006, 03:57

Beitrag von Gagget » 26.01.2007, 11:21

Alles schon so programmiert und fertig ... ich muss nur die letzte Datei im Kreis noch schützen ... also die mit den Hashwerten der anderen Dateien und den Kontroll Funktionen.

Solange das Ende der Kette änderbar bleibt, macht die ganze Kette leider keinen Sinn mehr. Daher versuche ich ja in die letzte Datei ihren eigenen Hash zu prügeln.

Gagget
PostRank 2
PostRank 2
Beiträge: 30
Registriert: 02.08.2006, 03:57

Beitrag von Gagget » 29.01.2007, 10:29

Ich denke Theorie und Praxis müssen hier ganz klar unterschieden werden. Theor ist es immer möglich eine Verschlüsselung oder sontwas irgendwie aufzuheben. Praktisch stellt sich nur die Frage wieviel Aufwand letztendlich dahinter steckt.

Bei SorceGardian Zend oder ähnlichen Sachen wir diese Sicherheit meist durch vorcompilierte Servermodule ereicht. Da ist es eben ungleich schwerer an die entscheiden Abläufe heranzukommen, aber theor. immernoch möglich. (Also ich hätte kein Bock da was nach Assembler umzuwandeln und den dadurch enstanden Code wochenlang zu analysieren und wieder umszuschreiben.)

Aber ich denke "schwer" kann man es auch ohne Servermodule machen.
1-x mal den code durch base64 oder sowas schicken halte ich dabei für nicht sonderlich schwer. Wenn man sich allerdings die Tatsache, dass Rechner nunmal viel komplizierter und schneller "denken" können zum Vorteil macht, kann man das denke ich gut ausnutzen. Im Moment hab ich mich halt ein bisschen auf die Hashsummen verfahren. aber ich bin sicher da gibt es auch noch x andere Möglichkeiten.

Im Mometn hab ich auch schon eine Möglichkeit gefunden, die Datei ihren eigenen Hash kennen zu lassen. Aber das gelbe vom Ei ist das wirklich nicht. Von der Genauigkeit her eher was in richtung crc4/5 und wirklich schnell gehts natürlich auch nicht. Funktioniert aber schon grob wie gedacht.

Warum mach ich das eigentlich ... ich denke das es für einige junge 'Entwickler Sinn macht eine kleines Tool zu machen in der Sie einfach nur ihr Project als Zip datei hochladen, die zuverschlüsselnden Files auswählen und das ganze auch sofort wieder als Zip zum download bekommen. Steht auch alles soweit, nur an der letzendlich guten(schwierigen) Verschlüsselung zerbrech ich mir schon seit tagen den Kopf. Und bin da natürlich auch für neue Ideen offen. Hat jemand ne gute ?

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag