打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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地址、指定范围的端口进行扫描。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
详解常见漏洞扫描器及网络扫描技术(图)
java实现P2P通信
UC头条:基础网络知识点要掌握
20-java笔记-网络编程
Java网络通信 TCP、UDP
一文学会Java之网络编程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服