webForumDet fria alternativet

Kolla paket på port 80

.NET

9 svar · 330 visningar · startad av ironhead

Medlem sedan mars 20011 346 inlägg
Frågan#1

Kan man i VB kolla upp paket som skickas från en viss applikation via port 80?

ex:
Om nån skickar ett icq-meddelande till mig, kan jag då via port 80 fånga upp det och bara konstatera att det verkligen kommer från icq?

Ska man använda winsock då? Hur gör man?

Medlem sedan dec. 20003 887 inlägg
#2

Inget litet svar på den frågan... ;)

Men jag kan väl rekommendera att du börjar här

Medlem sedan juni 20022 599 inlägg
#3

Varför inte bara ladda ner en färdig sniffer?

http://www.webattack.com/get/axpacketmon.shtml

http://www.ethereal.com/

Känns som väldigt mycket överkurs att skriva en egen i VB ..

Medlem sedan juni 20022 599 inlägg
#4

Hittade förresten källkoden till en (promisquous) nätverkssniffer helt skriven i VB:

http://www.Planet-Source-Code.com/vb/scripts/ShowCode.asp?txtCodeId=42170&lngWId=1

När behövs egentligen C++? :OO

Medlem sedan mars 20011 346 inlägg
#5

Såhär ser det ut när jag får ett webbaserat meddelande från icq (http://go.icq.com) i promisquous:

45 00 00 5D 01 61 40 00 26 06 2F 0F CD BC D5 F9 E..].a@.&./.ͼÕù
A3 B7 DC BD 00 50 04 E5 14 AE FC 9C 6A 8F 50 59 £·Ü½.P.å.®üœjPY
50 18 40 00 73 EA 00 00 2A 02 4F 01 00 2F 49 4D P.@.sê..*.O../IM
5F 49 4E 5F 45 4E 43 32 3A 31 32 34 36 34 39 39 _IN_ENC2:1246499
33 3A 46 3A 46 3A 46 3A 20 49 2C 3A 46 3A 41 3A 3:F:F:F: I,:F:A:
78 2D 62 61 64 3A 4D 55 55 55 55 48 21 x-bad:MUUUUH!

...nu vet jag hur det ser ut när det skickas till mig...men hur fångar jag upp det så jag kan göra nåt när jag får detta meddelande?

typ:

if sStr="icq meddelande" Then
' exekvera kod
end if

Medlem sedan juni 20022 599 inlägg
#6

Nu vet inte så mycket om webbaserat ICQ, men jag inbillar mig att den funkar precis som en webläsare? Eller är det nån applet inblandad?

Nästa sak som jag inte riktigt förstår: Du letar väl inte exakt bokstavligen efter paket som ser ut som det du kopierade in? Finns det några nyckelord som avgör om ett paket signalerar ett ICQ-meddelande?

Men i grova drag kan jag ge dig ett förslag:

1. Det finns en funktion i koden som heter display2 som alla paket hamnar i. Här kan du börja med att filtrera bort alla paket du garanterat inte är intresserad av.

Typ:

if ip_header.ip_protocol <> 6 then exit sub 'Fel protokoll, inte TCP.

if ntohs(tcp_header.src_portno)<>80 then exit sub ' Fel port.

if getascip(ip_header.ip_srcaddr)<>"XXX.XXX.XXX" then exit sub ' Det kom från fel IP.

' osv ..

2. Nästa grej är att kolla vad som finns inne i de enskilda bytesen i paketet:

for i=0 to 1493
	if Asc(readbuffer(i))="M" and Asc(readbuffer(i+1))="U" ' osv ..
		' Vi hittade "MUUUUH!" exekvera kod!
		exit for
	end if
next

3. Eftersom du loopar igenom alla paket över port 80 så kommer det här att suga processor. Du bör alltså peta bort all kod du inte behöver, vad gäller presentation i listvyer osv.

När allt sen funkar bör du ändra projektinställningarna och ta bort bound- och overflow-checkningar vid kompileringen för att få upp farten.

Som sagt bara ett förslag. Finns kanske mycket bättre lösningar i ditt fall.

Medlem sedan mars 20011 346 inlägg
#7

bra tips, tackarr!

ne, grejen är såhär:
på mitt företag har man spärrat användamdet av icq....men den webbaserade går ju att köra...men meddelandet ploppar upp på skärmen när man vill eller inte vill...eller så finns det en inställning som gör att meddelandet inte alls visas utan man måste kolla förstret lite nu och då om man fått nåt meddelande.

Det enda jag vill göra är en applikation som visar en ikon vid klockan som blinkar så fort man får ett meddelande, precis som vanliga icq.

Medlem sedan juni 20022 599 inlägg
#8

på mitt företag

Du sitter alltså på ett företags-LAN?

Den här koden sätter ditt kort i sk "promisquous" mode vilket innebär att du har möjlighet att snappa upp all port-80-trafik. Om det finns IT-kunniga människor på företaget så kan de ev. se att ditt kort är ställt i detta mode och du kan råka illa ut. Stor varning alltså!

För ditt eget samvetes skull bör du isåf lägga till:

if getascip(ip_header.ip_dstaddr)<>"dinip" then exit sub 'Oops! Det var inte till mig.
Medlem sedan mars 20011 346 inlägg
#9

*hehe* ok! :)

Medlem sedan juni 20022 599 inlägg
#10

Är lite osäker, men jag tror du också bör(?) ta bort den här koden från ConnectSock:

ret = WSAIoctl(s, SIO_RCVALL, lngInBuffer, Len(lngInBuffer), _
lngOutBuffer, Len(lngOutBuffer), lngBytesReturned, ByVal 0, ByVal 0)
If ret <> 0 Then
    If s > 0 Then Dummy = closesocket(s)
    MsgBox "WSAIoctl failed"
    Exit Function
End If

Du kommer ändå inte att lyckas sätta kortet i P-mode om du inte är påloggad som administrator.

283 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
138 ms — ändringar (db)