Добрый день, К примеру есть следующая хтмл страница, открытая в лисе (допустим ее адрес, находящийся в панели адреса - 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, в поле урла должен отобразиться нужный урл))) во всяком случае это в теории
еще вопрос, как быть с хттпс? весь запрос включая хедеры и тело шифруется и подменить нужный текст запроса не получится(
эм если пишешь под windows что мешает тебе напрямую работать с окном fireFox через winAPI функции? FindWindow, GetWindowText, SetWindowText чтобы быстро найти нужный элемент используй стандартную утилиту VS - Spy++ чтоб писать легче было прогу алгоритм такой: нашли окно нашли нужный элемент цикл бесконечный с задержкой в несколько миллисекунд чтобы не грузить процессор запросили текст элемента в нем, если нужный сайт переписываем что нужно...
это работает с ИЕ (причем некрасиво), но не работает с фф, т.к. там механизм окон реализован подругому. я не нашел окна, ответственного за прием сообщений об изменении поля с урл. я вообще хз че с этим фф делать(
только что промониторил все окна мозиллы, ничего с http туда не приходит, нужен другой подход. хук send тоже неподходит. остается хук PR_Write, но подменяя хедеры GET / на GET /adad.php в строке урла получаем: http://ya,ru/adad.php !!! то же самое с хуком send, значит получение урла, откуда получен ответ, происходит какимто другим образом
вопрос: откуда можно достать инфу с какого урла качается в данный момент инфа (функцией PR_Read или recv)? насколько мне известно в ответе от сервера нет информации откуда пришел ответ!
ага... нету есть только запрос GET path HTTP POST path HTTP ну а вообще вроде поле HOST является обязательным параметром. + ко всему есть такая штука как индификатор сокета - а его можно узнать так же можно узнать какие сокеты открыл процесс с какими индификаторами... http://forum.antichat.ru/showpost.php?p=1302363&postcount=28 в общем трындец )
ну допустим я знаю идентификатор сокета(они передаются как параметры функциям PR_Read/PR_Write, а они обе у меня захучены) че дальше?)) это имеешь ввиду? Code: 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?
чет не понял что ты хотел сказать своим постом) за коды ответа спасибо, но мне нужно всего-лишь одно: чтобы я перешел на 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 с первым я никогда не работал, а вторые проблематично вызвать, т.к. они находятся в самом ехе, а не во внешней длл( в общем какойто пестец
ну а че тут не понятного? ) тебе надо хреначить расширение для мозилы-тормозилы ) читай как это делается https://developer.mozilla.org/En/Firefox_addons_developer_guide я в принципе допер ) все пишется на языке javascript используя DOM мозилы и ее внутренние всякие функции...
я инжектюсь в АП фф, хотелось бы решить это без аддонов) либо написать его так, чтобы я имел полный контроль над аддоном. в принципе нужно это тока для хттпс, возможно прокатит такой вариант: 1. подменяем в PR_Write path на тот что наодится в поле адреса в данный момент 2. расшифровываем send и подменяем запрос обратно по идее не должен он из зашифрованного запроса выстаскивать урл... ну самый крайний вариант - написать свой send или отлавливать запрос на более низком уровне..
qsd главный вопрос - зачем? ))) вот тебе еще бредовая идея ) делать WM_POPUP окно поверх всех окон. в нем рисовать белую полоску и текст с адресом. вот оно и будет перекрывать адрес )))) ахахах
вот набросал на FASM нужно из объявлений удалить не используемые функции + удалить cmp [uMsg],WM_LBUTTONDBLCLK je .destroy что бы она не закрывалась по двойному нажатию и изменить mov [wc.hbrBackground],25d // 25d это цвет подсказки на COLOR_WINDOW+1 и по хорошему сделать командную строку для запуска типа x y width height text Code: format PE GUI 4.0 entry start include 'C:\FASM\INCLUDE\win32a.inc' section '.text' code import writeable readable executable ;---------импорт функций library kernel32, 'kernel32.dll',\ user32,'user32.dll',\ gdi32,'Gdi32.dll' import gdi32,\ TextOut,'TextOutA',\ SetBkMode,'SetBkMode',\ GetStockObject,'GetStockObject',\ SelectObject,'SelectObject',\ MoveTo,'MoveToEx',\ LineTo,'LineTo' import kernel32,\ ExitProcess, 'ExitProcess',\ GetModuleHandle,'GetModuleHandleA',\ GetLocalTime,'GetLocalTime',\ CreateFile,'CreateFileA',\ ReadFile,'ReadFile',\ CloseHandle,'CloseHandle',\ CreateEvent,'CreateEventA',\ WaitForSingleObject,'WaitForSingleObject',\ CreateThread,'CreateThread' import user32,\ RegisterClass,'RegisterClassExA',\ LoadCursor,'LoadCursorA',\ CreateWindow,'CreateWindowExA',\ ShowWindow,'ShowWindow',\ UpdateWindow,'UpdateWindow',\ GetMessage,'GetMessageA',\ TranslateMessage,'TranslateMessage',\ DispatchMessage,'DispatchMessageA',\ DefWindowProc,'DefWindowProcA',\ PostQuitMessage,'PostQuitMessage',\ BeginPaint,'BeginPaint',\ EndPaint,'EndPaint',\ SendMessage,'SendMessageA',\ wsprintf,'wsprintfA' proc WndProc,hWnd,uMsg,wParam,lParam push ebx esi edi cmp [uMsg],WM_CREATE je .create cmp [uMsg],WM_LBUTTONDBLCLK je .destroy cmp [uMsg],WM_DESTROY je .destroy cmp [uMsg],WM_PAINT je .paint jmp .def .create: invoke GetStockObject,ANSI_VAR_FONT mov [hFont],eax jmp .retrun_null .paint: invoke BeginPaint,[hWnd],PaintStruct mov [hDC],eax invoke SetBkMode,[hDC],TRANSPARENT invoke SelectObject,[hDC],[hFont] invoke TextOut,[hDC],3,3,string,13 invoke EndPaint,[hWnd],PaintStruct jmp .retrun_null .destroy: invoke PostQuitMessage,0 jmp .retrun_null .def: invoke DefWindowProc,[hWnd],[uMsg],[wParam],[lParam] jmp .exit .retrun_null: xor eax,eax .exit: pop edi esi ebx ret endp proc WinMain,hInst mov [wc.cbSize],48d mov [wc.style], CS_HREDRAW or CS_VREDRAW or CS_DBLCLKS mov [wc.lpfnWndProc], WndProc mov [wc.cbClsExtra],NULL mov [wc.cbWndExtra],NULL push [hInstance] pop [wc.hInstance] mov [wc.hbrBackground],25d mov [wc.lpszMenuName],NULL mov [wc.lpszClassName],ClassName mov [wc.hIcon],NULL invoke LoadCursor,NULL,IDC_ARROW mov [wc.hCursor],eax invoke RegisterClass,wc invoke CreateWindow,WS_EX_TOOLWINDOW or WS_EX_TOPMOST,\ ClassName,\ NULL,\ WS_POPUP,\ 150,\ 150,\ [sizeW],\ [sizeH],\ NULL,\ NULL,\ [hInst],\ NULL mov [hwnd],eax invoke ShowWindow, [hwnd],SW_SHOWDEFAULT invoke UpdateWindow, [hwnd] .while: invoke GetMessage,msg,NULL,0,0 test eax,eax jz .exit invoke TranslateMessage, msg invoke DispatchMessage, msg jmp .while .exit: mov eax,[msg.wParam] ret endp start: invoke GetModuleHandle,0 mov [hInstance],eax push eax call WinMain invoke ExitProcess, 0 ;----------данные ClassName db 'x',0 sizeW dd 117 sizeH dd 18 string db 'http://ya.ru/' hInstance dd ? wc WNDCLASSEX ? hwnd dd ? msg MSG ? hDC dd ? PaintStruct PAINTSTRUCT ? hFont dd ? все просто компилируется > fasm code.asm у меня получилась 2048 байт прога ) но думаю можно и поменьше сделать
Retimiled типа умный? посмотри на мозилку через spy++ , а потом говори. у нее собственный интерфейс и стандартные виндовые функции тут не работают. и вообще 5 января люди расслабляют мозг ) креатив выходит с бадуна ) заплатки вон оконные
Gar|k спасиб за код, но нада бы найти более красивый метод) слишком много вариантов когда это не прокатит (например - юзер ресайзит окно) ну ты и сам понимаешь)))