Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: MAC адрес Добавлено: 17.11.05 12:46  

Автор вопроса:  Роман | Web-сайт: www.BubnovRV.narod.ru
Как узнать MAC адрес сетевухи на своей машине?

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #1 Добавлено: 17.11.05 13:05
http://freevbcode.com/source/MAC.zip

Ответить

Номер ответа: 2
Автор ответа:
 Роман



Вопросов: 1
Ответов: 31
 Web-сайт: www.BubnovRV.narod.ru
 Профиль | | #2
Добавлено: 18.11.05 18:20
Спасибо за подсказку. Уточню вопрос. В сети находится некое устройство, которое не поддерживает NetBIOS. Само оно сообщить МАС-адрес не может. Как узнать МАС-адрес без использования NetBIOS. Заранее спасибо.

Ответить

Номер ответа: 3
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #3 Добавлено: 18.11.05 19:05
Перехватывать пакеты. Первые 12 байт - два мака. Получателя и отправителя.

Ответить

Номер ответа: 4
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #4 Добавлено: 18.11.05 19:07
Если на локальном компе - лучше погляди в реестре. Точно где не помню, но по имени сетевухи глянь. Многие карты именно оттуда берут MAC (те что позволяют его менять).

Ответить

Номер ответа: 5
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #5 Добавлено: 18.11.05 19:09
Еще вариант - Arp таблица. Можно самому кодом, можно
ping xxx.xxx.xxx.xxx
arp -a >file.txt
Получишь табличку наподобие этой
Interface: 192.168.64.18 on Interface 0x1000003
  Internet Address Physical Address Type
  192.168.64.1 00-11-09-17-78-ae dynamic
  192.168.64.2 00-20-ed-86-32-4d dynamic

Ответить

Номер ответа: 6
Автор ответа:
 Роман



Вопросов: 1
Ответов: 31
 Web-сайт: www.BubnovRV.narod.ru
 Профиль | | #6
Добавлено: 20.11.05 17:10
Ребята все замечательно! Но как это сделать в коде. Ну допустим запущу через Shell или подобную функцию ping и что дальше?
Когда в сети комп с виндовозом, то пример от User Unknown просто замечательно работает.

Ответить

Номер ответа: 7
Автор ответа:
 student-uni



Вопросов: 122
Ответов: 257
 Профиль | | #7 Добавлено: 20.11.05 21:52


Imports System.IO
Imports System.Net

Public Class Form1
    Inherits System.Windows.Forms.Form


#Region " Windows Form Designer generated code "

    Public Sub New()
        MyBase.New()

        'This call is required by the Windows Form Designer.
        InitializeComponent()

        'Add any initialization after the InitializeComponent() call

    End Sub

    'Form overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer

    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.  
    'Do not modify it using the code editor.
    Friend WithEvents Button1 As System.Windows.Forms.Button
    Friend WithEvents ListBox1 As System.Windows.Forms.ListBox
    Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
    Friend WithEvents TextBox2 As System.Windows.Forms.TextBox
    Friend WithEvents Button2 As System.Windows.Forms.Button
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.Button1 = New System.Windows.Forms.Button()
        Me.ListBox1 = New System.Windows.Forms.ListBox()
        Me.TextBox1 = New System.Windows.Forms.TextBox()
        Me.TextBox2 = New System.Windows.Forms.TextBox()
        Me.Button2 = New System.Windows.Forms.Button()
        Me.SuspendLayout()
        '
        'Button1
        '
        Me.Button1.Location = New System.Drawing.Point(8, 8)
        Me.Button1.Name = "Button1"
        Me.Button1.Size = New System.Drawing.Size(128, 24)
        Me.Button1.TabIndex = 0
        Me.Button1.Text = "get Mac Address"
        '
        'ListBox1
        '
        Me.ListBox1.Location = New System.Drawing.Point(8, 40)
        Me.ListBox1.Name = "ListBox1"
        Me.ListBox1.Size = New System.Drawing.Size(376, 108)
        Me.ListBox1.TabIndex = 1
        '
        'TextBox1
        '
        Me.TextBox1.Location = New System.Drawing.Point(8, 152)
        Me.TextBox1.Multiline = True
        Me.TextBox1.Name = "TextBox1"
        Me.TextBox1.Size = New System.Drawing.Size(376, 112)
        Me.TextBox1.TabIndex = 2
        Me.TextBox1.Text = "TextBox1"
        '
        'TextBox2
        '
        Me.TextBox2.Location = New System.Drawing.Point(256, 8)
        Me.TextBox2.Name = "TextBox2"
        Me.TextBox2.Size = New System.Drawing.Size(128, 20)
        Me.TextBox2.TabIndex = 3
        Me.TextBox2.Text = "ipaddress here"
        '
        'Button2
        '
        Me.Button2.Location = New System.Drawing.Point(152, 8)
        Me.Button2.Name = "Button2"
        Me.Button2.Size = New System.Drawing.Size(96, 24)
        Me.Button2.TabIndex = 4
        Me.Button2.Text = "get Host Name"
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(394, 273)
        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Button2, Me.TextBox2, Me.TextBox1, Me.ListBox1, Me.Button1})
        Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
        Me.Name = "Form1"
        Me.Text = "Form1"
        Me.ResumeLayout(False)

    End Sub

#End Region

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'microsoft.VisualBasic.Shell(
        ' MessageBox.Show("Hi";)
        '   EnumNetworkAdapters()
        '  MsgBox(GetMacAddress())
        '     IP = New IPEndPoint

        TextBox2.Text = HosttoIP(TextBox1.Text.Trim)

        TextBox1.Text = GetMac(TextBox2.Text)
    End Sub

    Private Function HostToIP(ByVal HostStr As String) As String
        Try
            Dim dns As System.Net.Dns
            Dim Host As New System.Net.IPHostEntry()
            Host = dns.GetHostByName(hoststr)
            Dim ToStr As IPAddress
            ToStr = Host.AddressList.GetValue(0)
            HostToIP = ToStr.ToString
        Catch err As Exception
            MsgBox(err.Message)
        End Try
    End Function

    Private Function IPtoHost(ByVal IPstr As String) As String
        Try
            Dim dns As System.Net.Dns
            Dim Host As New System.Net.IPHostEntry()
            Host = dns.GetHostByAddress(IPstr)
            IPtoHost = Host.HostName
        Catch err As Exception
            MsgBox(err.Message)
        End Try
    End Function

    ' Private IP As IPEndPoint()
    Public Function ValueSepR(ByVal RawString As String, ByVal SepChar As String) As String
        If InStr(1, RawString, SepChar) <> 0 Then
            ValueSepR = Microsoft.VisualBasic.Right(RawString, Len(RawString) - InStr(1, RawString, SepChar))
        Else
            ValueSepR = RawString
        End If
    End Function

    Public Function GetMac(ByVal IP As String) As String
        Try
            Dim dirResults As String
            Dim psi As ProcessStartInfo = New ProcessStartInfo()
            Dim proc As New Process()
            psi.FileName = "nbtstat"
            psi.RedirectStandardInput = False
            psi.RedirectStandardOutput = True
            psi.Arguments = "-A " & IP
            psi.UseShellExecute = False
            proc = Process.Start(psi)
            Dim x As Integer = -1
            Do Until x > -1
                If dirResults <> Nothing Then
                    x = dirResults.Trim.ToLower.IndexOf("mac address", 0)
                    If x > -1 Then
                        Exit Do
                    End If
                End If
                dirResults = proc.StandardOutput.ReadLine
            Loop
            proc.WaitForExit()
            GetMac = ValueSepR(dirResults.Trim, "=";).Trim
        Catch err As Exception
            MsgBox(err.Message & err.StackTrace)
        End Try
    End Function

    Public Sub EnumNetworkAdapters()
        Try
            Dim query As System.Management.ManagementObjectSearcher = New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration";)
            Dim queryCollection As System.Management.ManagementObjectCollection = query.Get()
            Dim mo As New System.Management.ManagementObject()


            For Each mo In queryCollection
                If IsDBNull(mo.Item(";Description";)) = False Then
                    ListBox1.Items.Add(mo.Item(";Description";))
                End If

                If IsDBNull(mo.Item("macaddress";)) = False Then
                    If mo.Item("macaddress";) <> "" Then
                        ListBox1.Items.Add(mo.Item("macaddress";))
                    End If
                End If

                If IsDBNull(mo.Item("IPAddress";)) = False Then
                    Dim temp As String
                    temp = Join(mo.Item("IPAddress";), ".";)
                    If temp <> "" Then
                        ListBox1.Items.Add(temp)
                    End If
                End If
            Next
        Catch err As Exception
            MsgBox(err.Message & err.StackTrace)
        End Try
    End Sub

    Public Function GetMacAddress(Optional ByVal IP As String = Nothing) As String
        Try
            Dim query As System.Management.ManagementObjectSearcher = New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration";)
            Dim queryCollection As System.Management.ManagementObjectCollection = query.Get()
            Dim mo As New System.Management.ManagementObject()
            Dim Found As Boolean = False

            For Each mo In queryCollection
                If IsDBNull(mo.Item("IPAddress";)) = False Then
                    Dim temp As String
                    temp = Join(mo.Item("IPAddress";), ".";)
                    If temp <> "" Then
                        If IP <> "" Then
                            If temp = IP.Trim Then
                                Found = True
                            End If
                        Else
                            Found = True
                        End If
                    End If
                End If

                If Found = True Then
                    If IsDBNull(mo.Item("macaddress";)) = False Then
                        If mo.Item("macaddress";) <> "" Then
                            GetMacAddress = mo.Item("macaddress";)
                            Exit Function
                        End If
                    End If
                Else
                    Found = False
                End If
            Next
            If Found = False Then
                MsgBox("No Mac Address Found";)
                GetMacAddress = ""
            End If
        Catch err As Exception
            MsgBox(err.Message & err.StackTrace)
        End Try
    End Function

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        TextBox1.Text = IPtoHost(TextBox2.Text)
    End Sub
End Class

Ответить

Страница: 1 |

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



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