java Ping操作(测试网络)

本文介绍了Java中如何进行Ping操作以及其在网络安全性中的重要性。通过模拟禁止Ping响应,可以有效防御部分DDoS攻击,并减少黑客入侵的可能性。内容包括Ping命令的使用及其在不同操作系统下的参数差异,以及在安全防护中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明:
Ping命令是个危险的命令,用它可以知道你的操作系统,IP等,为了安全禁Ping是个很好的方法,也是防DDOS攻击的。应该是有外部网络试图连接你的UDP的1434端口,不知道你打了补丁没有。
黑客入侵时,大多使用Ping命令来检测主机,如果Ping不通,水平差的“黑客”大多就会知难而退。事实上,完全可以造成一种假相,即使我们在线,但对方Ping时也不能相通,这样就能躲避很多攻击。
所以测试时,应确定以下两个方面:
1.确保Ping命令可用。
2.确认操作系统,不同系统,Ping命令的参数不一样。

未例代码如下:

/**
* 测试设备网络状态
*
* @return boolean
* @throws Exception
*/
private static boolean connectTest() throws Exception {

String OS = System.getProperty("os.name").toLowerCase();
int pingTimes = 4;
String pingCommand = "";
if (OS.indexOf("windows")>=0) {
pingCommand = "ping " + ip + " -n " + pingTimes;
} else {
pingCommand = "ping " + "-c " + pingTimes + " " + ip;
}
boolean status = isReachable(pingCommand, pingTimes);

if (!status) {
throw new Exception("设备不能连接(ping 不通!!!)");
}

return status;
}


/** * 测试是否能ping通
* * @param server
* * @param timeout
* * @return */
private static boolean isReachable(String pingCommand, int pingTimes) {
BufferedReader in = null;
Runtime r = Runtime.getRuntime();
try {
// 执行命令并获取输出
System.out.println(pingCommand);
Process p = r.exec(pingCommand);
if (p == null) {
return false;
}
in = new BufferedReader(new InputStreamReader(p.getInputStream()));
// 逐行检查输出,计算类似出现=23ms TTL=62字样的次数
int connectedCount = 0;
String line = null;
while ((line = in.readLine()) != null) {
connectedCount += getCheckResult(line);
}
// 如果出现类似=23ms TTL=62这样的字样,出现的次数=测试次数则返回真
return connectedCount == pingTimes;
} catch (Exception ex) {
ex.printStackTrace();
// 出现异常则返回假
return false;}
finally {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值