как часть моего проекта, я пытаюсь отправить IP-пакеты, содержащие HTTP-запросы в Google. Я использую библиотеку Winpcap и VC++. В настоящее время у меня есть TCP-пакеты для трехсторонней передачи, но я застрял в отправке фактического пакета HTTP-запроса после отправки пакета TCP ACK. Когда я захватываю пакеты с помощью wirehark, этот пакет помечен как «сегмент TCP повторно собранного PDU». Столбец протокола - «TCP», а не «HTTP». Что не так? Как отправить HTTP-пакеты таким образом?отправить HTTP-запрос с использованием raw-сокета и WinPcap
ответ
Почему вы используете WinPCap для отправки пакетов? Вместо этого вы должны использовать обычные сокеты. Лучше используйте библиотеку сокетов, которая реализует для вас протокол HTTP, такой как завиток или даже собственные API WinInet или WinHTTP от Microsoft.
Вы не обязательно делаете что-то неправильно.
По умолчанию Wireshark передает данные TCP обработчику протокола более высокого уровня - в этом случае, который пытается собрать все HTTP-запросы и ответы. Он придает вновь собранного сообщение в окончательного пакета в последовательности, и маркирует другие пакеты с «TCP сегмента повторно собраны PDU»:
Вы можете отключить эту перекомпоновки функцию, чтобы исследовать отдельные пакеты :
- Edit -> Preferences -> Протоколы -> TCP
- Снимите флажок "Разрешить subdissector собрать TCP потоки"
Я бы очень хотел, чтобы вы изучили основы протокола HTTP, прежде чем пытаться это сделать, если планируете продлить это. Беспорядок с выполнением сырых сокетов и метанием запросов; прочитайте некоторый исходный код.
Тем не менее, я бы не видел точки pcap. Вы должны иметь возможность использовать библиотеку Wininet, если вы не хотите кодировать фактический сокет: Wininet lib
Однако, если вы хотите кодировать сырые сокеты, я бы пошел и использовал winsocks. Разница между HTTP и TCP трудно понять некоторым; HTTP основан на TCP, поэтому они технически все одинаковы, TCP используется для буквально тысяч приложений. Большинство подключений на вашем компьютере - TCP.
Если вы пытаетесь перехватить соединение как атаку MITM с помощью программы pcap для отправки HTTP-запроса, я бы, вероятно, научился программированию в Pcap. Для этого есть множество обучающих программ, таких как this one.
PS: Посмотрите учебник winsocks, так как его начинающим понимать довольно сложно. Кроме того, winpcap не поддерживается во всех системах, и это может быть (в некоторых случаях) боль для установки. Было бы честно лучше использовать winsocks для этого. У Wininet гораздо больше поддержки, и я (не держите меня в этом) полагаю, что все сборки W2K + имеют wininet, поэтому для совместимости (что я действительно не думаю, что это проблема для вас) проблемы я бы использовал wininet или winsocks.
Возможно, вы не заканчиваете запрос \r\n
дважды.
Если вы отправите строку GET/HTTP/1.0\r\n
, вы не получите никаких пакетов.
Вы должны отправить эту строку: GET/HTTP/1.0\r\n\r\n
.
- 1. риск, связанный с использованием winPcap вместо сокета
- 2. MITM с winpcap и/или розетками? - C++
- 3. Winpcap - Проблемы с отправкой данных
- 4. Ошибки компоновщика с WinPcap
- 5. Необработанные пакеты WiFi с WinPcap
- 6. Как установить и использовать WinPcap?
- 7. Winpcap, DLL и с открытым исходным кодом
- 8. Что такое Wireshark и WinPcap?
- 9. WinPCAP И несовместимый совместимый режим?
- 10. Как изменить пакеты с помощью winpcap
- 11. Улавливание пакетов с использованием winpcap на устройстве ppp
- 12. C# switch - бесконечные петли с winpcap
- 13. Как использовать pcap_sendqueue_queue() в библиотеке winpcap?
- 14. Winpcap - pcap_next_ex vs pcap_loop
- 15. Ускоренные данные WinPCap
- 16. WinPcap - Libpcap - packet_handler уведомление
- 17. Ошибка компиляции Winpcap MinGW
- 18. Интеграция nmap и WinPcap в PHP-приложение
- 19. C/Python WinPCap Translation
- 20. winpcap silent install
- 21. Как остановить захват с помощью winpcap?
- 22. Как получить uri пакета HTTP с winpcap?
- 23. winpcap/libpcap против сырых сокетов
- 24. Как создать Raw пакеты и отправить по сети в VC++
- 25. Альтернатива Winsock (нет, не WinPCAP)
- 26. извлечение пакета из фрейма winpcap
- 27. отправить массив с использованием drupal_goto()
- 28. Отправить заявку с использованием OkHttpClient
- 29. Код Winpcap - Захват потеряет пакеты в цикле
- 30. Происхождение URL-адреса браузера в winpcap