Я пытаюсь запустить хранилище ключей в 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