Как проверить пароли с pam

У меня есть сценарий удара, который просит Ваш пароль и затем должен проверить пароль с помощью pam, я установил libpam0g-dev поскольку я понимаю, что мне нужен он для этого, но как точно я иду о проверке пароля с помощью pam? И как pam сообщает мне, действителен ли пароль или нет?

2
задан 6 August 2015 в 13:03

1 ответ

Не колотят, но Вы могли использовать сценарий Perl в своем сценарии удара :P

Первая установка libauthen-pam-perl

sudo apt-get install libauthen-pam-perl

После этого создайте новый сценарий Perl, например, с именем foo

#!/usr/bin/env perl
use Authen::PAM;
use POSIX qw(ttyname);

$service = "login";
$username = $ARGV[0];
$password = $ARGV[1];
$tty_name = ttyname(fileno(STDIN));

sub my_conv_func {
  my @res;
  while ( @_ ) {
      my $code = shift;
      my $msg = shift;
      my $ans = "";

      $ans = $username if ($code == PAM_PROMPT_ECHO_ON() );
      $ans = $password if ($code == PAM_PROMPT_ECHO_OFF() );

      push @res, (PAM_SUCCESS(),$ans);
  }
  push @res, PAM_SUCCESS();
  return @res;
}

ref($pamh = new Authen::PAM($service, $username, \&my_conv_func)) ||
       die "Error code $pamh during PAM init!";

$res = $pamh->pam_set_item(PAM_TTY(), $tty_name);
$res = $pamh->pam_authenticate;

if ($res == PAM_SUCCESS()) {
    printf ("%s\n","Success");
}
else {
    printf ("%s\n","Failure");
}

на основе этого ответа с некоторыми модификациями


От man foo ;)

NAME
   foo - password test

SYNOPSIS
   foo username password

DESCRIPTION
    coming soon

OPTIONS
    no options

Пример:

$ sudo ./foo foo wWeErRt    # wrong password
Failure

$ sudo ./foo foo wWeErRtT   # correct password
Success

В Вашем сценарии:

some code

ret=$(foo "$username" "$password")

some code
1
ответ дан 2 December 2019 в 05:03

Другие вопросы по тегам:

Похожие вопросы: