Как вы htdigest 400 учетных записей пользователей? - PullRequest
9 голосов
/ 14 марта 2009

Как вы создаете учетные записи для 400 пользователей для проведения нагрузочного тестирования?

Htdigest заставляет вас вводить пароль каждый раз, я пробовал использовать DOS-каналы вроде

echo password > htdigest -c realm username%1 

htdigest -c realm username%1 < password.txt 

но это не работает ...

Ответы [ 3 ]

16 голосов
/ 14 марта 2009

Вы также можете проверить скрипт python, который trac распространяет на своем веб-сайте для паролей htdigest, затем вы можете автоматизировать его:

Генерация паролей htdigest без Apache

Они также предполагают, что что-то в этом роде будет работать:

Можно использовать утилиту md5sum для генерации файла паролей, используя такой метод:

$ printf "${user}:trac:${password}" | md5sum - >>user.htdigest

и вручную удалите «-» с конца и добавьте «$ {user}: trac:» в начало строки из «в файл».


Я проверил это на FreeBSD, но не уверен, что это будет работать на Linux или Windows, поэтому вам может потребоваться немного изменить его:

(echo -n "user:realm:" && echo -n "user:realm:testing" | md5) > outfile

файл содержит:

user:realm:84af20dd88a2456d3bf6431fe8a59d16

То же самое с htdigest:

htdigest -c outfile2 realm user

вывод в outfile2

user:realm:84af20dd88a2456d3bf6431fe8a59d16

Они оба одинаковы, что подтверждает правильность реализации командной строки!

6 голосов
/ 14 марта 2009

(Примечание: в Unix / Linux первое должно быть:

echo password | htdigest -c realm username$1

)

Поскольку у htdigest нет удобного способа ввода пароля, я бы использовал expect для автоматизации процесса.

Пример из http://www.seanodonnell.com/code/?id=21:

#!/usr/bin/expect
#########################################
#$ file: htpasswd.sh
#$ desc: Automated htpasswd shell script
#########################################
#$
#$ usage example:
#$
#$ ./htpasswd.sh passwdpath username userpass
#$
######################################

set htpasswdpath [lindex $argv 0]
set username [lindex $argv 1]
set userpass [lindex $argv 2]

# spawn the htpasswd command process
spawn htpasswd $htpasswdpath $username

# Automate the 'New password' Procedure
expect "New password:"
send "$userpass\r"

expect "Re-type new password:"
send "$userpass\r"

Это оставлено пользователю в качестве упражнения, чтобы преобразовать это для Windows, если требуется.

1 голос
/ 05 июня 2009

Вот скрипт, который будет читать список имен пользователей, генерировать случайные пароли для каждого и выводить их как в файл htdigest, так и в простой текстовый файл. Он был протестирован в Linux, но, возможно, потребуется изменить его для других систем. В частности, md5sum может быть md5, а head всегда принимает флаг -c.

#!/bin/bash

# auth realm for digest auth
AUTH_REALM=MyRealm

# file locations

# a file containing a list of user names,
# one name per line, e.g.,
# $ cat users.txt
# joe
# curly
# larry
USER_FILE=users.txt

# htdigest file, needs to exist
HTDIGEST_FILE=passwd.htdigest

# insecure password file
PASSWD_FILE=passwd.txt

# read the names from the user file
while read username
  do
  # generate a pseudo-random password
  rand_pw=`< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c8`

  # hash the username, realm, and password
  htdigest_hash=`printf $username:$AUTH_REALM:$rand_pw | md5sum -`

  # build an htdigest appropriate line, and tack it onto the file
  echo "$username:$AUTH_REALM:${htdigest_hash:0:32}" >> $HTDIGEST_FILE

  # put the username and password in plain text
  # clearly, this is terribly insecure, but good for
  # testing and importing
  echo "$username:$rand_pw" >> $PASSWD_FILE
done < $USER_FILE

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

$ cat users.txt 
joe
curly
larry

Запуск скрипта:

$ ./load_users.bash 

Полученный файл htdigest:

$ cat passwd.htdigest
joe:MyRealm:2603a6c581f336f2874dbdd253aee780
curly:MyRealm:fd3f9d87bba654439d5ba1f32c0286a8
larry:MyRealm:c1c3c0dc50a9b97e9f7ee582e3fce892

И простой текстовый файл:

$ cat passwd.txt 
joe:aLnqnrv0
curly:3xWxHKmv
larry:7v7m6mXY
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...