回到首页| 网络安全 名人故事 申请书 | 名人名言 财富榜 关于我们

当前位置:名人故事传 > 互联网 > 网络资讯 > > 正文

Android系统端口扫描器编写初探

07-16  网络资讯     来源: 未知  

最近,很想在安卓手机上玩一下端口扫描器。再者,之前没有写过能运行于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();

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所示。

www.weixianmanbu.com/article/163.html

由图我们可以看到,在端口100到150范围内,被测笔记本电脑中有135和139这两个端口开放,和图2信息正好匹配。通过测试,该端口扫描器可以实现对给定的IP地址、指定范围的端口进行扫描。

互联网 网络安全 申请书 创业资讯 创业故事明朝十六帝故事
© 2012-2022 名人故事传网版权所有 关于我们 | 版权声明 | 网站协议 | 友情申请 | 免责声明 | 网站地图 | 联系我们 | 广告服务