使用一个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访问适配器信息
分享到:
相关推荐
该命令在自动获取 IP 地址的客户端有特殊的用途。IPCONFIG 命令可以显示网络适配器的物理地址、主机的 IP 地址、子网掩码以及默认网关等。 四、NBSTAT 命令 NBSTAT 命令用于诊断 TCP/IP 上的 NetBIOS 协议统计和...
`nbtstat`命令用于显示基于TCP/IP的NetBIOS协议统计和当前TCP/IP连接,有助于获取远程主机的NETBIOS信息,包括用户名、工作群组和MAC地址。参数如`-a`用于获取指定机器名的NETBIOS信息,`-A`需要IP地址,而`-n`则列...
6. **IPConfig命令**:IPConfig用于显示网络适配器的IP地址、子网掩码、默认网关等信息,也可以刷新DNS缓存或释放、重新获取IP地址。 7. **Nslookup命令**:Nslookup用于查询DNS记录,验证域名到IP地址的转换是否...
4. **NetBIOS命令**:NetBIOS命令包括了如`nbtstat`(NetBIOS over TCP/IP状态)、`nbstat`(NetBIOS状态)等,用于查询和管理网络上的NetBIOS资源。这些命令在描述中提到的13页PDF中应有详细说明。 5. **Windows中...
使用`-sU`参数进行UDP扫描,`--script nbstat.nse -p137`则指定运行nbstat脚本来检查NetBIOS状态,`192.168.1.0/24`是目标网络。 2. **Metasploit(msf)**:这是一个安全框架,其中的`auxiliary/scanner/netbios/...
通过nbstat命令,可以查询本地或远程机器的NetBIOS状态和名称表。 总的来说,C语言网络编程涉及到使用Winsock API进行网络通信,理解OSI模型、NetBIOS和WINS服务对于编写有效的网络程序至关重要。开发者需要根据...
它依赖于WINS(Windows Internet Name Service)、广播或Lmhost文件来解析NetBIOS名称(即基于NETBIOS协议的计算机名称)为对应的IP地址,从而实现通信。NetBIOS名称解析是通过UDP端口137进行的,这个端口被用来执行...