`
欧阳晓
  • 浏览: 44362 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

多线程的运用-------端口扫描

阅读更多

                                                        端口扫描

一、   背景:一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。进行扫描的方法很多,可以是手工进行扫描,也可以用端口扫描软件进行。 手动扫描的命令式telnet,而电脑上有2^32个端口,如果每一个多是这样的输入的话,我想你的手也会软了。于是,像我们这些懒人就想怎样用软件来实现端口扫描。

二、技术点:1、多线程:如果只启动一个线程的话2^32个端口需要的时间可以用小时计算,我没有全部扫完,所以结果也不知道。解决这个问题需要用到多线程原理(多线程就是同时存在N个执行体,按几条不同的执行线索共同工作的情况。程序,进程,线程,可以从不同的角度去理解。程序就是一段静态的代码,可以理解成一组计算机命令的集合。进行就是这个程序一次动态的执行过程,从代码的加载到执行完毕的一个过程。线程是一个比进程小的单位,一个进程再执行的过程中可以产生多个线程,每个线程也是由生产到销毁,可以理解成是进行的子集。

        2socket中的close方法:不需要一个socket的时候应关闭它,因为socket是一种有限的系统资源。关闭socket将释放有关的资源,并允许绑定在此socket上的端口被重新使用。Socket被关闭之后就不能再向它收发数据

三、   收获:虽然只是一个小的项目,但是,让我体会了多线程的精华。

 

 

 

//创建扫描端口类
public class PortScanner extends JFrame {
	private JTextField jtf;
	private JTextField jtf1;
	private JTextField jtf2;
	private JTextArea jta;

	// 定义显示的界面的方法
	public void initUI() {
		this.setTitle("端口扫描");
		this.setSize(600, 400);
		this.setLayout(new FlowLayout());
		javax.swing.JLabel jl = new javax.swing.JLabel("IP:");
		jtf = new javax.swing.JTextField(10);
		javax.swing.JLabel jl1 = new javax.swing.JLabel("开始端口:");
		jtf1 = new javax.swing.JTextField(5);
		javax.swing.JLabel jl2 = new javax.swing.JLabel("结束端口:");
		jtf2 = new javax.swing.JTextField(5);
		javax.swing.JButton jbt = new javax.swing.JButton("开始扫描");
		jta = new javax.swing.JTextArea(20, 30);
		javax.swing.JScrollPane jsp=new JScrollPane(jta);
		jsp.setPreferredSize(new Dimension(300,300));
		this.add(jl);
		this.add(jtf);
		this.add(jl1);
		this.add(jtf1);
		this.add(jl2);
		this.add(jtf2);
		this.add(jbt);
		this.add(jsp);
		// 创建监听
		jbt.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if ("开始扫描".equals(e.getActionCommand())) {
					jta.append("开始扫描");
					action();
				}
			}
		});
//		this.add(jta);
		this.setDefaultCloseOperation(3);
		this.setVisible(true);
	}

	/**
	 * 启动线程的方法
	 */
	public void action() {
		String IP = jtf.getText();
		int StarPort = Integer.parseInt(jtf1.getText());
		int EndPort = Integer.parseInt(jtf2.getText());
		int i = EndPort - StarPort;
		//循环启动线程
		for (int j = 0; j <= 10; j++) {
			ScannerThread st1 = new ScannerThread(IP, j * (i / 10)+StarPort, (j + 1) * (i
					/ 10)+StarPort, jta);
			st1.start();
			System.out.println(j);
		}
		ScannerThread st = new ScannerThread(IP, EndPort - (EndPort - StarPort)
				% 10, EndPort, jta);
		st.start();
	}

	/**
	 * 主函数
	 * @param args
	 */
	public static void main(String[] args) {
		PortScanner ps = new PortScanner();
		ps.initUI();
	}
}

 

package cn.netjava.portScanner;

import java.net.Socket;

import javax.swing.JTextArea;

//扫描线程类
public class ScannerThread extends Thread {
	private int StarPort, EndPort;
	private String IP;
	private JTextArea jta;

	public ScannerThread(String IP, int StarPort, int EndPort, JTextArea jta) {
		this.IP = IP;
		this.StarPort = StarPort;
		this.EndPort = EndPort;
		this.jta = jta;
	}

	public void run() {
		for (int i =StarPort ; i <= EndPort; i++) {
			try {
				java.net.Socket server = new Socket(IP, i);
				jta.append(i + "开放的端口:\n");
				server.close();
				server=null;
			} catch (Exception ef) {
				System.out.println("关闭的端口" + i);
			}
		}
	}

}

 

1
0
分享到:
评论
2 楼 马洪彪 2011-10-25  
刚才没有细看你的代码,粘贴后运行发现有很多问题,咱们输出跑到控制台窗口了?你测试了没有?
1 楼 我永远吹着泡泡 2010-10-06  
可否能教教小的

相关推荐

    JAVA多线程本地IP端口扫描器

    自己制作的JAVA制作的多线程的可用端口扫描。运用了java的swing组件,利用多线程加快扫描速度。功能:获得本地IP,扫描可用端口。 含有两个文件,(main)主类文件,线程类文件。

    端口扫描_控制台_窗体

    这是我写端口扫描器的所有Demo包括测试 是基于.NET C#代码 是这个扫描器出来的全部过程 包括在控制台下还是窗体下的全部都有 还有一些类的测试经过等 运用 泛型、多线程、还有自己写的ip累加类、委托、等

    SuperScan3(中文)

    多线程和异步技术的运用使程序具有极快的运行速度和极多的功能:针对任意IP地址范围(或从IP地址列表文件读取)的ping和端口扫描; 扫描任意端口(从内建列表或自定义范围); 解析和反向解析任意IP地址或范围; ...

    Visual Basic.NET自动化系统监控--RS-232串行通信.(清华出版.范逸之.廖锦棋)

    3.4.3 创建多线程 140 3.4.4 定时器与DoEvents() 151 常识问答 154 本章习题 154 第4章 串行通信中的字符与字节 155 4.1 字符与字节 155 4.1.1 字符和字节的差别 155 4.1.2 Visual Basic .NET中的 字符串类型...

    linux programming instances网络编程教程 附源代码

    实例三 端口扫描程序 实例四 网页更新检查程序 实例五 sniffer的基本实现 实例六 ip包检查程序 实例七 ip欺骗实例 实例八 路由测试程序 实例九 linux防火墙的编写 实例十 守护进程 实例十一 普通文件传输协议(tftp)...

    java源码包---java 源码 大量 实例

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

    Java范例开发大全 (源程序)

     第13章 多线程编程(教学视频:121分钟) 405  13.1 多线程的五种基本状态 405  实例222 启动线程 405  实例223 参赛者的比赛生活(线程休眠唤醒) 407  实例224 资源搜索并下载(线程...

    java范例开发大全(pdf&源码)

    第13章 多线程编程(教学视频:121分钟) 405 13.1 多线程的五种基本状态 405 实例222 启动线程 405 实例223 参赛者的比赛生活(线程休眠唤醒) 407 实例224 资源搜索并下载(线程等待和通报) 410 实例225 模拟淘宝...

    java范例开发大全源代码

     实例119 在指定的目录下创建多个临时文件 158  实例120 删除指定目录下的文件 160  实例121 移动指定目录下的文件 163  实例122 文件搜索引挚 167  7.2 字节流 169  实例123 复制指定目录下的文件 ...

    java范例开发大全

    第13章 多线程编程(教学视频:121分钟) 405 13.1 多线程的五种基本状态 405 实例222 启动线程 405 实例223 参赛者的比赛生活(线程休眠唤醒) 407 实例224 资源搜索并下载(线程等待和通报) 410 实例225 模拟淘宝...

    Java范例开发大全(全书源程序)

    第13章 多线程编程(教学视频:121分钟) 405 13.1 多线程的五种基本状态 405 实例222 启动线程 405 实例223 参赛者的比赛生活(线程休眠唤醒) 407 实例224 资源搜索并下载(线程等待和通报) 410 实例225 ...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...

    JAVA上百实例源码以及开源项目

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

    UML基础、案例与应用(第三版)].施穆勒.扫描版_2分.pdf

    5.5 接口和端口 58 5.5.1 可见性 58 5.5.2 作用域 59 5.6 小结 59 5.7 常见问题解答 60 5.8 小测验和习题 60 5.8.1 小测验 60 5.8.2 习题 60 第6章 介绍用例 61 6.1 什么是用例 61 6.2 用例的重要性 62 6.3 举例:...

    JAVA上百实例源码以及开源项目源代码

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...

    SysinternalsSuite windows工具集合

    Junction: 创建 NTFS卷上的符号链接(类似Linux的符号链接,灵活运用的话相当实用) LDMDump: 可以转储 Logical Disk Manager 在磁盘中的数据库.(LDMDump) ListDLLs: 列出当前载入的所有 DLLs 及他们的位置和版本...

    java源码包2

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历...

    java源码包3

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历...

Global site tag (gtag.js) - Google Analytics