Понимание опции tpcdump -d - PullRequest
0 голосов
/ 01 апреля 2020

Я новичок в форуме, поэтому извиняюсь, если нарушаю какие-либо правила здесь (не стесняйтесь исправлять и / или перенаправлять)

Это говорит: я пытаюсь понять, что Опция "-d" используется в tpcdump (то есть tcpdump -i any -d)

. При выполнении вышеприведенного примера команды ясно, что вывод отличается от вывода без -d, но я не понимаю вывод или его назначение

Страница man заявляет

"Дамп скомпилированного кода сопоставления пакетов в удобочитаемой для человека форме на стандартный вывод и останов."

но я ' у меня возникли проблемы с синтаксическим анализом значения. Что означает код сопоставления пакетов? И каковы некоторые цели использования этого вывода?

Большое спасибо за любые ответы

1 Ответ

1 голос
/ 01 апреля 2020

Когда вы используете фильтр захвата с tcpdump, например tcpdump -i <any> tcp port 443, вы фильтруете пакеты, которые не являются TCP-пакетами или не отправляются через порт 443. Но как, спросите вы, tcpdump делает знаете, как это сделать?

Код соответствия пакетов здесь относится к синтаксическому коду BPF (Berkeley Packet Filter). Другими словами, на что разбивается tcp port 443 на более низком уровне? Если мы запустим tcpdump -i <any> tcp port 443, то увидим:

$ tcpdump -i en0 -d tcp port 443
(000) ldh      [12]
(001) jeq      #0x86dd          jt 2    jf 8
(002) ldb      [20]
(003) jeq      #0x6             jt 4    jf 19
(004) ldh      [54]
(005) jeq      #0x1bb           jt 18   jf 6
(006) ldh      [56]
(007) jeq      #0x1bb           jt 18   jf 19
(008) jeq      #0x800           jt 9    jf 19
(009) ldb      [23]
(010) jeq      #0x6             jt 11   jf 19
(011) ldh      [20]
(012) jset     #0x1fff          jt 19   jf 13
(013) ldxb     4*([14]&0xf)
(014) ldh      [x + 14]
(015) jeq      #0x1bb           jt 18   jf 16
(016) ldh      [x + 16]
(017) jeq      #0x1bb           jt 18   jf 19
(018) ret      #262144
(019) ret      #0

Для получения информации о том, для чего люди используют tcpdump -d, есть статьи на it . Для полного понимания того, как работает код BPF, в tshark.dev есть статья .

...