简单端口扫描器java的设计与实现
IPScan类的实现
package scan.pratice;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.ListIterator;
public class IPScan {
static long startTime=System.currentTimeMillis(); //获取开始时间 public static void main(String[] args) {
if(args.length !=2){
System.out.println("参数不对");
}
int startIP = Integer.parseInt(args[0]);
//获得起始IP,因为args[]是String类型,所以要强制转换成int类型 int endIP = Integer.parseInt(args[1]);
//获得终止IP,同上
ArrayList result = new ArrayList<String>();
//ip地址扫描
for(int id=startIP;id<=endIP;id++){
String addres= "10.28.23.";
try {
Socket s=new Socket(addres+id,8000); //建立连接 } catch (UnknownHostException e ) {
}catch(Exception e){
//System.out.println(e.toString());
if(e.toString().endsWith("java.net.ConnectException: Connection timed out: connect")){
System.out.println(addres+id+":not exist."); }else{
第二篇:一种改进的端口扫描器的设计与实现
4661)7(81?0&102.制控与量测机算计
?
..?
Computer
Measurement&Control
r磊}手FI罨阐12.g.
I瞩y1
文献标识码:A
529020)
,IJ
l
文章编号:1671—4598(2010)07—1664一03中圈分类号:TP206+.1
一种改进的端口扫描器的设计与实现
李继容,曾爱国
(五邑大学计算机学院,广东江门
摘要:端口扫描是网络入侵过程中非常重要的一种攻击预探测手段;对端口扫描进行检测,发现可能出现的攻击行为,可以有效地配合入侵检测系统完成预警、拦截和取证等工作。在简要介绍了端口扫描技术的原理及其检测技术的基础上,设计了一个将几种端口扫描技术综合在一起的且改进的端口扫描器,该端口扫描器包括了TCP扫描和UDP扫描,而TCP扫描再细分成3类;TCPconnect扫描
和TCP
SYN扫描、TCPFIN扫描。经过测试.该扫描器能在不同类型的网络中正常运行,且综合了多种扫描技术的优点.
关键词:端口扫描;检测;网络安全
ImprovedDesignandImplementationof
LiJirong,ZengAiguo
(SchooIofComputer
Abstract:Portscanningis
a
PortScanner
Science。WuYi
which
University,GuangDong
during
an
JiangMen
529020,China)
port
scan,
very
importantnetwork
occur
can
intrusionattackon
thepre—detectionmeans.Detectingthe
to
finddingthat
cept
aggressivebehaviorand
SO
mayeffectivelycopewithintrusiondetectionsystemcompletetheearlywarning,inter—
portscanning
evidence
on.Afterintroducingbrieflytheport—scanningtechnology,principleanddetectiontechniques.Aseveralandimproved
port
scanner
technologyintegrated
was
designed.whichincludedtheTCP
connect
portscanner
scanning?UDPscanning,whilethe
TCPscanning
scanner
furthersubdivided
in
into
threecategories;TCP
in
scanning,TCPSYN
scanning,TCPFINscanning.Aftertesting,the
a
couldbe
different
types
ofnetworksnormaloperation,andcombinedtheadvantagesof
security
variety
of
scanningtechnology.
Keywords:port
scanning;diction;network
O
引言
随着计算机网络的飞速发展,网络遭受到的攻击越来越多。
版本,这样就能间接或直观的了解到远程主机所存在的安全问题。端口扫描的T作原理[1]:向远程主机的端口发送不同的TCP标志包(TCP端口扫描),目标主机的端口状态(开放、关闭等)不同,对这些TCP标志包的同应包就有所不同,然后分析这些回应包,就可得出远程主机的端口开放情况。比如(是否能用匿名登陆,是否有可写的FTP目录,是否能用TELNET,HTTP)。发送的也可以是UDP包(UDP端口扫描),对UDP包,通过ICMP信息可确定目标主机的端口开放情况。UDP端口扫描简单,很容易被检测到,因此,目前使用最多的是TCP端口扫描。
端口扫描器并不是一个直接的攻击网络漏洞的程序,它仅仅能帮助我们发现目标机的某些内在的弱点。一个好的扫描器能对它得到的数据进行分析,帮助查找目标主机的漏洞,并且会为下一步进入这个系统方案的制定提供参考。
端口扫描器一般具有下面这3项功能[2]:(1)发现一个主机或网络;(2)一旦发现一台主机,就能发现正运行的这台主机在进行何种服务;(3)通过测试这些服务,发现漏洞。1.2端口扫描的检测
传统的端口扫描技术一般是在较短的时间段集中向目标主机发送大量的探测数据包,并根据返回数据包的信息来判断目标主机端口的分布情况。针对这种扫描技术,端口扫描检测系统采用的方法主要有两种:(1)对主机没有对外提供服务的端口进行监测,如果检测到有对这样端口的连接请求,就认为有端口扫描发生;(2)对整个网络流量进行监控,检查网络中所有的数据,并对异常情况进行记录,典型的如基于规则的检测方法。比较著名的端口扫描检测工具有Snort、watcher和Portsentry,它们有各自的优点u。3如下。
(1)Snort是一个轻量级的网络入侵检测系统。它的探测
网络入侵的第一步就是寻找计算机系统的安全漏洞或管理员对网络配置不当所造成的缺陷,进而盗取用户口令。非法访问计算机中的信息资源、窃取机密信息、破坏计算机系统。因此网络用户资源的安全防护要求日益迫切,对付网络入侵的理想方法是建立一个完全没有漏洞的系统。但这实际上是不可能实现的。一种实现的方法是,在原有系统的基础上,按照一定的安全策略建立相应的安全辅助系统。其中网络端口扫描器就是这样一类系统,因为一个端口就是一个潜在的通信通道,也就是一个入侵通道。网络端口扫描器它能够根据具体的应用环境,通过对网络的扫描,管理员可以及时了解网络的安全配置和运行的应用服务,尽可能早地通过网络扫描来发现安全漏洞,客观评估网络风险等级,并根据扫描的结果修补网络安全漏洞和系统中的错误配置,有效地阻止入侵事件的发生,做到防患于未然。
l端口扫描技术简介
1.1端口扫描的工作原理
端口扫描是一种非常重要的预攻击探测手段,几乎是所有网络入侵都需要使用的一种方法。它是一种可以自动检测远程或本地主机安全性弱点的程序,可以不留痕迹地发现远程服务器的各种TCP端口的分配状态以及提供的服务和它们的软件
收稿日期:2010一02—07;修回日期:2010—03—17。
基金项目:广东省自然科学基金项目(5013333);五邑大学青年基金项目(A200712)。
作者简介:李继容(1976一),女,湖南邵东人,讲师,硕士,主要从事网络安全、通信技术等方向的研究。
中华测控网
chinamca.com
万方数据
竞慧呈在0∑皇冀曼璺竺算竺堂口至蝥:。孝哩翟整璺查苎篓箩里内兰呈望苎竺翌苎苎竺苎苎童曼I警,专曼箜苎塑号要冀篓
!竺登誓,苎苎竺譬塑竺曼:要示。,.2.宝l作望篓学翌妻堂.妻恐i痞磊;三主示:在其上运行扫描模块的各种功能,扫描模块直接从扫描主机上通
l控制平台lI扫描模块l
2.2端口扫描的实现
整个端口扫描器的核心部分是扫描模块,它由很多子模块组成。其中包括了基本信息探测子模块(如本地主机名称,MAC地址,IP,子网掩码,网管)、扫描设置模块、端口扫描子模块(端口、服务),端口扫描模块中又包含了:TCP
con—
nect扫描、TCPSYN扫描、TCPFIN扫描和UDP扫描等子模块。网络根据用户的设置需求通过这些端口子模块进行扫描,然后对扫描到的信息进行分析,最后将扫描结果存放到扫描结果记录子模块中。
2.3本地主机基本信息功能子模块的实现
在使用扫描功能前,需要先选择本地主机正在使用的网卡,正确读出本机的基本资料如:主机名称、主机MAC地址、主机IP地址、子网掩码和网关后,软件便会自动计算出
万方数据
。调用connect()尝试连接,在确定。。nn。。。()成功后,程序磊妄g。。p。。,mm。‘:;蕻磊爵舅;磊址和端口号,‘。并≤若…。……‘”。。一…。…Ii品u占‘&anp。。tDlg::onH。ndl。C0nnects。。n(wPARAM
SOCKADDRthePeerNamel
int
size=sizeof(soekaddr)l
getpeername(theSocket,&-thePeerName。8‘‘size)‘if(closesocket(theSoeket)一一0){
}
closesocket(theSocket)I
/*this一>dwCurrentPortlnfoNo++;*/
)TCP
Connect扫描技术的一个最大的优点是不需要任何权
限,系统中的任何用户都有权利使用这个调用。另一个好处是速度快。但这种方法的缺点是很容易被发觉并过滤掉。目标计算机的日志文件会显示一连串的连接和连接出错的服务消息.目标计算机用户发现后就能很快使它关闭。
TCP
SYN扫描功能子模块
由于WindowsXP全面禁止了RAWSOCKET发送数据的功能,所以本功能子模块使用WinPcap实现数据收发功能。
中华测控网
chinamca.corn
2.5
?1666?计算机测最与控制第18卷
TCP
SYN扫描的流程:首先获得待扫描IP地址范围和端
ACK数据包RST数据包,
问,而且容易得出错误的结论,不过可以用它来判断目标系统
是Unix还是NT。
2.7
口范围,然后构造相应的TCPSYN数据包,并将数据包发
送;另外开启线程接收TCP界面显示该端口状态。
主要代码如下:
SYN
UDP扫描功能子模块
UDP扫描通过调用WSARecvFmm确定待扫描端口状态,简
并根据数据包内容判断指定端口的状态,然后通过主线程更新
化了编程难度。在实现UDP扫描的过程中使用了重叠端口模型。
主要代码如下:
Int
DWORDWINAPITcpSynScan(LPVOIDpParame)
{……
for(DWORD
nRes=WSARecvFrom(pSocketlnfo一>Socket。&RecvBuf.1?
&dwByteReev,&dwFlag,(sockaddr*)&5a,&nSize,&(pSocketlnfo--
>Overlapped),NULL);
dwPort=pThreadParament一>dwOriginalPortldw-
{
if(nRes!=O){
Port<=pThreadParament-->dwLastPort8L&!bStop;dwPort++)
{thePacket.theTcpHead.usDestPort=htons((WORD)dwPort)I
thePacket.thelpPacket.thelpHead.usCrc=0;dwErrorCode=WSAGetLastError()l
thePaeket.thelpPacket.thelpHead.uaCre=CheckSum((constcharg-)(&(thePacket.theIpPacket.thelpHead)),sizeof(IpHead));
thePacket.theTcpHead.usCrc
0
l
})
if(dwErrorCode==10054)//portClosed{
theFakeHeader.dwDestAddr=htonl(dwlP);thePaeket.theTep一
Head.usCrc=TcpCheckSum((char*)8L(thePacket.theTcpHead),DWORDdwLparam=psocketlnfo一>wPort;
(char*)&(theFakeHeader),28)}pMainWindow-->-SendMessage(WM—UDP—SCAN,pSocketlnfo—
if(pcapsendpacket(fp。(Uchar*)(&thePacket)。sizeof(TcpPack一et))!一O)
……l……}
>dwlp,dwLparam)l
)
else//port
f
open
DWORDdwLparam=pSocketlnfo-->wPort+Oxffff00001
循环遍历待扫描主机的每一个待扫描端口,并进行TCP数据包的端口信息填充,然后计算数据包校验和,最后通过
WinPcap发送数据包。
pMainWindow-->SendMessage(WM—UDP—SCAN,psocketlnfo一
>dwlp,dwLparam)}
}
此种扫描方式的优点是隐蔽性较好,扫描速度也比较快。同时通过对MAC地址的判断,可以对一些路由器进行端口扫描,缺点是需要root权限才能建立自己的SYN数据包。
2.6
WSACloseEvent(psocketlnfo一>Overlapped.hEvent);closesocket(pSocketlnfo-->Socket)l
deletepSocketlnfo;
TCP兀N扫描功能子模块
TCP
}
FIN扫描和TCPSYN扫描实现代码基本相同,区别
调用WSAReevFrom()判断其返回的错误号,如果返回的错误号是10054,证明系统已经收到被扫描主机发送的lC—MP不可达数据包,否则证明该端口开放,或者系统不存在。
在于TCPFIN扫描构造FIN数据包和TCPFIN扫描只接收
RST数据包,来确定指定端口是否关闭。
主要代码如下:
DWORDWINAPITcpFinScan(LPVOIDpPar)
{
3扫描结果
本文所作的试验是在我校“网络安全试验室”进行,试验时间在寒假期间。由于篇幅原因,本文在此只给出了“主机信
息扫描结果图”,如图2所示,以及“UDP扫描结果图”,如
currthreadcnt++;bFinSending—true;DWoRDdwThreadld:
CreateThread(NULL,0,TcpRstReceiverFin?pPar,0,&dwThreadld):
图3所示。从图2中可以看到,主机的名称是581,MAC地址是OO一50一56一co—OO—08,IP地址是lO.10.65.90,子
网掩码为255.255.224.0,网关为:10.10.64.1。
memcpy(thePacket.theIpPacket.theEthHead.hDestMac,bGate—wayMac,6)I
memcpy(thePacket.theIpPacket.theEthHead.bSoureeMae,pThreadParament-->HostMac。6);
thePacket.thelpPacket.theEthHead.usEthernetType=0x8;
)
初始化数据包内存数据,接着就可以循环发送FIN数据包,根据接收到的RST数据包,判断端口是否关闭。
此扫描方式的优点比前两种都要隐秘,不容易被发现。缺点是要判断对方端口是否开放必须等待超时。增加了探测时
图2主机信息扫描结果图
(下转第1679页)
中华测控罔
chinamca.corn
万方数据
第7期
以光谱信息离散(Spectral函数为例,其m函数为:
tunction
齐敏瑁.等:机载激光荧光雷达油污染实时监测系统的软件开发
InformationDivergence,SID)
?1679?
VARIANT类型变量t的转挟.3
结论
本文研究了基于VC的多通道激光荧光雷达油污染监测系
sid=SID(t.r)t,r均为一维数组。
COM组件封装的光谱匹配类(ISpecMateh)相应c++成员函数为:
void
const
aid(10ng
nargout,VARIANT*aid.constVARIANT&t,
统的软件设计与开发,采用面向对象的结构化设计和多线程技术,并充分利用MFC类库和COM组件实现了实时显示、处理与保存数据的功能。利用NI—SCOPE驱动接口函数控制多块采集卡同步采集。实践证明,本软件运行稳定。易用性好,对类似系统的软件开发具有一定的参考作用。
VARIANT&r)l
VC调用该函数代码如下:
ISpecMatchm—SpecMateh,//定义类对象AfxOleInit()-//初始化OLE的动态连接库
if(m—SpecMatch.CreateDispatch(一T(”flscom.SpecMateh”)))//创建接口并连接
{//调用接口甬数
一SpecMatch.sid(1,&out,t,r);
参考文献:
[1]JbaM.N.,LevyJ.,GaoY.Advances
Spill
gY
Disaster
in
Remote
Sensing
forO/I
//释放接口
mSpecMateh.ReleaseDispatch();)else
AfxMessageBox(”UnSucceeded”)I
Management:State—of—the—Art
SensorsTechnolo-
forOilSpillSurveillance[J].Sensors,2008,8(1):236—255.
F.Fingas.Review
[2]CarlE.Brown,Mervin
ser
ofthe
developmentofla—
Bul—
fluorosensorsforoilspillapplication[J].MarinePollution
letin。2003,47(9—12):477—484.
为了给sid函数传递VARIANT类型参数,利用SafeAr—ray实现we数组和VARIANT变量的转换,关键代码如下:
t.vt=VT—R8IVT-ARRAYI//声明t的类型为VT—ARRAY,Ar—ray中的元素为double型
sAFEARRAYBOUND
[3]斯蒂夫?迈克康奈尔,快速软件开发[M].席相霖译.北京;电
子工业出版社.2002.
[4]斯蒂夫?迈克康奈尔。代码大全[M].金戈译.北京:电子工业
出版社,2006.
rgsabound[1];
[5]刘
帆.陈丽颖,谭显春.基于VC6的船用监视设备软件设计
rgsabound[0].cElements=4l//元素的个效
rgsabound[0].ILbound=0;//矩阵索引的下界t.parray—SafeAr-rayCreate(VT—R8,1,rgsabound)I//新建一个SafeArray并将其描述符指针传给t.parray.
t.parray一>pvData=ai//a为ve数组.至此实现了vc数组a向
[J].计算机测量与控制,2008,16(11):1747—1749.
[6]侯俊杰.深入浅出MFC[M].武汉:华中科技大学出版社,2001.[7]李荣忠.基于COM的多普勒激光雷达工程化软件设计[D].青
岛:中国海洋大学,2009.
母l,濞哆淳哆淖B4哆淖咀净蟑蹲哆水眵尊眵水哆淖蚌淖哆净哆淖蟑净蛆浮蟑球哆毋哆孚睁班哆水哆净哆担哆尊哆淳哆4蚌担哆淖蟑谆蜱罅i,母哆水哆蹲蟑婷哆淖口谆蜱水蟑水哆尊眵罅哆水蜉班哆淖哆水哆净蟑乎哆淖哆尊哆浮牡净蟑谆啦
(上接第1666页)选择一种或多种扫描方法,扫描出本地或者网络上的计算机系统端口情况;并且这些扫描能够实现特定IP地址指定范围内端口扫描和扫描某IP地址范围内全部主机特定端口两种模式,并且在SYN扫描中能够区分端口开放、关闭和被防火墙过滤3种状态。使计算机管理员能更加有效地防止信息的泄露,保证计算机系统的安全。因此本文所设计的端口扫描器具有一定的实用价值。
参考文献:
[1]张登银,许芳颂.端口扫描与反扫描技术研究[J].南京邮电学院
学报。2005,25(6):54—58.
图3
UDP扫描结果图
[z]张祺.基于防火墙的端口扫描防护系统设计与实现[D].成都:
电子科技大学,2007.
在UDP端口扫描时,首先设置相应的lP地址范围和端口范围以及相应的其它信息,即可进行扫描。从图3中可以可以看出,主机10.10.65.142和主机10.10.65.168有端口开放。其他主机端口暂时处于关闭状态。
[3]陈虹,史旺旺。唐鸿儒,等.基于TCP/IP网络的远程控制仿真
系统的研究[J].计算机测量与控制,2005,13(2):129—130.[4]JavvinTechnologies,Inc.NetworkProtocolsHandbook[M].北
京:清华大学出版社,2005.[5]吴功宜,董大凡,王
瑁,等.计算机网络高级软件编程技术
4结束语
本文设计的端口扫描器将扫描方法分成两大类,即TCP扫描,UDP扫描,而TCP扫描再细分成3类:TCP
connect
[M].北京:清华大学出社.2008:273—295.
[63蔡立军.网络安全技术[M].北京:清华大学H{版社.2006.[73李嫒嫒.VisualC++网络通信开发人门与编程实践[M].北京:
电子工业出版社,2008.
[8]FYODOR.TheArtofPortScanning.[EB/OL].http://www.
insecure.org/nmap/nmap—doe.html,2002.
扫描,TCPSYN扫描,TCPFIN扫描。将这些细分的扫描综合到同一个扫描器当中,可以根据每一种扫描模块的优点,如:常规扫描、隐蔽扫描、慢速扫描等,在不同的需求下可以
中华测控网
chinamca.CORI
万方数据
一种改进的端口扫描器的设计与实现
作者:
作者单位:
刊名:
英文刊名:
年,卷(期):李继容, 曾爱国, Li Jirong, Zeng Aiguo五邑大学计算机学院,广东,江门,529020计算机测量与控制COMPUTER MEASUREMENT & CONTROL2010,18(7)
参考文献(8条)
1.陈虹;史旺旺;唐鸿儒 基于TCP/IP网络的远程控制仿真系统的研究[期刊论文]-计算机测量与控制 2005(02)
2.张祺 基于防火墙的端口扫描防护系统设计与实现 2007
3.张登银;许芳颂 端口扫描与反扫描技术研究[期刊论文]-南京邮电学院学报 2005(06)
4.FYODO R The Art of Port Scanning 2002
5.李媛媛 Visual C++网络通信开发入门与编程实践 2008
6.蔡立军 网络安全技术 2006
7.吴功宜;董大凡;王珺 计算机网络高级软件编程技术 2008
8.Javvin Technologies lnc Network Protocols Handbook 2005
本文链接:http://d..cn/Periodical_jsjzdclykz201007062.aspx