Puerto de escaneo VB6.0
Descripción general del sistema
El sistema consta de dos subsistemas: el sistema del lado del servidor y el sistema del lado del cliente (estación de trabajo). El sistema del lado del servidor se instala en la computadora del administrador de la red y se utiliza para implementar diversas operaciones de monitoreo en las computadoras en la red. El sistema cliente se instala en cada computadora en la red y aparece como un ícono en el área de aviso de la barra de tareas del sistema cuando se instala; se está ejecutando, no afecta otras operaciones de la estación de trabajo, solo se usa para responder a los comandos de monitoreo del lado del servidor y toma muestras oportunas de los datos correspondientes de la estación de trabajo de acuerdo con las necesidades comerciales. Solo responde a los comandos de monitoreo del lado del servidor. Muestre oportunamente los datos correspondientes de la estación de trabajo de acuerdo con las necesidades comerciales. El entorno operativo del sistema puede ejecutarse en Win98, Win95 o WinNT, Win2000. En el desarrollo del sistema se introdujo el control de comunicación WINSOCK, que además de realizar mejor las operaciones de monitoreo, también utilizó algunas funciones API.
Funciones del sistema
1. Supervise todas las conexiones TCP: supervise todas las conexiones de los puertos del servidor en tiempo real, advierta rápidamente las conexiones anormales y solicite a los usuarios que eliminen las conexiones anormales. > 2. Monitoreo de pantalla: Esta función permite al servidor monitorear la pantalla de la estación de trabajo en cualquier momento y capturar la pantalla del servidor. El administrador de la red puede comprender el funcionamiento de la estación de trabajo correspondiente de un vistazo.
Implementación funcional
1. Monitorear todas las conexiones TCP
TCP/IP (Protocolo de control de transmisión/Protocolo de Internet: TCP/IP (Protocolo de control de transmisión/Protocolo de Internet) ) :Protocolo de control de transmisión/Protocolo de Internet) es un protocolo de red, que incluye TCP, IP, UDP, ARP, RARP y TCP/IP (Protocolo de control de transmisión/Protocolo de Internet: Protocolo de control de transmisión/Protocolo de Internet: Protocolo de control de transmisión/Protocolo de Internet) es un conjunto de protocolos de red, incluidos TCP, IP, UDP, ARP, RARP e ICMP, etc. TCP / IP a menudo se denomina "pegamento que conecta Internet", que permite conectar redes de información espacialmente separadas para formar uno. Enorme red virtual.
Este artículo analiza las conexiones TCP. Usando TCP, un cliente de Internet puede abrir una conexión virtual a otro cliente de Internet y transmitir el flujo de datos a través de datagramas para garantizar la confiabilidad de la transmisión. garantiza que la aplicación receptora vuelva a ensamblar los bits y bytes recibidos en el orden en que fueron enviados para obtener datos completos.
Para obtener la conexión TCP completa y válida del sistema servidor, es necesario utilizar la función API GetTcpTable, que se define de la siguiente manera:
Función de declaración privada GetTcpTable Lib "iphlpapi.
dll " (ByRef pTcpTable As MIB_TCPTABLE, ByRef
pdwSize As Long, ByVal bOrder As Long) As Long
El parámetro pPcpTable es un puntero al archivo generado Búfer de la tabla de conexión TCP, y el parámetro pdwsize es el tamaño del búfer (cuando el parámetro pdwsize es el tamaño del búfer (cuando el búfer no es lo suficientemente grande, el parámetro devuelve el tamaño real requerido), el parámetro bOrder indica si el la tabla de conexiones está organizada por "IP local", "puerto local", IP "local remota", "puerto local", "puerto remoto" y se requieren otras secuencias, donde 1 es la secuencia.
Al comparar las dos tablas de conexión TCP antes y después del evento TIMER controlado por TIMEER, podemos encontrar inmediatamente la excepción y emitir una advertencia. El sistema utiliza sonidos y señales de advertencia para alertar a los usuarios sobre posibles intrusiones externas. Primero debemos eliminar la conexión sospechosa. La función SetTcpEntry puede ayudarnos a eliminar la conexión sospechosa.
Función de declaración privada SetTcpEntry Lib "iphlpapi.
dll" (ByRef pTcpTable As MIB_TCPROW) Siempre.
Donde el parámetro pTcptable es un puntero a la fila de la tabla tcp y se realizará la conexión. El estado se establece en MIB_TCP_STATE_DELETE_TCB (valor 12) para eliminar la conexión.
Código fuente del evento TIMER:
Private Sub Timer1_Timer()
Dim Return1 As Long, i As Long
Dim Tmp1 As Long , Tmp2 siempre
Dim Ip_Buf(1 a 4) como byte
Dim Win_Path como cadena, Tmp3 como cadena
Return1 = GetTcpTable(TCP1, Len( TCP1), 1)
If Last_Num_Of_Entries
Picture1.Visible = True 'Señal de advertencia
En caso de error Reanudar siguiente
Win_Path = String (145, 0)
'Usar la función API GetWindowsDirectory obtiene el directorio del sistema actual
i = GetWindowsDirectory(Win_Path, 145)
Win_Path = Left(Win_Path, i)
'Utilice la función API sndPlaySound para crear un sonido de alarma
i = sndPlaySound(Win_Path "\Media\Ding.wav", amp; H1)
En caso de error, Ir a 0
De lo contrario
Si Imagen1.Visible = Verdadero Entonces
Imagen1.Visible = Falso
Finalizar si
Finalizar si
Last_Num_Of_Entries = TCP1. dwNum_Of_Entries
Seleccionar caso Devolución1
Caso 0amp;:
Texto1 = "": Combo1.Clear
Para i = 0 A TCP1 .dwNum_Of_Entries - 1
Tmp3 = Str(i 1) " "
Seleccione Caso TCP1.TCP_Table(i).dwState
' Mostrar estado de conexión
Caso 1: Tmp3 = Tmp3 "CERRADO"
Caso 2: Tmp3 = Tmp3 "ESCUCHANDO"
Caso 3: Tmp3 = Tmp3 "SYN_SENT"
Caso 4: Tmp3 = Tmp3 "SYN_RCVD"
Caso 5: Tmp3 = Tmp3 "ESTABLECIDO "
Caso 6.Tmp3 = Tmp3 "FIN_WAIT1"
p>Ejemplo 7: Tmp3 = Tmp3 "
FIN_WAIT2"
Ejemplo 8: Tmp3 = Tmp3 "CLOSE_WAIT"
Caso 9: Tmp3 = Tmp3 "CLOSING"
Caso 10: Tmp3 = Tmp3 "LAST_ACK"
Caso 11: Tmp3 = Tmp3 "TIME_WAIT"
Caso 12: Tmp3 = Tmp3 "DELETE_TCB"
Finalizar Selección
Combo1. Agregar elemento Tmp3 'Rellenar lista de eliminación de usuarios
'IP local
Tmp3 = Tmp3 ":" vbCrLf vbTab "Local:"
'CopyMemory como función API
CopyMemory Ip_Buf(1), TCP1.TCP1.TCP_Table(i).dwLocalAddr, 4
Tmp3 = Tmp3 CStr(Ip_Buf(1)) "."
CStr (Ip_Buf(2)) "." CStr(Ip_Buf(3)) _
"." CStr(Ip_Buf(4))
Tmp1 = TCP_Table(i). dwLocalPort
' Puerto local
Tmp2 = Tmp1 / 256 (Tmp1 Mod 256) * 256
' IP remota
Tmp3 = Tmp3 ":" Str(Tmp2) vbTab "Remoto:"
CopyMemory Ip_Buf(1), TCP1.TCP_Table(i).dwRemoteAddr, 4
Tmp3 = Tmp3 CStr(Ip_Buf(1 )) "." CStr(Ip_Buf(2))_
"." CStr(Ip_Buf(3)) "."
CStr(Ip_Buf(4))
' Puerto remoto
Tmp1 = TCP1.TCP_Table(i).dwRemotePort
Tmp2 = Tmp1 / 256 (Tmp1 Mod 256 ) * 256
Tmp3 = Tmp3 ":" Str(Tmp2) vbCrLf
Texto1 = Texto1 Tmp3
Siguiente i
Caso 50amp ;:
MsgBox "El sistema no soporta esta función API": Fin
Caso 87:
MsgBox "Parámetro no válido": Fin
Caso 111amp;:
MsgBox "Desbordamiento de buffer":
Caso 232amp;:
MsgBox "Sin datos": Fin
End Select
End Sub
HAGA CLIC en eliminar el código fuente del evento de conexión:
Private Sub delete_Click()
Dim Return1 As Long
If Combo1.ListIndex lt; 0 Then Exit Sub
' Establece el estado de la conexión que se eliminará en el valor 12
' Establece el estado de la conexión que se va a eliminar El estado es el valor 12. dwState = 12
'Realizar eliminación
Return1 = SetTcpEntry(TCP1.TCP_Table(Combo1.ListIndex))
'Realizar eliminación
Return1 = SetTcpEntry(TCP1.TCP_Table(Combo1.ListIndex))
Si Return1 = Long
Si Return1 = Combo1.
Si Return1 = 0 Entonces p>
MsgBox "Eliminación exitosa"
De lo contrario
MsgBox "Eliminación fallida"
Finalizar si
Timer1_Timer
End Sub
2. Monitoreo de pantalla
Cuando el sistema del servidor descubre TCP_Table. p> Cuando el sistema del servidor detecta una conexión TCP anormal, puede usar la función de monitoreo de pantalla para capturar la imagen de la pantalla desde la estación de trabajo monitoreada al servidor en la LAN e implementar las medidas correspondientes, como bloquear o apagar la estación de trabajo. Aquí se utiliza el control WINSOCK; consulte la información relevante para conocer su principio de comunicación. La función de monitoreo de pantalla utiliza el protocolo TCP. Para lograr mejores resultados, puede agregar un control TIMER al formulario y configurar el evento TIMER.
(1) Estación de trabajo
Monitorea y responde a solicitudes de conexión del lado del servidor y capturas de pantalla.
Una de las funciones de captura de pantalla se puede implementar a través de la función API:
Dim a As String
Winsock1.GetData a, vbString
Select Case a p>
Caso "zp"
Imagen1.GetData a, vbString
Seleccione Caso a
Caso "zp"
Imagen1.GetData a, vbString
Seleccionar caso a
Caso "zp"
Imagen1.GetData a, vbStringAutoRedraw = True
Imagen1 .ScaleMode = 1
lDesktop = GetDesktopWindow()
lDC = GetDC(lDesktop)
BitBlt Picture1.hdc, 0, 0, Screen.
Screen.Height, lDC, 0, 0, vbSrcCopy
'Obtener una matriz de imágenes
SavePicture Picture1.Image, nombre de archivo
Winsock1. SendData "okm "
Dim myfile() Como Byte
Caso "fir" 'Pasa el primer bloque de la imagen
Abrir nombre de archivo para binario como #1 p>
filelen = LOF(1)
ReDim myfile(1 Para bloquear) como byte
'(const blockize=3072)
Obtenga # 1, miarchivo
Winsock1.SendData miarchivo