android端口扫描工具,Android系统端口扫描器编写初探
最近,很想在安卓手機上玩一下端口掃描器。再者,之前沒有寫過能運行于Android系統的端口掃描器,于是想寫一個出來。
掃描器原理及安卓平臺上實現方式簡析我們知道端口有兩種,UDP和TCP。入侵者如果想要探測目標機開放了哪些端口、提供了哪些服務,就需要先與目標端口建立連接。如果目標主機端口有回復,則說明該端口開放,即為活動端口,所以如果我們想實現能運行于安卓系統的端口掃描器,可以從以下兩個思路入手。
1)基于UDP掃描實現
UDP掃描可通過發送沒有攜帶任何數據的UDP數據包到目標主機,如果某服務響應一個UDP報文,則表明該端口是開放的。我們可以利用這個類:DatagramPacket實現,這個類代表通過DatagramSocket發送或接收的數據報包。它包含很多信息,比如源主機和目標主機的信息等。用法如下:
DatagramPacket(byte[]data,intoffset,intlength,InetAddresshost,intaPort)。
構造一個新的DatagramPacket對象,將數據發送到參數host指定主機上的aPort端口。然后再構造DatagramChannel對象,DatagramChannel是一個能收發UDP包的通道,因為UDP是無連接的網絡協議,所以不能像其它通道那樣讀取和寫入。有了這個通道就可以發送和接收數據了。核心代碼如下:
DatagramChannelchannel=DatagramChannel.open();
連接的套接字通道到遠程地址:
localDatagramChannel.connect(newInetSocketAddress(ip,port));
localDatagramChannel.configureBlocking(true);
設置超時時間,通過這個通道發送一個數據:
localDatagramSocket.setSoTimeout(5000);
localDatagramSocket.send();
DatagramPacket
l=
new
DatagramPacket(arrayOfByte,
arrayOfByte.length);
localDatagramSocket.receive(l);
……
2)基于TCP掃描的實現
操作系統提供的connect()系統調用,可用來與每一個目標計算機的端口進行連接。如果端口處于偵聽狀態,那么connect()就能成功。否則,這個端口是不能用的,即沒有開放。
核心代碼如下:
try{
Socketsocket=newSocket();http://www.weixianmanbu.com/article/163.html
SocketAddresssocketAddress=newInetSocketAddress(IP,PORT);
socket.connect(socketAddress,timeout);
handler.sendEmptyMessage(i);
socket.close();
}catch(Exceptione){
Log.e("a",e.getMessage());
}
其中IP為要掃描的IP,PORT為要掃描的端口,timeout為等待建立連接的超時時間。這里用到了handler來實現不同線程之間的消息傳遞,這里傳遞的是端口信息。后文測試的端口掃描器就是用這種方法實現的。
安卓平臺端口掃描器測試
為了方便測試,首先搭建了局域網的測試環境,讓我的筆記本電腦和手機處在同一無線局域網內,然后查看筆記本的IP地址,如圖1所示。
在得知筆記本IP地址(192.168.137,.21)后,就可以用端口掃描器來掃描這個IP地址進行測試了,但首先我們先看看本機開放了哪些端口,如圖2所示。
我已經把端口掃描器安裝在我的Android系統的手機上了,打開端口掃描器,如圖3所示。
由圖3可以看到,掃描器的界面中有IP地址輸入框和掃描端口的范圍輸入框。輸入IP地址為132.168.137.21。為了測試,端口范圍可以填入100到150,點擊掃描按鈕即可,測試結果如圖4所示。
由圖我們可以看到,在端口100到150范圍內,被測筆記本電腦中有135和139這兩個端口開放,和圖2信息正好匹配。通過測試,該端口掃描器可以實現對給定的IP地址、指定范圍的端口進行掃描。
總結
以上是生活随笔為你收集整理的android端口扫描工具,Android系统端口扫描器编写初探的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java计算机毕业设计网络课程答疑系统M
- 下一篇: asp.net 旅游网站 源码+配置文档