Конвертировать python га sh скрипт в PHP / Вызов python скрипт из php с переменными - PullRequest
0 голосов
/ 04 мая 2020

еще один выстрел. Я хочу спросить вас об этом сценарии

В python У меня есть этот рабочий сценарий

 #! /usr/bin/python
 import hashlib
 from crypto.md5crypt import md5crypt
 hashlib.sha1(md5crypt(password.encode('utf-8'), salt.encode('utf-8'))).hexdigest()

Что делает этот сценарий, так это то, что он создает «хешированный» пароль. Я хотел бы изменить этот скрипт на PHP скрипт, потому что он мне нужен для входа на сайт, который использует php скрипт

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

  <?php
   $command = escapeshellcmd('/home/python/login.py');
   $output = shell_exec($command);
   echo $output; // this is what I need to login
   ?>

Таким образом, я могу получить проверенный пароль из браузера. Если это возможно, как я могу передать два waribale здесь?

 $command = escapeshellcmd('/home/python/login.py $salt_variable $password_variable');

, где ранее были созданы $ salt_vriable и $ password_variable.

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

1 Ответ

1 голос
/ 04 мая 2020

Попробуйте:

#!/usr/bin/python
import hashlib
import sys
from crypto.md5crypt import md5crypt

assert len(sys.argv) == 3
salt = sys.argv[1]
password = sys.argv[2]

sys.stdout.write(hashlib.sha1(md5crypt(password.encode('utf-8'), salt.encode('utf-8'))).hexdigest())

Обратите внимание на первую строку в приведенном выше коде - у вас есть дополнительный пробел и этот код.

Ваш код PHP должен быть:

$escaped_password = escapeshellarg($password_variable);
$escaped_salt = escapeshellarg($salt_variable);
$command = "/home/python/login.py $escaped_salt $escaped_password";
$output = shell_exec($command);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...