程序下载
程序说明
程序功能
- 主机探测(基于 nmap 命令)
- 端口探测(基于 nmap 命令)
- API/URI 探测(基于 CURL 命令)
使用示例
主机探测
nmap 对应命令:
nmap -sn -PE ip/域名
nmap 命令探测实现(Zen Nmap GUI 工具)
程序探测实现
public PingResult ping(String nmapPath, List<String> urls){
NmapUtil util = new NmapUtil(nmapPath);
return util.detectHost(urls);
}
? PingResult 类定义如下:
@Data
public class PingResult {
private double timeConsume;
private Map<String,Double> latencyInfo;
}
postman 调用返回
端口探测
nmap 对应命令:
nmap -sS -p port1,port2 ip/域名
nmap 探测实现
程序探测实现
public PortDetectResult port(String nmapPath, String url, List<String> ports){
NmapUtil util = new NmapUtil(nmapPath);
return util.detectPort(url, ports);
}
- 实例化
NmapUtil 类,并传入 nmap 命令的路径。 - 调用
detectPort 方法,传入对应的 URL 与 端口信息,该方法会对单个 URL 的多个端口进行探测,并返回探测的结果。detectPort 有两个重载方法:
public List<PortDetectResult> detectPort(List<String> urlList, List<String> portList) public PortDetectResult detectPort(String url, List<String> portList) - 单个 URL 的探测结果封装为
PortDetectResult 类。类定义如下:
@Data
public class PortDetectResult {
private String resId;
private List<NmapPort> portInfo;
private Double timeConsume;
private Double latency;
}
posman 调用返回
API 探测
参考:curl 命令详解
程序实现
public Map<String, CurlDetectResult> curl(List<String> url){
CurlUtil util = new CurlUtil();
Map<String, CurlDetectResult> map = util.detectUrl(CurlDetectResult.class, url);
return map;
}
- 实例化
CurlUtil 类。 - 调用
detectUrl 方法进行探测。其中,第一个参数为 Class 类型的对象,第二个为要探测的 URL。 - 返回为传入的
Class 实例化对象。 - 对于要传入的
Class 类型对象,以 CurlDetectResult 为例。其定义如下:
@Data
@AllArgsConstructor
public class CurlDetectResult {
public static final String command = "curl -m 10 -sS -o /dev/null -w \"{\"time_connect\": %{time_connect},\"time_nslookup\":%{time_namelookup},\"time_total\": %{time_total}, \"http_code\":%{http_code}}\"";
private Double time_nslookup;
private Double time_connect;
private Double time_total;
private int http_code;
private boolean isNormal(){
return this.http_code != 0 && http_code != 404 && http_code < 500;
}
}
postman 调用返回
|