Imports System.Net
Imports System.Net.NetworkInformation
Imports System.Runtime.InteropServices
Public Class CyBlock
Shared hostAddresses As String() = Nothing
Shared conThread As Boolean = True
Public Overloads Shared Sub BlockWebsite(ByVal hostAddr As String)
ReDim hostAddresses(0)
hostAddresses(0) = hostAddr
Dim x As New Threading.Thread(AddressOf Main) With {.IsBackground = True} : x.SetApartmentState(Threading.ApartmentState.STA)
x.Start()
End Sub
Public Overloads Shared Sub BlockWebsite(ByVal hostAddrs As String())
ReDim hostAddresses(hostAddrs.Length - 1)
hostAddresses = hostAddrs
Dim x As New Threading.Thread(AddressOf Main) With {.IsBackground = True} : x.SetApartmentState(Threading.ApartmentState.STA)
x.Start()
End Sub
Public Overloads Shared Sub Main()
While conThread
For Each hostAddress As String In hostAddresses
If hostAddress.Split("."c).Length < 4 Then
For Each ipAdr As IPAddress In Dns.GetHostAddresses(hostAddress)
iBlocks.Add(ipAdr.ToString)
Next
Else
iBlocks.Add(hostAddress)
End If
Dim locIP, remIP, locPort, remPort As String
Dim iProps As IPGlobalProperties = IPGlobalProperties.GetIPGlobalProperties
For Each tcpCnx As TcpConnectionInformation In iProps.GetActiveTcpConnections
For Each ipAdr As String In iBlocks
If tcpCnx.RemoteEndPoint.Address.ToString = ipAdr Then
locIP = tcpCnx.LocalEndPoint.Address.ToString
locPort = tcpCnx.LocalEndPoint.Port
remIP = tcpCnx.RemoteEndPoint.Address.ToString
remPort = tcpCnx.RemoteEndPoint.Port
BlockWebsite(locIP, locPort, remIP, remPort)
Exit For
End If
Next
Next
Next
End While
End Sub
Private Overloads Shared Sub BlockWebsite(ByVal locIP As String, :
ByVal locPort As String, ByVal remIP As String, ByVal remPort As String)
Try
Dim locAdr() As String = locIP.Split("."c)
Dim remAdr() As String = remIP.Split("."c)
Dim bLocAddr() As Byte = {Byte.Parse(locAdr(0)), Byte.Parse(locAdr(1)), Byte.Parse(locAdr(2)), Byte.Parse(locAdr(3))}
Dim bRemAddr() As Byte = {Byte.Parse(remAdr(0)), Byte.Parse(remAdr(1)), Byte.Parse(remAdr(2)), Byte.Parse(remAdr(3))}
Dim row As New TcpInfo() With {.cnxLocAdr = BitConverter.ToInt32(bLocAddr, 0), :
.cnxLocPort = htons(Integer.Parse(locPort)), .cnxRemAdr = BitConverter.ToInt32(bRemAddr, 0), :
.cnxRemPort = htons(Integer.Parse(remPort)), .cnxState = 12}
Dim tPtr As IntPtr = Marshal.AllocCoTaskMem(Marshal.SizeOf(row))
Marshal.StructureToPtr(row, tPtr, False)
Dim ptr As IntPtr = tPtr
Dim ret As Integer = SetTcpEntry(ptr)
Catch ex As Exception
End Try
End Sub
Public Shared Sub UnblockWebsite()
conThread = False
End Sub
Private Structure TcpInfo
Public cnxState As Integer
Public cnxLocAdr As Integer
Public cnxLocPort As Integer
Public cnxRemAdr As Integer
Public cnxRemPort As Integer
End Structure
<DllImport("iphlpapi.dll")> Private Shared Function SetTcpEntry(ByVal pTcprow As IntPtr) As Integer
End Function
<DllImport("wsock32.dll")> Private Shared Function htons(ByVal netshort As Integer) As Integer
End Function
End Class