Как я могу ввести сырые пакеты в мою сеть - PullRequest
3 голосов
/ 27 января 2010

При тестировании некоторых функций получения драйвера сетевого устройства мне нужно отправлять специальные пакеты по проводам. Я знаю, что мне нужно открыть сырой сокет и вытолкнуть байты. Есть ли какой-нибудь известный пример кода (C, Perl и т. Д.), Который уже доступен для игры на этом уровне?

(добавлено позже) Я бы предпочел не относящиеся к платформе ответы, они будут наиболее полезными для всех.

Ответы [ 6 ]

2 голосов
/ 27 января 2010
2 голосов
/ 27 января 2010

Посмотрите документацию для пакета . По сути, вы создаете сокет с SOCK_RAW или SOCK_DGRAM, а затем записываете в сокет, используя обычный сокет ввода-вывода. Однако отправляемые вами данные будут помещаться непосредственно в линию, а не автоматически получать заголовки, необходимые для большинства сетевых взаимодействий.

2 голосов
/ 27 января 2010

http://www.codeproject.com/KB/IP/sendrawpacket.aspx

Уже существует проект, который может помочь вам в этом.

1 голос
/ 27 января 2010

Мне кажется, вы ищете инструмент для генерации ваших собственных пакетов, Scapy - такой инструмент, часто используемый в индустрии безопасности (например, пентестеры).

Доступна демоверсия: http://www.secdev.org/projects/scapy/demo.html

0 голосов
/ 27 января 2010

Я обнаружил, что здесь есть хороший пример C на Security-Freak , который требует лишь небольшой модификации для гибкости. Я надеюсь, что есть другие ответы на других языках.

0 голосов
/ 27 января 2010

Я не могу придумать ни одного примера. Но вы должны просто иметь возможность открыть сокет UDP на любой IP-адрес и начать записывать на него данные. Убедитесь, что его UDP или это не будет работать.

...