Я пытаюсь разработать программу, которая контролирует аутентификацию WiFi. Моя идея заключалась в том, что программа должна иметь возможность видеть каждое устройство, которое запрашивает соединение WiFi, и получать IP-адрес устройства и адрес ma c. После захвата адреса ma c и IP-адреса они должны быть отправлены в систему администрирования WiFi, и администратор должен иметь возможность решить, разрешить или запретить доступ к этому устройству. Я пытался найти код, который может получить IP и c адреса устройств, подключенных к моей сети, но я получил vb-код
Imports System.Net
Imports System.Net.NetworkInformation
Imports System.Net.Sockets
Public Class Form2
Structure IpInfo
Dim IpAddress As String
Dim HostName As String
Dim MacAddress As String
End Structure
Dim connectedIPAddresses As New List(Of IpInfo)
Private Shared Function NetworkGateway() As String
Dim ip As String = Nothing
For Each f As NetworkInterface In NetworkInterface.GetAllNetworkInterfaces()
If f.OperationalStatus = OperationalStatus.Up Then
For Each d As GatewayIPAddressInformation In f.GetIPProperties().GatewayAddresses
ip = d.Address.ToString()
Next
End If
Next
Return ip
End Function
Public Sub Ping_all()
Dim gate_ip As String = NetworkGateway()
Dim array As String() = gate_ip.Split("."c)
For i As Integer = 2 To 255
Dim ping_var As String = array(0) & "." & array(1) & "." & array(2) & "." & i.ToString
Ping(ping_var, 1, 1000)
Next
Task.WhenAll(taskList)
End Sub
Dim taskList As New List(Of Task)
Public Sub Ping(ByVal host As String, ByVal attempts As Integer, ByVal timeout As Integer)
For i As Integer = 0 To attempts - 1
taskList.Add(Task.Run(Sub()
Try
Dim ping As System.Net.NetworkInformation.Ping = New System.Net.NetworkInformation.Ping()
AddHandler ping.PingCompleted, AddressOf
ping.SendAsync(host, timeout, host)
Catch
End Try
End Sub))
Next
End Sub
Private Sub PingCompleted(ByVal sender As Object, ByVal e As PingCompletedEventArgs)
Dim ip As String = CStr(e.UserState)
If e.Reply IsNot Nothing AndAlso e.Reply.Status = IPStatus.Success Then
Dim hostname As String = GetHostName(ip)
Dim macaddres As String = GetMacAddress(ip)
Dim newIpAddress As IpInfo
newIpAddress.IpAddress = ip
newIpAddress.MacAddress = macaddres
newIpAddress.HostName = hostname
connectedIPAddresses.Add(newIpAddress)
Else
End If
End Sub
Public Function GetHostName(ByVal ipAddress As String) As String
Try
Dim entry As IPHostEntry = Dns.GetHostEntry(ipAddress)
If entry IsNot Nothing Then
Return entry.HostName
End If
Catch __unusedSocketException1__ As SocketException
End Try
Return Nothing
End Function
Public Function GetMacAddress(ByVal ipAddress As String) As String
Dim macAddress As String = String.Empty
Dim Process As System.Diagnostics.Process = New System.Diagnostics.Process()
Process.StartInfo.FileName = "arp"
Process.StartInfo.Arguments = "-a " & ipAddress
Process.StartInfo.UseShellExecute = False
Process.StartInfo.RedirectStandardOutput = True
Process.StartInfo.CreateNoWindow = True
Process.Start()
Dim strOutput As String = Process.StandardOutput.ReadToEnd()
Dim substrings As String() = strOutput.Split("-"c)
If substrings.Length >= 8 Then
macAddress = substrings(3).Substring(Math.Max(0, substrings(3).Length - 2)) & "-" & substrings(4) & "-" & substrings(5) & "-" & substrings(6) & "-" & substrings(7) & "-" + substrings(8).Substring(0, 2)
Return macAddress
Else
Return "OWN Machine"
End If
End Function
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Ping_all()
Threading.Thread.Sleep(10000)
For Each ip As IpInfo In connectedIPAddresses
ListBox1.Items.Add(ip.IpAddress)
Next
End Sub
End Class
кто-то сказал мне, что вам нужно изучить программирование сокетов, и я сделал что я попытался создать сервер сокетов на C ++ и клиент сокета, который клиент сокета успешно подключается к серверу сокетов и может отправлять эхо-сообщения обратно клиенту. но я не знаю, как это может помочь мне в том, чего я хочу достичь. Я думал, что, может быть, получить информацию о клиенте, когда клиент создает соединение, и если он не должен подключаться, отключиться, если я могу это сделать.
основная проблема заключается в том, что я не знаю, могу ли я использовать этот сокет-сервер для управления аутентификацией Wi-Fi, и если да, то как я могу поместить его между клиентским устройством и Wi-Fi, чтобы он действовал как захватывающий портал для перенаправления каждого клиентское устройство, которое хочет подключиться к администратору WiFi.
любая помощь будет принята с благодарностью, области, которые больше всего беспокоят:
- как заставить мою программу работать как скрытый портал чтобы иметь возможность перенаправлять устройства, которым необходимо подключение к WiFi admin
- может ли сервер сокетов выполнять такую задачу заранее благодарим всех, кто помогает