Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
[c++] [firefox] скрытый переход по линку |

04.01.2010, 20:18
|
|
Новичок
Регистрация: 04.01.2010
Сообщений: 14
Провел на форуме: 8446
Репутация:
0
|
|
[c++] [firefox] скрытый переход по линку
Добрый день,
К примеру есть следующая хтмл страница, открытая в лисе (допустим ее адрес, находящийся в панели адреса - http://www.CURRENT.com/another.php):
<html>
<body>
<form action=http://www.ORIGINAL.com/main.php>
....... // контент формы
</form>
</body>
</html>
нужно чтобы после сабмита юзером формы, в браузере остался адрес http://www.CURRENT.com/another.php, а ответ был отображен от сервера http://www.ORIGINAL.com/main.php
Желательно сделать это хуком какойнить функции фф или winsock. Посдкажите каким образом можно реализовать подобный скрытый серфинг?
Я вообще хотел делать так:
1. в PR_Write (оболочка для send) изменить заголовки так, чтобы они соответствовали http://www.CURRENT.com/main.php
2. в send поменять заголовки обратно))
таким образом фф занесет нужный адрес урла (http://www.ORIGINAL.com/main.php) в нужный буффер и в нужный момент времени, а именно как только получит первые данные от recv, в поле урла должен отобразиться нужный урл))) во всяком случае это в теории
Последний раз редактировалось qsd; 04.01.2010 в 20:23..
|
|
|

04.01.2010, 21:44
|
|
Новичок
Регистрация: 04.01.2010
Сообщений: 14
Провел на форуме: 8446
Репутация:
0
|
|
еще вопрос, как быть с хттпс? весь запрос включая хедеры и тело шифруется и подменить нужный текст запроса не получится(
|
|
|

04.01.2010, 22:18
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
эм если пишешь под windows что мешает тебе напрямую работать с окном fireFox через winAPI функции?
FindWindow, GetWindowText, SetWindowText
чтобы быстро найти нужный элемент используй стандартную утилиту VS - Spy++
чтоб писать легче было прогу
алгоритм такой:
нашли окно
нашли нужный элемент
цикл бесконечный с задержкой в несколько миллисекунд чтобы не грузить процессор
запросили текст элемента в нем, если нужный сайт переписываем что нужно...
|
|
|

05.01.2010, 00:35
|
|
Новичок
Регистрация: 04.01.2010
Сообщений: 14
Провел на форуме: 8446
Репутация:
0
|
|
это работает с ИЕ (причем некрасиво), но не работает с фф, т.к. там механизм окон реализован подругому. я не нашел окна, ответственного за прием сообщений об изменении поля с урл.
я вообще хз че с этим фф делать(
|
|
|

05.01.2010, 00:56
|
|
Новичок
Регистрация: 04.01.2010
Сообщений: 14
Провел на форуме: 8446
Репутация:
0
|
|
только что промониторил все окна мозиллы, ничего с http туда не приходит, нужен другой подход. хук send тоже неподходит. остается хук PR_Write, но подменяя хедеры GET / на GET /adad.php в строке урла получаем:
http://ya,ru/adad.php
!!!
то же самое с хуком send, значит получение урла, откуда получен ответ, происходит какимто другим образом
|
|
|

05.01.2010, 01:07
|
|
Новичок
Регистрация: 04.01.2010
Сообщений: 14
Провел на форуме: 8446
Репутация:
0
|
|
вопрос: откуда можно достать инфу с какого урла качается в данный момент инфа (функцией PR_Read или recv)? насколько мне известно в ответе от сервера нет информации откуда пришел ответ!
|
|
|

05.01.2010, 01:26
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
ага... нету есть только запрос
GET path HTTP
POST path HTTP
ну а вообще вроде поле HOST является обязательным параметром.
+ ко всему есть такая штука как индификатор сокета - а его можно узнать
так же можно узнать какие сокеты открыл процесс с какими индификаторами...
http://forum.antichat.ru/showpost.php?p=1302363&postcount=28
в общем трындец )
|
|
|

05.01.2010, 01:34
|
|
Новичок
Регистрация: 04.01.2010
Сообщений: 14
Провел на форуме: 8446
Репутация:
0
|
|
ну допустим я знаю идентификатор сокета(они передаются как параметры функциям PR_Read/PR_Write, а они обе у меня захучены) че дальше?))
это имеешь ввиду?
Код:
ress = sizeof(sockaddr_in);//--- commenting this line would cause an 10014 error.
getpeername((SOCKET)ObjHandle, (sockaddr *)&sockname, &ress);
//--- определяем локальный IP и порт
ress = sizeof(sockaddr_in);//--- commenting this line would cause an 10014 error.
getsockname((SOCKET)ObjHandle, (sockaddr *)&locname, &ress);
//--- коевертируем в понятные для глаза данные )
remaddr = inet_ntoa(sockname.sin_addr);
rem_port = ntohs(sockname.sin_port);
locaddr = inet_ntoa(locname.sin_addr);
loc_port = ntohs(locname.sin_port);
я просто не силен в сокетах) самое главное подменить URL-Path, т.е. с хостом то можно разобраться хуком connect'a, а вот с URL-Path, который идет после слеша, я вообще хз как быть( че только не пробовал, эта сцука все равно отображает полный путь!
может ff список какойнить создает, где хранится этот path?
Последний раз редактировалось qsd; 05.01.2010 в 01:45..
|
|
|

05.01.2010, 05:37
|
|
Новичок
Регистрация: 04.01.2010
Сообщений: 14
Провел на форуме: 8446
Репутация:
0
|
|
чет не понял что ты хотел сказать своим постом) за коды ответа спасибо, но мне нужно всего-лишь одно:
чтобы я перешел на yandex.ru/yandsearch?text=any а в строке браузера было: http://yandex.ru/
!
ща перелопатил исходники фф вместе с документацией пришел к выводу, что докопаться до поля урла можно 2мя способами:
1. xpcom
2. чезез shell-функции мозиллы (LoadURI()/OnLinkClick())
https://developer.mozilla.org/en/Document_Loading_-_From_Load_Start_to_Finding_a_Handler
с первым я никогда не работал, а вторые проблематично вызвать, т.к. они находятся в самом ехе, а не во внешней длл(
в общем какойто пестец
|
|
|

05.01.2010, 20:26
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
ну а че тут не понятного? ) тебе надо хреначить расширение для мозилы-тормозилы )
читай как это делается https://developer.mozilla.org/En/Firefox_addons_developer_guide
я в принципе допер ) все пишется на языке javascript используя DOM мозилы и ее внутренние всякие функции...
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|