Ваш подход к использованию RAW-сокетов на самом деле не слишком далек от того, что вам нужно.
Скорее всего, ваша система имеет контрольную сумму UDP, выгруженную на сетевую карту, что означает, что NIC выполняет проверку контрольной суммы еще до того, как ОС увидит пакет . Это здорово по соображениям производительности, но означает, что в вашем случае у вас буквально нет возможности добраться до этих пакетов.
К сожалению, выяснить, включено ли это, немного по-разному в каждой ОС. В Linux вы можете использовать ethtool
для проверки формы командной строки (нет метода GUI, о котором я знаю). В Windows он скрыт во вкладке «Дополнительно» свойств драйвера для сетевой карты (хотя вы можете даже не видеть и не контролировать его там, это зависит от драйвера).