Я хотел бы иметь фильтр CAPTURE метода HTTP POST-запроса.
Я знаю, что это легко сделать с помощью фильтра отображения http.request.method==POST
но мне нужен tcpdump совместимый.
я написал tcp dst port 80 and (tcp[13] = 0x18)
Но не идеально ...
tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)
работает лучше, но ... пакеты не рассматриваются как пакеты http, поэтому я не могу использовать дополнительные фильтры отображения ...
И есть ли способ не отображать информацию заголовка frame, tcp, ip и http, а только значение поля data-text-lines (содержимое POST)?
Или то же самое в tcpdump, только сброс содержимого формы POSTed html?
Нет гарантии, что все опубликованные данные будут в том же пакете, что и сама строка команды POST. Фактически, если опубликованные данные имеют размер более 1500 байт (вероятно, немного меньше из-за наличия других заголовков HTTP), вам практически гарантировано, что они не будут все в одном пакете. Поэтому для достижения наилучших результатов вам понадобится метод фильтрации, который понимает многопакетную HTTP-транзакцию, и язык фильтров libpcap (который использует tcpdump и что wirehark использует для захватить фильтры) не так ли.
Трудно понять, о чем вы спрашиваете, но я предполагаю, что вам просто нужно найти пакет в захвате Wireshark, щелкнуть его правой кнопкой мыши и выбрать в меню «Follow Stream». Это всего лишь предположение ... просто пытаешься помочь?
Какая операционная система?
Если это Linux, вы можете использовать tcpdump -s 0 -A -i <if> port 80
вместе с любыми другими фильтрами, которые вам нужны, чтобы захватывать и распечатывать интересующие вас http-пакеты, а затем передавать их в perl / bash / awk / любой сценарий для фильтрации этого содержимого оттуда.