md5, crypt(), .htaccess

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

md5, crypt(), .htaccess

Postby shin » 08. October 2004 18:20

Hallo Leute!
Bin ein Apache, php newbee, also bitte Geduld wenn mir irgendwo ein Fehler unterläuft :wink:
Folgendes Problem: Ich sollte ein NetDebit Abrechnungssystem auf meinem XAMPP Apache ver.2 installieren. Dies läuft mit php und eigentlich funzt alles, ausser dass die Passwörter die durch NetDebit erstellt werden so verschlüsselt werden, dass ich keinen Zugang erhalte.
Wenn ich mit htpasswd selbst ein file erstelle geht alles, aber das nützt ja nichts, weil die userliste von NetDebit verwaltet wird.
Nach vielem Lesen hier denke ich es liegt daran, dass Apache unter WIN XP MD5 erwartet und die Passwörter in crypt() verschlüsselt sind, richtig?

Hier das php script von NetDebit:

Code: Select all
include ("./db/config_inc.php");

function random() {
   srand ((double) microtime() * 1000000);
   return rand();
   }

function crypt_password($password) {
   $salt = random();
   $salt = substr($salt, 0, 2);
   return crypt($password, $salt);
   }
   

if ($_POST['UID'])$UID= $_POST['UID'];
if ($_POST['UPW'])$UPW = $_POST['UPW'];
if ($_POST['GATEPW'])$GATEPW = $_POST['GATEPW'];
if ($_POST['ACT'])$ACT = $_POST['ACT'];


if ($_GET['UID'])$UID= $_GET['UID'];
if ($_GET['UPW'])$UPW = $_GET['UPW'];
if ($_GET['GATEPW'])$GATEPW = $_GET['GATEPW'];
if ($_GET['ACT'])$ACT = $_GET['ACT'];

// Überrüfung der IP Adresse

$ip =  getenv('REMOTE_ADDR');
$host =  getenv("HTTP_HOST");
$host_ip = gethostbyname($host);

if ($GATE_IP1 == $ip || $GATE_IP2 == $ip  || $GATE_IP3 == $ip ) $erg_ip =true;
else $erg_ip = false;

// Überprüfung Übergabe Passwort
if ($ND_GATE_PW == $GATEPW) $erg_pw = true;
else $erg_pw = false;

if($ip == $host_ip || $erg_ip ){   
   if ($erg_pw && $UID && $UPW) {
      switch ($ACT) {
       case "NEW": // Zugangsdaten anlegen   
          $eintraege_alt = explode("\n", trim(implode("", file("./db/.NetDebit.secure"))));
          $found = false;
         if ($fp = fopen("./db/.NetDebit.secure", "w")) {
            flock($fp, 2);
            for ($i=0; $i<count($eintraege_alt); $i++) {
               $ty=explode(":", trim($eintraege_alt[$i]));
               if ($ty[0]==$UID) {
                  $ty[1]=crypt_password($UPW);
                  $found=true;
               }
               if ($ty[0] != ""){
                  fputs($fp, $ty[0] . ":" . $ty[1] . "\n");
               }               
            }
            if ($found==false) { fputs($fp, $UID . ":" . crypt_password($UPW) . "\n"); }
            flock($fp, 3);
            fclose($fp);
            echo "$ACT=100";
         }
         else{
            echo "$ACT=90";
         }
            break;
          
       case "DEL": // Lösche Zugangsdaten
       $eintraege_del = explode("\n", trim(implode("", file("./db/.NetDebit.secure"))));
      if ($fp = fopen("./db/.NetDebit.secure", "w")) {
         flock($fp, 2);
         for ($i=0; $i<count($eintraege_del); $i++) {
            $ty=explode(":", trim($eintraege_del[$i]));
               if ($ty[0]!=$UID && $ty[0] != "") {
                  fputs($fp, $ty[0] . ":" . $ty[1] . "\n");
               }
            }
            flock($fp, 3);
            fclose($fp);
            echo "$ACT=100";
         }
         else{
            echo "$ACT=90";
         }
           break;
       case "AKT": // Update Zugangsdaten
          $eintraege_akt = explode("\n", trim(implode("", file("./db/.NetDebit.secure"))));
          $found = false;
         if ($fp = fopen("./db/.NetDebit.secure", "w")) {
            flock($fp, 2);
            for ($i=0; $i<count($eintraege_akt); $i++) {
               $ty=explode(":", trim($eintraege_akt[$i]));
               if ($ty[0]==$UID) {
                  $ty[1]=crypt_password($UPW);
                  $found=true;
               }
               if($ty[0] != ""){
                  fputs($fp, $ty[0] . ":" . $ty[1] . "\n");
               }               
               
            }
            if ($found==false) { fputs($fp, $UID . ":" . crypt_password($UPW) . "\n"); }
            flock($fp, 3);
            fclose($fp);
            echo "$ACT=100";
         }
             else{
            echo "$ACT=90";
         }
           break;
      default: // Falsches $ACT         
         echo "Status nicht korrekt!";
         break;
      }
   }
   else {
      echo "Das Übergabepasswort ist falsch oder es wurde keine UID/UPW angegeben!";
   }
}
else{
 echo "Sie sind nicht berechtigt auf diese Datei zuzugreifen!";
}
exit;
?>


---------------------------------------------------------------------

Kann mir jemand sagen ob es möglich ist das script so abzuändern, dass an die Datei .NetDebit.secure die Passwörter so übergeben werden, dass ich mich als testuser einloggen kann wie wenn ich die Datei .NetDebit.secure selbst erstelle mit htpasswd?

Da sonst eigentlich alles funktioniert spaare ich mir mal die Infos zu den versions nummern etc., liefere diese aber gerne nach wenn nötig.

Ah ja: Die .NetDebit.secure die nicht funktioniert sieht so aus:
test:27kA1jNyRcjug
shin:95wDqsSfjfV82

Diese hier funktioniert:
login:$apr1$oh5.....$3nDbPBV25SazZ0YjUHWcs.

Vielen Dank!
shin
 
Posts: 1
Joined: 08. October 2004 17:45

Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 36 guests