by:

Wo sind denn nur die verflixten Schlüssel hin verschwunden? Und wer zur Hölle versteckt ständig die Fernbedienung?!?
Nun ja, wer kennt sie nicht die verzweifelte Suche nach allen möglichen Dingen?
Im realen Leben kann ich euch da auch nicht helfen (obwohl die Marktchancen für Schlüsselsuchroboter wohl gar nicht schlecht wären),
aber im Überlebenskampf in den unendlichen Weiten des www gibt es zum Glück eine Möglichkeit...

Anmerkung:
Wie man eMailadressen, Kreditkarten oder andere personenbezogene Daten aus dem Netz fischt werde ich an dieser Stelle nicht beantworten.
Wer wissen will wie man ansatzweise eine eigene Suchmaschine schreibt, wird hier geholfen,
etwas Programmiererfahrung in PHP wäre dabei von Vorteil.

Überblick:
Ich habe mich schon etwas länger mit der Problematik befasst eine Suchmaschine zu erstellen,
weniger aus der Ambition heraus Google Konkurrenz zu machen, als mehr aus Spass an der Technik.
Zuerst einmal werde ich in diesem Artikel eine kleine Übersicht geben und die Unterschiede zwischen
einem Crawler und Indexer erklären.
In weiterer Folge werden wir versuchen Ordnung ins Chaos zu bringen und eine kleine Suchmaschine programmieren.
Es wird am Ende auch auf das Thema SEO eingegangen, allerdings weniger aus der klassischen Perspektive der
selbsternannten Marketingexperten, als mehr aus Sicht des Suchmaschinenprogrammierers.


Auf dem Markt gibt es derzeit viele Suchmaschinen, allerdings wenige die so populär sind wie Google,
was nicht zuletzt auf deren Rankingfunktion zurückzuführen ist, diese ist dafür verantwortlich
dass ich möglichst relevante Suchergebnisse erhalte.
Wir werden uns also in weiterer Folge mit der Thematik beschäftigen müssen, wie wir möglichst
interessante Ergebnisse zu den Suchanfragen generieren.
Hierbei unterscheide ich generell zwischen zwei Arten, dem usergenerated Ranking (bedeutet der User bestimmt welche Inhalte zu welchem
Thema interessant sind) und dem rein computergestützten Ranking.
Am besten wäre natürlich eine Mischung aus beiden, aber dazu später mehr.

Die erste Frage die sich stellt, wenn man sich mit der Thematik beschäftigt: "Woher bekomme ich die ganzen Daten?".

Das kommt darauf an, was man durchsuchen will, wir werden uns in diesem kleinen Howto primär den Internetdaten widmen.
Also "Woher bekomme ich alle Webseiten?", nun ja, leider ist es bei der Grösse und dem Wachstum des Internets nicht
möglich alle Webseiten in seine Suchmaschine aufzunehmen, auch für Google nicht. (Ja, richtig, entgegegen hartnäckig
kursierender Gerüchte: auch Google weiß nicht alles.)
Daher können wir nur einen kleinen Teil des Internets überhaupt aufnehmen.
Diese Arbeit macht der sogenannte Webcrawler, er besucht Webseiten, folgt den Links (bis zu einer gewissen Tiefe) und
speichert die Daten in einer Datenbank.

Meine ersten Gehversuche habe ich mit einem externen Crawler (larbin und wget) und einem selbst geschriebenen Indexer gemacht.

Der Indexer hat lediglich die Aufgabe gehabt, vereinfacht gesagt die gesammelten Daten in die Datenbank zu schreiben.
In weiterer Folge hat er die Daten sortiert, Schlüsselwörter extrahiert und Datenbestände aktuell gehalten.

Bei grösseren Mengen (Bsp. 30 GB Daten) kann das schon mal an die Grenzen der Serverressourcen gehen.
Deshalb habe ich die Suchanfragen auf einen zweiten Table abgefragt, wo lediglich url, title, keywords und description
vorhanden sind und nicht die gesamten Rohdaten.

Okay was wissen wir bis jetzt? Wir benötigen einen Webcrawler, der uns die Webseiten runterlädt, und
einen Indexer der die Webseiten in die Datenbank speichert. Soweit sogut.
Damit wir unsere Daten nicht nur horten, sondern auch nutzen können, brauchen wir auch noch ein kleines
Frontend, mit der Möglichkeit eine Suchanfrage zu starten.
In meinem Beispiel wird das Frontend auch die Aufgabe des Webcrawlers übernehmen, das bedeutet man
kann nur einzelnene Seiten dem Index hinzufügen, allerdings ist diese Variante auch kompatibel
mit larbin, wget und anderen Webcrawlern.

Aber dazu mehr in Part 2, jetzt kommt erstmal etwas Code (es gibt auch das gesammelte Packet weiter unten):

Hier mal unsere config.php Datei, wo alle wichtigen Zugangsdaten für die MySQL DB gespeichert sind.

CREATE TABLE `data` (
`id` bigint(20) unsigned NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
`keyword` varchar(255) NOT NULL,
`desc` varchar(255) NOT NULL,
`url` varchar(255) NOT NULL,
`pr` int(11) NOT NULL default 5,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Das ist unsere Tabelle data, wo wir die Metadaten der Webseiten speichern werden.
Dies erledigt folgender Script.

add.php speichert die Metadaten einer Webseite in der Datenbank, wenn der title und description tag
vorhanden ist. Sollte die Url in der Datenbank bereits vorhanden sein, wird der vorhandene Datensatz aktualisiert.

Nun brauchen wir noch einen Script der die Daten durchsucht und im Idealfall auch ein Ergebnis ausspuckt.
(Beachte das dieser Script über ajax aufgerufen wird.)

result.php
schaut in der Datenbank, ob der übergebene Parameter $_POST[search] vorhanden ist und sortiert die Ergebnisse nach dem Feld pr.
In diesem Feld speichern wir das Userranking.

Nun benötigen wir noch eine Seite, die es dem Benutzer erlaubt die Suchanfragen einzugeben:

index.php
ist im wesentlichen dazu da, dem Benutzer ein Eingabefeld zu zeigen, von wo er die Suchanfrage
starten kann. Darüber hinaus übernimmt der Script auch das Uservoteing und somit ist er auch Bestandteil des Rankings.

Zu guter Letzt noch die ajax.js Datei, sie übergibt im Hintergund die eingegebenen Daten aus dem Textfeld der result.php Datei.

Tatatata! Fertig ist unsere Suchmaschine mit der beliebten usergenerierten Sortierung!

Gesamter Script: Downloaden | Demo
Licence GPL 2

In Part 2 werde ich noch näher darauf eingehen, wie man die Daten automatisiert in die Datenbank
schreibt, und wie man eine "Meinten Sie .." Funktion implementiert.
Ausserm werde ich das Thema SEO aus einem eher technischen Gesichtspunkt beleuchten und
versuchen die Suchergebnisse zu optimieren.

Ich hoffe euch hat der kleine Exkurs in die Welt der Suchmaschinen gefallen, wenn ja
freue ich mich immer über ein Kommentar, wenn nein siehe wenn ja. :)


Best Regards

Andreas


Quellen
http://yacy.net/
http://larbin.sourceforge.net/index-eng.html
http://www.gnu.org/software/wget/


Kommentare

by:

Hallo,


zuerst einmal eine kurze Erklärung wieso ich die letzten Tage nichts Neues
veröffentlicht habe. Die übliche Ausrede - ich wäre zu beschäftigt -  
stimmt nur teilweise,
vielmehr wusste ich nicht über was ich schreiben soll...

Also, was gibt es so Neues ???

Wir haben in Österreich tatsächlich eine neue Regierung...
Wieder einmal...
Okay daran ist nicht wirklich etwas Neues.
Eher so eine - bald jährliche - politische Begleiterscheinung, die ausser viel 
Steuergeldverschwendung wenig bringt.
Und wirklich "neu" ist sie eigentlich auch nicht...
Aber das ist natürlich nur meine persönliche Meinung, und ich möchte 
euch auch eher verschonen mit Statements zu Politik oder Weltwirtschaftskrise.

Statt über die wirtschaftliche Lage zu jammern hab
ich ein Börsenspiel programmiert, wo man seine ganz persönliche Wirtschaftskrise kostenlos
simulieren kann :)
Das Spiel hat mir ca. 14000 Impressions in den ersten 2 Wochen gebracht.
Wer es testen, hacken oder kritisieren möchte kann sich gerne hier 
registrieren:

boersenspiel.ath.cx

Update :

Leider ist die Domain nicht mehr Verfügbar (danke dyndns). Dafür haben wir den Sourcecode ganz neu Überarbeitet. Wer sich daran beteidigen mag, kann sich gerne mal in unser neuem Ticket System umschauen:

http://codejungle.org/redmine/projects/boersenspiel


Ausserdem bin ich dazu gekommen meine Suchmaschine etwas neu zu 
gestalten, nun ist es möglich eigene Webseiten hinzuzufügen.
Wichtig ist nur, dass man vollständige Meta Angaben hat (title, description, keywords).
Das Ranking wurde auch verändert, Sinn soll sein, dass der 
Benutzer selbst
entscheiden kann welche Ergebnisse relevant sind und welche nicht.
Ziel ist es, wie auch bei anderen Suchmaschinen, möglichst gute 
Ergebnisse zu bekommen.
Weniger wichtig ist mir, Millionen von Webseiten im Index zu haben.
Nach dem Motto: "Weniger ist mehr".
Deswegen habe ich die 30 GB DB (ca. eine halbe Million
Webseiten) aus dem Index gelöscht.

Wer sich die Suche anschauen möchte oder seine Seite eintragen will 
kann das hier tun:

codejungle.org/search

Einige große Änderungen sind auch an meinem CMS geplant.
Das Datenbank Layout habe ich nochmal komplett neu gestaltet, in 
weiterer Folge werde ich das CMS von Anfang an neu schreiben.
Es sollen nur die notwendigsten Funktionen
kopiert werden, Ziel soll sein das CMS so sauber wie möglich zu haben.
Es werden auch mehr Teile in oo neu geschrieben, bisher ist der DB 
Abstractionslayer, der Sessionhandler und Thumbnailer in oo.
Fraglich ist noch ob ich Cake als Framework verwende oder nicht, die 
Frage wird sich vermutlich aber auch am Wochenende beantworten.

Zeitplan: Die erste Beta Release ist Ende Dezember geplant.
Ausserdem wird das CMS nicht unter dem alten Namen weiterentwickelt 
werden, neuer Code, neuer Name...
Hierfür werden noch Vorschläge angenommen, wer sich beteiligen möchte, 
kann mir gerne eine Email schreiben, ich geb dann die aktuelle Dev. Version im 
SVN frei.


Kommentare

by:

Das Thema scheint sich langsam zu einem Dauerbrenner zu entwickeln... Da habe ich wohl bei vielen einen Nerv getroffen. Nachdem ich heute auf der IT-SecX an der FH St. Pölten einen Vortrag zum Thema "Man-In-The-Middle- Attacken und DNS Spoofing" gehalten habe, gibt's hier nochmal für alle, die vielleicht keine Zeit hatten, das Paper zum Nachlesen.

Viel Spass und wie immer freue ich mich natürlich über Kommentare, Fragen und Anregungen...

Einleitung

Sicherheit im IT Bereich ist immer noch ein vernachlässigtes Thema, bei Privatanwendern sowieso, aber auch bei Unternehmen werden die Gefahren oft unterschätzt. Das gängige Motto hier scheint „Mir wird schon nichts passieren“ zu sein. Und dann wundern sich die Leute wie sie Opfer eines Angriffs werden konnten...


„Not to know is bad – not to wish to know is worse!“

Immer wieder werde ich mit Vorwürfen konfrontiert, allein aufgrund der Kenntnis solcher Angriffstechniken ein „böser Hacker“ zu sein, oder mit der Veröffentlichung solcher Methoden den Kriminellen nur das Werkzeug in die Hand zu geben und alles nur noch schlimmer zu machen.

Dazu möchte ich hier kurz Stellung nehmen.

Security by obscurity“ ist in der IT einer der schlechtesten Ansätze, die es gibt.

Unwissen ist extrem gefährlich. Unwissen sorgt letztendlich nur dafür, dass diejenigen, die solche Angriffe durchführen ein leichtes Spiel haben und mit keinerlei Gegenwehr rechnen müssen.

Nur wenn ich weiß was die Bedrohung ist und wie sie funktioniert kann ich wirksame Gegenmaßnahmen einleiten. Durch Wissen um die Bedrohung und Kenntnis der Methoden bin ich erst in der Lage mich entsprechend zu schützen.

Das ist der Grund, warum ich denke, dass man solche Themen nicht geheimhalten soll und darf.


Hinweis

Bevor ich jetzt zu den Techniken und konkreten Beispielen einer Man-In-The-Middle- Attacke übergehe noch ein kleiner Hinweis.

Für alle „neugierigen Spielkinder“ an dieser Stelle der Hinweis, dass es schon aus rechtlicher Sicht ratsam ist, die vorgestellten Techniken in einer Testumgebung auszuprobieren.

Ein Angriff im Life- Betrieb kann zu unerwünschten und unbeabsichtigten Nebenwirkungen führen. Fragen Sie dazu Ihren Admin oder einen IT-Sicherheitsexperten Ihres Vertrauens.


Was ist eine Man-In-The-Middle- Attacke?

Einfach gesagt, versteht man unter einer Man-In-The-Middle- Attacke, dass der Datentransfer zwischen zwei Kommunikationspartnern (transparent) über einen dritten – den Angreifer – läuft. Transparent meint hier, dass weder der Absender noch der Empfänger davon etwas merken. Die Kommunikationspartner sind also nicht direkt miteinander verbunden, sondern über einen unbemerkten Dritten, der ähnlich wie ein Gateway, die Anfragen weiterleitet.

Der Angreifer ist damit in der Lage unbemerkt jegliche Kommunikation mitzulesen und zu manipulieren.

Solch ein Angriff ist sowohl für den Sender als auch für den Empfänger extrem schwer zu erkennen. Sie sehen ihre gewohnten und erwarteten Inhalte, schließlich sind sie ja, wenn auch über einen Umweg, mit dem richtigen Adressaten verbunden.


Der Angriff im Detail

Ziel einer Man-In-The-Middle- Attacke ist, wie gesagt, sich unbemerkt in die Kommunikation einzuschalten um diese mitzulesen oder zu manipulieren.

Der Angreifer spielt dabei dem Sender vor der Empfänger zu sein und dem Empfänger der Sender zu sein.

Der Ablauf sieht immer in etwa gleich aus:

Das Opfer (nennen wir sie Heidi) sendet eine Anfrage an den Empfänger (etwa an Peter) die vom Man-In-The-Middle abgefangen wird. Der Angreifer kann die Anfrage von Heidi in Ruhe lesen und modifizieren. Als zweiten Schritt baut der Angreifer eine Verbindung mit dem eigentlichen Empfänger, Peter, auf und leitet die Anfrage an ihn weiter. Auf die Antwort von Peter hat der Man-In-The-Middle natürlich auf die selbe Art ebenfalls Zugriff.

Der schwierigste Teil des Angriffs ist dabei die Verbindung auf den eigenen Rechner umzuleiten. Hilfreich dabei sind Methoden wie ARP Spoofing und DNS Manipulation.

Es gibt verschiedene Techniken sich in der Art in die Verbindung zwischen zwei Rechnern einzuklinken. Die Durchführung ist dabei abhängig von verschiedenen Faktoren, wie z.B. den Netzwerken, der Verbindung, Verschlüsselung etc... Der Man-In-The-Middle kann auf verschiedenen Ebenen seinen Angriff ansetzen, direkt am Rechner des Opfers oder aber auf Netzwerkebene etc.

Grunsätzlich unterscheidet man zwei Arten von Angriffen: den physikalischen (mittels Kabelverbindung) und den logischen Zugriff.


Ausgewählte Beispielszenarios

Der Postbote, öffentliche WLAN Hotspots und andere Kriminelle

Zur Veranschaulichung des Themas ein Beispiel aus der „analogen Welt“:

Der Postbote ist der Man-In-The-Middle zwischen Sender und Empfänger. Er kann die Post des Empfängers lesen, seine eigenen Grüße auf der Postkarte von Tante Erna hinterlassen. Der Postbote hat physikalischen Zugang zur Kommunikation und kann sie auf diesem Weg manipulieren.

Bei Computerangriffen handelt es sich in der Regel nicht um einen physikalischen sondern um einen logischen Zugang zur Kommunikationsverbindung.


WLAN Hotspots oder Noch einfacher geht’s nicht

Eine klassische Variante wäre der Angriff über einen öffentlichen WLAN Hotspot. WLANs allgemein und öffentliche Hotspots im speziellen sind sehr beliebte Angriffspunkte. Bei kostenlosen Hotspots am Flughafen etc. ist es recht einfach. Der Angreifer spielt allen Usern im WLAN Netzwerk vor, der Router zu sein. Das heißt alle Anfragen gehen zuerst an den Angreifer, der sie bequem mitlesen etc. kann und leitet sie an den tatsächlichen Adressaten weiter. Gibt sich der Angreifer als Gateway aus kann er die Verbindungen auch ganz leicht manipulieren. Er kann also Verbindungen verweigern, abbrechen, etc...

Mittels DNS Spoofing ist es dem Angreifer möglich, einer Domain andere IP Adressen zuzuordnen. So kann beispielsweise das Opfer, dass eigentlich auf google.com zugreifen wollte auf eine beliebige andere Seite leiten.


Intranet, Firmennetzwerke und Spass mit Studenten

In diesem Beispiel hat der Chef Zugriff auf den Router, der das Intranet mit dem Internet verbindet. Er leitet alle Anfragen, die nach draußen gehen auf einen transparenten Proxy um. Jede Verbindung wird also mitgeloggt. Der Chef sieht genau von wo, wann auf welche Seiten zugegriffen wird. Die Opfer (in dem Fall die Mitarbeiter) können ganz normal surfen und bekommen davon in der Regel nichts mit.

Sollte der „böse Chef“ wenig begeistert von „YouPorn“ surfenden Mitarbeitern sein, ist es für ihn natürlich ein leichtes diese Anfragen zu unterbinden.

Es können auch unbemerkt Bilder, Wörter oder ganze Texte ausgetauscht und manipuliert werden.

Diese Möglichkeit hat natürlich nicht nur ein Firmenchef, das kann auch UPC z.B. und sie machen das auch, aber das ist eine andere Geschichte....

Dazu gab es ein interessantes Experiment an der Hochschule für Gestaltung in Stuttgart. Hier haben Studenten im Rahmen ihrer Diplomarbeit den gesamten Internettraffic ihrer Uni manipuliert. So wurde z.B. der Name des Politikers Al Gore mit Al Bundy ausgetauscht. Die Reaktion der Benutzer war überraschend, oder auch nicht, denn bis auf einen Fall hat niemand die Manipulationen bemerkt, auch wenn sie noch so offensichtlich waren. http://www.fitug.de/debate/0012/msg00249.html

Abschließend bleibt zu vermerken, dass keine Verbindung als „sicher“ anzusehen ist. Potentiell kann jede Verbindung mitgelesen und manipuliert werden. Daher ist prinzipiell immer davon auszugehen, dass jemand den Quatsch mitliest den man so von sich gibt.


Google Phishing oder Wo bitte geht’s nach Fidji?

Die meisten bisher üblichen Phishing Angriffe sind keine Man-In-The-Middle- Attacken. Sie sind noch einfacher gestrickt und verlassen sich ausschließlich auf das „Look and Feel“ Prinzip. Die Phisher leiten ihre Opfer direkt auf eine manipulierte Webseite auf ihrem eigenen Server. Sie spielen dem Opfer vor, der Adressat zu sein und interagieren direkt.

Die Zukunft des Phishing geht aber stark in Richtung Man-In-The-Middle- Attacke. Der Angreifer braucht keine lässtigen Emails verschicken, keine URL Manipulation und gefälschten Webseiten mehr, er fängt die Anfrage ab und leitet sie schließlich an den tatsächlichen Empfänger weiter.

Immer beliebter wird z.B. das google Phishing. Der Angreifer stellt nach außen ein Reisebüro dar, das über google vom Opfer gefunden wird. Das urlaubsbedürftige Opfer gibt seine Reisewünsche an den Angreifer, der sie an ein real existierendes Reisebüro weiterleitet. Das Opfer bekommt also reale Flugdaten etc. zurück. Nun geht das Opfer zur Buchung über und gibt dem Angreifer bereitwillig seine Kreditkartennummer und alles was man sonst noch so braucht.

Es wurden schon Fälle bekannt, in denen der Angreifer dem Opfer den ersehnten Urlaub nicht vorenthielt. Er leitete die Buchung an das tatsächliche Reisebüro weiter, die dem Opfer dann zwei Wochen später die Reiseunterlagen per Post zukommen ließen, inklusive einer zweiten Rechnung, denn mit dem, von der Kreditkarte abgebuchten, Geld liegt der Angreifer mittlerweile aus Fiji unter Palmen.

Auf diese Weise ist es möglich so gut wie alle Sicherheitsmechanismen, wie Passwörter, TAN, Challenge-Reponse verfahren etc., auszuhebeln. Das Opfer liefert sie schließlich ganz ohne Wissen „frei Haus“.


Theoretische Grundlagen

Was ist das Address Resolution Protocol?

Das ARP funktioniert ähnlich wie DNS, anstatt dem Domainnamen löst ARP aber die IP zu MAC Beziehung auf. ARP ist in der untersten Schicht der nicht physikalischen Gegend des OSI Models anzutreffen.


ARP Spoofing

Mit gefälschten ARP Paketen spiele ich den Rechnern im Netzwerk vor, das Gateway zu sein. Ich sende nun an alle Teilnehmer in dem Netzwerk die manipulierte ARP Nachricht. Damit fälsche ich die ARP Tabellen des Netzwerks und in der Folge senden die Teilnehmer ihre Anfragen an mich. Ich kann alle Verbindungen mitlesen und sie nach Lust und Laune manipulieren. Anschließend leite ich sie an den tatsächlichen Empfänger weiter. Eine abhörbare Verbindung ist zustande gekommen.

Das reine Abhören via Sniffing ist nur in ungeswitchten Netzwerken möglich, mittels ARP Spoofing ist das auch in geswitchten Netzwerken kein Problem.


Switch, Hub, Router

Ein Hub leitet die Antwort an alle Teilnehmer des Netzwerkes weiter. Ein Switch ist da schon etwas intelligenter, er merkt sich woher die Anfrage kam und sendet die Antwort nur an den Adressanten zurück.

Ein Router verbindet unterschiedliche Subnetze, dabei vergisst er die Macadresse.


Software- Beispiele

Fürs ARP Spoofing gibt es unter Linux ganz nette Software wie „Ettercap“ und „Dsniff“

Unter Windows wäre „Chain&Able“ eine Möglichkeit.


Folgen und unvorhergesehene Nebenwirkungen

Wie Eingangs schon kurz erwähnt, kann eine Man-In-The-Middle- Attacke unvorhergesehene Effekte haben und in den seltensten Fällen kann man am Beginn die volle Tragweite abschätzen. Was einem in jedem Fall klar sein muss ist, dass bei ARP Manipulation die DNS Einträge verändert und gespeichert werden. Sprich, wenn ich den Angriff beende und meinen Rechner abhänge, denken alle anderen im Netzwerk trotzdem ich bin das Gateway, was defacto bedeutet, dass das gesamte Netzwerk steht...


Prävention

Was ich an dieser Form des Angriffs besonders kritisch finde, ist, dass es offensichtlich von den Sicherheitsexperten nicht als kritisch wahrgenommen wird. Das erste Mal habe ich eine Man-In-The-Middle- Attacke vor 6-7 Jahren durchgeführt, möglich sind diese Angriffe schon viel länger. Das heißt, dass in der Zwischenzeit sich keiner die Mühe gemacht hat, diese Gefahrenquelle auszuschließen.

Im Gegenteil, es wurde nur noch schlimmer...

Das bringt mich nun zum letzten Punkt meines Vortrags – die Prävention.

Frei nach dem Motto „selbst ist der Mann (oder Frau)“ ist jeder herzlichst eingeladen gewisse vorbeugende Maßnahmen zu treffen.

  • Verschlüsselung des Netzwerkverkehrs bzw. Authentifizierung von Paketen, beispielsweise durch SSL oder ähnliches

  • Einsatz von Network Intrusion Detection / Intrusion Prevention Systemen

  • Überwachung des ARP-Caches (ARPWatch, XARP2)

  • Statisches Routing

Generell:

  • Keine Administrationsrechte auf Client PCs

  • Anwenderschulung / Benutzersensibilisierung / Sensibilisierung der Administratoren und IT-Verantwortlichen

  • Sichere / komplexe Kennwörter; obwohl dies bei Klartextübertragung der Kennwörter wenig nützt, „zwingt man die beteiligten Systeme jedoch zum verschlüsselten bzw. gehashten Kennwortaustausch, macht das allemal Sinn"




Kommentare

by:

Hallo,
hier mal wieder ein kleines Update aus meinem Leben...
Was gibt es Neues??
Naja eigentlich nicht viel... :(
Hab in letzter Zeit etwas mit eMail Servern gespielt, um genau
zu sein mit postfix, courier, mysql und horde.
Außerdem habe ich die Bilder in meinem Blog mit QR Codes ersetzt, wie unschwer zu erkennen ist.
Wer seinen eigenen Barcode erstellen möchte kann das auch gerne tun, zwei Typen stehen zur Verfügung,
Datamatrix und QR Codes.
Um einen QR Code zu erstellen rufe einfach folgende url auf:

http://www.codejungle.org/qr/qr_img.php?s=7&d=test

Du kannst mit dem "d" Parameter eine Information (z.B. deine URL) angeben und mit dem Parameter "s" kannst du die Größe verändern.

Für den Datamatrix Code verwende den Parameter "text":

http://www.codejungle.org/qr/index.php?text=test

Um die erstellten Codes wieder zu decodieren gibt es ne Reihe von Software für Handy und PCs...
beetag.com stellt einen Multireader zur Verfügung, deren Generator kann ich allerdings
nich weiterempfehlen. Beim Erstellen ist mir aufgefallen, dass sie meine Domain mit einem redirect (HTTP://R.BEETAGG.COM/?3HBM1) codiert haben :(
Naja, was soll man machen.
Noch mehr deprimiert es mich, dass ich 2 Programme über WAP runtergeladen habe (da ich kein Datenkabel hab) und sie a) nicht funktioniert haben und b) was ich noch viel schlimmer finde, ich habe dafür auch noch 9 Euro gezahlt.
In Wien scheint es derzeit auch die ersten Firmen zu geben die damit werben, beispielsweise verwendet das Naturhistorische Museum in seiner aktuellen Kampange einen QR Code.

QR Code auf einem Plakat

Ich werde in naher Zukunft einige T-Shirts mit QR Codes drucken, wer auch welche haben will kann sich gerne bei mir melden...
Angeblich verwendet die Deutsche Bahn Aztec Codes für seine Digitalen Fahrscheine, ich
habe auch gehört das, wenn man den Code decodiert, dort Sachen wie
Start, Ziel, Klasse und der Preis gespeichert sind. Ich habe das noch nicht verifiziert und dies soll auch kein aufruf zum Bahnticket hacking sein. Mich würde es auch wundern wenn sie die Daten nicht zusätzlich verschlüsseln immerhin ist der AZTEC Code frei verfügbar, sprich man kann ihn leicht codieren und wieder decodieren.
Wenn jemand hier schon Erfahrung gemacht hat würde ich mich auch sehr über Infos freuen.

Sonst möchte ich dem Wort zum Sonntag nicht mehr viel hinzufügen außer, das Wochenende war mal wieder viel zu kurz.

LG

Andreas


Kommentare

by:

Ich möchte euch hier demonstrieren wie man eine XML Schnittstelle einfach und schnell
programmiert...
Wir haben auf der einen Seite einen Script, der eine XML Anfrage an den Server schickt
und auf der anderen Seite einen Script, der die Anfrage bearbeitet.
Angenommen wir wollen 3 Funktionalitäten über XML steuern können:
ADD, UPDATE und DELETE sprich Hinzufügen, Ändern und Löschen.

Als erstes zeige ich euch wie man ein XML erzeugt und an den Server sendet:

Code

<?php     
   
function createxml($array) {
            
            
$buf '';
            foreach(
$array as $key => $value)
            {
                if(
is_array($value))
                {
                
$buf .= "<".strtolower($key).">" createxml($value) . "</".strtolower($key).">\n";
                }
                else{
                
$buf .="<".strtolower($key)."><![CDATA[$value]]></".strtolower($key).">\n";
                }
            }
            return 
$buf;
        }

        
$aPOST["content"]["id"]        = "2";
        
$aPOST["content"]["author_id"] = "1";        
        
$aPOST["content"]["header"]    = "Wir schreiben eine XML Api";
        
$aPOST["content"]["content"]   = "Ich m?chte euch hier Demonstrieren wie man eine
XML Schnitstelle.."
;
        
$aPOST["content"]["date"]      = date("Y-m-d H:i:s");
        
        
$url 'http://www.codejungle.org/xml-api.php';
        
$POST["cmd"]="ADD";
        
$POST["apikey"]="kmlnjierg8795th2bughj3fg02jgkm0ggi";
        
$POST["data"]=createxml($aPOST);

        
$ch curl_init();
        
curl_setopt($chCURLOPT_URL$url);
        
//curl_setopt($ch, CURLOPT_USERPWD, $user . ':' . $pwd);
        
curl_setopt($chCURLOPT_POST1);
        
curl_setopt($chCURLOPT_POSTFIELDS$POST);
        
curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
$feedback       curl_exec($ch);
        
$ErrNum         curl_errno($ch);
        
$ErrMsg         curl_error($ch);
        
curl_close($ch);
        echo 
$feedback;
?>


Wir erstellen hier mit Hilfe der createxml Funktion aus einem Array eine XML
Datei. Danach senden wir mit Hilfe von curl drei Parameter an die Datei xml-api.php,
cmd damit unser Script weiß, welche Funktion er aufrufen soll, in unserem Fall ADD,
den API Key um sicherzustellen, dass nicht jeder die Schnittstelle benutzen kann und
data die eigentliche XML Datei.

Nun müssen wir einen Script erstellen, der die Anfrage entgegennimmt und richtig
verarbeiten kann.

Code
<?php    
$allowed_api_keys
=array("kmlnjierg8795th2bughj3fg02jgkm0ggi");

//check if api key is valid
if(in_array($_POST[apikey], $allowed_api_keys)){
        switch(
$_POST[cmd]){

        case 
ADD;
        
$xml simplexml_load_string($_POST[data]);
        foreach(
$xml as $name => $value){
        echo 
"$name => $value";
        }
        break;
        default:
        echo 
"Please check your provided command";
        break;
        }
} else {

echo 
"Your API - Key is invalid";
}
?>

Diese Datei überprüft zuerst ob der gesendete API Key existiert,
wenn ja, überprüfen wir noch welche Funktion übergeben wurde (in unserem Fall ADD).
Hier laden wir die XML Datei mit Hilfe der simplexml_load_string Funktion ein und
geben sie anschließend aus.
Man kann nun eine Funktion schreiben, die die übergebenen XML Daten weiter verarbeitet.
Die meisten Probleme machen nach meiner Erfahrung Umlaute und Sonderzeichen,
sie führen oft zu parse errors. Dies kann man teilweise mit Hilfe des Tags
lösen, wobei der Tag selbst allerdings auch zu parse errors führen kann...
Auf Wunsch von einem guten Freund möchte ich auch noch auf XML-RPC und Soap hinweisen,
beide eignen sich ebenfalls zur Remote XML Verarbeitung.

Ich hoffe euch hat mein kleiner Exkurs gefallen und freue mich über eure Kommentare.

LG
Andreas


Kommentare


Seiten: