Снифер!

  • Автор темы Codekid
  • Дата начала
Статус
Закрыто для дальнейших ответов.
C

Codekid

#1
Вот возник вопрос - есть код снифере , но нужно чтобы в передоваемом пакете можно было менять внутрености...
Например поймал пакет :
// ------------------------------ Packet dump -----------------------------------
// 000000 45 00 00 4E D8 91 00 00 | 80 11 DB 3B C0 A8 02 82 E..N.......;....
// 000010 C0 A8 02 FF 00 89 00 89 | 00 3A AC 6A 83 BD 01 10 .........:.j....
// 000020 00 01 00 00 00 00 00 00 | 20 45 43 46 46 45 49 44 ........ ECFFEID
// 000030 44 43 41 43 41 43 41 43 | 41 43 41 43 41 43 41 43 DCACACACACACACAC
// 000040 41 43 41 43 41 43 41 43 | 41 00 00 20 00 01 ACACACACA.. ..


нужно : 45 00 поменять на 41 44..... и заблокировать что бы он вместо 45 00 принимал 41 44 (тоесть то что я поставил....) короче что то типа программы WPE Pro .....
 
Z

zubr

#2
1. Лучше всего это делать на уровне NDIS-драйвера. Смотри в сторону WinPcap.
2. Можно сделать на пользовательском уровне, для TCP/IP-соединения, перехватывать функции recv и (или) WSARecv.
 
C

Codekid

#3
Для: zubr
Если тебе несложно напиши немного кода, который бы блокировал данные в пакете и заменял на то что я поставлю....
 
Z

zubr

#4
Для: Codekid
Как ты себе это представляешь? Это не 3 строчки кода. Чтобы написать подобную прогу с нуля (не имея готовых шаблонов) надо затратить не один день. Да даже разобраться в готовом коде человеку, который это никогда не делал, понадобится не меньше времени.
Я тебе указал направления куда копать, а дальше уж извини, сам. По WinPcap полно инфы в интернете, поищи в гугле, но необходимы знания C. По перехвату API-функций, есть неплохой ресурс www.wasm.ru с готовыми примерами на Delphi. Также есть хорошие книги на данную тему: Джеффри РИХТЕР "Создание эффективных WIN32-приложений", М. Руссинович и Д. Соломон "Внутренне устройство Windows".
 
B

Barmutik

#5
Для: Codekid

Также можно посоветовать посмотреть в сторону TDI драйвера ..в инете есть open source примеры .. но только правда на С++
 
C

Codekid

#6
мне нужна функция, которая бы меняла данные внутри пакета ...
 
Z

zubr

#7
Для: Codekid
Да как ты не понимаешь, что для решения этой задачи одной функцией не обойдешься. Я тебе уже давал ссылки на инфу, возьми посмотри хотя бы как перехватываются API-функции или sample какого нибудь драйвера - тогда будешь примерно представлять, что надо делать.
 
B

Barmutik

#8
Для: Codekid

Перехватить одно а поменять и вернуть изменённый совсем другое...
 
C

Codekid

#9
Как правильно построить пакет?

Например нужно отослать:
000000 45 00 00 3D 22 F1 40 00 | 80 06 C5 C0 0A 00 01 09 E..=".@.........
000010 D4 76 32 8A 04 8D 1A 0B | 9B CA 08 25 40 C1 AE 82 .v2.......%@...
000020 50 18 FE FB 12 39 00 00 | 50 52 49 56 4D 53 47 20 P....9..PRIVMSG
000030 23 6B 75 6E 74 73 65 76 | 6F 20 3A 3F 0A #kuntsevo :?.

Код:
//строим пакет
BuildHeaders( SrcIP, SrcPort,
DestIP, DestPort,
' ',
Buf, Remote, iTotalSize );
 
T

TigerCo

#10
...
Например нужно отослать:
000000 45 00 00 3D 22 F1 40 00 | 80 06 C5 C0 0A 00 01 09 E..=".@.........
...
Если ты хочешь посторить пакет типо того, что ест, то какой тут при этом IP и порт.
По первому заголовку видно для какого MAC адреса пакет, и от какого он, а так же тип пакета. У тебя как тип - "0A 00", а это не IP пакет. В отоге, счачало разберись с тем, что у тебя передлается по сети, потом (как тебе уже советовали) перекопай исходник PCap, и третье, почитай про Ethernet, IP, TCP, UDP и прочие протоколы.
И еще: если 4500.... это твой адрес, то заменив на 4144.... и отправив патек, ты врядле получишь ответ. Т.к. ответ пойдет на 4144.... Рекомендую еще почитать инфо про NAT и им подобные вещи.
Удачи! :)
 
Статус
Закрыто для дальнейших ответов.