Что нового

[Автоматизация] Есть снифер -нужно вытащить из лога инфу

Статус
Закрыто для дальнейших ответов.

komorov74

Новичок
Сообщения
81
Репутация
0
Версия AutoIt: 3.

Всем привет , и БОЛЬШОЕ спасибо всем кто помогает новичкам и прощящим ибо все вернется на круги свои трижды :smile:

Описание:
Скачал тут UDF -<Winpcap.au3>. Снифер как снифер

демо код
Код:
; Winpcap autoit3 UDF demo - V1.2c
; Copyleft GPL3 Nicolas Ricquemaque 2009-2011

#include <Array.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiListView.au3>
#include <StaticConstants.au3>
#include <ComboConstants.au3>

#include <Winpcap.au3>

$winpcap=_PcapSetup()
If ($winpcap=-1) Then
	MsgBox(16,"Pcap error !","WinPcap not found !")
	exit
EndIf

$pcap_devices=_PcapGetDeviceList()
If ($pcap_devices=-1) Then
	MsgBox(16,"Pcap error !",_PcapGetLastError())
	exit
EndIf

GUICreate("Packet capture", 500, 350)
$interface=GUICtrlCreateCombo("", 80, 15, 400,default,$CBS_DROPDOWNLIST)
GUICtrlSetData(-1, "Pcap capture file")
For $i = 0 to Ubound($pcap_devices)-1
	GUICtrlSetData(-1, $pcap_devices[$i][1])
Next
$filter=GUICtrlCreateInPut ("", 80, 45, 300) 
$promiscuous=GUICtrlCreateCheckbox ( "promiscuous", 400, 45)
$start=GUICtrlCreateButton ( "Start", 20, 310, 60)
$stop=GUICtrlCreateButton ( "Stop", 110, 310,60) 
GUICtrlSetState (-1, $GUI_DISABLE )
$clear=GUICtrlCreateButton ( "Clear", 200, 310,60) 
$stats=GUICtrlCreateButton ( "Stats", 290, 310,60) 
GUICtrlSetState (-1, $GUI_DISABLE )
$save=GUICtrlCreateCheckbox ( "Save packets", 395, 310,90,30)
GUICtrlSetStyle(GUICtrlCreateLabel ( "Interface :", 10, 20, 60),$SS_RIGHT)
GUICtrlSetStyle(GUICtrlCreateLabel ( "Filter :", 10, 50, 60),$SS_RIGHT)
$packetwindow = GUICtrlCreateListView("No|Time|Len|Packet", 10, 90, 480, 200)
_GUICtrlListView_SetColumn($packetwindow,0,"No",40,1)
_GUICtrlListView_SetColumnWidth($packetwindow, 1, 80)
_GUICtrlListView_SetColumn($packetwindow,2,"Len",40,1)
_GUICtrlListView_SetColumnWidth($packetwindow, 3, 300)

GUISetState()

$i=0
$pcap=0
$packet=0
$pcapfile=0

Do
	$msg = GUIGetMsg()
	
	If ($msg=$start) Then
		If GUICtrlRead($promiscuous)=$GUI_CHECKED Then
			$prom=1
		Else
			$prom=0
		EndIf		
		$int=""
		If (GUICtrlRead($interface)="Pcap capture file") Then
			$file=FileOpenDialog ( "Pcap file to open ?", ".", "Pcap (*.pcap)|All files (*.*)" ,1 )
			If $file="" Then ContinueLoop
			$int="file://"&$file
		Else			
			For $n = 0 to Ubound($pcap_devices)-1
				If $pcap_devices[$n][1]=GUICtrlRead($interface) Then
					$int=$pcap_devices[$n][0]
					ExitLoop
				EndIf
			Next
		EndIf
		$pcap=_PcapStartCapture($int,GUICtrlRead($filter),$prom)
		If ($pcap=-1) Then
			MsgBox(16,"Pcap error !",_PcapGetLastError())
			ContinueLoop
		EndIf
		$linktype=_PcapGetLinkType($pcap)	
		If ($linktype[1]<>"EN10MB") Then
			MsgBox(16,"Pcap error !","This example only works for Ethernet captures")
			ContinueLoop
		Endif
		If GUICtrlRead($save)=$GUI_CHECKED Then
			$file=FileSaveDialog ( "Pcap file to write to ?", ".", "Pcap (*.pcap)" ,16 )
			If ($file<>"") Then 
				If StringLower(StringRight($file,5))<>".pcap" Then $file&=".pcap"
				$pcapfile=_PcapSaveToFile($pcap,$file)
				If ($pcapfile=0) Then MsgBox(16,"Pcap error !",_PcapGetLastError())
			EndIf
		EndIf		
		GUICtrlSetState ($stop, $GUI_ENABLE)
		GUICtrlSetState ($stats, $GUI_ENABLE)
		GUICtrlSetState ($start, $GUI_DISABLE)
		GUICtrlSetState ($save, $GUI_DISABLE)
	EndIf
	
	If ($msg=$stop) Then
		If IsPtr($pcapfile) Then 
			_PcapStopCaptureFile($pcapfile)
			$pcapfile=0
		EndIf
		if Not IsInt($pcap) Then _PcapStopCapture($pcap)
		$pcap=0
		GUICtrlSetState ($stop, $GUI_DISABLE)
		GUICtrlSetState ($stats, $GUI_DISABLE)
		GUICtrlSetState ($start, $GUI_ENABLE)
		GUICtrlSetState ($save, $GUI_ENABLE)
	EndIf
	
	If ($msg=$clear) Then
		_PcapGetStats($pcap)
		_GUICtrlListView_DeleteAllItems($packetwindow)
		$i=0
	EndIf
	
	If ($msg=$stats) Then
		$s=_PcapGetStats($pcap)
		_ArrayDisplay($s,"Capture statistics")
	EndIf
	
	If IsPtr($pcap) Then 	; If $pcap is a Ptr, then the capture is running
		$time0=TimerInit()
		While (TimerDiff($time0)<500) ; Retrieve packets from queue for maximum 500ms before returning to main loop, not to "hang" the window for user
			$packet=_PcapGetPacket($pcap)
			If IsInt($packet) Then ExitLoop
			GUICtrlCreateListViewItem($i&"|"&StringTrimRight($packet[0],4)&"|"&$packet[2]&"|"&MyDissector($packet[3]), $packetwindow)
			$data=$packet[3]
			_GUICtrlListView_EnsureVisible($packetwindow, $i)
			$i+=1
			If IsPtr($pcapfile) Then _PcapWriteLastPacket($pcapfile)
		Wend
	EndIf
	
Until $msg=$GUI_EVENT_CLOSE

If IsPtr($pcapfile) Then _PcapStopCaptureFile($pcapfile)	; A file is still open: close it
if IsPtr($pcap) Then _PcapStopCapture($pcap)	; A capture is still running: close it
_PcapFree()	

Exit


Func MyDissector ($data) ; Quick example packet dissector....
	Local $macdst=StringMid ($data,3,2)&":"&StringMid ($data,5,2)&":"&StringMid ($data,7,2)&":"&StringMid ($data,9,2)&":"&StringMid ($data,11,2)&":"&StringMid ($data,13,2)
	Local $macsrc=StringMid ($data,15,2)&":"&StringMid ($data,17,2)&":"&StringMid ($data,19,2)&":"&StringMid ($data,21,2)&":"&StringMid ($data,23,2)&":"&StringMid ($data,25,2)
	Local $ethertype=BinaryMid ( $data, 13 ,2 )
	
	If $ethertype="0x0806" Then return "ARP "&$macsrc&" -> "&$macdst

	If $ethertype="0x0800" Then
		Local $src=Number(BinaryMid ($data, 27 ,1))&"."&Number(BinaryMid ($data, 28 ,1))&"."&Number(BinaryMid ($data, 29 ,1))&"."&Number(BinaryMid ($data, 30 ,1))
		Local $dst=Number(BinaryMid ($data, 31 ,1))&"."&Number(BinaryMid ($data, 32 ,1))&"."&Number(BinaryMid ($data, 33 ,1))&"."&Number(BinaryMid ($data, 34 ,1))
		Switch BinaryMid ($data, 24 ,1)
			Case "0x01"
			   return "ICMP "&$src&" -> "&$dst
			Case "0x02"
			   return "IGMP "&$src&" -> "&$dst
			Case "0x06"
				Local $srcport=Number(BinaryMid ($data, 35 ,1))*256+Number(BinaryMid ($data, 36 ,1))
				Local $dstport=Number(BinaryMid ($data, 37 ,1))*256+Number(BinaryMid ($data, 38 ,1))
				Local $flags=BinaryMid ($data, 48 ,1)
				Local $f=""
				If BitAND($flags,0x01) Then $f="Fin "
				If BitAND($flags,0x02) Then $f&="Syn "
				If BitAND($flags,0x04) Then $f&="Rst "
				If BitAND($flags,0x08) Then $f&="Psh "
				If BitAND($flags,0x10) Then $f&="Ack "
				If BitAND($flags,0x20) Then $f&="Urg "
				If BitAND($flags,0x40) Then $f&="Ecn "
				If BitAND($flags,0x80) Then $f&="Cwr "
				$f=StringTrimRight(StringReplace($f," ",","),1)		
				return "TCP("&$f&") "&$src&":"&$srcport&" -> "&$dst&":"&$dstport
			Case "0x11"
				Local $srcport=Number(BinaryMid ($data, 35 ,1))*256+Number(BinaryMid ($data, 36 ,1))
				Local $dstport=Number(BinaryMid ($data, 37 ,1))*256+Number(BinaryMid ($data, 38 ,1))
				return "UDP "&$src&":"&$srcport&" -> "&$dst&":"&$dstport
			Case Else
				return "IP "&BinaryMid ($data, 24 ,1)&" "&$src&" -> "&$dst
		EndSwitch
		return BinaryMid ( $data, 13 ,2 )&" "&$src&" -> "&$dst
	EndIf

	If $ethertype="0x8137" OR $ethertype="0x8138" OR $ethertype="0x0022" OR $ethertype="0x0025" OR $ethertype="0x002A" OR $ethertype="0x00E0" OR $ethertype="0x00FF" Then
		return "IPX "&$macsrc&" -> "&$macdst
	EndIf

	return "["&$ethertype&"] "&$macsrc&" -> "&$macdst
EndFunc


Он в принципе в комплекте идет.
С помощью него получаем в лог файле вот такую беребурду :
СЭ>.гЭжE"©щSiйкyxtxЏ5ҐUSЇЫікќћ©ьпtПХт ЭfпЩЦВAҐіЊU•—#пf’ефчvЫвqс{в„~-Џ[Oк1ЮG<¤a”[ `і0Лц|y^b[*ВЇіpP0kЏрПЉьWаш‡Г~Ц"Тt=mв–я OєСмµ+g–$xг™#»†QЉ’є‰#ШшlfЅЫRСј9©Йw"и1ЩЪ.YM¤„эn'ЇЇ=+ЗuШк¦=%Ъв6<#ђOЎх«d9OЋ B B xд гoма‘хЩ\F E 4 @ 5…°Wй] GET /u79152779/video/192f912617.360.mp4 HTTP/1.1
Host: cs13019.vk.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0.1) Gecko/20100101 Firefox/8.0.1


нужно из этого создать http://cs13019.vk.com/u79152779/video/192f912617.360.mp4

в логах так же встречается и расширение avi и mp4 -в разных местах(тобишь мусор) но мне нуна как в примере.

Помогите кто чем может. Сделайте хоть для mp4 для avi сам допетрю.

Примечания:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"[Автоматизация] Есть снифер -нужно вытащить из лога инфу" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Модератор.
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
$file=FileRead(@ScriptDir & '\12')
$str=StringRegExp($file,'(?ms)GET\s(.*?)\s.*?Host:\s(.*?)\r\n',3)

For $i=0 to UBound($str)-1
	MsgBox(0,'','http://'&$str[$i+1]&$str[$i])
	$i=$i+1
Next
 
Автор
K

komorov74

Новичок
Сообщения
81
Репутация
0
извиняюсь за наглость , наверное в тех задании немного не так написал

ФГІЎ    Мb9O4а * * яяяяяя€џъP”   €џъP”АЁ; АЁeМb9O¬А
B B а‘хЩ\Fxд гoм E 46 ЂО§АЁ<^Ж71ЦяЂ- пПNУѓ.^ж~оьL‡¦УИ+у2Х¤0Ц•Мb9O@L B B xд гoма‘хЩ\F E 4 @ 8кЭ^Ж71АЁ<Ђ-Ця )©Yщg:|)2ЙHљэ®™3…еDѓvzЩМb9OBL Ў Ў  ^@˜Џа‘хЩ\F E “
Й эЭ•
XBSпА˜Џss EМBT-SEARCH * HTTP/1.1
Host: 239.192.152.143:6771
Port: 22469
Infohash: C53F7ECF6B58AB671EF516782E2122923500016F


эїЄMж`°KKkUDЛЂ6у^ся цzш5рю §гї°xJгДєґЪо•eб€љ„рJєыПM%НЎ‚B"µтўvЊbы˜8"/1р|Іzh О+]OЙЉ*фЪfЈmЎYj“ШНќxО¶·/МPЂб[ЎБ#?ZЈYQ@Q@QEШEPEP]/‡|aвO йю'µрцЁъd>!СЫHЦFЊnlЪh¦hІА•а€’ё?.3‚AжЁ NХю2ьKЧјUгНsVсL·zЗЌ4ЁtїЮXMNЪ)-дTђЄ ц–мОёg)–-№і±ыAь_ФюAрЖуЖ/'ѓвУ"ТД ¦ЪЗu%ЊR bі’нb[Ј…e…д1‚«…аcЖhҐd¬h?>$xoаэПЂt
fЗHреЭј¶·bЯГц wqЇѕXd»т>Рс98hЪBҐ~B
ьґэ{гwЕпЪxУKсЌµ?[xЛP‚п]іёШйu<R4ђ”Mё‡k;ab0vгhј”gpЗZц x"цkhд‘NћТ¦f№ЗпOьіЊ„Ћ­Ы8зљбЕвЁб)уФv>і ИqЬAЊъѕVЮЛ§дѕm.ЅXУ>0|jЧ>hюФјu$F•m§ЪA“¦YZ\Gm`Й%њS]Е–E‰гЌХЯзEb Ч»Eсгвњ/јZєЦ˜ѕ!їУeУх¤р®˜‹} І¤Т‰г[a®тFЊТ:—$uдЉсн@Kkxtн"Ед=8P»№хг’kмя †ї±·ЕїЕб/Oi§iє
лҐМ‹{1уЎ‡Ё/Ю¬ щsћF@жї$МіЄµ$д¤Т[%ҐюKю©эЎ•рї рЋ^§™ЄjrС№¤ъ^ЙЙ]щЩ$ъElp_
-ю>ьbсdЮр&±{b±^]ЯЮЛ¦mУmнљэcЉб¤6КёIV—ЛЖЭ©Ђ fѕЇя †VшЯ xҐю"kь={вщмb±њНблmJ·Љб‰<»€|ї–8bPD`ЂЅy9эС|;Ґш7E†=/IІі№№(o®`µЋ'єaЗ;@П|g «ъЬwZж—s5Ј!XcП’Кv{uЌ|N#1ЗJ“д›ЌMK^›Эпoшcт T­Њ¶NќYЮ1“i»ґо­fхµ»7©ш±вЇ…ґ‘ЅсЯ€uПн‹џG—­Ь$РпѕґWЉT\`ўVµ·В¦ЬUh"ј—ZсЇЗ-/ГЮ‡ZФ5k-+AРnф
&±DЉТКо'‚ж(юLfDgV“п‘Џ›ЃЏФ+ЌѕХ~.ш“бд7ЦЧЮ†°ѕ§ђ¦*–M¤ћH n q‘ћM|Ыс VрјZ­ЉЗСЭ>.гЭжE"©щSiйкyxtxЏ5ҐUSЇЫікќћ©ьпtПХт ЭfпЩЦВAҐіЊU•—#пf’ефчvЫвqс{в„~-Џ[Oк1ЮG<¤a”[ `і0Лц|y^b[*ВЇіpP0kЏрПЉьWаш‡Г~Ц"Тt=mв–я OєСмµ+g–$xг™#»†QЉ’є‰#ШшlfЅЫRСј9©Йw"и1ЩЪ.YM¤„эn'ЇЇ=+ЗuШк¦=%Ъв6<#ђOЎх«d9OЋ B B xд гoма‘хЩ\F E 4 @ 5…°Wр¦?АЁ< Pж:Ц‚3Х”>В“ЂРPf ґ «d9O`Ћ 6 6 а‘хЩ\Fxд гoм E (J/@ ЂрЊАЁ<Wр¦?ж: P”>В“Ц‚3ЦP–о «d9OюЋ Y Y а‘хЩ\Fxд гoм E KJ0@ ЂоhАЁ<Wр¦?ж: P”>В“Ц‚3ЦPй] GET /u79152779/video/192f912617.360.mp4 HTTP/1.1
Host: cs13019.vk.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0.1) Gecko/20100101 Firefox/8.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3

Я к тому что первый выделенный хост и нафиг не надо
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Мой пример ищет слово GET после которого идёт пробел - полезная инфа - пробел - лабуда - Host: - пробел - полезная инфа - конец строки. Первый Host сюда попадать не должен. А вообще прикрепи весь лог к сообщению, только не надо его сувать в само сообщение.
 
Автор
K

komorov74

Новичок
Сообщения
81
Репутация
0
Ну весь лог -что то не умещяется в 200 kb :laugh:

Но вставленный кусок действительно работает, большое спасибо.
Вот только не задачка Get может в лог файле попадаться и не только с нормальной ссылкой

если не трудно можно внести изменения на условия что сылка начинается на Get а кончается mp4 ?

В принципе залил лог -http://files.mail.ru/FZQMCI :smile:

Большое спасибо.
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
$file=FileRead(@ScriptDir & '\12')
$str=StringRegExp($file,'(?ms)GET\s(.*?\.mp4)\s.*?Host:\s(.*?)\r\n',3)

For $i=0 to UBound($str)-1
    MsgBox(0,'','http://'&$str[$i+1]&$str[$i])
    $i=$i+1
Next
 
Автор
K

komorov74

Новичок
Сообщения
81
Репутация
0
ПЕРЕБОР!!!!!!!!!!1 Цепляет инфу после HOSTA
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
$file=FileRead(@ScriptDir & '\1.pcap')
$str=StringRegExp($file,'(?s)GET\s(\S{1,}\.mp4)\s.*?Host:\s(.*?)\r\n',3)
Global $txt
For $i=0 to UBound($str)-1 step 2
	$txt&='http://'&$str[$i+1]&$str[$i]&@CRLF	
Next
FileWrite(@ScriptDir & '\134',$txt)
 
Статус
Закрыто для дальнейших ответов.
Верх