Skip to contentSkip to conversation

MySQL obnoxious question

DISCUSSION Mário Gamito 4 participants 6 messages Feb 19, 2008 – Feb 20, 2008

lore
Share & tools
lore
#0 lore raw

Hi,

Sorry for the little off-topic, but the vpoopmail list is kind of dead.

I'm running a qmail server with vpopmail with MySQL authentication.

For obnoxious reasons, I'm running a web site in Windows/ASP.NET/C# that once a user registers, it inserts in the MySQL qmail server the username, password, etc.

It's in the password that the problem lies.
I need to hash it just before or after the MySQL INSERT statement. For that, I have to run a PHP shell script that follows my signature.

Problem is MySQL doesn't run external commands.

Any ideas ?

Any help would be appreciated.

Warm Regards,
Mário Gamito

Signature · 35 lines
<?php

function randltr() {
 $retval = 'a';
 $rand = rand() % 64;
 if ($rand < 26) $retval = $rand + 'a';
 if ($rand > 25) $retval = $rand - 26 + 'A';
 if ($rand > 51) $retval = $rand - 52 + '0';
 if ($rand == 62) $retval = ';';
 if ($rand == 63) $retval = '.';
 return($retval);
}

function mkpasswd3(&$clearpass, &$crypted) {
 srand ((double)microtime()*1000000);

 $salt = '$1$';
 for ($i = 0; $i < 5; $i++) $salt .= randltr();
 $salt .= '0';
 $crypted = crypt($clearpass, $salt);
 if (strlen($crypted) > 0) return(true);
 return(false);
}

$clearpass = 'yeshua';
$crypted = '';

if (mkpasswd3($clearpass, $crypted))
 printf("%s -> %s\n", $clearpass, $crypted);
else
echo("Ohoh");
-
To unsubscribe from this list: send the line "unsubscribe linux-admin" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
#1 lore raw

Words by Mário Gamito [Wed, Feb 20, 2008 at 12:35:26AM +0000]:

Quoted 4 lines

Hi,

Sorry for the little off-topic, but the vpoopmail list is kind of dead.

So is the diablo mailing list and I don't see any diablo nntp related questions here.

Quoted 6 lines

I'm running a qmail server with vpopmail with MySQL authentication.

For obnoxious reasons, I'm running a web site in Windows/ASP.NET/C# that once a user registers, it inserts in the MySQL qmail server the username, password, etc.

Quoted 6 lines

It's in the password that the problem lies.
I need to hash it just before or after the MySQL INSERT statement. For that, I have to run a PHP shell script that follows my signature.

Problem is MySQL doesn't run external commands.

All that does is generate a random md5 salt and do an md5 crypt of the password. Why would you want to run that on an external command? I guess you can easily do it on c#.

Quoted 33 lines

<?php

function randltr() {
$retval = 'a';
$rand = rand() % 64;
if ($rand < 26) $retval = $rand + 'a';
if ($rand > 25) $retval = $rand - 26 + 'A';
if ($rand > 51) $retval = $rand - 52 + '0';
if ($rand == 62) $retval = ';';
if ($rand == 63) $retval = '.';
return($retval);
}

function mkpasswd3(&$clearpass, &$crypted) {
srand ((double)microtime()*1000000);

$salt = '$1$';
for ($i = 0; $i < 5; $i++) $salt .= randltr();
$salt .= '0';
$crypted = crypt($clearpass, $salt);
if (strlen($crypted) > 0) return(true);
return(false);
}

$clearpass = 'yeshua';
$crypted = '';

if (mkpasswd3($clearpass, $crypted))
printf("%s -> %s\n", $clearpass, $crypted);
else
echo("Ohoh");
-

Signature · 11 lines
Jose Celestino
----------------------------------------------------------------
http://www.msversus.org/     ; http://techp.org/petition/show/1
http://www.vinc17.org/noswpat.en.html
----------------------------------------------------------------
"If you would have your slaves remain docile, teach them hymns."
    -- Ed Weathers ("The Empty Box")
-
To unsubscribe from this list: send the line "unsubscribe linux-admin" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
#2 lore raw
Quoted 6 lines · Jose Celestino
Quoted 2 lines

Problem is MySQL doesn't run external commands.

All that does is generate a random md5 salt and do an md5 crypt of the password. Why would you want to run that on an external command? I guess you can easily do it on c#.

If you are going to go this route, you might want to take a look at this port of the crypt function:

http://www.codeproject.com/KB/cs/unixcrypt.aspx

Cheers

Adam

#3 lore raw
Quoted 8 lines · Adam T. Bowen
Quoted 6 lines · Jose Celestino
Quoted 2 lines

Problem is MySQL doesn't run external commands.

All that does is generate a random md5 salt and do an md5 crypt of the password. Why would you want to run that on an external command? I guess you can easily do it on c#.

This one should help, mysql allows password hashing
http://dev.mysql.com/doc/refman/5.0/en/password-hashing.html

Quoted 17 lines

If you are going to go this route, you might want to take a look at this port of the crypt function:

http://www.codeproject.com/KB/cs/unixcrypt.aspx

Cheers

Adam

-
To unsubscribe from this list: send the line "unsubscribe linux-admin" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#4 lore raw
In reply to Mário Gamito

Respondo outra vez quando tiver recebido este e-mail. Amanha pelas 00:35.

Words by Mário Gamito [Wed, Feb 20, 2008 at 12:35:26AM +0000]:

Quoted 4 lines

Hi,

Sorry for the little off-topic, but the vpoopmail list is kind of dead.

Signature · 11 lines
Jose Celestino
----------------------------------------------------------------
http://www.msversus.org/     ; http://techp.org/petition/show/1
http://www.vinc17.org/noswpat.en.html
----------------------------------------------------------------
"If you would have your slaves remain docile, teach them hymns."
    -- Ed Weathers ("The Empty Box")
-
To unsubscribe from this list: send the line "unsubscribe linux-admin" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
#5 lore raw
In reply to Mário Gamito

Hi,

Quoted 5 lines · Mário Gamito

For obnoxious reasons, I'm running a web site in Windows/ASP.NET/C# that once a user registers, it inserts in the MySQL qmail server the username, password, etc.

It's in the password that the problem lies.
I need to hash it just before or after the MySQL INSERT statement. For that, I have to run a PHP shell script that follows my signature.

There is an encrypt function in MySQL:

http://dev.mysql.com/doc/refman/5.0/en/encryption-functions.html#function_encrypt

but it is only available on systems which have a system crypt call (not Windows according to the docs). However if your MySQL database is running on Linux you should be able to just change the insert statement in the C# code to something like:

insert into user_details values("username", encrypt("password"), ...);

and not bother with the php script. If the database is on Windows, then there are other encrytion functions available. There is a User Comment at the bottom of the above web page (search for "Philip Mather") which discusses using a trigger to achieve something that sounds similar to what you want.

There are lots of other options, of course, but my first route would always be to modify existing code. You might want to be careful, however, that you aren't breaking any license agreement before going ahead and modifying anything. If the code is unavailable or protected then you can just put a trigger on the user_details table in the database and encrypt the password there.

Hope some of that helps.

Cheers

Adam
-
To unsubscribe from this list: send the line "unsubscribe linux-admin" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html