// der php hacker

// archiv

Von Eastereggs und wie man sie verstecken kann

Geschrieben am 16. Dez 2009 von Cem Derin

Uns Entwicklern wird oftmals abgesprochen, dass wir Kreativ sind. Das erkennt man leider schon oft daran, dass in den meisten Agenturen zwischen „Kreativen“ und „Entwicklern“ unterschieden wird. Dabei ist das alles andere als Gerechtfertigt. So verstehen wir unser Handwerk ebenfalls als eine „Kunstform“, erkennen in schönem Code Ästhetik, wo das ungeschulte Auge nur wirre Zeichenfolgen sieht. Investieren wir doch viel Liebe und Herz in den Aufbau und die Gestaltung unserer Applikationen ist es letztlich am Ende für den Anwender doch nur ein Werkzeug. Mich persönlich stimmt es dann und wann traurig, wenn der Betrachter das Kunstwerk, das man geschaffen hat nicht würdigt – oder würdigen kann. Aber daran wird man wohl auch nie etwas ändern können: Das was für die meisten an Software „schön“ ist, ist in der Regel nicht einmal die Software selbst sondern eben das, was die „Kreativen“ dazu beigetragen haben.

All das soll mich aber nicht daran hindern, meine Signatur unter das zu setzen, was ich schaffe. Damit meine ich nicht meinen Namen in den Kommentaren, damit meine ich auch nicht, dass ich ans Dokumentende ein pubertäres „hacked together by Cem Derin“ klatsche. Oftmals ist das ja auch gar nicht möglich. Nein, ich meine, dass ich meine Handschrift so hinterlasse, dass Sie zwar Sichtbar ist – aber trotzdem auch Unsichtbar. Dazu bediene ich mich dem, was gemeinhin als „Easteregg“ bekannt ist. So stelle ich sicher, dass meine Software von den Leuten gewürdigt werden kann, die dazu auch in der Lage sind.

Viele Seiten beinhalten einen kleinen Scherz, einen Kommentar, einen Witz oder ähnliches, wenn man bestimmte Tastenkombinationen auf einer Seite betätigt. Das hat den Nachteil, das ein gewisser Anteil JavaScript nachgeladen werden muss und man ggf. auch Resourcen einbettet, die kein Mensch freigegeben hat. Da man sowas natürlich auch nicht mit seinem Gewissen vereinbaren kann, hatte dies zur Folge, dass meine Eastereggs so versteckt waren, dass sie keiner Gefunden hat.

Irgendwie hat auch das geschlaucht. Da gab es dann aber noch eine andere Möglichkeit, wie man ein Easteregg unterbringen kann: ASCII-Art. Obwohl, nicht direkt. Im Grunde meine ich nur das hinzufügen von zusätzlichem Whitespace. Man verändert den Inhalt nicht, sondern lediglich die Formatierung, so dass dem Betrachter eine Botschaft ohne jegliche Nebenwirkungen übermitteln kann.

Dazu habe ich ein kleines Programm geschrieben, dass zwar noch alles andere als ausgereift ist, aber seinen Zweck trotzdem schon erfüllt. Zu finden ist es hier. Und wer sich nun fragt, was das Ding macht – der schaue sich den Quelltext dieses Beitrags an =)

Übrigens: Die Textbasis ist derzeit die, die ihr hier grade lest. Das wird sich aber bald ändern. Außerdem stehen die Einstellungsmöglichkeiten noch nicht zur Verfügung – denn um ein halbwegs zufrieden stellendes Ergebnis zu erzielen, muss man ganz schön den Parametern rumjustieren.

Workshop: Brawler – Host scannen, Teil 5

Geschrieben am 15. Dez 2009 von Cem Derin

Zuvor:

  1. Workshop: Brawler – The Web Application Security Scanner, Teil 0
  2. Workshop: Brawler – Eine Frage der Lizenz, Teil 1
  3. Workshop: Brawler – Alles im Rahmen, Teil 2
  4. Workshop: Brawler – Not unplugged, Teil 3
  5. Workshop: Brawler – Der Rutengänger, Teil 4
  6. Workshop: Brawler – Code Review, Teil 5

Heute beginne ich mit einer der Kernfunktionen von Brawler: Das scannen eines Hosts bzw. eine Seite. Außerdem werde ich heute die Plugin-Schnittstelle implementieren, damit man Brawler direkt mit neuen Funktionen versehen werden kann. Für heute wird das lediglich das setzen eines eigenen User-Agents sein.


// mehr lesen

Workshop: Brawler – Code Review, Teil 5

Geschrieben am 11. Dez 2009 von Cem Derin

Zuvor:

  1. Workshop: Brawler – The Web Application Security Scanner, Teil 0
  2. Workshop: Brawler – Eine Frage der Lizenz, Teil 1
  3. Workshop: Brawler – Alles im Rahmen, Teil 2
  4. Workshop: Brawler – Not unplugged, Teil 3
  5. Workshop: Brawler – Der Rutengänger, Teil 4

Ich hab zwar beim letzten mal gesagt, dass ich die Plugin-Schnittstelle implementieren werde sowie die ersten Zeilen für das Scanning schreibe, doch beim durchsehen des Codes fielen mir schon so viele Stellen ins Auge, die ein Code Review mit einhergehendem Refactoring unumgänglich machen. Einige davon kamen sogar von Lesern. Vielen Dank an dieser Stelle.

Ein paar Worte zum Vorgehen: Ich gehe Datei für Datei und Zeile für Zeile durch. Ich werde hier allerdings nur Änderungen kommentieren.


// mehr lesen

Workshop: Brawler – Der Rutengänger, Teil 4

Geschrieben am 09. Dez 2009 von Cem Derin

Zuvor:

  1. Workshop: Brawler – The Web Application Security Scanner, Teil 0
  2. Workshop: Brawler – Eine Frage der Lizenz, Teil 1
  3. Workshop: Brawler – Alles im Rahmen, Teil 2
  4. Workshop: Brawler – Not unplugged, Teil 3

Nachdem ich mir eine kleine MVC-Architektur sowie diverse Tools zum ahandeln der Konsole geschrieben habe und im letzten Teil auch noch die Grundlegende Plugin-Funktionalität implementieren konnte, werde ich heute einen Router in den MVC-Part einbauen – der auch direkt die Plugins berücksichtigt. Ganz zum Schluss gibt es dann auch noch mal einen flüchtigen Blick auf das Chaos das ich „Arbeitsweise und Stil“ nenne ;)


// mehr lesen

Workshop: Brawler – Not unplugged, Teil 3

Geschrieben am 08. Dez 2009 von Cem Derin

Zuvor:

  1. Workshop: Brawler – The Web Application Security Scanner, Teil 0
  2. Workshop: Brawler – Eine Frage der Lizenz, Teil 1
  3. Workshop: Brawler – Alles im Rahmen, Teil 2

Nachdem ich eine simple Grundarchitektur aufgebaut habe, möchte ich, dass die Software bereits in diesem Stadium über eine Plugin-Struktur erweiterbar wird. Also ermittle ich ein paar Anwendungsfälle, die das Plugin-System abdecken muss.
// mehr lesen

Workshop: Brawler – Alles im Rahmen, Teil 2

Geschrieben am 07. Dez 2009 von Cem Derin

Zuvor:

  1. Workshop: Brawler – The Web Application Security Scanner, Teil 0
  2. Workshop: Brawler – Eine Frage der Lizenz, Teil 1

Bevor ich die eigentliche Funktionalität der Software erarbeite, benötige ich eine Infrastruktur. Wie schon erwähnt wünsche ich das MVC-Pattern zu nutzen. Dazu brauche ich noch eine einfache und schnelle Möglichkeit Ausgaben in die Konsole zu schreiben bzw. Einnahmen anzunehmen. Zu allererst brauche ich jedoch einen Einstiegspunkt.


// mehr lesen

Workshop: Brawler – The Web Application Security Scanner, Teil 0

Geschrieben am 04. Dez 2009 von Cem Derin

Ich hab es gestern schon getwittert: Ich bin wieder zurück. Eigentlich schon länger, aber durch die Schreibpause entstand dann auch so etwas wie eine kleine Schreibblockade. Da ich nun aber ein kleines Projekt starten will, habe ich mich entschlossen, die Entwicklung öffentlich zu dokumentieren sowie zu erläutern.

Konkret geht es um etwas, dass dem Blognamen alle Ehre macht: PHP und Security ;-) Ich hege den Plan ein Kommandozeilen-Tool zu schreiben, dass eine beliebige Webapplikation auf Sicherheitslücken hin testet. Jaja, ich höre schon die Unkenrufe, sicherlich gibt es so etwas schon zu Hauf, viel besser und überhaupt. Und ja, ihr werdet sehen, vieles was ich mache, gibt es auch schon fertig da draussen, und auch wenn ich meinem Prinzip, dass Rad niemals neu zu erfinden, damit nicht gerecht werden, möchte ich das komplette Projekt aus meiner Feder entstehen lassen. Und für euch da draußen bedeutet das: Learning by doing! Oder doch eher Learning by let do? Egal, ihr bekommt auf jedem Fall was von meinen Erfahrungen ab …

Für alle denen beim Überfliegen des Beitrags schon in Ermangelung bunter Code-Blöcke die Tränen in die Augen schießen: Heute gibt es noch keinen Quelltext. Heute gibt es nur ein bisschen Brainstorming und eine Skizze meiner Version :-)


// mehr lesen

A glance at the past

Geschrieben am 03. Dez 2009 von Cem Derin

Vor geraumer Zeit habe ich den Wunsch gehegt, Objekte hin- und her mutieren zu lassen. Der daraus resultierende Artikel hat für eine Handfeste Diskussion zwischen mit und Nils von phphatesme.com geführt. Am Ende verlief das ganze im Sand. Dem Thema hat sich Rudwig Brown angenommen und geht nun einen eleganten Weg über Reflection. Ein freies hin und hercasten ist AFAIK aber immer noch nicht möglich. Aber schon mal sehr schön :-)

Geschrieben in PHP Kommentieren

Frankenstein spielen: Objektmutation mit PHP

Geschrieben am 14. Mai 2009 von Cem Derin

Wagen wir Heute ein Experiment: Ich möchte eine Instanz einer beliebigen Klasse mutieren lassen. Und zwar so, dass am Ende eine Instanz einer vollkommen anderen Klasse dabei herauskommt – die Daten aber immer noch die selben sind.

Wozu man das brauchen könnte? Nehmen wir einfach mal an, wir verwenden eine Bibliothek. Eine Klasse dieser Bibliothek leiten wir ab und fügen ein oder mehrere Methoden hinzu. Korrespondierende Klassen aus der Bibliothek allerdings geben immer eine Instanz der Ursprungsklasse zurück. Wir müssten nun also alle Methoden in denen das der Fall ist kopieren, und die Ursprungsklasse durch unsere Ableitung ersetzen.


// mehr lesen

Zend Framework 1.8.1 erschienen

Geschrieben am 13. Mai 2009 von Cem Derin

Heute wurde die Version 1.8.1 Version des Zend Frameworks veröffentlich, wie man der offiziellen Mailinglist entnehmen kann. Neben zahlreichen kleineren Fixes dürften vor allem die Änderungen am Autoloader interessant sein. Nachdem eine wahre Flut von Problemmeldungen bzgl. der neuen Autoload-Architektur einging, wurde dahingehend eine Anpassung gemacht, die die meisten Probleme lösen sollte.

Darüberhinaus wurde das Zend_Tool um Modulfunktionalitäten ergänzt sowie die Flash-Schnittstelle Zend_Amf verbessert.

Details und Downloads wie immer auf der offiziellen ZF-Seite: http://framework.zend.com/download/latest

Geschrieben in PHP 2 Kommentare
theme von mir, software von wordpress, grid von 960 grid system. funktioniert in allen browsern, aber der safari bekommt das mit der schrift am schönsten hin.