Преобразовать вывод PuTTY Raw SSH в обычный текст

106
11

У меня есть файл журнала 240 Мбайт из сеанса PuTTY. Это было ошибочно записано в формате "SSH packets and raw data" вместо "All session output". Если я открою файл в текстовом редакторе, я увижу, что требуемые данные (обычный текст).

Проблема заключается в извлечении из исходных данных.

Например:

Incoming raw data at 2016-01-06 15:47:42
00000000 e8 fd c2 d2 88 a9 39 b9 2a 77 2a 7b 4a 60 fc 21 ......9.*w*{J'.!
00000010 1d f5 fc d4 b1 58 1f 4d 68 a4 ef 83 03 39 59 b7 .....X.Mh....9Y.
00000020 41 be 36 7b b5 3c 10 fa 65 27 77 30 77 97 02 39 A.6{.<..e'w0w..9
00000030 46 4c 28 da 5c c6 2c 1e ae 33 db e1 a8 09 ea 4a FL(.\.,..3.....J
00000040 06 94 c6 eb 38 8e d3 d3 33 13 78 08 7c 5f 41 56 ....8...3.x.|_AV
00000050 f1 13 9e e1 ....
Incoming packet #0x31, type 94 / 0x5e (SSH2_MSG_CHANNEL_DATA)
00000000 00 00 01 00 00 00 00 20 64 69 73 61 62 6c 69 6e ....... disablin
00000010 67 20 61 20 72 75 6e 6e 69 6e 67 20 77 61 74 63 g a running watc
00000020 68 64 6f 67 2e 2e 0d 0a hdog....
Incoming raw data at 2016-01-06 15:47:42
00000000 dc 96 f3 54 f8 a8 5c 83 80 7b a8 07 da 79 95 50 ...T..\..{...y.P
00000010 3f 19 2f 0c f0 03 a1 01 a3 33 2f 97 75 9d 47 15 ?./......3/.u.G.
00000020 b9 95 df c6 66 e0 50 32 88 1e db 5b 73 1b 7b ad ....f.P2...[s.{.

Я думаю, что мне нужно читать только разделы файла с надписью "Входящий пакет". Затем я могу читать коды символов ascii и преобразовывать в удобочитаемый текст (это восстановит вкладки, переводы строк и возврат каретки).

Я не знаком с awk или sed, но я знаю немного grep. Как я могу сначала извлечь разделы (переменный размер), которые мне нужно перевести из кодов ASCII в текст?

спросил(а) 2016-03-15T14:19:00+03:00 4 года, 6 месяцев назад
1
Решение
112

sed -n '/^Incoming packet/,/^Incoming raw data/{//!p}

Это будет печатать строки между совпадениями Incoming packet и Incoming raw. Обработайте этот вывод дальше, чтобы получить желаемый результат.

Печатать только символы ASCII (печатать последние 17 символов) из соответствующей строки:

sed -n '/Incoming packet/,/Incoming raw data/{//!{s/^.*\(.\{17\}\)/\1/;p}}'

Ссылка: 1, 2

ответил(а) 2016-03-15T15:41:00+03:00 4 года, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема