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

时间:2024.4.30

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

IPScan类的实现

package scan.pratice;

import java.net.InetAddress;

import java.net.Socket;

import java.net.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("java.net.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 java.net.InetAddress;

import java.net.Socket;

import java.net.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 java.net.InetAddress;

import java.net.Socket;

import java.net.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("java.net.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");

更多相关推荐:
java计算器设计报告

摘要本计算器是由java语言所编程设计的标准计算器可以进行十进制下的四则运算加减乘除开平方求余求倒数还可以实现二进制与十进制之间的转换通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法以便...

计算器设计的java课程设计报告

华东交通大学课程设计华东交通大学课程设计课程设计题目计算器设计课程题目年级专业学号姓名组员指导教师Java程序设计信息一班1华东交通大学课程设计课程设计论文任务书基础学院信息与计算科学专业20xx1班一课程设计...

java计算器设计报告

设计报告课题名称计算器设计学院专业班级学号学生指导教师教务处年月日

java计算器设计报告

枣庄学院信息科学与工程学院课程设计任务书题目学号031503070311姓名王宇刘志伟王传翔专业课程java程序设计与实践教程指导教师王琳琳职称讲师完成时间20xx年12月20xx年1月枣庄学院信息科学与工程学...

Java计算器课程设计报告

Java计算器Java计算器Java课程设计报告姓名学号专业0Java计算器一程序要实现的功能基础功能类似windows计算器普通计算器所具有的数的输入加减乘除开根号求倒数退格清空以及数字储存器中的MR显示MC...

Java简单计算器(程序设计报告)

JAVA课程设计报告哈尔滨哈商业大学JAVA课程设计课程名称课题名称简单计算器姓名学号班级宋双龙20xx5094028108级软件工程教育20xx年10月20日1一实验目的使用Eclipse软件制作简单计算器实...

Java课程设计报告-计算器

Java课程设计报告计算器第一部分设计的内容要求11Windows自带计算器版面设计12计算器计算功能算法实现第二部分设计思想21根据图形用户界面设计方法设计计算器版面容器类窗口Window类面板Panel类框...

java课程设计++计算器[1]

JAVA程序设计期末结课大作业姓名张可新学号20xx3259班级信工1202题目java课程设计计算器成绩汇总第1页目录一课程设计任务及要求3二需求分析3三设计思路3四详细设计4五运行调试与分析讨论9六设计体会...

java课程设计报告_简单图形界面计算器的设计

Java课程设计简单图形界面计算器的设计课程名称Java程序设计选题名称简单图形界面计算器的设计专业班级姓名学号指导教师简单图形界面计算器的设计1一设计任务与目标本次java程序设计我的设计任务是设计一个图形界...

Java课程设计(计算器)

课程设计大作业报告课程名称java语言程序设计设计题目计算器院系班级计算机科学与技术设计者xx学号xx指导教师xx设计时间昆明学院昆明学院课程设计大作业任务书课程设计大作业报告1课程设计介绍11课程设计内容设计...

java 计算器

实习报告课程名称实习题目专业班级学号学生姓名实习成绩指导教师20xx年1月北京邮电大学世纪学院实习报告前言本计算器可以进行简单的四则运算加减乘除但仅限于十进制下还可以进行八进制十进制十六进制之间的相互转换八进制...

java计算器设计报告 -

课程设计题目java计算器设计报告学生姓名学号学院专业指导教师1摘要Java具有面向对象与平台无关安全稳定和多线程等优良特性是目前软件设计中优秀的编程语言Java不仅可以用来开发大型的应用程序而且特别适合于in...

java计算器设计报告(42篇)