Как передать данные из скрипта python в хранилище ключей? - PullRequest
0 голосов
/ 11 января 2020

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

Блок кода:

    class Signer():
    def __init__(self, apkName, apkDir):
        self.aliasName = "catchmeifyoucan"
        self.jarSignerLocation = "/usr/lib/jvm/java-11-openjdk-amd64/bin/"
        self.keyStoreDir = "/var/www/catchmeifyoucan.tech/malwareHidingSystem/necessaryFiles/keyStore/key.keystore "
        self.jarSignerCommand = "jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore "
        self.apkName = apkName
        self.apkDir = apkDir
        self.jarSignerCommand += str(self.keyStoreDir) + " " + str(self.apkName) + ".apk " + str(self.aliasName)
        self.password = "somePassword"

    def signApk(self):
        myDir = os.getcwd()
        os.chdir(self.apkDir)
        print(str(self.jarSignerLocation) + self.jarSignerCommand)

        def doSign():
            resignCommand = str(self.jarSignerLocation) + self.jarSignerCommand
            os.system(resignCommand)

        p = threading.Thread(target=doSign)
        p.start()
        p.join()
        os.chdir(myDir)

Вывод из приложения:

Enter Passphrase for keystore:

Но я хочу передать пароль из python, поэтому я изменяю функцию doSign следующим образом:

def doSign():
            resignCommand = str(self.jarSignerLocation) + self.jarSignerCommand
            os.system(resignCommand)
            child = pexpect.spawn(str(myDir) + '/main.py')
            child.expect('Enter Passphrase for keystore:')
            child.sendline(self.password)

Я пытался использовать pexpect, как описано выше, но, думаю, из-за неправильного использования я получил ошибку ниже:

python3 main.py 1 Попытка выполнить мой скрипт

Тогда хранилище ключей спрашивая пароль, но я использовал pexpect для передачи пароля:


 /usr/lib/jvm/java-11-openjdk-amd64/bin/jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore /var/www/catchmeifyoucan.tech/malwareHidingSystem/necessaryFiles/keyStore/key.keystore  1.apk catchmeifyoucan
 Enter Passphrase for keystore:

Я нажал «Enter», затем вывел:

 jarsigner: you must enter key password
 Exception in thread Thread-1:
 Traceback (most recent call last):
   File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
     self.run()
   File "/usr/lib/python3.6/threading.py", line 864, in run
     self._target(*self._args, **self._kwargs)
   File "/var/www/catchmeifyoucan.tech/malwareHidingSystem/coreSystem/classes.py", line 77, in doSign
     child = pexpect.spawn(str(myDir) + '/main.py')
   File "/usr/local/lib/python3.6/dist-packages/pexpect/pty_spawn.py", line 204, in __init__
     self._spawn(command, args, preexec_fn, dimensions)
   File "/usr/local/lib/python3.6/dist-packages/pexpect/pty_spawn.py", line 276, in _spawn
     'executable: %s.' % self.command)
 pexpect.exceptions.ExceptionPexpect: The command was not found or was not executable: /var/www/catchmeifyoucan.tech/malwareHidingSystem/coreSystem/main.py.

Можно ли передать пароль из сценария python

...