Java编写的端口的扫描程序(web端口80和ftp端口21)

14 篇文章 0 订阅
3 篇文章 0 订阅

1.数据的连接代码

package spider;

import java.sql.*;

public class Conn 
{
	public static Connection connection(){
	Connection conn=null;
	
	String url="jdbc:mysql://192.168.21.52:3306/spider";
	String root="zpp";
	String pwd="111";

	try{
	
	//加载驱动
	Class.forName("com.mysql.jdbc.Driver");
	
	conn=DriverManager.getConnection(url,root,pwd);

	
	}catch(Exception  e){
	e.printStackTrace();
	}
	
	return conn;
	
	}
}

2、开启线程进行验证(原本想使用多线程实现的,但是不行)

package spider;

import java.sql.*;
import java.net.*;
import java.io.*;



public class  StartIP extends Thread
{	

	long starttime=System.currentTimeMillis();	
	private Connection conn=null;

	private Statement stmt=null;
	
	String ip="";
	String sql="";
	int [] port={80,21};
	Socket socket=null;


	
	public StartIP(){
	//this.ip=ip;
	conn=Conn.connection();
	
	}



	//存储web  ip
	public   void Savewebip(String ip){

	try{
	//System.out.println(ip);
	stmt=conn.createStatement();
	sql="insert into spider2(ip,port)  values('"+ip+"','"+port[0]+"')";
	stmt.executeUpdate(sql);

	}
	catch(SQLException ew){
	System.out.println(ew.toString());
	}
	
	
	}



	//存储ftp   ip
	public   void Saveftpip(String ip){

	try{
	//System.out.println(ip);
	stmt=conn.createStatement();
	sql="insert into spider1(ip,port)  values('"+ip+"','"+port[1]+"')";
	stmt.executeUpdate(sql);

	}
	catch(SQLException ew){
	System.out.println(ew.toString());
	}
	
	
	}
	


	//验证ip的80端口是否打开
	public void SouwebIP(String ip){
	
	try{
	InetAddress inet=InetAddress.getByName(ip);
	InetSocketAddress  inetsocket=new InetSocketAddress(ip,port[0]);
	 socket=new Socket();
	 socket.connect(inetsocket,1000);
	// 
	 System.out.println(ip);
	socket.close();
	Savewebip(ip);
	}
	catch(IOException e){
		System.out.println(ip+"...web没有打开。。。");	
		try{
		socket.close();
		}
		catch(IOException r){
		r.printStackTrace();
		}
		e.printStackTrace();
	}
	finally{
	
	try{
		if(socket!=null)
		socket.close();
	}catch(IOException er){
	System.out.println("关闭。。。");
	//er.printStackTrace();
	
	}
	}
	
}




	//验证ip的21端口是否打开
	public void SouftpIP(String ip){
	
	try{
	InetAddress inet=InetAddress.getByName(ip);
	InetSocketAddress  inetsocket=new InetSocketAddress(ip,port[1]);
	 socket=new Socket();
	 socket.connect(inetsocket,1000);
	// 
	 System.out.println(ip);
	socket.close();
	Saveftpip(ip);
	}
	catch(IOException e){
		System.out.println(ip+"...ftp没有打开。。。");	
		try{
		socket.close();
		}
		catch(IOException r){
		r.printStackTrace();
		}
		e.printStackTrace();
	}
	finally{
	
	try{
		if(socket!=null)
		socket.close();
	}catch(IOException er){
	System.out.println("关闭。。。");
	//er.printStackTrace();
	
	}
	}
	
}
	
	
	
	

	//产生ip地址

	public    void MakeIp(){
	
	String ip1="";
	String ip2="";
	String ip="";
	//String sql="";
	//Socket socket=null;

	for(int i=0;i<255;i++){
 
	for(int j=0;j<255;j++){
	
	 ip1=String.valueOf(i);
	 ip2=String.valueOf(j);
	 ip="192.168."+ip1+"."+ip2;
	 //ip="192.168.21."+ip2;
	 
	SouwebIP(ip);
	SouftpIP(ip);
	//ping(ip);
	
	
	}
	}
	

	//记录扫描的时间
	long endtime=System.currentTimeMillis();
	
	long totaltime=endtime-starttime;
	
	System.out.println("total...."+totaltime+"ms");
	}




	public synchronized void run(){
	
	MakeIp();

}
	
}


3.主类

开启线程进行扫描

package spider;

import java.net.*;
import java.io.*;
import java.sql.*;

public class IP
{

public IP(){
	
	
	StartIP startIp1=new StartIP();
	startIp1.start();


}



public static void main(String [] args){
new IP();

}

}

这个是个人,参考相关的代码,写的,有什么错误,请指教 大笑,大家共同学习啊


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
public static JFrame main=new JFrame("JAVA端口扫描器"); //显示扫描结果 public static JTextArea Result=new JTextArea("",4,40); //滚动条面板 public static JScrollPane resultPane = new JScrollPane(Result,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); //输入主机名文本框 public static JTextField hostname=new JTextField("localhost",8); //输入ip地址前3位的输入框 public static JTextField fromip1=new JTextField("0",3); //输入ip地址4~6位的输入框 public static JTextField fromip2=new JTextField("0",3); //输入ip地址7~9位的输入框 public static JTextField fromip3=new JTextField("0",3); //输入起始ip地址最后4位的输入框 public static JTextField fromip4=new JTextField("0",3); //输入目标ip地址最后4位的输入框 public static JTextField toip=new JTextField("0",3); //输入最小端口的输入框 public static JTextField minPort=new JTextField("0",4); //输入最大端口的输入框 public static JTextField maxPort=new JTextField("1000",4); //输入最大线程数量的输入框 public static JTextField maxThread=new JTextField("100",3); //错误提示框 public static JDialog DLGError=new JDialog(main,"错误!"); public static JLabel DLGINFO=new JLabel(""); public static JLabel type=new JLabel("请选择:"); //扫描类型 public static JRadioButton radioIp = new JRadioButton("IP地址:"); public static JRadioButton radioHost = new JRadioButton("主机名:",true); //单选框组 public static ButtonGroup group = new ButtonGroup(); public static JLabel P1=new JLabel("端口范围:"); public static JLabel P2=new JLabel("~"); public static JLabel P3=new JLabel("~"); public static JLabel Pdot1 = new JLabel("."); public static JLabel Pdot2 = new JLabel("."); public static JLabel Pdot3 = new JLabel("."); public static JLabel TNUM=new JLabel("线程数:"); public static JLabel RST=new JLabel("扫描结果: "); public static JLabel con=new JLabel(" "); //定义按钮 public static JButton OK = new JButton("确定"); public static JButton Submit = new JButton("开始扫描"); public static JButton Cancel = new JButton("退出"); public static JButton saveButton = new JButton("保存扫描结果"); //菜单栏 public static JMenuBar myBar = new JMenuBar(); public static JMenu myMenu = new JMenu("文件(F)"); public static JMenuItem saveItem = new JMenuItem("保存扫描结果(S)"); public static JMenuItem exitItem = new JMenuItem("退出(Q)"); public static JMenu myMenu2 = new JMenu("帮助"); public static JMenuItem helpItem = new JMenuItem("阅读"); public static void main(String[] args){ main.setSize(500,400); main.setLocation(300,300); main.setResizable(false); main.setLayout(new GridBagLayout()); main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); DLGError.setSize(300,100); DLGError.setLocation(400,400); //添加“菜单栏” myMenu.add(saveItem); myMenu.add(exitItem); myMenu2.add(helpItem); myBar.add(myMenu); myBar.add(myMenu2); main.setJMenuBar(myBar); //设置热键 myMenu.setMnemonic('F'); saveItem.setMnemonic ('S'); //为“另存为”组件设置快捷键为ctrl+s saveItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_S,InputEvent.CTRL_MASK)); exitItem.setMnemonic('Q'); exitItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_E,InputEvent.CTRL_MASK)); //采用表格包型布局 Container mPanel = main.getContentPane(); GridBagConstraints c = new GridBagConstraints(); c.insets = new Insets(10,0,0,10); c.gridx = 0; c.gridy = 0; c.gridwidth = 10; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(type,c); group.add(radioIp); group.add(radioHost); c.gridx = 0; c.gridy = 1; c.gridwidth = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(radioIp,c); c.gridx = 1; c.gridy = 1; c.gridwidth = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(fromip1,c); c.gridx = 2; c.gridy = 1; c.gridwidth = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(Pdot1,c); c.gridx = 3; c.gridy = 1; c.gridwidth = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(fromip2,c); c.gridx = 4; c.gridy = 1; c.gridwidth = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(Pdot2,c); c.gridx = 5; c.gridy = 1; c.gridwidth = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(fromip3,c); c.gridx = 6; c.gridy = 1; c.gridwidth = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(Pdot3,c); c.gridx = 7; c.gridy = 1; c.gridwidth = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(fromip4,c); c.gridx = 8; c.gridy = 1; c.gridwidth = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(P2,c); c.gridx = 9; c.gridy = 1; c.gridwidth = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(toip,c); c.gridx = 0; c.gridy = 2; c.gridwidth = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(radioHost,c); c.gridx = 1; c.gridy = 2; c.gridwidth = 3; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(hostname,c); c.gridx = 0; c.gridy = 3; c.gridwidth = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(P1,c); c.gridx = 1; c.gridy = 3; c.gridwidth = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(minPort,c); c.gridx = 2; c.gridy = 3; c.gridwidth = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(P3,c); c.gridx = 3; c.gridy = 3; c.gridwidth = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(maxPort,c); c.gridx = 0; c.gridy = 4; c.gridwidth = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(TNUM,c); c.gridx = 1; c.gridy = 4; c.gridwidth = 3; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(maxThread,c);

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值