[php]serv-U wachtwoord maken

Pagina: 1
Acties:
  • 62 views sinds 30-01-2008

  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 06-01 11:08
Hallo,

Ik ben bezig om een website te maken waar gebruikers dingen kunnen uploaden. Nu gaat dat nog via de browser (upload phptje) Maar ik wilde dat ook gaan doen met FTP. Nu heb ik een serv-U ftp server (versie 3.0.0.17) en wilde ik graag via php gebruikers toevoegen. Nu heb ik overal gezocht, deze search (got), Google, ask.com, altavista enz naar een mannier om het wachtwoord te enctypten op de zelfde mannier zoals serv-U dat doet. De gebruikers en wachtwoorden staan opgeslagen in een ini-bestand zoals hieronder:

code:
1
2
3
4
5
6
[USER=voorbeeld|1]
Password=ek6A007A04391F3ACBC1D7DA74DF4B9F5C
HomeDir=F:\usr\voorbeeld
RelPaths=1
TimeOut=600
Access1=F:\usr\voorbeeld|RLP


In dit voorbeeld is het wachtwoord hetzelde als de gebruikersnaam (voorbeeld). Ik heb gezocht naar verschillende mannieren om dit te doen, het is iig geen md5hash :( maar het schijnt een s/key encrypty te zijn (?)

De vraag: Wie weet er een mannier om in PHP een wachtwoord te genereren dat overeenkomt met de encryptie van serv-U. Mocht dit echt helemaal onmogelijk zijn doe m dan maar op slot :P

Een echte golver is nooit uitgeput


  • Noork
  • Registratie: Juni 2001
  • Niet online
Gevonden via google.
Serv-U supports a popular form of OTP, called S/KEY that in turn comes in two variants, MD4 and MD5,
Misschien is het dan wel MD4.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:10

.oisyn

Moderator Devschuur®

Demotivational Speaker

Wat natuurlijk niet per se wil zeggen dat het gewoon md4 ($password) is, alleen maar dat MD4 ipv MD5 gebruikt kan worden bij het hashen van het wachtwoord

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 06-01 11:08
Als dat zo zou zijn dan is dat ideaal :) te moeilijk gedacht. Ik ben nu an het zoeken naar een algoritme om een md4 hash te maken. Ik geloof niet dat php dat standaard heeft :P

Een echte golver is nooit uitgeput


  • Noork
  • Registratie: Juni 2001
  • Niet online
LoBbY_1 schreef op 31 maart 2004 @ 21:45:
Als dat zo zou zijn dan is dat ideaal :) te moeilijk gedacht. Ik ben nu an het zoeken naar een algoritme om een md4 hash te maken. Ik geloof niet dat php dat standaard heeft :P
Nee zit niet standaard in php. Maar heb je het al geprobeerd met md5? Misschien herkent servu gewoon dat het md5 is en accepteerd hij dat.

  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 22:39

Reinier

\o/

Noork schreef op 31 maart 2004 @ 21:53:
Nee zit niet standaard in php. Maar heb je het al geprobeerd met md5? Misschien herkent servu gewoon dat het md5 is en accepteert hij dat.
het is iig geen md5hash
;)

Edit: hmmm je had het dus nog niet met md5 geprobeerd, alleen gezien dat de hash niet hetzelfde is als een md5 hash... laat maar dus :)

[ Voor 22% gewijzigd door Reinier op 31-03-2004 21:59 ]


  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 06-01 11:08
Te laat :)
Nee dat is het niet, ik las iets op google over een s/key. Alleen daar was verder weinig nuttige informatie over te vinden. Ik hoop vooralsnog dat het een gewone md4 hash is :)

Maar ik ga het gewoon testen :)

//edit:
Nee helaas, een normale md5 slikt ie inderdaad niet...(op zich toch logies :P)

[ Voor 205% gewijzigd door LoBbY_1 op 31-03-2004 22:06 ]

Een echte golver is nooit uitgeput


  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 22:39

Reinier

\o/

En werkt het?

Anyway, mocht je zelf een md4 functie willen maken in php, dan staat hier een uitleg over het algoritme. Volgens mij redelijk eenvoudig te maken in php, zal ook vast wel al gedaan zijn.

  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 06-01 11:08
Toch is het vreemd, omdat je uit de verschillende opties een soor van md5hash kan kiezen, maar deze komt niet echt overeen met de hash uit PHP..

Afbeeldingslocatie: http://wyger.gotdns.com/pics/password.jpg

Ik denk dat het dan maar even blocken op de link van Reinier :)

Een echte golver is nooit uitgeput


Verwijderd

Zover ik weet maakt servu gebruik van DES encryptie en zet ie er 2 letters voor, hoe die aan die 2 letters komt weet ik niet.
En als ik me niet vergis heb je in php de functie crypt() waarmee je DES hashes kunt maken.

[ Voor 29% gewijzigd door Verwijderd op 31-03-2004 22:33 ]


  • bartjenl
  • Registratie: Januari 2002
  • Laatst online: 01-04 21:59
To generate an encrypted password, first two random characters (the 'salt' - in the range a..z, A..Z) are added to the beginning of the clear-text password. This is then hashed using MD5 and the resulting hash is hex-encoded. The result of this is written as plain-text salt first, followed by the hex-encoded hash.

So, for a user account in the .ini file this would look like:

Password=cb644FB1F31184F8D3D169B54B3D46AB1A

The salt is the string "cb", the MD5 hash is "644FB1F31184F8D3D169B54B3D46AB1A".
Oftewel de eerste twee tekens mag je zelf verzinnen, maar zijn de 'salt' om de md5-hash mee te berekenen die er gewoon achter wordt geplakt.

Gevonden in de Knowledge base van serv-u.com

"Do not worry about your difficulties in mathematics; I can assure you that mine are still greater" - Albert Einstein (1879-1955)


  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 06-01 11:08
bartjenl schreef op 31 maart 2004 @ 22:48:
[...]


Oftewel de eerste twee tekens mag je zelf verzinnen, maar zijn de 'salt' om de md5-hash mee te berekenen die er gewoon achter wordt geplakt.

Gevonden in de Knowledge base van serv-u.com
Dat klinkt super!!!!
Ik ga het gelijk testen!! bedankt

//edit :) succes!!!
Dit werkte perfect!! De volgende code gebruikte ik om even snel te testen:

PHP:
1
2
3
4
5
6
7
8
9
<?
$wachtwoord = "test";
$salt = "uk";

$md5wachtwoord  = md5($salt.$wachtwoord);
$cryptwachtwoord = $salt.$md5wachtwoord;

$cryptwachtwoord = strtoupper($cryptwachtwoord);
?>


En je gebt een goed wacht woord :)
Bedankt iedereen!!

[ Voor 48% gewijzigd door LoBbY_1 op 01-04-2004 22:42 ]

Een echte golver is nooit uitgeput


  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 06-01 11:08
Mocht iemand het ooit nog nodig hebben, hier een snel voorbeeld van hoe je het eventueel zou kunnen doen:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?
  //gebruiker genereren in serv-U
  include("random.php");
  
  $ini_pad  = "Je ini pad";
  $site_pad = "Je website pad";

//gebruiker 
$gebruiker  = "gebruiker";
$wachtwoord = "wachtwoord";

//random letter uit alfabet pakken
$salt       = random();     //simpel random letter scriptje

//wachtwoord genereren
$md5pass    = md5($salt.$wachtwoord);
$cryptpass  = $salt.strtoupper($md5pass);

//gebruikersinfo genereren (max 15 meg aan hd ruimte)
$gebruiker_info = ("
[USER=".$gebruiker."|1]
Password=".$cryptpass."
HomeDir="$site_pad.$gebruiker"
RelPaths=1
HideHidden=1
DiskQuota=1|15360000|0.000
MaxUsersLoginPerIP=3
SpeedLimitDown=10240
TimeOut=600
MaxNrUsers=1
Access1=".$site_pad.$gebruiker."|RWAMLCDP
[account_invoegen]");

//debug
//echo "debug:<br>$dbnaam ---> $cryptpass";

//config ophalen uit mysql
    $config = mysql_query("select * from ftp") or die (mysql_error());
    $config_data = mysql_fetch_array($config);

    $bestand = $config_data[config];
    $teller  = $config_data[gebruikers];  //aantal gebruikers uit de config
    $teller ++;
    
//gebruiker maken:
    $gebruiker = ("
User".$teller."=".$gebruiker."|1|0
[user_invoegen]");

//pas waarden aan
    $bestand  = str_replace('[user_invoegen]',$gebruiker , $bestand );
    $bestand  = str_replace('[account_invoegen]',$gebruiker_info , $bestand );
    
//bestand weer wegschrijven
    $update_config =  ("UPDATE ftp SET config = '$bestand', gebruikers = '$teller' ");
    mysql_query($update_config) or die (mysql_error());
    
//zet ftp ja voor gebruiker(gebruiker heeft ftp aangezet)
    $update_config =  ("UPDATE deze_server SET ftp = 'ja' where naam = '$dbnaam' ");
    mysql_query($update_config) or die (mysql_error());

//nieuwe configuratie bestand schrijven
    $fp = fopen("tmp/ServUDaemon.ini", "a");
    fwrite($fp, $bestand);
    fclose($fp);
    
//oude configuratie bestand backuppen
    rename($ini_pad."ServUDaemon.ini", $ini_pad."bak\\ServUDaemon.ini.".$teller); //teller voor backup_nummer

//ftp ini terrug sturen en opslaan
    rename("tmp\\ServUDaemon.ini", $ini_pad."ServUDaemon.ini");

$main = "<center>Je ftp account is toegevoegd.</center>";
?>

[ Voor 10% gewijzigd door LoBbY_1 op 02-04-2004 14:37 ]

Een echte golver is nooit uitgeput


Verwijderd

Ik heb een script geschreven wat je instaat stel het wachtwoord te veranderen. Dit script logt eerst in op je FTP account omtekijken als je oude passwoord goed is en dan genereerd hij een nieuw passwoord en zet dat in de MySQL database.

(het doorvoeren van de wijzigingen duurt maximaal 60 seconden in de MySQL database. Ligte eraan hoe hoog je de ODBC database update zet in serv-u)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<html>

<head>
<title>Passwoord eigen FTP account veranderen</title>
</head>

<body>
<?php
if(isset($_POST['verander'])){
    
    $sql_host = "localhost"; // Hier de host van jou 
    $sql_user = "*********"; // Hier de username van je database 
    $sql_ww = "*********"; // Hier het wachtwoord van de database 
    $sql_db = "********"; // Hier de naam van de database 

    mysql_connect($sql_host, $sql_user, $sql_ww) or die (mysql_error()); 
    mysql_select_db($sql_db) or die (mysql_error()); 
    
    
    $ftp_server = "localhost";
    $ftp_user_name = $_POST['username'];
    $ftp_user_pass = $_POST['password'];

    // maak een basis connectie aan
    $conn_id = ftp_connect($ftp_server);

    // meldt je aan met een gebruikersnaam en wachtwoord
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);


       if($_POST['password'] == ""){
        print "Je moet het oude passwoord invullen";
       }
       else if ((!$conn_id) || (!$login_result)) {
           // MISSLUKKEN INLOGGEN (passwoord fout)
           print "Je username/oude wachtwoord is onjuist";
        ftp_close($conn_id);
    }else{
        $wachtwoord = $_POST['password1']; 
        $salt       = "sk"; 
        $md5pass    = md5($salt.$wachtwoord); 
        $cryptpass  = $salt.strtoupper($md5pass); 


        $cryptwachtwoord = strtoupper($cryptwachtwoord); 
         if($_POST['password1'] != $_POST['password2']){
            print "het nieuwe wachtwoord is niet indentiek";    
         }else{
           mysql_query("UPDATE `useraccounts` SET `Password`='{$cryptpass}' WHERE `Name`='{$_POST['username']}'");
                 print "Je wachtwoord is met suc6 gewijzigd!<br>Log de volgende keer in via <a href=\"ftp://" . $_POST['username'] . ":". $_POST['password1'] . "@***************\">ftp://" . $_POST['username'] . ":" . $_POST['password1'] . "@***************</a>";
                 print "<br><b>Het zal maximaal 1 minuut duren voordat de wijzigingen zijn ingetreden. Dus het heeft geen zin om nu meerdere keren het wachtwoord te veranderen!!!</b>";
        ftp_close($conn_id);
         }
      }
}else{
    print <<<ENDHTML
    <form method="post" action="index.php">
    Typ hier je gebruikersnaam: <input type="text" name="username"><br>
    Typ hier je oude passwoord: <input type="password" name="password"><br>
    Typ hier je nieuwe passwoord: <input type="password" name="password1"><br>
    Typ hier je nieuwe passwoord nog een keer: <input type="password" name="password2"><br>
    <input type="submit" value="Verander" name="verander"><br>
ENDHTML;
}
?>
</form>

</body>

</html>

[ Voor 16% gewijzigd door Verwijderd op 29-05-2005 01:34 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Ik zie in het Software Algemeen-topic waarin je reageerde dat je hier via een linkje bent gekomen. Zoals je misschien ziet zijn de vorige berichten in dit topic alweer ruim een jaar oud, en om te zorgen dat er geen discussies door elkaar gaan lopen doe ik dit topic maar op slot. :)

Zo te zien heb je ook geen vraag of iets dergelijks. Als je een concrete vraag hebt, dan kun je hier een nieuw topic openen, maar over het algemeen is het meestal niet wenselijk om oudere topics omhoog te schoppen, omdat mensen dan gaan reageren op posts van anderen die misschien helemaal niet meer hier rondlopen. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.