【问题标题】:Python3 Print Everything Between "ENC[PKCS7" and "]"Python3 打印“ENC[PKCS7”和“]”之间的所有内容
【发布时间】:2019-11-16 13:39:34
【问题描述】:

我正在从命令的输出中获取两个哈希值。两个哈希都以 ENC[BKSC8 和 in ] 开头,两个哈希都在命令输出期间显示。但它们以不同的格式显示。命令输出如下所示。这只是一个示例哈希:

string: ENC[BKSC8,l;kasjdfj;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkajsdl;fjal;sdkjfajsfalsdf;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkajsdl;fjal;sdkjfajsfalsdfl;kasjdfj;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkajsdl;fjal;sdkjfajsfalsdfl;kasjdfj;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkajsdl;fjal;sdkjfajsfalsdfl;kasjdfj;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkajsdl;fjal;sdkjfajsfalsdfl;kasjdfj;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkajsdl;fjal;sdkjfajsfalsdfl;kasjdfj;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkajsdl;fjal;sdkjfajsfalsdfd]

OR

block: >
    ENC[BKSC8,l;kasjdfj;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkal
    ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
    ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
    ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
    ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
    ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
    ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
    asdlad;fljasd;lfjasdjfl;kjal]

我尝试将命令输出放入循环中并拆分字符串,但由于命令输出的格式化方式,这不起作用。

cmd = "my encryption command --BKSC8 my-file" (Just command example)
output = subprocess.getoutput(cmd)

for line in subprocess.getoutput(cmd).splitlines():
    if "[" and "]" in line:
        print(line)

我正在尝试以相同的格式输出两个哈希值。但只有两个哈希值。像下面这样并保持相同的格式。

string: ENC[BKSC8,l;kasjdfj;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkajsdl;fjal;sdkjfajsfalsdf;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkajsdl;fjal;sdkjfajsfalsdfl;kasjdfj;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkajsdl;fjal;sdkjfajsfalsdfl;kasjdfj;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkajsdl;fjal;sdkjfajsfalsdfl;kasjdfj;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkajsdl;fjal;sdkjfajsfalsdfl;kasjdfj;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkajsdl;fjal;sdkjfajsfalsdfl;kasjdfj;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkajsdl;fjal;sdkjfajsfalsdfd]

OR

block: >
    ENC[BKSC8,l;kasjdfj;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkal
    ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
    ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
    ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
    ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
    ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
    ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
    asdlad;fljasd;lfjasdjfl;kjal]

【问题讨论】:

    标签: python string file text


    【解决方案1】:

    您是否尝试过使用正则表达式模式?我需要更多地了解命令输出还可以输出什么,但这种模式似乎适用于您提供的示例。

    hashes = re.findall(r"ENC\[BKSC8[^\[]+\]",text),其中text 是命令的输出。 hashes 是一个包含哈希的列表。示例:

    import re
    
    text = """
    Junk
    not stuff we want
    faksdfjaksdlfjasdk;jf
    123412341234
    ENC[BKSC8,l;kasjdfj;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkal
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        asdlad;fljasd;lfjasdjfl;kjal]
    more junk
    more junk
    block: >
        ENC[BKSC8,l;kasjdfj;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkal
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        asdlad;fljasd;lfjasdjfl;kjal]
    """
    
    hashes = re.findall(r"ENC\[BKSC8[^\[]+\]",text)
    for hash in hashes:
        print(hash)
        print("------------------")
    

    产生以下输出:

    ENC[BKSC8,l;kasjdfj;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkal
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        asdlad;fljasd;lfjasdjfl;kjal]
    ------------------
    ENC[BKSC8,l;kasjdfj;asldkfa;sdfja;dsjf;ajdskfjaksdfa;sldjfkal
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        ;alsdjf;lasdjfljdlf;alsdfja;lsdfj;alsdjf;alsdkjf;laskdjf;lak
        asdlad;fljasd;lfjasdjfl;kjal]
    ------------------
    

    【讨论】:

    • 是的!这正是我想要的!现在,在我得到两个散列输出之后,我可以以某种方式将两个散列导入字典或类似列表的东西以供以后使用吗?我需要以与当前相同的格式调用第二个哈希。因为当我将必须复制到我的文件时,它需要保持相同的格式。
    • 当此行执行hashes = re.findall(r"ENC\[PKCS7[^\[]+\]",text) 时,哈希作为字符串存储在hashes 列表中,因此您可以稍后从那里调用它们。它们都应该保持相同的格式(第二个也可以,因为换行符存储在字符串中)
    • 非常感谢您提供的帮助!这是我正在寻找的确切答案。不能感谢你。感谢您抽出宝贵时间回复。
    【解决方案2】:

    使用 Jacob Rodal 的建议非常适合我想做的事情。我能够使用 re 模块和 Jacob 建议的命令来存储这两个哈希值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-05
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 2017-07-01
      • 2016-05-11
      相关资源
      最近更新 更多