Перехват сокетов/перехват/внедрение (Windows)

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

Мое исследование по этому вопросу привело к некоторым способам достижения этой цели.

  1. Я нашел кое-что о LibPCap, но я не знаю, может ли он также вводить пакеты. Я знаю, что он захватывает пакеты.
  2. Другой способ заключался в использовании Hook API (внедрение некоторых DLL) ... но я этого не понял, поэтому мне не удалось его использовать.
  3. Перенаправление портов было другим способом

Ничего из этого не было успешным для меня, потому что я не был сосредоточен ни на чем из этого. Я хочу знать, что это самый простой способ реализации, и я буду рад услышать ваши идеи о том, как это сделать.

ПЕРЕД ПУБЛИКАЦИЕЙ: Я ПОЛЬЗУЮСЬ ЭТИМ ТОЛЬКО ЧТОБЫ ПРОВЕРИТЬ ЧТО-ТО В МОЕМ ПРОЕКТЕ. Я НЕ ИСПОЛЬЗУЮ ЭТО, ЧТОБЫ ВРЕДИТЬ ИЛИ ВЗЛОМАТЬ.


person Andrew    schedule 11.03.2011    source источник
comment
Перенаправление портов не имеет к этому абсолютно никакого отношения.   -  person Jon    schedule 11.03.2011
comment
Перенаправление порта в мое приложение, а затем фильтрация полученного контента   -  person Andrew    schedule 11.03.2011
comment
переадресация портов (en.wikipedia.org/wiki/Port_forwarding) – это метод, используемый при настройке NAT. шлюзы.   -  person Jon    schedule 11.03.2011


Ответы (1)


Если вы можете использовать небольшой питон, scapy должен с легкостью справиться с этой задачей :)

person garph0    schedule 11.03.2011
comment
Можете ли вы предоставить мне пример того, как нюхать и вводить? - person Andrew; 11.03.2011
comment
Хорошо, я пронюхал трафик с помощью WireShark и попытался отправить пакет. Все было в порядке, кроме порядкового номера. Как это решить? - person Andrew; 11.03.2011
comment
Пожалуйста, уточните: неверный номер при нюхании? при инъекции? что именно ты делаешь? Мне не хватает информации, чтобы помочь вам :) - person garph0; 11.03.2011
comment
Я запустил WireShark для прослушивания всего входящего/исходящего трафика. После того, как я нашел нужный мне поток/сокет, я сделал пакет в Scapy p=IP(dst=ip)/TCP(sport=port,dport=port2)/RAW DATA, а затем отправил его с помощью send(p). Это не работает, потому что порядковые номера не установлены. - person Andrew; 11.03.2011
comment
Взгляните на этот справочник по созданию пакетов (workrobot.com/sansfire2009/SCAPY -packet-crafting-reference.html), посмотрите, поможет ли :) - person garph0; 12.03.2011