这个问题已经问过号几次了。vc提供了两个类好像是ENUMNET之类汇编的到有:.386 .model flat .const greet_message db ’Example win32 console program’,0Dh,0Ah,0Dh,0Ah,0 error1_message db 0Dh,0Ah,’Could not get current user name’,0Dh,0Ah,0 error2_message db 0Dh,0Ah,’Could not enumerate’,0Dh,0Ah,0 good_exit_msg db 0Dh,0Ah,0Dh,0Ah,’Normal termination’,0Dh,0Ah,0 enum_msg1 db 0Dh,0Ah,’Local ’,0 enum_msg2 db ’ remote - ’,0 .data user_name db ’List of connected resources for user ’ user_buff db 64 dup (?) user_buff_l dd $-user_buff enum_buf_l dd 1056 ; enum_entries dd 1
看返回包
.model flat
.const
greet_message db ’Example win32 console program’,0Dh,0Ah,0Dh,0Ah,0
error1_message db 0Dh,0Ah,’Could not get current user name’,0Dh,0Ah,0
error2_message db 0Dh,0Ah,’Could not enumerate’,0Dh,0Ah,0
good_exit_msg db 0Dh,0Ah,0Dh,0Ah,’Normal termination’,0Dh,0Ah,0
enum_msg1 db 0Dh,0Ah,’Local ’,0
enum_msg2 db ’ remote - ’,0
.data
user_name db ’List of connected resources for user ’
user_buff db 64 dup (?)
user_buff_l dd $-user_buff
enum_buf_l dd 1056 ;
enum_entries dd 1
.data?
enum_buf NTRESOURCE
dd 256 dup (?)
message_l dd ?
enum_handle dd ?
.code
_start:
push STD_OUTPUT_HANDLE
call GetStdHandle
mov ebx,eax ;
mov esi,offset greet_message
call output_string
mov esi,offset user_buff
push offset user_buff_l
push esi
push 0 ; NULL
call WNetGetUser
cmp eax,NO_ERROR
jne error_exit1
mov esi,offset user_name
call output_string
push offset enum_handle
push 0
push RESOURCEUSAGE_CONNECTABLE
push RESOURCETYPE_ANY
push RESOURCE_CONNECTED
call WNetOpenEnum
cmp eax,NO_ERROR
jne error_exit2
enumeration_loop:
push offset enum_buf_l
push offset enum_buf
push offset enum_entries
push dword ptr enum_handle
call WNetEnumResource
cmp eax,ERROR_NO_MORE_ITEMS
je end_enumeration
cmp eax,NO_ERROR
jne error_exit2
mov esi,offset enum_msg1
call output_string
mov esi,dword ptr enum_buf.lpLocalName
call output_string
mov esi,offset enum_msg2
call output_string
mov esi,dword ptr enum_buf.lpRemoteName
call output_string
jmp short enumeration_loop end_enumeration:
push dword ptr enum_handle
call WNetCloseEnum
mov esi,offset good_exit_msg
exit_program:
call output_string
push 0
call ExitProcess
error_exit1:
mov esi,offset error1_message
jmp short exit_program
error_exit2:
mov esi,offset error2_message
jmp short exit_program
output_string proc near
cld
xor eax,eax
mov edi,esi
repne scasb
dec edi
sub edi,esi
push 0
push offset message_l
push edi
push esi
push ebx
call WriteConsole
ret
output_string endp
end _start
如果目标机器上没有安装netbios,你的方法就失效了;
而且,netbios api能够获得novell工作站的网卡地址吗?To:
ju_feng(NorthSky)
能不能详细一点,我看不懂;最好不要用汇编。
你说的对,如果有的机器是novell的客户端,没有配置ip怎么办?
最好也配上ip,novell客户端也可配ip,没有影响的。如果不行,就要研究ipx协议了。ipx协议中肯定也有类似arp的东西。
然后用循环向每个ip发送arp request请求,然后收集arp echo报文。对于范围不大的子网,速度会足够快,C类(254台主机)用不了几分钟。