收藏 分销(赏)

简单端口扫描器java的设计与实现.doc

上传人:精**** 文档编号:2492746 上传时间:2024-05-30 格式:DOC 页数:13 大小:35.04KB 下载积分:8 金币
下载 相关 举报
简单端口扫描器java的设计与实现.doc_第1页
第1页 / 共13页
简单端口扫描器java的设计与实现.doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
(完整word版)简单端口扫描器java的设计与实现 简单端口扫描器java的设计与实现 IPScan类的实现 package scan.pratice; import .InetAddress; import .Socket; import .UnknownHostException; import java.util.ArrayList; import java.util.ListIterator; public class IPScan { static long startTime=System.currentTimeMillis(); //获取开始时间 public static void main(String[] args) { if(args.length !=2){ System.out.println("参数不对"); } int startIP = Integer.parseInt(args[0]); //获得起始IP,因为args[]是String类型,所以要强制转换成int类型 int endIP = Integer.parseInt(args[1]); //获得终止IP,同上 ArrayList result = new ArrayList<String>(); //ip地址扫描 for(int id=startIP;id<=endIP;id++){ String addres= "10.28.23."; try { Socket s=new Socket(addres+id,8000); //建立连接 } catch (UnknownHostException e ) { }catch(Exception e){ //System.out.println(e.toString()); if(e.toString().endsWith(".ConnectException: Connection timed out: connect")){ System.out.println(addres+id+":not exist."); }else{ System.out.println(addres+id+":exist."); } } } ListIterator li = result.listIterator(); //获得ArrayList的ListIterator while(li.hasNext()){ //如果li里面有元素 System.out.println(li.next().toString()); //打印出指向的元素,同时将指向下一个元素 } long endTime=System.currentTimeMillis(); //获取结束时间 System.out.println("程序运行时间: "+(endTime-startTime)+"ms"); } } PortScan类的实现 package scan.pratice; import java.io.IOException; import .InetAddress; import .Socket; import .UnknownHostException; import java.util.ArrayList; import java.util.ListIterator; public class PortScan { static long startTime=System.currentTimeMillis(); //获取开始时间 public static void main(String[] args) { if(args.length !=3){ System.out.println("参数不对"); } String ip = args[0]; //获得我们指定的服务器地址 int startPort = Integer.parseInt(args[1]); //获得起始端口号,因为args[]是String类型,所以要强制转换成int类型 int endPort = Integer.parseInt(args[2]); //获得终止端口号,同上 if(startPort<1||startPort>65535||endPort<1||endPort>65535){ //检查端口是否在合法范围1~65535 System.out.printf("端口范围必须在1~65535以内!"); return; }else if(startPort>endPort){ //比较起始端口和终止端口 System.out.println("端口输入有误! 起始端口必须小于终止端口"); return; } InetAddress address; try{ address = InetAddress.getByName(ip); //转换类型 }catch(UnknownHostException e){ System.out.println("无法找到 "+ ip); return; } ArrayList result = new ArrayList<String>(); //端口扫描 for(int nport=startPort;nport<=endPort;nport++){ String typeport=""; switch( nport ){//其实这儿可以不用switch,直接用个hash表记录就可以 case 21: typeport = "(FTP)"; break; case 23: typeport = "(TELNET)"; break; case 25: typeport = "(SMTP)"; break; case 80: typeport = "(HTTP)"; break; case 110: typeport = "(POP)"; break; case 139: typeport = "(netBIOS)"; break; case 1433: typeport = "(SQL Server)"; break; case 3389: typeport = "(Terminal Service)"; break; case 443: typeport = "(HTTPS)"; break; case 1521: typeport = "(Oracle)"; break; } //从起始端口到终止端口进行循环 try{ //System.out.print("Scanning "+nport); //打印扫描进度 System.out.println(ip + ":"+nport); Socket s=new Socket(address,nport); //建立连接 //关闭连接 if(s.isConnected()){ result.add("端口号:"+nport+typeport+" open"); } s.close(); //将打开的端口添加到ArrayList result里面 //System.out.println(" : open"); //打印状态 }catch(IOException e){ System.out.println(e.toString()); //System.out.println(":close"); //打印状态 result.add("端口号:"+nport+typeport+" close"); } } ListIterator li = result.listIterator(); //获得ArrayList的ListIterator while(li.hasNext()){ //如果li里面有元素 System.out.println(li.next().toString()); //打印出指向的元素,同时将指向下一个元素 } long endTime=System.currentTimeMillis(); //获取结束时间 System.out.println("程序运行时间: "+(endTime-startTime)+"ms"); } } TCPConnect类的实现 package scan.pratice; import java.io.IOException; import .InetAddress; import .Socket; import .UnknownHostException; import java.util.ArrayList; import java.util.ListIterator; public class TCPConnect { static long startTime=System.currentTimeMillis(); //获取开始时间 public static void main(String[] args) { if(args.length !=3){ System.out.println("参数不对"); } String ip = args[0]; //获得我们指定的服务器地址 int startPort = Integer.parseInt(args[1]); //获得起始端口号,因为args[]是String类型,所以要强制转换成int类型 int endPort = Integer.parseInt(args[2]); //获得终止端口号,同上 if(startPort<1||startPort>65535||endPort<1||endPort>65535){ //检查端口是否在合法范围1~65535 System.out.printf("端口范围必须在1~65535以内!"); return; }else if(startPort>endPort){ //比较起始端口和终止端口 System.out.println("端口输入有误! 起始端口必须小于终止端口"); return; } InetAddress address; try{ address = InetAddress.getByName(ip); //转换类型 }catch(UnknownHostException e){ System.out.println("无法找到 "+ ip); return; } ArrayList result = new ArrayList<String>(); /* //端口扫描 for(int nport=startPort;nport<=endPort;nport++){ String typeport=""; switch( nport ){//其实这儿可以不用switch,直接用个hash表记录就可以 case 21: typeport = "(FTP)"; break; case 23: typeport = "(TELNET)"; break; case 25: typeport = "(SMTP)"; break; case 80: typeport = "(HTTP)"; break; case 110: typeport = "(POP)"; break; case 139: typeport = "(netBIOS)"; break; case 1433: typeport = "(SQL Server)"; break; case 3389: typeport = "(Terminal Service)"; break; case 443: typeport = "(HTTPS)"; break; case 1521: typeport = "(Oracle)"; break; } //从起始端口到终止端口进行循环 try{ //System.out.print("Scanning "+nport); //打印扫描进度 System.out.println(ip + ":"+nport); Socket s=new Socket(address,nport); //建立连接 //关闭连接 if(s.isConnected()){ result.add("端口号:"+nport+typeport+" open"); } s.close(); //将打开的端口添加到ArrayList result里面 //System.out.println(" : open"); //打印状态 }catch(IOException e){ System.out.println(e.toString()); //System.out.println(":close"); //打印状态 result.add("端口号:"+nport+typeport+" close"); } }*/ //ip地址扫描 for(int id=178;id<183;id++){ String addres= "10.28.23."; try { Socket s=new Socket(addres+id,8000); //建立连接 } catch (UnknownHostException e ) { }catch(Exception e){ //System.out.println(e.toString()); if(e.toString().endsWith(".ConnectException: Connection timed out: connect")){ System.out.println(addres+id+":not exist."); }else{ System.out.println(addres+id+":exist."); } } } ListIterator li = result.listIterator(); //获得ArrayList的ListIterator while(li.hasNext()){ //如果li里面有元素 System.out.println(li.next().toString()); //打印出指向的元素,同时将指向下一个元素 } long endTime=System.currentTimeMillis(); //获取结束时间 System.out.println("程序运行时间: "+(endTime-startTime)+"ms"); } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服