新聞中心
如何用java實現tcp connect,tcp syn端口掃描
connect比較簡單,就是用Socket+多線程,每個端口創(chuàng)建一次連接,沒連上是不會往下執(zhí)行的,會拋出異常,網上有源碼,都是這個方法。
創(chuàng)新互聯專業(yè)為企業(yè)提供東山網站建設、東山做網站、東山網站設計、東山網站制作等企業(yè)網站建設、網頁設計與制作、東山企業(yè)網站模板建站服務,10多年東山做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
syn和FIN還不知道咋實現,可以考慮用本地方法。
有沒有用java代碼操作nmap進行過端口掃描的
nmap端口狀態(tài)解析
open , 應用程序在該端口接收 TCP 連接或者 UDP 報文。
closed 關閉的端口對于nmap也是可訪問的, 它接收nmap探測報文并作出響應。但沒有應用程序在其上監(jiān)聽。
filtered 由于包過濾阻止探測報文到達端口,nmap無法確定該端口是否開放。過濾可能來自專業(yè)的防火墻設備,路由規(guī)則 或者主機上的軟件防火墻。
unfiltered 未被過濾狀態(tài)意味著端口可訪問,但是nmap無法確定它是開放還是關閉。 只有用于映射防火墻規(guī)則集的 ACK 掃描才會把端口分類到這個狀態(tài)。
java掃描局域網的端口
直接上代碼:
import?java.net.Socket;
import?java.text.SimpleDateFormat;
import?java.util.Date;
public?class?PortScanner?extends?Thread?{
private?int[]?p;
Socket?ss?=?null;
public?PortScanner(int[]?p)?{
this.p?=?p;
}
public?static?void?main(String[]?args)?{
for?(int?i?=?0;?i??65535;?i?=?i?+?100)?{
new?PortScanner(new?int[]?{?i?+?1,?i?+?100?}).start();
}
}
@Override
public?void?run()?{
for?(int?i?=?p[0];?i??p[1];?i++)?{
try?{
ss?=?new?Socket("8.8.8.8",?i);
System.out.println("掃描到端口:?"?+?i);
}?catch?(Exception?e)?{
//?System.out.println("關閉端口:?"?+?i);
}
}
}
}
如何用java語言實現端口掃描器
使用 DatagramSocket(int port) 建立socket(套間字)服務。
將數據打包到DatagramPacket中去
通過socket服務發(fā)送 (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"); //需要發(fā)送的地址
} 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); //發(fā)送數據
} catch (IOException e) {
}
ds.close();
}
}
接收步驟:
使用 DatagramSocket(int port) 建立socket(套間字)服務。(我們注意到此服務即可以接收,又可以發(fā)送),port指定監(jiān)視接受端口。
定義一個數據包(DatagramPacket),儲存接收到的數據,使用其中的方法提取傳送的內容
通過DatagramSocket 的receive方法將接受到的數據存入上面定義的包中
使用DatagramPacket的方法,提取數據。
關閉資源。
import java.net.*;
public class Rec {
public static void main(String[] args) throws Exception {
DatagramSocket ds = new DatagramSocket(10000); //定義服務,監(jiān)視端口上面的發(fā)送端口,注意不是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();//關閉資源
}
}
修改一個JAVA源程序,使它能掃描指定IP的主機的UDP端口
單線程的
import java.net.*;
public class UDP
{
public static void main(String args[])
{
for (int port=0;port=65535;port++) {
try {
DatagramSocket server=new DatagramSocket(port);
server.close();
}
catch(SocketException e) {
System.out.println("UDP端口"+port+"開放!");
}
}
}
}
希望能夠幫助到你,望采納!
網站欄目:本機端口掃描java代碼 本機端口掃描java代碼
本文鏈接:http://ef60e0e.cn/article/hpshpg.html