Получите простой почтовый пароль клиента - PullRequest
0 голосов
/ 03 апреля 2019

На почтовом сервере (IceWarp) я могу получить простые пароли клиентов, используя следующую команду в пакете:

tool export account *@* u_password > "%userprofile%/Desktop/emails.txt"

Вывод выглядит так:

username1@example.com,plainpassword1,
username2@example.com,plainpassword2,

Комуполучить пароли, я должен удаленно подключиться к серверу, запустить пакет, просмотреть emails.txt и т. д. Это хлопотно.Чтобы сократить процесс, я хочу сделать это с помощью API.

Используя следующий код, я могу получить информацию о клиенте (пароль):

require_once("PleskApiClient.php");

$host       = "__OMITTED__";
$login      = "__OMITTED__";
$password   = "__OMITTED__";

$client = new PleskApiClient($host);

$client->setCredentials($login, $password);

$request = <<<EOF
<packet>
  <customer>
    <get>
      <filter/>
      <dataset>
        <gen_info/>
      </dataset>
    </get>
  </customer>
</packet>
EOF;

$response = $client->request($request);

echo $response;

Вывод:

<?xml version="1.0" encoding="UTF-8"?>
<packet version="1.6.9.0">
  <customer>
    <get>
      <result>
        <status>ok</status>
        <filter-id>2</filter-id>
        <id>2</id>
        <data>
          <gen_info>
            <cr_date>__OMITTED__</cr_date>
            <cname/>
            <pname>__OMITTED__</pname>
            <login>__OMITTED__</login>
            <status>0</status>
            <phone/>
            <fax/>
            <email>__OMITTED__@__OMITTED__.com</email>
            <address/>
            <city/>
            <state/>
            <pcode/>
            <country>__OMITTED__</country>
            <locale>__OMITTED__</locale>
            <guid>__OMITTED__</guid>
            <owner-login>__OMITTED__</owner-login>
            <vendor-guid>__OMITTED__</vendor-guid>
            <external-id/>
            <description/>
            <password>$5$lpxai__OMITTED__</password>
            <password_type>crypt</password_type>
          </gen_info>
        </data>
      </result>
    </get>
  </customer>
</packet>

Пароль, который я получаю с помощью API, хэшируется.Есть ли способ получить оригинальную / простую версию?

Ответы [ 2 ]

2 голосов
/ 03 апреля 2019

Я не знаю деталей, но кажется плохой практикой делать такие пароли доступными. Я знаю, что это может быть полезно, но большую часть времени вы хешируете пароль, сохраняете хеш и забываете оригинальный пароль.

Другими словами, значение, которое вы указали в <password>, НЕ является зашифрованным паролем, это хэш пароля, который можно использовать для проверки правильности ввода пароля. Смотри:

https://www.maketecheasier.com/what-is-password-hashing/

Прочтите главу: «Почему хеширование безопасно?».

Итак, мой ответ: вы не можете получить незашифрованную версию пароля.

0 голосов
/ 03 апреля 2019

Поскольку Plesk API не помог, я начал изучать IceWarp API.

Я понял, что могу создавать / получать доступ к пользовательским страницам на почтовом сервере.Общая папка находится в C:\Program Files (x86)\IceWarp\html.Я создал папку (test) и поместил в нее необходимые файлы.

Пакетный файл для вывода учетных записей:

@echo off

set filename=accounts.txt

if exist %filename% (
    del /F /Q %filename%
)

cd "C:\Program Files (x86)\IceWarp"

tool export account *@* u_password > "%~dp0/%filename%"

PHP для вызова пакета и чтения выходного файла:

system("cmd /c \"C:/Program Files (x86)/IceWarp/html/test/get_accounts.bat\"");

$accounts = file_get_contents("accounts.txt");

Эта установка работает нормально.Теперь я могу делать с выводом все, что захочу.

...