求教高手,编写一个linux下端口扫描程序
这里介绍netcat命令检查开放端口
netcat(或nc)是一种命令行工具,可以使用TCP或UDP协议跨网络连接读取和写入数据。使用netcat可以扫描单个端口或者端口范围。
比如,要扫描IP地址192.168.8.51在范围内远程计算机上打开的TCP端口,4000-4004可以进行以下命令:nc -z -v 192.168.8.51 4000-4004
1-z选项指示nc仅扫描打开的端口,并不发送任何数据,并且-v用于获取更多详细信息。运行结果如下:
sl@Li:~/Works/brochain/corsac$ nc -z -v 192.168.8.51 4000-4004
Connection to 192.168.8.51 4000 port [tcp/*] succeeded!
nc: connect to 192.168.8.51 port 4001 (tcp) failed: Connection refused
nc: connect to 192.168.8.51 port 4002 (tcp) failed: Connection refused
nc: connect to 192.168.8.51 port 4003 (tcp) failed: Connection refused
nc: connect to 192.168.8.51 port 4004 (tcp) failed: Connection refused
远程端口扫描有哪个工具好呢???
这就要看你的需要了
如果是对单一一个IP进行扫描的话,还是老牌的扫描工具----X—SCAN
如果是对IP段进行扫描的话,建议用superscan
当然,2楼说的S扫描器确实不错,可以有很多的限制,而且准确率不太高。楼主可以看自己的需求选择。
谁有java本地监听与远程端口扫描 源程序
本地端口监听
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class SocketServer
{
private ServerSocket serverSocket;
private ExecutorService executorService;// 线程池
private final int POOL_SIZE = 600;// 单个CPU线程池大小
public SocketServer() throws IOException
{
serverSocket = new ServerSocket(9888);//监听的端口号
// Runtime的availableProcessor()方法返回当前系统的CPU数目.
executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * POOL_SIZE);
System.out.println("服务器启动");
}
public void service()
{
while (true)
{
Socket socket = null;
try
{
// 接收客户连接,只要客户进行了连接,就会触发accept();从而建立连接
socket = serverSocket.accept();
executorService.execute(new Handlers(socket));
//这里就是放业务逻辑的地方例如获取数据等等
} catch (Exception e)
{
e.printStackTrace();
System.out.println("socket Exception:" + e);
}
}
}
public static void main(String[] args) throws IOException
{
//Thread thread = new Thread(new PringtThread());
//thread.start();
new SocketServer().service();
}
}
端口扫描代码
import java.io.IOException;
import java.net.Socket;
public class SearchPort implements Runnable
{
public static void main(String[] args)
{
SearchPort searchPort = new SearchPort();
Thread thread = new Thread(searchPort);
thread.start();
}
@Override
public void run()
{
searchPort("192.168.1.2", 0, 9999);
}
public void searchPort(String ip,int begin, int end) {
// 1-65535
Socket s = null;
for (int i = begin; i end; i++) {
boolean flag = false;
try {
s = new Socket(ip, i);
flag = s.isConnected();
} catch (IOException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
}
if (flag) {
System.out.println("port " + i + " is open");
try {
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
// System.out.println("port " + i + " is close");
}
}
//System.out.println("seach port :" + begin + " to " + end + " ok..");
}
}
第一个端口监听的采用了线程池的技术,当大数据来的时候也不怕(某大型企业的部分源码),第二个例子是端口扫描器,采用了多线程扫描,代码直接复制就可以用的,从10点50分打代码11点半,不容易,望楼主采纳,有什么问题可以问我
如何扫描远程计算机被动打开的端口
扫描某一计算机开放的所有端口可在windows系统输入-netstat-an即可。首先,打开电脑的控制面板,然后在控制面板中找到防火墙,在防火墙设置左边选择点击高级设置,高级安全设置中,我们点击选择左边的入站规则,在右侧栏选择点击新建规则,规则类型选择端口类型,选择tcp协议,特定端口,端口自己规定,比如4444,何时应用规则,默认全选,退出之后,我们就看到创建的入站规则,该端口允许。
0条大神的评论