如何编写一个端口扫描软件_如何编写一个端口扫描

hacker|
174

如何用Scapy写一个端口扫描器

常见的端口扫描类型有: 1. TCP 连接扫描 2. TCP SYN 扫描(也称为半开放扫描或stealth扫描) 3. TCP 圣诞树(Xmas Tree)扫描 4. TCP FIN 扫描 5. TCP 空扫描(Null) 6. TCP ACK 扫描 7. TCP 窗口扫描 8. UDP 扫描 下面先讲解每种扫描的原理

求教高手,编写一个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

如何用java语言实现端口扫描器

使用 DatagramSocket(int port) 建立socket(套间字)服务。

将数据打包到DatagramPacket中去

通过socket服务发送 (send()方法)

关闭资源

public static void main(String[] args) {

DatagramSocket ds = null; //建立套间字udpsocket服务

try {

ds = new DatagramSocket(8999); //实例化套间字,指定自己的port

} catch (SocketException e) {

System.out.println("Cannot open port!");

System.exit(1);

}

byte[] buf= "Hello, I am sender!".getBytes(); //数据

InetAddress destination = null ;

try {

destination = InetAddress.getByName("192.168.1.5"); //需要发送的地址

} catch (UnknownHostException e) {

System.out.println("Cannot open findhost!");

System.exit(1);

}

DatagramPacket dp =

new DatagramPacket(buf, buf.length, destination , 10000);

//打包到DatagramPacket类型中(DatagramSocket的send()方法接受此类,注意10000是接受地址的端口,不同于自己的端口!)

try {

ds.send(dp); //发送数据

} catch (IOException e) {

}

ds.close();

}

}

接收步骤:

使用 DatagramSocket(int port) 建立socket(套间字)服务。(我们注意到此服务即可以接收,又可以发送),port指定监视接受端口。

定义一个数据包(DatagramPacket),储存接收到的数据,使用其中的方法提取传送的内容

通过DatagramSocket 的receive方法将接受到的数据存入上面定义的包中

使用DatagramPacket的方法,提取数据。

关闭资源。

import java.net.*;

public class Rec {

public static void main(String[] args) throws Exception {

DatagramSocket ds = new DatagramSocket(10000); //定义服务,监视端口上面的发送端口,注意不是send本身端口

byte[] buf = new byte[1024];//接受内容的大小,注意不要溢出

DatagramPacket dp = new DatagramPacket(buf,0,buf.length);//定义一个接收的包

ds.receive(dp);//将接受内容封装到包中

String data = new String(dp.getData(), 0, dp.getLength());//利用getData()方法取出内容

System.out.println(data);//打印内容

ds.close();//关闭资源

}

}

nmap扫描端口命令

nmap扫描端口的命令是:nmap -PS ip地址。

使用该命令可以扫描目标地址所开放的端口地址,nmap 扫描器主要基本功能有三个,一是探测一组主机是否在线,其次是扫描主机端口,嗅探所提供的网络服务,还可以推断主机所用的操作系统。也可以深入探测 UDP 或者 TCP 端口,直至主机所使用的操作系统;还可以将所有探测结果记录到各种格式的日志中, 供进一步分析操作。

以下是一些 nmap 常用的命令:

查看当前开放的端口:nmap localhost。

查看主机端口(1024-65535)中开放的端口:nmap -p 1024-65535 localhost。

探测目标主机开放的端口:nmap -PS ip 地址。

探测所列出的目标主机端口:nmap -p22,80,3306 ip 地址。

探测目标主机操作系统类型、端口服务名称、版本信息:nmap -sV -O localhost。

0条大神的评论

发表评论