Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: RegExp
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
popryduhin
19 / 18 / 5
Регистрация: 17.09.2015
Сообщений: 445
Записей в блоге: 6
1

Разложить вывод программы

06.11.2018, 21:58. Просмотров 792. Ответов 15

Добрый вечер уважаемые коллеги!

Пытаюсь разобрать вывод программы по регулярному выражению

Полный вывод
Кликните здесь для просмотра всего текста


Certmgr 1.1 (c) "CryptoPro", 2007-2010.
program for managing certificates, CRLs and stores

=============================================================================
1-------
Issuer : CN=���, E=igor.popryduhin@yandex.ru, C=RU
Subject : CN=���, E=igor.popryduhin@yandex.ru, C=RU
Serial : 0x148AC4D7036652856138
SHA1 Hash : eb4777ef2be684a15309090b7ae54e69a0f5b42a
SubjKeyID : 08a0cda07c363b7e358f9216a211b84f440e43ed
Signature Algorithm : sha256RSA
PublicKey Algorithm : RSA (2048 bits)
Not valid before : 01/11/2018 17:27:32 UTC
Not valid after : 01/11/2023 17:27:32 UTC
PrivateKey Link : Yes
Container : {4312A945-10E3-409A-8285-5057D72EAAE6}
Provider Name : Microsoft Enhanced Cryptographic Provider v1.0
Provider Info : ProvType: 1, KeySpec: 1, Flags: 0x0

2-------
Issuer : C=US, O=Apple Inc., OU=Apple iPhone, CN=Apple iPhone Device CA
Subject : CN=1DE41F19-054D-45D7-9284-96FD6F6E4CD4
Serial : 0x030D3A5C5E6A5A3ED457
SHA1 Hash : c4459cacfc7a69d52c04d86dd45283177d5f659d
SubjKeyID : 21a5cdc330927a3e0905373c95819c6dee3f6107
Signature Algorithm : sha1RSA
PublicKey Algorithm : RSA (1024 bits)
Not valid before : 27/06/2018 09:05:24 UTC
Not valid after : 27/06/2019 09:10:24 UTC
PrivateKey Link : No
Extended Key Usage : 1.3.6.1.5.5.7.3.1
1.3.6.1.5.5.7.3.2

=============================================================================

[ErrorCode: 0x00000000]





Хочу получить примерно следующее

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Array
(
    [0] => Array
        (
            [0] => Issuer              : CN=пїЅпїЅпїЅ, E=igor.popryduhin@yandex.ru, C=RU
             ...
            [1] =>   PrivateKey Link     : No  
        )
 
   [1] => Array
        (
            [0] =>   Issuer              :CN=пїЅпїЅпїЅ, E=igor.popryduhin@yandex.ru, C=RU
            ...
            [1] =>   PrivateKey Link     : No  
     )
Ну или если облегчить задачу, то зеленый и красный блок по отдельности, а после отдельно их разобрать

Добавлено через 1 минуту
Основная задача, это достучаться до

Issuer : CN=пїЅпїЅпїЅ, E=igor.popryduhin@yandex.ru, C=RU

ключ: значение
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2018, 21:58
Ответы с готовыми решениями:

Следующие формулы разложить по переменной x1, разложить по переменной x2, преобразовать к СДНФ
Следующие формулы 1) разложить по переменной x1, 2) разложить по переменной x2, 3) преобразовать к...

Найти корни полинома. Разложить полином на линейные множители. Разложить полином на множители, неприводимые в R
Полином - x^4-5x^3+8x^2-20x+16. Нашёл все его корни - 1, 4, 2i, -2i. Разложил на линейные множители...

Вывод программы
У меня есть готовый проект. Как правильно вывести его в .exe?

Вывод программы
Здравствуйте, подскажите пожалуйста, что нужно сделать, чтобы программа работала корректно,...

Вывод из программы
Добрый день, делаю задачу на курсовой и возник вот такой вопрос Как вывести данные которые будут...

15
VNIIAEN
117 / 83 / 38
Регистрация: 09.07.2018
Сообщений: 228
06.11.2018, 22:04 2
popryduhin, а исходная строка у вас случайно не в json-формате?
0
popryduhin
19 / 18 / 5
Регистрация: 17.09.2015
Сообщений: 445
Записей в блоге: 6
06.11.2018, 22:08  [ТС] 3
Цитата Сообщение от VNIIAEN Посмотреть сообщение
а исходная строка у вас случайно не в json-формате?
Совершенно точно нет.

Пруфы
Разложить вывод программы
0
popryduhin
19 / 18 / 5
Регистрация: 17.09.2015
Сообщений: 445
Записей в блоге: 6
06.11.2018, 22:09  [ТС] 4
Цитата Сообщение от VNIIAEN Посмотреть сообщение
popryduhin, а исходная строка у вас случайно не в json-формате?
Дело в том что я напрямую из php дергаю программу Windows.
0
VNIIAEN
117 / 83 / 38
Регистрация: 09.07.2018
Сообщений: 228
06.11.2018, 22:11 5
Цитата Сообщение от popryduhin Посмотреть сообщение
Совершенно точно нет.
Ок. А можете показать, как вы получаете исходную строку в переменную для последующей обработки?

Добавлено через 1 минуту
Цитата Сообщение от popryduhin Посмотреть сообщение
Дело в том что я напрямую из php дергаю программу Windows.
Исходную строку, с которой вы работаете, не помешало бы опубликовать для однозначности.
0
popryduhin
19 / 18 / 5
Регистрация: 17.09.2015
Сообщений: 445
Записей в блоге: 6
06.11.2018, 22:11  [ТС] 6
Дело в том что я напрямую из php дергаю программу Windows.
Я настоящий маньяк.
0
VNIIAEN
117 / 83 / 38
Регистрация: 09.07.2018
Сообщений: 228
06.11.2018, 22:12 7
Цитата Сообщение от popryduhin Посмотреть сообщение
Я настоящий маньяк.
Кликните здесь для просмотра всего текста

Не по теме:

Ыыыыы

0
popryduhin
19 / 18 / 5
Регистрация: 17.09.2015
Сообщений: 445
Записей в блоге: 6
06.11.2018, 22:14  [ТС] 8
Цитата Сообщение от VNIIAEN Посмотреть сообщение
Исходную строку, с которой вы работаете, не помешало бы опубликовать для однозначности.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
     * @return mixed
     */
    public function getCertificates()
    {
        $certmgr = $this->certmgr('-list');
        $certmgr->start();
        $certmgr->wait();
        return $certmgr->getOutput();
    }
 
public function test()
    {
        print_r($this->certmgr->getCertificates());
    }
Добавлено через 51 секунду
Функции в разных модулях.
0
VNIIAEN
117 / 83 / 38
Регистрация: 09.07.2018
Сообщений: 228
06.11.2018, 22:15 9
Цитата Сообщение от popryduhin Посмотреть сообщение
print_r($this->certmgr->getCertificates());
Вот этот print_r() что выводит, строку или массив? -- меня это интересует.
0
popryduhin
19 / 18 / 5
Регистрация: 17.09.2015
Сообщений: 445
Записей в блоге: 6
06.11.2018, 22:18  [ТС] 10
Цитата Сообщение от popryduhin Посмотреть сообщение
Дело в том что я напрямую из php дергаю программу Windows.
Много причин так делать.
Проект был до этого написан под linx там проблем не было. Для пакета крипт про поставлялась библиотека libphpcades.so
Она позволяла не заниматься хернёй.

Добавлено через 2 минуты
Цитата Сообщение от VNIIAEN Посмотреть сообщение
Вот этот print_r() что выводит, строку или массив? -- меня это интересует.
Это я для теста печатал вывод.
Естественно это для теста.

вот что мне возвращает голый ответ
$this->certmgr->getCertificates();
0
VNIIAEN
117 / 83 / 38
Регистрация: 09.07.2018
Сообщений: 228
06.11.2018, 22:19 11
Цитата Сообщение от popryduhin Посмотреть сообщение
Много причин так делать.
Проект был до этого написан под linx там проблем не было. Для пакета крипт про поставлялась библиотека libphpcades.so
Она позволяла не заниматься хернёй.
Ок, я попробую иначе сформулировать вопрос:
Вот эта строка у вас хранится в переменной? Или это два элемента массива?
Кликните здесь для просмотра всего текста
Certmgr 1.1 (c) "CryptoPro", 2007-2010.
program for managing certificates, CRLs and stores

=============================================================================
1-------
Issuer : CN=���, E=igor.popryduhin@yandex.ru, C=RU
Subject : CN=���, E=igor.popryduhin@yandex.ru, C=RU
Serial : 0x148AC4D7036652856138
SHA1 Hash : eb4777ef2be684a15309090b7ae54e69a0f5b42a
SubjKeyID : 08a0cda07c363b7e358f9216a211b84f440e43ed
Signature Algorithm : sha256RSA
PublicKey Algorithm : RSA (2048 bits)
Not valid before : 01/11/2018 17:27:32 UTC
Not valid after : 01/11/2023 17:27:32 UTC
PrivateKey Link : Yes
Container : {4312A945-10E3-409A-8285-5057D72EAAE6}
Provider Name : Microsoft Enhanced Cryptographic Provider v1.0
Provider Info : ProvType: 1, KeySpec: 1, Flags: 0x0
2-------
Issuer : C=US, O=Apple Inc., OU=Apple iPhone, CN=Apple iPhone Device CA
Subject : CN=1DE41F19-054D-45D7-9284-96FD6F6E4CD4
Serial : 0x030D3A5C5E6A5A3ED457
SHA1 Hash : c4459cacfc7a69d52c04d86dd45283177d5f659d
SubjKeyID : 21a5cdc330927a3e0905373c95819c6dee3f6107
Signature Algorithm : sha1RSA
PublicKey Algorithm : RSA (1024 bits)
Not valid before : 27/06/2018 09:05:24 UTC
Not valid after : 27/06/2019 09:10:24 UTC
PrivateKey Link : No
Extended Key Usage : 1.3.6.1.5.5.7.3.1
1.3.6.1.5.5.7.3.2
=============================================================================

[ErrorCode: 0x00000000]
0
popryduhin
19 / 18 / 5
Регистрация: 17.09.2015
Сообщений: 445
Записей в блоге: 6
06.11.2018, 22:22  [ТС] 12
Цитата Сообщение от VNIIAEN Посмотреть сообщение
Вот этот print_r() что выводит, строку или массив? -- меня это интересует.
кастомный вывод программы

Кликните здесь для просмотра всего текста

Certmgr 1.1 (c) "CryptoPro", 2007-2010.
program for managing certificates, CRLs and stores

=============================================================================
1-------
Issuer : CN=���, E=igor.popryduhin@yandex.ru, C=RU
Subject : CN=���, E=igor.popryduhin@yandex.ru, C=RU
Serial : 0x148AC4D7036652856138
SHA1 Hash : eb4777ef2be684a15309090b7ae54e69a0f5b42a
SubjKeyID : 08a0cda07c363b7e358f9216a211b84f440e43ed
Signature Algorithm : sha256RSA
PublicKey Algorithm : RSA (2048 bits)
Not valid before : 01/11/2018 17:27:32 UTC
Not valid after : 01/11/2023 17:27:32 UTC
PrivateKey Link : Yes
Container : {4312A945-10E3-409A-8285-5057D72EAAE6}
Provider Name : Microsoft Enhanced Cryptographic Provider v1.0
Provider Info : ProvType: 1, KeySpec: 1, Flags: 0x0
2-------
Issuer : C=US, O=Apple Inc., OU=Apple iPhone, CN=Apple iPhone Device CA
Subject : CN=1DE41F19-054D-45D7-9284-96FD6F6E4CD4
Serial : 0x030D3A5C5E6A5A3ED457
SHA1 Hash : c4459cacfc7a69d52c04d86dd45283177d5f659d
SubjKeyID : 21a5cdc330927a3e0905373c95819c6dee3f6107
Signature Algorithm : sha1RSA
PublicKey Algorithm : RSA (1024 bits)
Not valid before : 27/06/2018 09:05:24 UTC
Not valid after : 27/06/2019 09:10:24 UTC
PrivateKey Link : No
Extended Key Usage : 1.3.6.1.5.5.7.3.1
1.3.6.1.5.5.7.3.2
=============================================================================

[ErrorCode: 0x00000000]


Добавлено через 53 секунды
Цитата Сообщение от VNIIAEN Посмотреть сообщение
Вот эта строка у вас хранится в переменной? Или это два элемента массива?
Да.
Совершенно точно.

Добавлено через 44 секунды
Цитата Сообщение от popryduhin Посмотреть сообщение
Сообщение от VNIIAEN
Вот эта строка у вас хранится в переменной? Или это два элемента массива?
Да.
Совершенно точно.
В переменной
0
VNIIAEN
117 / 83 / 38
Регистрация: 09.07.2018
Сообщений: 228
06.11.2018, 22:31 13
Лучший ответ Сообщение было отмечено popryduhin как решение

Решение

Похоже что так:
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
$str = 'Certmgr 1.1 (c) "CryptoPro", 2007-2010.
program for managing certificates, CRLs and stores
 
=============================================================================
1-------
Issuer : CN=пїЅпїЅпїЅ, E=igor.popryduhin@yandex.ru, C=RU
Subject : CN=пїЅпїЅпїЅ, E=igor.popryduhin@yandex.ru, C=RU
Serial : 0x148AC4D7036652856138
SHA1 Hash : eb4777ef2be684a15309090b7ae54e69a0f5b42a
SubjKeyID : 08a0cda07c363b7e358f9216a211b84f440e43ed
Signature Algorithm : sha256RSA
PublicKey Algorithm : RSA (2048 bits)
Not valid before : 01/11/2018 17:27:32 UTC
Not valid after : 01/11/2023 17:27:32 UTC
PrivateKey Link : Yes 
Container : {4312A945-10E3-409A-8285-5057D72EAAE6}
Provider Name : Microsoft Enhanced Cryptographic Provider v1.0
Provider Info : ProvType: 1, KeySpec: 1, Flags: 0x0
2-------
Issuer : C=US, O=Apple Inc., OU=Apple iPhone, CN=Apple iPhone Device CA
Subject : CN=1DE41F19-054D-45D7-9284-96FD6F6E4CD4
Serial : 0x030D3A5C5E6A5A3ED457
SHA1 Hash : c4459cacfc7a69d52c04d86dd45283177d5f659d
SubjKeyID : 21a5cdc330927a3e0905373c95819c6dee3f6107
Signature Algorithm : sha1RSA
PublicKey Algorithm : RSA (1024 bits)
Not valid before : 27/06/2018 09:05:24 UTC
Not valid after : 27/06/2019 09:10:24 UTC
PrivateKey Link : No 
Extended Key Usage : 1.3.6.1.5.5.7.3.1
1.3.6.1.5.5.7.3.2
=============================================================================
 
[ErrorCode: 0x00000000]';
 
$data = [];
$patt = '~(?:Issuer|PrivateKey Link).+(?!$)~';
 
if (preg_match_all($patt, $str, $arr)) {
    $data = array_chunk($arr[0], 2);
}
 
var_dump($data);
Результат:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
array (size=2)
  0 => 
    array (size=2)
      0 => string 'Issuer : CN=пїЅпїЅпїЅ, E=igor.popryduhin@yandex.ru, C=RU
' (length=57)
      1 => string 'PrivateKey Link : Yes 
' (length=23)
  1 => 
    array (size=2)
      0 => string 'Issuer : C=US, O=Apple Inc., OU=Apple iPhone, CN=Apple iPhone Device CA
' (length=72)
      1 => string 'PrivateKey Link : No 
' (length=22)
1
popryduhin
19 / 18 / 5
Регистрация: 17.09.2015
Сообщений: 445
Записей в блоге: 6
06.11.2018, 23:01  [ТС] 14
Цитата Сообщение от VNIIAEN Посмотреть сообщение
Похоже что так:
Забыл упомянуть,

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
Issuer : CN=пїЅпїЅпїЅ, E=igor.popryduhin@yandex.ru, C=RU
Subject : CN=пїЅпїЅпїЅ, E=igor.popryduhin@yandex.ru, C=RU
Serial : 0x148AC4D7036652856138
SHA1 Hash : eb4777ef2be684a15309090b7ae54e69a0f5b42a
SubjKeyID : 08a0cda07c363b7e358f9216a211b84f440e43ed
Signature Algorithm : sha256RSA
PublicKey Algorithm : RSA (2048 bits)
Not valid before : 01/11/2018 17:27:32 UTC
Not valid after : 01/11/2023 17:27:32 UTC
PrivateKey Link : Yes 
Container : {4312A945-10E3-409A-8285-5057D72EAAE6}
Provider Name : Microsoft Enhanced Cryptographic Provider v1.0
Provider Info : ProvType: 1, KeySpec: 1, Flags: 0x0
Это один сертификат.

Соответственно их может быть разное количество.
Как я понял, метод array_chunk будет ждать от меня как раз это количество сертификатов.
Я полагаю что каким то образом можно выдрать это значение из исходного ответа

Вот это зацеп 2-------

может быть и 3------- и 50-------

Добавлено через 51 секунду
Цитата Сообщение от popryduhin Посмотреть сообщение
Похоже что так:
Но в целом, уже что то есть.

Добавлено через 10 минут
Приблизился к истине.


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$certmgr = $this->certmgr('-list');
        $certmgr->start();
        $certmgr->wait();
 
        $keys = [];
        $keys[] = 'Issuer';
        $keys[] = 'Subject';
        $keys[] = 'Serial';
        $keys[] = 'SHA1 Hash';
        $keys[] = 'SubjKeyID';
        $keys[] = 'Signature Algorithm';
        $keys[] = 'PublicKey Algorithm';
        $keys[] = 'Not valid before';
        $keys[] = 'Not valid after';
        $keys[] = 'PrivateKey Link';
        $keys[] = 'Container';
        $keys[] = 'Provider Name';
        $keys[] = 'Provider Info';
      
 
        $patterns = '~';
        $or = '|';
        foreach ($keys as $key => $item){
            if ($key == count($keys)-1){
                $or = '';
            }
            $patterns .= "$item.+(?!$)".$or;
        }
        $patterns .= '~';
        preg_match_all($patterns, $certmgr->getOutput(), $matches);
        
        return array_chunk($matches[0], 13);
Добавлено через 38 секунд
Вывод
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Array
(
    [0] => Array
        (
            [0] => Issuer              : CN=пїЅпїЅпїЅ, E=igor.popryduhin@yandex.ru, C=RU
            [1] => Subject             : CN=пїЅпїЅпїЅ, E=igor.popryduhin@yandex.ru, C=RU
            [2] => Serial              : 0x148AC4D7036652856138
            [3] => SHA1 Hash           : eb4777ef2be684a15309090b7ae54e69a0f5b42a
            [4] => SubjKeyID           : 08a0cda07c363b7e358f9216a211b84f440e43ed
            [5] => Signature Algorithm : sha256RSA
            [6] => PublicKey Algorithm : RSA (2048 bits)
            [7] => Not valid before    : 01/11/2018  17:27:32 UTC
            [8] => Not valid after     : 01/11/2023  17:27:32 UTC
            [9] => PrivateKey Link     : Yes                 
            [10] => Container           : {4312A945-10E3-409A-8285-5057D72EAAE6}
            [11] => Provider Name       : Microsoft Enhanced Cryptographic Provider v1.0
            [12] => Provider Info       : ProvType: 1, KeySpec: 1, Flags: 0x0
        )
 
    [1] => Array
        (
            [0] => Issuer              : C=US, O=Apple Inc., OU=Apple iPhone, CN=Apple iPhone Device CA
            [1] => Subject             : CN=1DE41F19-054D-45D7-9284-96FD6F6E4CD4
            [2] => Serial              : 0x030D3A5C5E6A5A3ED457
            [3] => SHA1 Hash           : c4459cacfc7a69d52c04d86dd45283177d5f659d
            [4] => SubjKeyID           : 21a5cdc330927a3e0905373c95819c6dee3f6107
            [5] => Signature Algorithm : sha1RSA
            [6] => PublicKey Algorithm : RSA (1024 bits)
            [7] => Not valid before    : 27/06/2018  09:05:24 UTC
            [8] => Not valid after     : 27/06/2019  09:10:24 UTC
            [9] => PrivateKey Link     : No                  
        )
 
)
Добавлено через 15 секунд
VNIIAEN, Спасибо!
0
VNIIAEN
117 / 83 / 38
Регистрация: 09.07.2018
Сообщений: 228
06.11.2018, 23:10 15
Цитата Сообщение от popryduhin Посмотреть сообщение
VNIIAEN, Спасибо!
Ну то есть, решение уже найдено? )
1
popryduhin
19 / 18 / 5
Регистрация: 17.09.2015
Сообщений: 445
Записей в блоге: 6
06.11.2018, 23:12  [ТС] 16
Цитата Сообщение от VNIIAEN Посмотреть сообщение
Ну то есть, решение уже найдено? )
Всё верно!
0
06.11.2018, 23:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2018, 23:12

Вывод программы
Здравствуйте, проблема заключается в том, что когда я получаю вывод из программы он получается...

Некорректный вывод программы
Почему после вызова метода get() переменная all (количество сидячих мест в поезде) всегда равна...

Неправильный вывод программы
Ребят,что не так? Ничего не выводит #include <stdio.h> #include <stdlib.h> main(){...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru