Python3 печатает все между "ENC [PKCS7" и "]" - PullRequest
0 голосов
/ 06 июля 2019

Я работаю над получением двух хешей из вывода команды. Оба хэша начинаются с ENC [BKSC8 и in in]. Оба хэша отображаются во время вывода команды. Но они отображаются в другом формате. Команда Output выглядит следующим образом. Это просто пример хэша:

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]

Ответы [ 2 ]

1 голос
/ 06 июля 2019

Вы пробовали использовать шаблоны регулярных выражений? Мне нужно знать больше о том, что еще может получиться из выходных данных команды, но, похоже, этот шаблон работает для приведенного вами примера.

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]
------------------
0 голосов
/ 06 июля 2019

Использование того, что предложил Джейкоб Родал, было идеально для того, что я пытался сделать. Мне удалось сохранить оба хэша, используя модуль re и команду, предложенную Джейкобом.

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