tcpdump vs tcpflow (или почему пакетные данные tcpdump ASCII не читаются человеком?)

Я использовал оба, и я пришел к выводу, что я могу читать html-данные с веб-страниц с помощью tcpflow, но не могу сделать это с помощью tcpdump. Лучшее, что я получаю, это какой-то уродливый текст ASCII с большим количеством символов точки.

Насколько я понимаю, tcpdump не собирает пакеты, а tcpflow делает это. Но если бы это было ключевым отличием, не могли бы данные пакета из tcpdump по-прежнему быть удобочитаемыми для человека — просто небольшими порциями? Проблема в том, что tcpdump ограничен ASCII, а большая часть сетевого трафика кодируется в UTF-8?

Я новичок в сетевом анализе/программировании, так что простите меня, если я упустил что-то очевидное.


person Sridhar Sarnobat    schedule 06.09.2011    source источник
comment
Просто используйте wireshark для чтения файлов захвата tcpdump, а затем выберите пакет в рассматриваемом сеансе. Вы можете использовать Analyze › Follow TCP stream, чтобы получить ASCII-дамп всего потока.   -  person This    schedule 28.11.2011


Ответы (2)


Чтобы получить эти зашифрованные данные, следует использовать tcpdump с параметром tcpdump –A (заглавная буква а). Он передает текст без каких-либо заголовков и используется в основном для веб-страниц. Следовательно, мы легко получаем страницу ответа.

Я думаю, вы путаетесь между прикладным уровнем и пакетом транспортного уровня.

Я не знаю о tcpflow, но tcpdump захватывает весь пакет (включая заголовок и все остальное), а не только данные. HTML-данные, о которых вы упоминаете, будут в части данных пакета tcp/udp/icmp в зависимости от того, что вы используете и поэтому вам также необходимо понимать структуру пакета tcp/udp/icmp...

Я перехватываю этот пакет на своей машине, и HTML-данные хорошо видны, вам нужно написать скрипт, чтобы получить его из вывода со знанием структуры пакета.

 16:15:17.968325 IP 172.31.9.84.80 > 172.31.9.177.56559: P 2575928381:2575928808(427)     
 ack 65285447 win 1716 <nop,nop,timestamp 21031622 15165633>
0x0000:  4500 01df 66fd 4000 4006 66d8 ac1f 0954    E...f.@[email protected]
0x0010:  ac1f 09b1 0050 dcef 9989 8c3d 03e4 2d47  ..... P.....=..-G
0x0020:  8018 06b4 1a2a 0000 0101 080a 0140 eac6     .....*.......@..
0x0030:  00e7 68c1 4854 5450 2f31 2e31 2032 3030    ..h.HTTP/1.1.200
0x0040:  204f 4b0d 0a44 6174 653a 2046 7269 2c20    .OK..Date:.Fri,.
0x0050:  3130 204a 756c 2032 3030 3920 3130 3a32    10.Jul.2009.10:2
0x0060:  303a 3136 2047 4d54 0d0a 5365 7276 6572    0:16.GMT..Server
0x0070:  3a20 4170 6163 6865 2f32 2e30 2e35 3220    :.Apache/2.0.52.
0x0080:  2852 6564 2048 6174 290d 0a4c 6173 742d    (Red.Hat)..Last-
0x0090:  4d6f 6469 6669 6564 3a20 4672 692c 2031    Modified:.Fri,.1
0x00a0:  3020 4a75 6c20 3230 3039 2030 393a 3331    0.Jul.2009.09:31
0x00b0:  3a30 3420 474d 540d 0a45 5461 673a 2022    :04.GMT..ETag:."
0x00c0:  3266 6231 3333 2d37 372d 6131 3935 3436    2fb133-77-a19546
0x00d0:  3030 220d 0a41 6363 6570 742d 5261 6e67     00"..Accept-Rang
0x00e0:  6573 3a20 6279 7465 730d 0a43 6f6e 7465    es:.bytes..Conte
0x00f0:  6e74 2d4c 656e 6774 683a 2031 3139 0d0a    nt-Length:.119..
0x0100:  4b65 6570 2d41 6c69 7665 3a20 7469 6d65    Keep-Alive:.time
0x0110:  6f75 743d 3135 2c20 6d61 783d 3130 300d    out=15,.max=100.
0x0120:  0a43 6f6e 6e65 6374 696f 6e3a 204b 6565    .Connection:.Kee
0x0130:  702d 416c 6976 650d 0a43 6f6e 7465 6e74    p-Alive..Content
0x0140:  2d54 7970 653a 2074 6578 742f 6874 6d6c    -Type:.text/html
0x0150:  3b20 6368 6172 7365 743d 4953 4f2d 3838     ;.charset=ISO-88
0x0160:  3539 2d31 0d0a 0d0a 3c68 746d 6c3e 0a0a    59-1....<html>..
0x0170:  3c62 6f64 793e 0a49 6e64 6961 6e20 696e    <body>.Indian.in
0x0180:  7374 6974 7574 6520 6f66 2074 6563 686e    stitute.of.techn
0x0190:  6f6c 6f67 7920 2e2e 2e2e 2e20 7468 6973     ology.......this
0x01a0:  2069 7320 7468 6520 7465 7374 2070 6167    .is.the.test.pag
0x01b0:  652e 0a3c 4120 6872 6566 3d22 6164 2e68    e..<A.href="ad.h
0x01c0:  746d 6c22 3e61 6263 643c 2f41 3e0a 0a3c    tml">abcd</A>..<
0x01d0:  2f62 6f64 793e 0a3c 2f68 746d 6c3e 0a          /body>.</html>.

Последние 7-8 строк описывают html данные.

используйте -s0 для захвата всего кадра и -X для печати в вышеприведенном формате ASCII, удобочитаемом для человека.

Чтобы получить эти зашифрованные данные, нужно использовать TCPDUMP с опцией –A (заглавная a). Он передает текст без каких-либо заголовков и используется в основном для веб-страниц. Следовательно, мы легко получаем страницу ответа.

Например:

Я запрашиваю index.html на 172.31.9.84 через порт 80.

Затем я запросил GET/index.html (пример страницы, содержащей только текст «Индийский технологический институт, это тестовая страница»)

В этот момент, когда я перехватил пакеты, я получил что-то вроде:

Request:

18:10:42.387426 IP 172.31.9.177.42943 > 172.31.9.84.80:
P 1:15(14) ack 1 win 46 <nop,nop,timestamp 6644101 353753635>
E..B.G@[email protected]^R.Mb.L.....ke.....
.ea....#GET /index.html

Response:

18:10:42.388127 IP 172.31.9.84.80 > 172.31.9.177.42943: P 1:53(52) 
ack 15 win 1448 <nop,nop,timestamp 353758368 6644101>
E..h..@[email protected]..   ..P..b.L.^R.[....d......
.....ea.<html>

<body>
Indian institute of technology this is the test page
</body>
</html>
person Udit Gupta    schedule 27.11.2011
comment
Большое спасибо Удит. Да, я запутался между двумя уровнями модели OSI. - person Sridhar Sarnobat; 22.12.2011
comment
Более того, используйте tcpdump -w, чтобы полностью записать пакеты в файл, а затем tcpdump -r, чтобы восстановить их и найти лучшие параметры командной строки путем итерации, чтобы увидеть детали, которые вы хотите увидеть. - person Jo So; 25.06.2014
comment
The html data which you are mentioning would be in the data part of a tcp/udp/icmp packet Правда? Вы думаете, что он, вероятно, посещает веб-сайт, который отвечает HTML-кодом, инкапсулированным в... пакеты ICMP? Навряд ли. you need to write script to get it from the output with a knowledge of packet structure Неправда. Вы можете просто использовать Wireshark. - person Parthian Shot; 11.08.2015

При попытке получить данные HTTP с помощью tcpdump вы увидите чистый текст в ASCII, если вы примените параметр -A. Однако данные HTTP почти всегда сжимаются в режиме gzip или другом. Вы можете увидеть это в заголовках:

Кодировка содержимого: gzip, сжатие, bzip2

Таким образом, tcpdump выведет на ваш экран несколько байтов и это сжатые данные!!! Вам нужно будет использовать tshark или wireshark, чтобы увидеть плоские данные. Тогда ваша проблема не в UTF8.

Вы можете протестировать отображение данных tcpdump, отключив модуль deflate на веб-сервере Apache.

Надеюсь, это поможет.

person Eriberto Mota    schedule 20.03.2013
comment
Это помогает. Спасибо, Эриберто. - person Sridhar Sarnobat; 21.03.2013