• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

bei OpenBSD 6.6 geht die crypt() Function nicht mehr unter Perl

lolo

New Member
Themenstarter #1
Hallo,

komische Sache und ich weis nicht mehr weiter, auf meinem Uralt System klappt es wunderbar:
Code:
root@old /root $ uname -an
OpenBSD old.local.dom 5.2 GENERIC.MP#368 amd64
root@old /root $ /usr/bin/perl -e 'print crypt("PlainPW", "MeinSalt")'
MexrP64amh03
root@old /root $
Auf dem aktuellen 6.6 kommt keine Ausgabe. (Auch keine Fehlermeldung etc.):
Code:
root@new /root $  uname -an
OpenBSD new.local.dom 6.6 GENERIC.MP#6 amd64
root@new /root $ /usr/bin/perl -e 'print crypt("PlainPW", "MeinSalt")'
root@new /root $
hat vielleicht einer von euch eine Idee?


THX!
 

lolo

New Member
Themenstarter #3
Alt:
root@ /root $ perl -version
This is perl 5, version 12, subversion 2 (v5.12.2 (*)) built for amd64-openbsd

Neu:
root@ /root $ perl --version
This is perl 5, version 28, subversion 2 (v5.28.2) built for amd64-openbsd


Ees kommen halt keine Fehlermeldungen, ich habe so gar keinen Ansatz. Perl nutzt ja das System crypt() und da muss sich ja was geändert haben. :(
 

SierraX

Well-Known Member
#4
Also das älteste OpenBSD das ich gerade auftreiben konnte war ein OpenBSD 6.0 release
Perl 5.20
Da zeigt er auch nix an.
Code:
OpenBSD 6.0 (GENERIC.MP) #2319: Tue Jul 26 13:00:43 MDT 2016

Welcome to OpenBSD: The proactively secure Unix-like operating system.

Please use the sendbug(1) utility to report bugs in the system.
Before reporting a bug, please try to reproduce it with the latest
version of the code.  With bug reports, please try to ensure that
enough information to reproduce the problem is enclosed, and if a
known fix for it exists, include that as well.

$ perl -version

This is perl 5, version 20, subversion 3 (v5.20.3) built for amd64-openbsd

Copyright 1987-2015, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

$ /usr/bin/perl -e 'print crypt("PlainPW", "MeinSalt")'
$

Ich habs jetzt nochmal kurz auf nem Centos 8 getestet und da funktionierte es. Perl 5.26.3 … nächster schritt wäre wohl, mal zu gucken, wie das in C verwendet wird und ob man das ggf adaptieren kann.
 

lolo

New Member
Themenstarter #5
Naja, mein altes BSD ist auch sehr alt. :) Das Doofe ist halt, das da keine Fehler oder so kommen. Selbst wenn der Standard Algo geändert wäre. sollte wenigstens was rauskommen.

Von C hab ich keinen Plan. :(
 

Zirias

Well-Known Member
#6
hat vielleicht einer von euch eine Idee?
Also zuerstmal: "traditional" crypt() NICHT verwenden, da kann man die Passwörter auch gleich im Plaintext speichern.

Ansonsten hängt das recht wahrscheinlich damit zusammen, dass OpenBSD crypt(3) mittlerweile deprecated hat. Könnte gut sein, dass dabei die Fähigkeit, überhaupt traditionelle Hashes zu erstellen, abgewürgt wurde. Perldoc meint dazu:
Creates a digest string exactly like the crypt(3) function in the C library (assuming that you actually have a version there that has not been extirpated as a potential munition).
Eventuell funktionieren aber sinnvollere Hashing-Algorithmen trotzdem noch. Hast du mal folgendes probiert?
Code:
perl -e 'print crypt("PlainPW", "\$2\$MeinSalt")' # Blowfish
perl -e 'print crypt("PlainPW", "\$5\$MeinSalt")' # SHA256
 

lolo

New Member
Themenstarter #7
Eventuell funktionieren aber sinnvollere Hashing-Algorithmen trotzdem noch. Hast du mal folgendes probiert?
Code:
perl -e 'print crypt("PlainPW", "\$2\$MeinSalt")' # Blowfish
perl -e 'print crypt("PlainPW", "\$5\$MeinSalt")' # SHA256
Das wäre zu einfach, da kommt leider genau sowenig raus. :(
Code:
root@ /root $ perl -e 'print crypt("PlainPW", "\$2\$MeinSalt")'
root@ /root $ perl -e 'print crypt("PlainPW", "\$5\$MeinSalt")'
root@ /root $
 

Zirias

Well-Known Member
#8
Tja, das ist dann Pech ... hier (auf FreeBSD) geht die (absurd unsichere) klassische Variante und SHA256, während Blowfish auch ohne Fehler nichts ausgibt. Auf OpenBSD gibt es laut manpage einen Ersatz: crypt_newhash(). Perl kennt den aber nicht.

Vielleicht wäre es sinnvoll, ein Paket wie Crypt::SaltedHash zu verwenden. Dann aber am besten auch sha256 nutzen, sha-1 gilt nicht mehr als sicher.