知道IP查MAC地址知道MAC地址查IPWord文件下载.docx

上传人:b****6 文档编号:17887645 上传时间:2022-12-11 格式:DOCX 页数:13 大小:24.12KB
下载 相关 举报
知道IP查MAC地址知道MAC地址查IPWord文件下载.docx_第1页
第1页 / 共13页
知道IP查MAC地址知道MAC地址查IPWord文件下载.docx_第2页
第2页 / 共13页
知道IP查MAC地址知道MAC地址查IPWord文件下载.docx_第3页
第3页 / 共13页
知道IP查MAC地址知道MAC地址查IPWord文件下载.docx_第4页
第4页 / 共13页
知道IP查MAC地址知道MAC地址查IPWord文件下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

知道IP查MAC地址知道MAC地址查IPWord文件下载.docx

《知道IP查MAC地址知道MAC地址查IPWord文件下载.docx》由会员分享,可在线阅读,更多相关《知道IP查MAC地址知道MAC地址查IPWord文件下载.docx(13页珍藏版)》请在冰豆网上搜索。

知道IP查MAC地址知道MAC地址查IPWord文件下载.docx

0x20,0x43,0x4b,0x41,0x41,0x41,0x41,0x41,0x41,0x41, 

0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41, 

0x41,0x41,0x41,0x0,0x0,0x21,0x0,0x1};

(这是发nbtstat命令后用IPMan截获的),对方会向你返回一个数据包, 

其中有对方的工作组,主机名,用户名,MAC地址。

当然,返回包的格式要 

自己分析,也可以查RFC文档。

你自己的端口可以随便取一个值。

方法4.在win9x下可用IPMan直接发ARP。

方法5.在win2000下可用SendArp()直接发ARP。

---------------------------------------------------------------- 

IP似乎较困难。

Win9x下IPMan有此项功能,但我试了一下似乎不行。

来自:

zw84611, 

时间:

2001-10-7 

19:

37:

00, 

ID:

659172 

发出去了,是用VC写的。

因为我不喜欢Delphi5 

的udp控件。

其实用delphi也一样。

很 

简单的,就是向对方137端口发内容为 

的UDP包(Delphi中用$代替0x),对方就会给你应答,你接收就是了。

Delphi源码如下,其中UDP用Socket 

API实现。

------------------------------------------------------- 

unit 

udp;

interface 

uses 

Windows, 

Messages, 

SysUtils, 

Classes, 

Graphics, 

Controls, 

Forms, 

Dialogs, 

winsock, 

StdCtrls;

const 

WM_SOCK 

WM_USER 

1;

//自定义windows消息 

UDPPORT 

6767;

//设定UDP端口号 

NBTPORT 

137;

type 

Tfrmmain 

class(TForm) 

Button1:

TButton;

ListBox1:

TListBox;

Edit1:

TEdit;

procedure 

FormCreate(Sender:

TObject);

FormClose(Sender:

TObject;

var 

Action:

TCloseAction);

Button1Click(Sender:

private 

Private 

declarations 

s:

TSocket;

addr:

TSockAddr;

FSockAddrIn 

:

TSockAddrIn;

//利用消息实时获知UDP消息 

ReadData(var 

Message:

TMessage);

message 

WM_SOCK;

public 

Public 

SendData(b:

array 

of 

byte);

end;

frmmain:

Tfrmmain;

implementation 

{$R 

*.DFM} 

Tfrmmain.FormCreate(Sender:

TempWSAData:

TWSAData;

//optval:

integer;

begin 

// 

初始化SOCKET 

if 

WSAStartup($101, 

TempWSAData)=1 

then 

showmessage('

StartUp 

Error!

'

);

Socket(AF_INET, 

SOCK_DGRAM, 

0);

(s 

INVALID_SOCKET) 

//Socket创建失败 

showmessage(inttostr(WSAGetLastError())+'

Socket创建失败'

CloseSocket(s);

//本机SockAddr绑定 

addr.sin_family 

AF_INET;

addr.sin_addr.S_addr 

INADDR_ANY;

addr.sin_port 

htons(UDPPORT);

Bind(s, 

addr, 

sizeof(addr)) 

<

>

bind 

fail'

WSAAsyncSelect(s, 

frmmain.Handle 

 

WM_SOCK, 

FD_READ);

//对方SockAddrIn设定 

FSockAddrIn.SIn_Family 

FSockAddrIn.SIn_Port 

htons(NBTPORT);

Tfrmmain.FormClose(Sender:

GetInfo(buf:

Array 

{这个过程是根据返回报文的内容凑出来的,偶尔会出错。

如果能根据 

报文格式的定义来做(可查阅相关RFC文档,可惜我没时间,以后做吧),就更好了。

如果你作出来了,不妨寄给我一个哟。

e-mail:

zw84611@} 

bAdd,bMac:

boolean;

str,strHost,strHex,strMac:

string;

tem,i,j:

integer;

bAdd:

=true;

strHost:

='

;

strHex:

tem:

=0;

for 

i:

=57 

500 

do 

//57-72 

if(Buf[i]=$cc)then 

break;

if(Buf[i]=$20)then 

=false;

if(bAdd)then 

str:

=char(Buf[i]);

=strHost+str;

=Format('

%x.'

[Buf[i]]);

=strHex+str;

inc(tem);

if(tem 

mod 

18=0)then 

Trim(strHex);

bMac:

j:

=1 

length(strHex) 

strHex[j]>

0'

//showmessage(strHex);

if(bMac)then 

with 

frmmain.ListBox1 

Items.Delete(items.count-1);

Items.add('

mac 

address:

Delete(strMac,17,length(strMac)-17);

Items.Add(strMac);

frmmain.ListBox1.items.Add(strHost);

strMac:

=strHex;

Tfrmmain.ReadData(var 

buffer:

[1..500] 

byte;

len{,i}:

flen:

Event:

word;

value:

string;

Event 

WSAGetSelectEvent(Message.LParam);

FD_READ 

len 

recvfrom(s, 

buffer, 

sizeof(buffer), 

0, 

FSockAddrIn, 

flen);

{for 

=value+format('

%x'

[buffer[i]]);

ListBox1.items.add(value);

char(buffer[i])<

#0 

=value+char(buffer[i]);

len<

GetInfo(buffer);

Tfrmmain.SendData(b:

len:

FSockAddrIn.SIn_Addr.S_addr 

inet_addr(pchar(edit1.text));

sendto(s, 

b[0],50, 

sizeof(FSockAddrIn));

//if 

(WSAGetLastError() 

WSAEWOULDBLOCK) 

0) 

showmessage(inttostr(WSAGetLastError()));

SOCKET_ERROR 

send 

50 

Not 

Send 

all'

Tfrmmain.Button1Click(Sender:

NbtstatPacket:

array[0..49]of 

byte 

=($0,$0,$0,$10,$0,$1, 

$0,$0,$0,$0,$0,$0,$20,$43,$4b, 

$41,$41,$41,$41,$41,$41,$41,$41, 

$41,$41,$41,$41,$41,$41,$0,$0,$21,$0,$1);

senddata(NbtstatPacket);

end.Top

2楼nicebigben(老菜)回复于2003-01-2311:

56:

54得分0

谢谢!

Top

3楼windstrom(ORCLDBA)回复于2003-01-2316:

14:

52得分0

在iphlpapi.dll里面有一个函数:

GetAdaptersInfo() 

好像是干这个用的。

说明如下:

GetAdaptersInfo 

The 

function 

retrieves 

adapter 

information 

the 

local 

computer. 

DWORD 

GetAdaptersInfo( 

PIP_ADAPTER_INFO 

pAdapterInfo, 

buffer 

receive 

data 

PULONG 

pOutBufLen 

size 

returned 

);

Parameters 

pAdapterInfo 

[out] 

Pointer 

that, 

receives 

linked 

list 

IP_ADAPTER_INFO 

structures. 

[in] 

ULONG 

variable 

that 

specifies 

pointed 

by 

parameter. 

If 

this 

is 

insufficient 

hold 

information, 

fills 

in 

required 

size, 

returns 

an 

error 

code 

ERROR_BUFFER_OVERFLOW. 

Return 

Values 

succeeds, 

return 

value 

ERROR_SUCCESS. 

fails, 

one 

following 

codes. 

Value 

Meaning 

ERROR_BUFFER_OVERFLOW 

in

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1