Страница: 1 |
Страница: 1 |
Вопрос: Инет-шпион
Добавлено: 03.06.05 20:59
Автор вопроса:
Dark Engine | Web-сайт:
Как можно программно отследить, подсоединен ли комп к Интернету? Желательно даже хук на коннект и дисконнект. И еще, как можно программно отслеживать входящий и исходящий траффик (в смысле, определить, сколько байт отправлено и сколько получено)?
Ответы
Всего ответов: 15
Номер ответа: 1
Автор ответа: Black Dragon
ICQ: 321186096
Вопросов: 30
Ответов: 347
Web-сайт:
Профиль | | #1
Добавлено: 03.06.05 21:48
См. примеры (прога Traffic Counter)
Номер ответа: 2
Автор ответа: HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #2
Добавлено: 03.06.05 22:12
ну вот задал ты вопрос на форуме, что ты сделал кроме этого? Полазил по исходникам? Посмотрел примеры на сайте? Только не говори что нечего не нашёл...
Номер ответа: 3
Автор ответа: AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #3
Добавлено: 04.06.05 00:15
Не поддерживаю, HACKER
1. Не каждому очень охота лазать по искодникам
2. Очень хочется, чтоб живые люди ответили на твой вопрос, а не слабенький поисковик находил что-то
3. Ну, все-таки надо как-то, где-то поддерживать форум, чтоб он в чат не превратился(смысл-чат у нас не живой
Номер ответа: 4
Автор ответа: HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #4
Добавлено: 04.06.05 01:55
1) А почему я должен лазить по исходникам чтобы ответить на этот топ?
2) Все мы живые люди, поисковик не живой, но ищет то что писали живые люди...
3) Т.е. ты считаешь что можно писать на форум что попало и не задумываясь? Или то, что если кому-то что-то надо, то нужно тупо на форум сразу писать, а не пытаться что-то самому найти?
:@
Номер ответа: 5
Автор ответа: Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #5
Добавлено: 04.06.05 05:11
2 Retributor:
Примеров и правда куча и в библиотеке кодов на чайте и в примерах. Посмотри партизан DaSharm'a.
2 Noviks:
Всё таки форум он на то и форум, чтобы живые люди могли ответить на нетривиальные вопросы или указать верный путь где искать (например, RTFM, или "гугль" или "рамбль" ) А всё остальное работа машин.
2 HACKER:
Кстати, а на сайте есть поисковик по примерам?
Номер ответа: 6
Автор ответа: ViktorZ
ICQ: 271202919
Вопросов: 56
Ответов: 837
Профиль | | #6
Добавлено: 04.06.05 14:26
Полностью поддерживаю HACKER'а Вообще-то я считаю, что форум не предназначен для решения любых вопросов(кроме оффтоп).Лично я вначале ищу в поисковиках и в литературе, а если там ничего лельного нет, то иду на форум.
Просто мне жалко чужого времени, если ответ заранее уже есть где-то.
2 Morpheus ) А всё остальное работа машин.
по моему нет ничего более тривиально чем послать человека на Гугль или RTFM.
Номер ответа: 7
Автор ответа: HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #7
Добавлено: 05.06.05 01:35
Не ну вот зачем спрашивать такое, на которое и так в инете куча материала? Даже если мы тут что-то напишем, всёравно этот будут куски с каких-то примеров, итп... Так зачем? Почему кому-то не должно быть влом лазить по примерам, искать ответ, чтобы ответить на вопрос? А кому-то просто делать нечего, а вось на форуме ответсят. Вот например мистер Retributor задал вопрос и забыл про него, т.к. ни разу ещё не ответил, а мы тут должны ему искать что-то, писать советовать итп... Зачем? если оно ему так надо, как мне вторая мышка...
Номер ответа: 8
Автор ответа: HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #8
Добавлено: 05.06.05 02:11
Лана, напостю ка я по теме:
'===========================================================|
' <МОДУЛЬ КОТОРЫЙ ПРОВЕРЯЕТ ПОДКЛЮЧЕН ЛИ КОМПЬЮТЕР К >|
' <ИНТЕРНЕТУ В ДАННЫЙ МОМЕНТ >|
' |
' = = = = = = = E D I T B Y H A C K E R = = = = = = |
' icq: 826747, mail: visualbasic@xaker.ru |
'===========================================================|
'Working with registry declarations and constants
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Const ERROR_SUCCESS = 0&
Private Const APINULL = 0&
Private Const HKEY_LOCAL_MACHINE = &H80000002
'Working with wininet.dll declarations and constants
Private Declare Function InternetGetConnectedStateEx Lib "wininet.dll" Alias "InternetGetConnectedStateExA" (ByRef lpdwFlags As Long, ByVal lpszConnectionName As String, ByVal dwNameLen As Long, ByVal dwReserved As Long) As Long 'Private Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal dwReserved As Long) As Long 'this function used with IE4
'Private Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal dwReserved As Long) As Long 'this function used with IE4
Private Const INTERNET_CONNECTION_MODEM = &H1&
Private Const INTERNET_CONNECTION_LAN = &H2&
Private Const INTERNET_CONNECTION_PROXY = &H4&
Private Const INTERNET_RAS_INSTALLED = &H10&
Private Const INTERNET_CONNECTION_OFFLINE = &H20&
Private Const INTERNET_CONNECTION_CONFIGURED = &H40&
'Declares for direct ping
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal lpszAgent As String, ByVal dwAccessType As Long, ByVal lpszProxyName As String, ByVal lpszProxyBypass As String, ByVal dwflags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInet As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwflags As Long, ByVal dwContext As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Long
Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Private Const INTERNET_FLAG_RELOAD = &H80000000
Private Const INTERNET_FLAG_KEEP_CONNECTION = &H400000
Private Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000
Dim checkType As Integer
Dim remMsg(2) As String
Public Function CheckConnectToInternet() As Byte
'От эта фигня вызывается, а если комп оффлайн то эта муть 0 возвратит
c1 = CheckConnection1
c2 = CheckConnection2
c3 = CheckConnection3
If c1 = True Then CheckConnectToInternet = 1
If c2 = True Then CheckConnectToInternet = 2
If c3 = True Then CheckConnectToInternet = 3
End Function
'This part of code is from http://www.VB-world.net with my corrections
Private Function CheckConnection1() As Boolean
Dim ReturnCode As Long
Dim hKey As Long
Dim lpSubKey As String
Dim phkResult As Long
Dim lpValueName As String
Dim lpReserved As Long
Dim lpType As Long
Dim lpData As Long
Dim lpcbData As Long
lpSubKey = "System\CurrentControlSet\Services\RemoteAccess" & Chr$(0)
ReturnCode = RegOpenKey(HKEY_LOCAL_MACHINE, lpSubKey, phkResult)
If ReturnCode = ERROR_SUCCESS Then
hKey = phkResult
lpValueName = "Remote Connection"
lpReserved = APINULL
lpType = APINULL
lpData = APINULL
lpcbData = APINULL
ReturnCode = RegQueryValueEx(hKey, lpValueName, lpReserved, lpType, ByVal lpData, lpcbData)
lpcbData = Len(lpData)
ReturnCode = RegQueryValueEx(hKey, lpValueName, lpReserved, lpType, lpData, lpcbData)
If ReturnCode = ERROR_SUCCESS Then
If lpData = 0 Then
CheckConnection1 = False 'Вообще не подключён
Else
CheckConnection1 = True 'Подключён через модем
End If
Else
CheckConnection1 = True 'Подключён через сеть
End If
End If
RegCloseKey (hKey)
End Function
Private Function CheckConnection2(Optional ByRef ConnectionInfo As Long, Optional ByRef sConnectionName As String) As Boolean
Dim dwflags As Long
Dim sNameBuf As String, msg As String
Dim lPos As Long
sNameBuf = String$(513, 0)
If InternetGetConnectedStateEx(dwflags, sNameBuf, 512, 0& Then
lPos = InStr(sNameBuf, vbNullChar)
If lPos > 0 Then
sConnectionName = Left$(sNameBuf, lPos - 1)
Else
sConnectionName = ""
End If
msg = "Your computer is connected to Internet" & vbCrLf & "Connection Name: " & sConnectionName
If (dwflags And INTERNET_CONNECTION_LAN) Then
msg = msg & vbCrLf & "Connection use LAN"
ElseIf lFlags And INTERNET_CONNECTION_MODEM Then
msg = msg & vbCrLf & "Connection use modem"
End If
If lFlags And INTERNET_CONNECTION_PROXY Then msg = msg & vbCrLf & "Connection use Proxy"
If lFlags And INTERNET_RAS_INSTALLED Then
msg = msg & vbCrLf & "RAS INSTALLED"
Else
msg = msg & vbCrLf & "RAS NOT INSTALLED"
End If
If lFlags And INTERNET_CONNECTION_OFFLINE Then
msg = msg & vbCrLf & "You are OFFLINE"
Else
msg = msg & vbCrLf & "You are ONLINE"
End If
If lFlags And INTERNET_CONNECTION_CONFIGURED Then
msg = msg & vbCrLf & "Your connection is Configured"
Else
msg = msg & vbCrLf & "Your connection is not Configured"
End If
Else
msg = "Your computer is NOT connected to Internet"
End If
If msg = "Your computer is NOT connected to Internet" Then
CheckConnection2 = False
Else
CheckConnection2 = True
End If
End Function
Private Function CheckConnection3() As Boolean
Dim sTmp As String
Dim hInet As Long
Dim hUrl As Long
Dim flags As Long
Dim url As Variant
hInet = InternetOpen(App.Title, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0&
If hInet Then
flags = INTERNET_FLAG_KEEP_CONNECTION Or INTERNET_FLAG_NO_CACHE_WRITE Or INTERNET_FLAG_RELOAD
hUrl = InternetOpenUrl(hInet, "http://www.yahoo.com", vbNullString, 0, flags, 0)
If hUrl Then
CheckConnection3 = True
Call InternetCloseHandle(hUrl)
Else
CheckConnection3 = False
End If
End If
Call InternetCloseHandle(hInet)
End Function
Самый надёжный из всех надёжных, проверяет по трём направлениям. Вызывать CheckConnectToInternet, она возвратит 3 если комп ТОЧНО в инете.
Номер ответа: 9
Автор ответа: Comanche
Вопросов: 87
Ответов: 459
Профиль | | #9
Добавлено: 05.06.05 11:16
Вообще-то способов проверить наличие коннекта можно насчитать более десятка. Ни один из приведённых трёх способов не даст точной гарантии; кроме того, применимость любого из этих трёх методов имеет определённые ограничения (например, уместность первого способа зависит от версии ОС). Если интересно что и как - скачай http://formtoini.narod.ru/Downloads/CheckInternet.zip. Там довольно наглядная демка по теме.
А вообще, в этом форуме когда-то единогласно пришли к выводу, что самый надёжный способ проверить наличие коннекта - через попытку обращения к ресурсу(-ам), ради которого(-ых) собственно и затевается проверка. На худой конец - к какому-либо "непотопляемому" ресурсу вроде Yahoo и т.п.
Лично я использую комбинированный способ проверки: RasApi32 + или RasGetConnectStatus, или ICMP-пинг + IsDestinationReachable.
Номер ответа: 10
Автор ответа: AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #10
Добавлено: 05.06.05 15:06
Скажите, плиз, как по VB ны мыло некую строку отправить? По исходникам полазил...
Номер ответа: 11
Автор ответа: HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #11
Добавлено: 06.06.05 01:50
2 Noviks
чё, чё? Мыло отправить, или чё?
Номер ответа: 12
Автор ответа: ViktorZ
ICQ: 271202919
Вопросов: 56
Ответов: 837
Профиль | | #12
Добавлено: 06.06.05 03:51
а что если назначить пользователю страницу(www.somesite.ru) а потом ее пингануть?
Номер ответа: 13
Автор ответа: Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #13
Добавлено: 06.06.05 04:32
или вот так:
-Проверить методом HACKER'a
-Если есть, то пингануть мелкософт
-Потом обрушить на него пару миллиардов IGMP пакетов
-пингануть lenta.ru
-посмотреть на главной странице, есть ли в новостях слова "крах", "нюк" и "microsoft.com"
-если да, то комп подключён к инету
Номер ответа: 14
Автор ответа: Dark Engine
ICQ: 343191665
Вопросов: 51
Ответов: 98
Web-сайт:
Профиль | | #14
Добавлено: 08.06.05 10:08
Нехорошо говоришь, я никогда не забываю об оставленных на форумах сообщениях. Просто серьезные проблемы с Инетом.
Да и вообще, отвечаю, почему пишу на форуме, а не лезу в примеры и пр. Я к сожалению не сижу на выделенке, и Интернет считаю по секундам. Мне быстрее отправить сюда сообщение, обратиться к людям за помощью, чем прожигать деньги в поиске, который может и не дать результатов. А на форуме (уже 100% знаю) всегда вреди ответов откопается нужный.
Номер ответа: 15
Автор ответа: Dark Engine
ICQ: 343191665
Вопросов: 51
Ответов: 98
Web-сайт:
Профиль | | #15
Добавлено: 08.06.05 10:21
Собственно говоря, почему такой вопрос на форуме и поставил.