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

by:

Hallo,

nachdem mir heute etwas langweilig war und ich alles machen wollte, nur nicht das was ich sollte, hier ein kleiner Script der eine Shoutbox erzeugt.

Das Besondere ist, er kommt ohne Datenbank aus und benutzt ajax damit neu hinzugefügte Inhalte gleich angezeigt werden. Man kann ihn also auch als simplen Chatscript benutzen. Noch nicht implementiert sind Smilies, sollte sich aber mit str_replace recht einfach umsetzen lassen.

Source Code Downloaden | Demo

Code

<?php
# Shoutbox 1.0
# by Andreas Beder
# codejungle.org
# Licence GNU GPL 2

//config

$filename="content.txt";
// be sure the file have write permissions
$url="http://www.codejungle.org/shoutbox/";

//function 

function get_content(){
global 
$filename;
      
$lines file ($filename);
      
$start count($lines)-12;
      if (
$start 1$start 1;
      for (
$i $start$i count ($lines); $i++){
      
$somecontent.=stripslashes($lines[$i]);
      }
return 
$somecontent;
}

function 
add_content(){
global 
$filename;
if(
$_POST[submit] and $_POST[nick] and $_POST[content]){
//check content
//add content
 
$_SESSION["nick"]=$_POST[nick];
 
$somecontent=strip_tags($_POST[nick]).": ".strip_tags($_POST[content])."<br/>n";
 
$handle fopen($filename'a+');
 
fwrite($handle$somecontent);
}
}

function 
output_form(){

echo 
'
<form action="" method="post">
Nick:'
;
if(
$_SESSION[nick]){echo $_SESSION[nick].'<input type="hidden" name="nick" value="'.$_SESSION[nick].'"><br>';} else { echo '<br>
<input name="nick" type="text" value="'
.$_SESSION[nick].'"><br>'; }
echo
'
Text:<br>
<textarea rows="5" cols="100" name="content"></textarea><br>
<input type="submit" name="submit" value="save">
</form>
'
;

}

if(
$_GET[content]=="true"){
echo 
get_content();
die();
}
?>
<html>
<head>
<title>shoutbox demo</title>
<script type="text/javascript" language="javascript">

    var http_request = false;

    function macheRequest(url) {

        http_request = false;

        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
                // zu dieser Zeile siehe weiter unten
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
            return false;
        }
        http_request.onreadystatechange = alertInhalt;
        http_request.open('GET', url, true);
        http_request.send(null);

    }

    function alertInhalt() {

        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                document.getElementById("shoutbox").innerHTML=http_request.responseText;
                var objDiv = document.getElementById("shoutbox");
                objDiv.scrollTop = objDiv.scrollHeight;
                setTimeout('macheRequest("<?php echo $url?>?content=true")',2000);

            } else {
                alert('Bei dem Request ist ein Problem aufgetreten.');
            }
        }

    }
</script>
</head>
<body onload="macheRequest('<?php echo $url?>?content=true');">
<? add_content(); ?>
<div style="border:1px solid #ccc; width:500px; height:300px; max-height:300px; overflow:auto;"
 name="shoutbox" id="shoutbox">
</div>
<? output_form(); ?>

</body>
</html>

Beachte, dass die content.txt Schreibrechte für den Webserver haben sollte.

Unter *nix geht das folgendermaßen:

chmod 640 content.txt && chown nobody:nogroup content.txt

Ich hoffe euch hat mein Script gefallen, über Verbesserungsvorschläge freue ich mich natürlich auch.

LG

Andreas


Kommentare

by:

Hallo,


Nachdem ich in letzter Zeit viel zu tun hatte, dachte ich, es wird mal wieder
Zeit einen Beitrag zu schreiben.
Um dem Blog auch eine etwas persönlichere Note zu geben, behandelt dieser Artikel
diesmal keine technische Anleitung.
Es geht hier um meine aktuellen Projekte, etwas um mein Leben und was mir sonst noch so einfällt.

Gestern war ich auf der ISA 08 (Internet Summit), wo es hauptsächlich um
Web Accessibility ging. Wobei mir vorkam, dass die Anwesenden weniger
an einem barrierefreien Internet interessiert waren, als mehr an neuen Geschäftskontakten. Also mehr so was wie ein "Meet and Greet"... Aber das ist natürlich nur meine private Meinung.
Ansonsten war ich am letzten Wochenende in Berlin, was mir sehr gut getan hat.
Es war schön mal wieder Zeit mit der Familie zu verbringen und etwas von Berlin zu sehen. :)

Viel Zeit geht im Moment für Auftragsarbeiten drauf, weshalb meine OpenSource Projekte
wenig weiter entwickelt werden. Ich hoffe der Umstand wird sich bald wieder ändern.
Trotzdem möchte ich einen kleinen Überblick über meine Projekte geben:

1. CMS Bandits
2. b2b-portal
3. uploaded.ath.cx
4. webtools4larbin
5. Online Face Detection

1. CMS Bandits

Mein insgesamt aktivstes Projekt hat in letzter Zeit wenig neues erfahren.
Wie im Changelog geschrieben wurde das Menu überarbeitet, das Design auf Tableless
umgestellt und ist nun W3C konform. Außerdem gibt es einen noch nicht so ausgereiften
PDF Support.

Die nächsten Änderungen werden sein:

1. Template System
2. Admin - Verwaltungstool
3. Ein neuer Name

Bei Punkt 3 überlege ich schon seit längerem das Projekt unter
einem neuen Namen weiterzuentwickeln, habe aber noch keinen
passenen gefunden. Eventuell fällt dir ja einer ein, ich würde mich zumindest
über Vörschläge freuen ;)
Die nächste Release wird veraussichtlich zu Weihnachten veröffentlicht und
wird stark von der jetzigen Entwicklerversion abgeleitet sein.

2. b2b - portal

Ein sehr junges im konzeptuellen und experimentellen
Stadium befindliches Projekt das noch nicht veröffentlicht ist.
Das Ziel ist eine Mischung aus Firmendb und Community Portal.
Ähnlich wie Xing nur mit kostenlosen Community Funktionen, rein werbefinanziert.
Eine Alpharelease kann man sich hier anschauen:
http://www.codejungle.org/b2b
Wie gesagt handelt es sich um ein Projekt im Experimentierstadium,
d.h. die meisten geplanten Funktionen sind noch nicht verfügbar.

3. uploaded.ath.cx

Dieses Projekt wurde auch noch nicht der Öffentlichkeit vorgestellt, ist
aber soweit funktionsfähig.
Man kann über ein Webinterface bis zu 100 MB hochladen und bekommt anschließend eine
Adresse über die man die Daten wieder abrufen kann.
Es besteht auch die Möglichkeit via anonymen FTP auf die Daten zuzugreifen.

4. webtools4larbin

Dies ist ein sehr altes Projekt von mir (2006) was eigentlich nur aus
einer Release besteht. Ich habe über die Jahre immer wieder mit
Webcrawlern und Möglichkeiten zum effizienten indexieren experimentiert und werde vermutlich
in diesem Jahr noch eine überarbeitete Version des Indexers Online stellen.

5. Online Face Detection

Man kann derzeit Bilder hochladen wenn Gesichter erkannt werden, werden Sie rot Umramt und Angezeigt. Für die Zukunft ist auch Gesichtserkennung in Videos angedacht.



Ich hoffe euch hat dieser kleine Exkurs zu meinen Projekten gefallen.
Wie immer freue ich mich natürlich über Anregungen, Kritik und Kommentare.

Andreas


Kommentare


Seiten: