Like to be free? ... then: Fight for Freedom
[ Demo SockMD5Auth v0.01 (c) Copyright 2002 Andreas Hofmeier ]
Demoprogramm zu SockMD5Auth()
WARNUNG: Die SockMD5Auth Authentication Methode wurde mit ***
*** Multiple-Sessions-Angriff geknackt! ***
Copyright (c) Andreas Hofmeier
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Wie kann man sicher überprüfen, ob die Gegenseite die ist für die
sie sich ausgibt? Mit dieser Methode:
1.) Beide Seiten erzeugen einen Zufallsstring
2.) gegenseitiges zusenden dieses Strings
3.) an diesen String den Authstring anhängen
4.) davon die MD5Summe bilden
5.) empfangen des Zufallsstring von der Gegenseite
6.) an diesen String den Authstring anhängen
7.) davon die MD5Summe bilden
8.) Prüfsummen austauschen
9.) Prüfen, ob die von der Gegenseite erzeugte Prüfsumme mit der
eigenen Übereinstimmt, wenn Ja alles OK
Das gute daran, der Authstring wird nicht übertragen, also kann
diesen auch nicht geklaut werden. Da man aus der MD5Sums den
Originalstring nicht mehr bilden kann, kann diese ohne bedenken
übermittelt werden...
Genau das tut diese Funktion:
if (SockMD5Auth(socket des gegenüber, authstring) == 1) {
Alles OK
}
Diese Programm ist eine Demo-Anwendung für diese Funktion.
Server Mode:
bsmd5auth <lokal Port>
Der <lokal Port> wird gebunden. Dann wird auf eine Verbindung
gewartet.
Klient Mode
bsmd5auth <Server Name or IP> <Remote Port>
Es wird eine Verbindung zu dem Port <Remote Port> auf dem Server
<Server Name or IP> hergestellt.
Ist ein Socket offen, so fordert das Programm die Eingabe des
Authstrings. Mit der Funktion SockMD5Auth() wird nun überprüft, ob auf
beiden Seiten der Selbe Authstring eingegeben wurde. Wenn ja, wird
"Auth: OK" ausgegeben.
Dannach werden alle Eingaben mit SockSendString() an die Gegenseite
gesendet und von dieser alles mit SockRecvString() Empfangende
ausgegeben. so ist ein primitiver Chat möglich...
Siehe auch:
ACHTUNG: Dieses Programm, bzw. dieser Test unterliegt der GPL!