In win32, I use GetAdaptersInfo API declared in IpHlpApi.h with pcap.

I compare "AdapterName" in IP_ADAPTER_INFO and "name" in ppcap_if_t.
And if gives AdapterName is equal, then I can find Mac, Subnetmask, Gateway.



From: "Descript" <[EMAIL PROTECTED]>
Reply-To: [EMAIL PROTECTED]
To: <[EMAIL PROTECTED]>
Subject: [WinPcap-users] MAC ADDRESS pcap_if_t
Date: Sun, 3 Aug 2003 10:16:16 +0200

Hello list,

I would like to get the mac address of a network device. I cant use ARP
request (due some security consideration).
So i'v see a small code from Microsoft that use Netbios function....

I'v to find a function that can give to me the address, so why pcap_if_t
typedef doesn't provide local mac address ?!

(on the bottom a small idea for pcap_if_t)

<--SNIP-->
#include <windows.h>
#include <wincon.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

typedef struct _ASTAT_ {
    ADAPTER_STATUS adapt;
    NAME_BUFFER    NameBuff [30];
}ASTAT, * PASTAT;

ASTAT Adapter;

void main (void)
{
    NCB ncb;
    UCHAR uRetCode;
    char NetName[50];

    memset( &ncb, 0, sizeof(ncb) );
    ncb.ncb_command = NCBRESET;
    ncb.ncb_lana_num = 0;

    uRetCode = Netbios( &ncb );
    printf( "The NCBRESET return code is: 0x%x \n", uRetCode );

    memset( &ncb, 0, sizeof(ncb) );
    ncb.ncb_command = NCBASTAT;
    ncb.ncb_lana_num = 0;

    strcpy( ncb.ncb_callname,  "*               " );
    ncb.ncb_buffer = (char *) &Adapter;
    ncb.ncb_length = sizeof(Adapter);

    uRetCode = Netbios( &ncb );
    printf( "The NCBASTAT return code is: 0x%x \n", uRetCode );
    if ( uRetCode == 0 )
    {
        printf( "The Ethernet Number is: %02x%02x%02x%02x%02x%02x\n",
                Adapter.adapt.adapter_address[0],
                Adapter.adapt.adapter_address[1],
                Adapter.adapt.adapter_address[2],
                Adapter.adapt.adapter_address[3],
                Adapter.adapt.adapter_address[4],
                Adapter.adapt.adapter_address[5] );
    }
}
</--SNIP-->

<--SNIP-->
struct pcap_if_macaddress {
unsigned char byte1;
unsigned char byte2;
unsigned char byte3;
unsigned char byte4;
unsigned char byte5;
unsigned char byte6;
};
struct pcap_if {
struct pcap_if *next;
char *name;
char *description;
struct pcap_addr *addresses;
u_int flags;
pcap_if_macaddress macaddress; // compat end of struct (no chained
list
needed.)
};
</--SNIP-->

Regards,
Michael



==================================================================
 This is the WinPcap users list. It is archived at
 http://www.mail-archive.com/[EMAIL PROTECTED]/

 To unsubscribe use
 mailto: [EMAIL PROTECTED]
==================================================================

_________________________________________________________________
상큼한 만남과 따뜻한 공동체 생활... 지금 MSN 커뮤니티에서 시작하세요! http://groups.msn.com/?pgmarket=ko-kr




==================================================================
This is the WinPcap users list. It is archived at
http://www.mail-archive.com/[EMAIL PROTECTED]/

To unsubscribe use mailto: [EMAIL PROTECTED]
==================================================================

Reply via email to