首页 > 编程知识 正文

netbios协议 端口,NetBIOS服务

时间:2023-05-06 12:29:25 阅读:215166 作者:4594

NetBIOS是网络基本输入输出系统,通过netbios协议,可以得到局域网内的主机信息

在windows下可以使用nbtstat命令查看netbios信息

nbtstat -A 192.168.0.103

向指内网指定地址发送netbios协议数据包,可以得到局域网内机器的计算机名,工作组,MAC地址

代码如下:

#include <stdio.h>#include <afx.h>#include <WinSock2.h>#pragma comment(lib,"ws2_32.lib")//数据包BYTE bs[50]={0x0,0x00,0x0,0x10,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x43,0x4b,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,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};WSADATA wsadata;SOCKET m_Socket;SOCKADDR_IN serveraddr;int port=137; //netbios协议端口}void main(){//初始化winsock版本WORD ver=MAKEWORD(2,2);WSAStartup(ver,&wsadata);//初始socket地址信息char strIP[20] = {"192.168.153.1"};m_Socket = socket(AF_INET, SOCK_DGRAM,IPPROTO_UDP);serveraddr.sin_family = AF_INET;serveraddr.sin_port = htons(port);serveraddr.sin_addr.S_un.S_addr = inet_addr(strIP);//发送UDP数据包DWORD len = sendto(m_Socket,(char*)bs,sizeof(bs),0,(sockaddr*)&serveraddr,sizeof(serveraddr));if (len < 0){printf("send udp error");}//接受返回的数据包BYTE Buf[512] = {0};recvfrom(m_Socket,(char*)Buf,sizeof(Buf),0,NULL,NULL);printf("IP is %sn",strIP);//关闭socket连接closesocket(m_Socket);WSACleanup();//处理数据包里的信息CString str,strHost,strHex,strMac,Host,Group,User;int i;strHost=""; //机器名字strHex="";//MAC地址User="?";//Host="\";int tem=0,num=0;bool bAdd=true;//根据数据报规则取出相应的信息for(i=57;i<500;i++) //57-72{//if(Buf[i]==0xcc)//break; if (num>3)break; if(Buf[i]==0x20)bAdd=false;if(bAdd){str.Format("%c",Buf[i]);if(Buf[i]>=' ')strHost+=str;str.Format("%02x.",Buf[i]);strHex+=str;}if((++tem)%18==0){ bAdd=true; strHost.TrimRight((char)NULL);if(strHost==""){strMac.Delete(17,strMac.GetLength()-17);printf("MAC is %sn",strMac);num++;break;}if(num==0&&strHost!=""){printf("Host is %sn",strHost);Host=strHost;num++;}else{if(Host!=strHost && num==1&& strHost!=""){printf("Host is %sn",strHost);Group=strHost;num++;}else {if(strHost!=Host&&strHost!=Group&&num==2&&strHost!=""){User=strHost;if(User!="__MSBROWSE__"){printf("user is %sn",User);num++;}}}}strMac=strHex;strHost="";strHex="";}}}


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。