Pure-ftpd postgres adatbázissal

Sziasztok!

Csináltam egy pure-ftpd szervert, ami Postgres-ből autentikál.
De most kiderült, hogy egy már meglévő táblából kell autentikálnia, abban viszont SHA512-ben vannak tárolva a jelszavak.
A pure-ftpd konfig fájljában nincs utalás, hogy tudná ezt a titkosítást és eddig a google sem segített.
Valaki csinált már ilyet?

Köszönöm!

Hozzászólások


- The user's password, hashed using argon2i, scrypt or crypt(3). SHA1 and MD5
are also supported for legacy reasons, but shouldn't be used any more.
Pure-FTPd also accepts the "any" value for the PGSQLCrypt field.
With "any", all hash functions are sequentially tried.


* RECOMMENDATION: Do not use SHA1, MD5, or, obviously, plaintext. Unless your
system provides a decent crypt() function, use a PostgreSQL function to verify
the hashed password or use argon2i/scrypt.

https://download.pureftpd.org/pub/pure-ftpd/doc/README.PGSQL


Passwords are hashed with the most secure hash function your system supports.
Hashes are tried in this order: argon2i, scrypt, bcrypt, SHA-512, MD5.


Argon2i and scrypt are the recommended functions, and require pure-ftpd to be
compiled in presence of libsodium.

https://download.pureftpd.org/pub/pure-ftpd/doc/README.Virtual-Users

Ezek alapján akár működhet is ha crypt-et adsz meg, de ha az nem megy próbáld meg az any-t.

♲♻♲

Ha ezzel generálok 512-es jelszót, azt megeszi:
python2.7 -c 'import sys, crypt, getpass; print(crypt.crypt(getpass.getpass("Password: "), crypt.METHOD_SHA512))'

De abban az adatbázisban, ahhonan autentikálni kéne, ott {SHA512}-vel kezdődnek a jelszavak, és azokat nem eszi meg, akkor sem, ha $6$-ra cserélem az elejét.

A baj az, hogy ha még azt a plusz $ karaktert oda is teszed akkor sem lesz jó mert a crypt nem ugyanazt base64-et használja, mint a sima sha512 hash.

Itt van egy bash implementáció:
http://www.vidarholen.net/contents/blog/?p=33
http://www.vidarholen.net/contents/junk/files/sha512crypt.bash
Ebből szerintem ki tudod hámozni azt, hogy az eredetileg tárolt hash-ből tudsz-e olyan formátumot előállítani, amit megeszik a crypt.

♲♻♲