`
footman265
  • 浏览: 118477 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

java中使用cmd命令nbstat获取远程计算机mac地址疑惑

    博客分类:
  • j2SE
阅读更多

使用一个jsp,用servlet的api获取request的ip. 然后通过这个ip,使用nbstat -A +ip 这个命令获取远程计算机的mac

test.jsp:

<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="utf-8"%>

<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">

		<title>首页</title>
		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
	
	</head>

	<body>
		<%
			String ip = request.getHeader("x-forwarded-for");
			System.out.println(request.getHeader("Proxy-Client-IP"));
			System.out.println(request.getHeader("WL-Proxy-Client-IP"));
			System.out.println(request.getRemoteAddr());
			if (ip == null || ip.length() == 0
					|| ip.equalsIgnoreCase("unknown"))
				ip = request.getHeader("Proxy-Client-IP");
			if (ip == null || ip.length() == 0
					|| ip.equalsIgnoreCase("unknown"))
				ip = request.getHeader("WL-Proxy-Client-IP");
			if (ip == null || ip.length() == 0
					|| ip.equalsIgnoreCase("unknown"))
				ip = request.getRemoteAddr();

			System.out.println(ip);

			String str = "";
			String macAddress = "";
			try {
				Process p = Runtime.getRuntime().exec("nbtstat -A " + ip);
				InputStreamReader ir = new InputStreamReader(p.getInputStream());
				LineNumberReader input = new LineNumberReader(ir);
				for (int i = 1; i < 100; i++) {
					str = input.readLine();
					System.out.println(str);
					if (str != null) {
						if (str.indexOf("MAC Address") > 1) {
				            System.out.println("XX");
							macAddress = str.substring(str
									.indexOf("MAC Address") + 14, str.length());
							break;
						}
					}
				}
			} catch (IOException e) {
				e.printStackTrace(System.out);
			}
		%>
		ip:<%=ip %>
        macAddress:<%=macAddress %>
	</body>
</html> 

我在两台电脑的cmd下运行了,也不行,都能得到对方的ip,但不能使用nbstat 

猜测:估计是有防火墙之类的东西阻止别的计算机用nbstat访问适配器信息

分享到:
评论

相关推荐

    关于Windows环境下常用网络命令的实验.docx

    该命令在自动获取 IP 地址的客户端有特殊的用途。IPCONFIG 命令可以显示网络适配器的物理地址、主机的 IP 地址、子网掩码以及默认网关等。 四、NBSTAT 命令 NBSTAT 命令用于诊断 TCP/IP 上的 NetBIOS 协议统计和...

    常用的网络基本命令 ping nbtstat

    `nbtstat`命令用于显示基于TCP/IP的NetBIOS协议统计和当前TCP/IP连接,有助于获取远程主机的NETBIOS信息,包括用户名、工作群组和MAC地址。参数如`-a`用于获取指定机器名的NETBIOS信息,`-A`需要IP地址,而`-n`则列...

    网络常用密令.docx

    6. **IPConfig命令**:IPConfig用于显示网络适配器的IP地址、子网掩码、默认网关等信息,也可以刷新DNS缓存或释放、重新获取IP地址。 7. **Nslookup命令**:Nslookup用于查询DNS记录,验证域名到IP地址的转换是否...

    《Windows网络编程技术教程》讲义教案17附录ANet

    4. **NetBIOS命令**:NetBIOS命令包括了如`nbtstat`(NetBIOS over TCP/IP状态)、`nbstat`(NetBIOS状态)等,用于查询和管理网络上的NetBIOS资源。这些命令在描述中提到的13页PDF中应有详细说明。 5. **Windows中...

    基于netbios发现内网存活主机(第十九课)1

    使用`-sU`参数进行UDP扫描,`--script nbstat.nse -p137`则指定运行nbstat脚本来检查NetBIOS状态,`192.168.1.0/24`是目标网络。 2. **Metasploit(msf)**:这是一个安全框架,其中的`auxiliary/scanner/netbios/...

    C网络编程可用.pdf

    通过nbstat命令,可以查询本地或远程机器的NetBIOS状态和名称表。 总的来说,C语言网络编程涉及到使用Winsock API进行网络通信,理解OSI模型、NetBIOS和WINS服务对于编写有效的网络程序至关重要。开发者需要根据...

    基于netbios发现内网存活主机(第十九课).docx

    它依赖于WINS(Windows Internet Name Service)、广播或Lmhost文件来解析NetBIOS名称(即基于NETBIOS协议的计算机名称)为对应的IP地址,从而实现通信。NetBIOS名称解析是通过UDP端口137进行的,这个端口被用来执行...

Global site tag (gtag.js) - Google Analytics