JAVA連接埠掃描

來源:互聯網
上載者:User

import java.net.*;<br /> import java.io.*;<br /> import java.awt.*;<br /> import java.awt.event.*;<br /> import javax.swing.*;</p><p> public class TCPThread extends Thread...{</p><p> public static InetAddress hostAddress;</p><p> //最小的連接埠號碼<br /> public static int MIN_port;<br /> //最大的連接埠號碼<br /> public static int MAX_port;</p><p> //線程總數<br /> private int threadnum; </p><p> //查詢方式:0為ip;1為主機名稱<br /> public static int type;<br /> //ip地址前3位<br /> public static int ip1;<br /> //ip地址4~6位<br /> public static int ip2;<br /> //ip地址7~9位<br /> public static int ip3;<br /> //起始ip地址的最後4位<br /> public static int ipstart;<br /> //結束ip地址的最後4位<br /> public static int ipend;<br /> //完整的ip地址<br /> public static String ipAll;<br /> //掃描的主機名稱或ip<br /> String hostname = "";<br /> //連接埠的類別<br /> String porttype = "0";</p><p> /**//*<br /> *建構函式<br /> */<br /> public TCPThread(String name,int threadnum)...{<br /> super(name);<br /> this.threadnum = threadnum;<br /> } </p><p> /**//*<br /> *運行函數<br /> */<br /> public void run() ...{</p><p> //ip地址<br /> int h = 0;<br /> //連接埠號碼<br /> int i = 0;<br /> Socket theTCPsocket;<br /> //根據ip地址進行掃描<br /> if(type == 0)...{</p><p> //ip地址迴圈掃描<br /> for(h = ipstart; h <=ipend; h++)...{</p><p> //組成完整的ip地址<br /> ipAll = "" + ip1 + "." + ip2 + "." + ip3 + "." + h;<br /> hostname = ipAll;</p><p> try...{<br /> //在給定主機名稱的情況下確定主機的 IP 位址<br /> hostAddress=InetAddress.getByName(ipAll);<br /> }<br /> catch(UnknownHostException e)...{<br /> }</p><p> //不同的連接埠迴圈掃描<br /> for (i = MIN_port+threadnum; i < MAX_port + Integer.parseInt(ThreadScan.maxThread.getText()); i += Integer.parseInt(ThreadScan.maxThread.getText()))...{<br /> try...{<br /> theTCPsocket=new Socket(hostAddress,i);<br /> theTCPsocket.close();<br /> ThreadScan.Result.append(hostname+":"+i);</p><p> //判斷連接埠的類別<br /> switch(i)...{<br /> case 21:<br /> porttype = "(FTP)";<br /> break;<br /> case 23:<br /> porttype = "(TELNET)";<br /> break;<br /> case 25:<br /> porttype = "(SMTP)";<br /> break;<br /> case 80:<br /> porttype = "(HTTP)";<br /> break;<br /> case 110:<br /> porttype = "(POP)";<br /> break;<br /> case 139:<br /> porttype = "(netBIOS)";<br /> break;<br /> case 1433:<br /> porttype = "(SQL Server)";<br /> break;<br /> case 3389:<br /> porttype = "(Terminal Service)";<br /> break;<br /> case 443:<br /> porttype = "(HTTPS)";<br /> break;<br /> case 1521:<br /> porttype = "(Oracle)";<br /> break;<br /> }</p><p> //連接埠沒有特定類別<br /> if(porttype.equals("0"))...{<br /> ThreadScan.Result.append("/n");<br /> }<br /> else...{<br /> ThreadScan.Result.append(":"+porttype+"/n");<br /> }<br /> }<br /> catch (IOException e)...{<br /> }<br /> }<br /> }</p><p> //掃描完成後,顯示掃描完成,並將“確定”按鈕設定為可用<br /> if (i==MAX_port+Integer.parseInt(ThreadScan.maxThread.getText()))...{<br /> ThreadScan.Result.append("/n"+"掃描完成...");</p><p> //將"確定"按鈕設定成為可用<br /> if(!ThreadScan.Submit.isEnabled())...{<br /> ThreadScan.Submit.setEnabled(true);<br /> }<br /> }<br /> }</p><p> //按照主機名稱進行連接埠掃描<br /> if(type == 1)...{<br /> for (i = MIN_port+threadnum; i < MAX_port+Integer.parseInt(ThreadScan.maxThread.getText()); i += Integer.parseInt(ThreadScan.maxThread.getText()))...{<br /> try...{<br /> theTCPsocket=new Socket(hostAddress,i);<br /> theTCPsocket.close();<br /> ThreadScan.Result.append(" "+i);<br /> switch(i)...{<br /> case 21:<br /> porttype = "(FTP)";<br /> break;<br /> case 23:<br /> porttype = "(TELNET)";<br /> break;<br /> case 25:<br /> porttype = "(SMTP)";<br /> break;<br /> case 80:<br /> porttype = "(HTTP)";<br /> break;<br /> case 110:<br /> porttype = "(POP)";<br /> break;<br /> case 139:<br /> porttype = "(netBIOS)";<br /> break;<br /> case 1433:<br /> porttype = "(SQL Server)";<br /> break;<br /> case 3389:<br /> porttype = "(Terminal Service)";<br /> break;<br /> case 443:<br /> porttype = "(HTTPS)";<br /> break;<br /> case 1521:<br /> porttype = "(Oracle)";<br /> break;<br /> }</p><p> //連接埠沒有特定類別<br /> if(porttype.equals("0"))...{<br /> ThreadScan.Result.append("/n");<br /> }<br /> else...{<br /> ThreadScan.Result.append(":"+porttype+"/n");<br /> }<br /> }<br /> catch (IOException e)...{<br /> }<br /> }</p><p> //掃描完成後,顯示掃描完成,並將【確定】按鈕設定為可用<br /> if (i==MAX_port+Integer.parseInt(ThreadScan.maxThread.getText()))...{<br /> ThreadScan.Result.append("/n"+"掃描完成...");</p><p> //將【確定】按鈕設定成為可用<br /> if(!ThreadScan.Submit.isEnabled())...{<br /> ThreadScan.Submit.setEnabled(true);<br /> }<br /> }<br /> }<br /> }<br />}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.