Перехват траффика с подменой содержимого
Юниксовую машину с iptables или ipfw или pf не получится поставить?
#!/usr/bin/env python
# vim: sts=4 sw=4 et
import select, time
from socket import *
si = socket(AF_INET, SOCK_STREAM, 0)
so = socket(AF_INET, SOCK_STREAM, 0)
si.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
si.bind'', 12345
si.listen(10)
s, a = si.accept
print a
so.connect'forumbgz.ru', 80
while 1:
p = select.poll
p.register(s, select.POLLIN)
p.register(so, select.POLLIN)
print '.'
for r in p.poll(100):
print r
rs, re = r
if rs == s.fileno:
print 'sending to server'
if not so.send(s.recv(4096:
raise RuntimeError("Empty")
elif rs == so.fileno:
print 'sending to client'
if not s.send(so.recv(4096:
raise RuntimeError("Empty")
Я правильно понял, что вместо 12345 нужно поставить порт, на который коннектится прога? если да, то к сожалению, под WinXP этот скрипт не перехватывает подключения, он зависает на вызове accept а приложение меж тем спокойно коннектится к серверу
12345 это порт на который надо направлять прогу
вместо forumbgz.ru и 80 - адрес на котором висит твой сервер
p.s. за скрипт спасибо, кстати оказалось что poll под виндовс нету, пришлось сделать с select.select
если екзешник не запакован, то тебе прямой путь на таблицу импорта я лично так делал чтобы не гемороиться с поиском вызова ws32.connect просто подгружал к екзешнику свою дллку с майконнект(такой же прототип просто как и у connect, перенаправляет коннект + передает реальные аргументы проге перехватчику) и менял адрес в таблице импорта на адрес функции из дллки.
Адрес сервераа он точно не именем записан? мож, просто в хосты прописать?
Я все-таки сделал это! Потратил полдня на то, чтобы разобраться, как редактировать таблицу импорта, и почему виндовс сокеты коннектят меня не на тот порт (забыл про htons но все заработало спасибо всем отписавшимся в теме за советы
статейку штоль теперь накатай по такому случаю
Мне всегда казалось, что на wasm.ru таких статей навалом.
Оставить комментарий
6248874
В общем, имеется приложение (под Windows XP которое обменивается нешифрованными данными с сервером по TCP. Требуется на клиентской машине перехватывать пакеты и определенным образом видоизменять (как минимум - исходящие от клиента). Пара часов гугления ничего мне не дали по этому поводу (все найденные библиотеки типа WinPcap или Packet Sniffer SDK позволяют читать трафик, но не подменять его). Подумал, может кто-нибудь из местных знатоков ткнет меня в нужном направленииp.s. желательно что-нибудь под C/C++, но и под любой язык пойдет, лишь бы было что-нибудь)
p.p.s. заниматься ничем незаконным не собираюсь)