Rating@Mail.ru
IPB
Etersoft - from Windows to Linux
Etersoft
решения для перехода
с Windows на Linux
Дружественные сайты: alv.me и Rus-Linux.net

Здравствуйте, гость ( Вход | Регистрация ) Поиск · 

 
Reply to this topic Start new topic
> бинарное содержание пакета, tcpdump или другой снифер
Stauffenberg
bookmark
gyfbbdvkffmrljmmmwd
Jan 8 2017, в 03:06
Сообщение #1


☮ PEACE ☮
Иконка группы

Сообщений: 1942

Вставить имя   :   Цитата

ОС: открытая и свободная
Город: город-герой Мюнхен

Группа: Участники

Автор темы
Всем привет.

Кто-нибудь знает как легче всего просмотреть содержание отправленного/принятого пакета в бинарном представлении?
TCPdump, к примеру, умеет выводить в ASCII HEX:
Код
> tcpdump -vv -i wlp2s0 -S port 123 -l -A -nnvvXS
tcpdump: listening on wlp2s0, link-type EN10MB (Ethernet), capture size 262144 bytes
00:42:55.834585 IP (tos 0x0, ttl 64, id 41491, offset 0, flags [DF], proto UDP (17), length 76)
    192.168.3.100.50083 > 64.113.32.5.123: [udp sum ok] NTPv3, length 48
        Client, Leap indicator:  (0), Stratum 0 (unspecified), poll 0 (1s), precision 0
        Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
          Reference Timestamp:  0.000000000
          Originator Timestamp: 0.000000000
          Receive Timestamp:    0.000000000
          Transmit Timestamp:   0.000000000
            Originator - Receive Timestamp:  0.000000000
            Originator - Transmit Timestamp: 0.000000000
        0x0000:  ec23 3dcf 196c 0022 fafe 5d92 0800 4500  .#=..l."..]...E.
        0x0010:  004c a213 4000 4011 740b c0a8 0364 4071  .L..@.@.t....d@q
        0x0020:  2005 c3a3 007b 0038 fbdc 1b00 0000 0000  .....{.8........
        0x0030:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0040:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0050:  0000 0000 0000 0000 0000                 ..........
00:42:56.012883 IP (tos 0x0, ttl 55, id 16126, offset 0, flags [none], proto UDP (17), length 76)
    64.113.32.5.123 > 192.168.3.100.50083: [udp sum ok] NTPv3, length 48
        Server, Leap indicator:  (0), Stratum 1 (primary reference), poll 0 (1s), precision -29
        Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: ACTS
          Reference Timestamp:  3692821405.467281281 (2017/01/08 00:43:25)
          Originator Timestamp: 0.000000000
          Receive Timestamp:    3692821429.444157630 (2017/01/08 00:43:49)
          Transmit Timestamp:   3692821429.444197565 (2017/01/08 00:43:49)
            Originator - Receive Timestamp:  3692821429.444157630 (2017/01/08 00:43:49)
            Originator - Transmit Timestamp: 3692821429.444197565 (2017/01/08 00:43:49)
        0x0000:  0022 fafe 5d92 ec23 3dcf 196c 0800 4500  ."..]..#=..l..E.
        0x0010:  004c 3efe 0000 3711 2021 4071 2005 c0a8  .L>...7..!@q....
        0x0020:  0364 007b c3a3 0038 8415 1c01 00e3 0000  .d.{...8........
        0x0030:  0000 0000 0000 4143 5453 dc1b fb9d 779f  ......ACTS....w.
        0x0040:  bef3 0000 0000 0000 0000 dc1b fbb5 71b4  ..............q.
        0x0050:  5058 dc1b fbb5 71b6 ee98                 PX....q...
^C
2 packets captured
2 packets received by filter
0 packets dropped by kernel

Мне нужно то же самое, но не в hex, а в двоичном виде.

Я дебажу RAW сокеты и хочу видеть, что именно отправляет моя программа.
Стандарт описывает заголовки по битам. По битам (00, 011) я их и заполняю, и при отладке хочу в бинарном виде их и видеть.


--------------------
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Go to the top of the page
 
+Quote Post
NickLion
bookmark
gyfbbdvkffmrljmmmwd
Jan 8 2017, в 12:18
Сообщение #2


аватар-невидимка
Иконка группы

Сообщений: 2910

Вставить имя   :   Цитата

ОС: openSUSE Tumbleweed x86_64
Город: Львів

Группа: Участники

Stauffenberg
Так каждая шестнадцатеричная цифра взаимнооднозначно представляется тетрадой битов, лично у меня уже в уме всё переводится, просто немного практики.

Если сильно надо было бы, я бы сделал что-то вроде: tcpdump -w - | perl -e '$/=\1; $n = 0; while(<>) { print unpack "B*"; $n++; print !($n % 8) ? "\n" : " "; }'.
Но оно пишет единым потоком.


Спасибо сказали:
Go to the top of the page
 
+Quote Post
Stauffenberg
bookmark
gyfbbdvkffmrljmmmwd
Jan 8 2017, в 15:52
Сообщение #3


☮ PEACE ☮
Иконка группы

Сообщений: 1942

Вставить имя   :   Цитата

ОС: открытая и свободная
Город: город-герой Мюнхен

Группа: Участники

Автор темы
NickLion
Да, распарсить вывод и перевести его "вручную" это первое что пришло в голову. Просто я подумал, что это велосипед, и наверняка есть возможность сделать это стандартными способами.
Wireshark показывает какие участки последовательности к какому уровню/протоколу относятся. Это упрощает отладку.


--------------------
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Go to the top of the page
 
+Quote Post

 Reply to this topic Start new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 22nd January 2017 - в 15:12




Rating@Mail.ru