Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Инет-шпион Добавлено: 03.06.05 20:59  

Автор вопроса:  Dark Engine | Web-сайт: www.wentas.2bb.ru | ICQ: 343191665 
Как можно программно отследить, подсоединен ли комп к Интернету? Желательно даже хук на коннект и дисконнект. И еще, как можно программно отслеживать входящий и исходящий траффик (в смысле, определить, сколько байт отправлено и сколько получено)?

Ответить

  Ответы Всего ответов: 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-сайт: xury.zx6.ru
 Профиль | | #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, или "гугль" или "рамбль" :)) А всё остальное работа машин.

по моему нет ничего более тривиально чем послать человека на Гугль или 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-сайт: xury.zx6.ru
 Профиль | | #13
Добавлено: 06.06.05 04:32
или вот так:

-Проверить методом HACKER'a
-Если есть, то пингануть мелкософт
-Потом обрушить на него пару миллиардов IGMP пакетов
-пингануть lenta.ru
-посмотреть на главной странице, есть ли в новостях слова "крах", "нюк" и "microsoft.com"
-если да, то комп подключён к инету :)

Ответить

Номер ответа: 14
Автор ответа:
 Dark Engine



ICQ: 343191665 

Вопросов: 51
Ответов: 98
 Web-сайт: www.wentas.2bb.ru
 Профиль | | #14
Добавлено: 08.06.05 10:08
Вот например мистер Retributor задал вопрос и забыл про него, т.к. ни разу ещё не ответил, а мы тут должны ему искать что-то, писать советовать итп...


Нехорошо говоришь, я никогда не забываю об оставленных на форумах сообщениях. Просто серьезные проблемы с Инетом.

Да и вообще, отвечаю, почему пишу на форуме, а не лезу в примеры и пр. Я к сожалению не сижу на выделенке, и Интернет считаю по секундам. Мне быстрее отправить сюда сообщение, обратиться к людям за помощью, чем прожигать деньги в поиске, который может и не дать результатов. А на форуме (уже 100% знаю) всегда вреди ответов откопается нужный.

Ответить

Номер ответа: 15
Автор ответа:
 Dark Engine



ICQ: 343191665 

Вопросов: 51
Ответов: 98
 Web-сайт: www.wentas.2bb.ru
 Профиль | | #15
Добавлено: 08.06.05 10:21
Собственно говоря, почему такой вопрос на форуме и поставил.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам