因为\\ x00字符而无法从python导入别名

时间:2013-02-08 12:58:32

标签: python subprocess popen keystore keytool

我有一些代码尝试将p12插入新的密钥库并保存别名以供以后使用。

我正在使用Python中的子进程模块通过命令行直接调用“keytool”

cmd = ['keytool', '-list', '-v', '-keystore', keystore_path,
       '-storetype', 'pkcs12', '-storepass', store_pass]
proc = subprocess.Popen(cmd,
                        stdout=out_stream,
                        stderr=subprocess.PIPE,
                        cwd=work_dir)
(out, err) = proc.communicate()

别名是这样得到的:

for line in execute_result[1].split('\n'):
    if 'Alias' in line:
        elements = line.split(':')
        alias = elements[-1].strip()
        utils.log('Alias : ' + alias)
        break

我也试图删除那些奇怪的特征:

        alias = elements[-1].strip().strip(chr(0))

它适用于Android p12文件,但我注意到,当使用iOS p12文件时,我在别名中获得了\ x00个字符,当我尝试传递到转换步骤时

cmd = ['keytool', '-v', '-importkeystore', '-srckeystore', p12_file,
       '-srcstorepass', password, '-srcstoretype', 'PKCS12',
       '-destkeystore', keystore_fullpath, '-deststoretype', 'JKS',
       '-deststorepass', DEFAULT_PASSWORD,
       '-srcalias', alias, '-destalias', 'default']
proc = subprocess.Popen(cmd,
                        stdout=out_stream,
                        stderr=subprocess.PIPE,
                        cwd=work_dir)
(out, err) = proc.communicate()

失败了:

类型错误:execv()arg 2必须只包含字符串

如果删除这些字符,则无法识别别名。

有什么想法吗?

0 个答案:

没有答案