Начал осваивать библиотеку-сниффер Winpcap.
Мне нужно автоматизировать некоторые манипуляции на avit0.ru. Раньше я все делал с помощью замечательной библиотеки WinHTTP.au3. Но теперь запросы на авторизацию отправляются в зашифрованном виде и я не могу авторизоваться.
Помучав поисковики, нашел библиотеку Winpcap.au3.
Суть моего решения в том, чтобы сначала произвести авторизацию на сайте через IE посредством IE.au3, потом, отловив пару пакетов с помощью Winpcap, извлечь из них cookies, которые в свою очередь передаются в WinHTTP для дальнейших операций.
Код авторизации:
Код сниффера:
И так в итоге получаем файл mycapture.pcap с отловленными пакетами. (см. приложение).
Файл бинарный. И вот тут тупик.
Я не могу прочитать данные из этого файла средствами Autoit. Пробовал BinaryToString, Encoding.au3 - все без результата.
При этом если открыть файл блокнотом, то там есть то что мне нужно (cookies) в наглядном виде. И если через меню "Сохранить как" выбрать UTF8, и потом открыть этот файл через Autoit - все нормально открывается.
Прошу вашей помощи в прочтении файла mycapture.pcap. Критика/предложения приветствуются
Если кто-то может предложить альтернативное решение, с радость его посмотрю.
Мне нужно автоматизировать некоторые манипуляции на avit0.ru. Раньше я все делал с помощью замечательной библиотеки WinHTTP.au3. Но теперь запросы на авторизацию отправляются в зашифрованном виде и я не могу авторизоваться.
Помучав поисковики, нашел библиотеку Winpcap.au3.
Суть моего решения в том, чтобы сначала произвести авторизацию на сайте через IE посредством IE.au3, потом, отловив пару пакетов с помощью Winpcap, извлечь из них cookies, которые в свою очередь передаются в WinHTTP для дальнейших операций.
Код авторизации:
Код:
#include <Array.au3>
#include <Ie.au3>
If WinExists("[CLASS:IEFrame]") Then
WinActivate("[CLASS:IEFrame]")
$oShell = _IEAttach('Windows Internet Explorer', 'windowtitle')
_IENavigate($oShell, 'http://www.avito.ru/profile')
Else
$oShell = _IECreate('http://www.avito.ru/profile', 1, 1)
EndIf
$login = _IEGetObjByName($oShell, 'login')
$pass = _IEGetObjByName($oShell, 'password')
$submit = _IEGetObjByName($oShell, 'submit')
_IEFormElementSetValue($login, 'login')
_IEFormElementSetValue($pass, 'password')
Run(@ScriptDir & '\Test.Exe') ; test.exe - заранее скомпилированный сниффер на базе Winpcap.au3
ProcessWait('Test.Exe')
Sleep(1000)
_IEAction($submit, 'click')
_IENavigate($oShell, 'http://www.avito.ru')
_IEQuit($oShell)
If ProcessWaitClose('Test.Exe') Then
MsgBox(0, '', 'Process Closed')
EndIf
$file = FileOpen(@ScriptDir & '\mycapture.pcap')
$packets = FileRead($file)
FileClose($file)
$cookie = StringRegExp($packets, '(?si)Cookie:(.?)' & @LF)
;MsgBox(0, '', $packets) ; выводит какие-то две строки
Код сниффера:
Код:
#include <Winpcap.au3>
#include <File.au3>
#include <array.au3>
$winpcap=_PcapSetup() ; initialise the Library
$pcap_devices=_PcapGetDeviceList() ; Get the interfaces list for which a capture is possible
; Start a capture on interface #0, in promiscuous mode, for http packets only
$pcap=_PcapStartCapture($pcap_devices[0][0],"dst host avito.ru and tcp port 80",1)
; Open pcap file for writting
$pcapfile=_PcapSaveToFile($pcap,"mycapture.pcap")
If ($pcapfile=0) Then MsgBox(16,"Pcap error !",_PcapGetLastError())
; Write all http traffic to the file while IE exists...
While WinExists('[CLASS:IEFrame]')
$packet=_PcapGetPacket($pcap)
If IsArray($packet) Then _PcapWriteLastPacket($pcapfile)
EndIf
Wend
_PcapStopCaptureFile($pcapfile) ; Close pcap file
_PcapStopCapture($pcap) ; Stop capture
_PcapFree() ; release ressources
И так в итоге получаем файл mycapture.pcap с отловленными пакетами. (см. приложение).
Файл бинарный. И вот тут тупик.
Я не могу прочитать данные из этого файла средствами Autoit. Пробовал BinaryToString, Encoding.au3 - все без результата.
При этом если открыть файл блокнотом, то там есть то что мне нужно (cookies) в наглядном виде. И если через меню "Сохранить как" выбрать UTF8, и потом открыть этот файл через Autoit - все нормально открывается.
Прошу вашей помощи в прочтении файла mycapture.pcap. Критика/предложения приветствуются
Если кто-то может предложить альтернативное решение, с радость его посмотрю.