知道IP查MAC地址知道MAC地址查IPWord文件下载.docx
- 文档编号:17887645
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:13
- 大小:24.12KB
知道IP查MAC地址知道MAC地址查IPWord文件下载.docx
《知道IP查MAC地址知道MAC地址查IPWord文件下载.docx》由会员分享,可在线阅读,更多相关《知道IP查MAC地址知道MAC地址查IPWord文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
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!
'
);
s
=
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))
<
>
0
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
a
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 知道 IP MAC 地址