简单端口扫描器JAVA的设计与实现

时间:2024.5.15

简单端口扫描器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

文章编号:1671—4598(2010)07—1664一03中圈分类号:TP206+.1

一种改进的端口扫描器的设计与实现

李继容,曾爱国

(五邑大学计算机学院,广东江门

摘要:端口扫描是网络入侵过程中非常重要的一种攻击预探测手段;对端口扫描进行检测,发现可能出现的攻击行为,可以有效地配合入侵检测系统完成预警、拦截和取证等工作。在简要介绍了端口扫描技术的原理及其检测技术的基础上,设计了一个将几种端口扫描技术综合在一起的且改进的端口扫描器,该端口扫描器包括了TCP扫描和UDP扫描,而TCP扫描再细分成3类;TCPconnect扫描

和TCP

SYN扫描、TCPFIN扫描。经过测试.该扫描器能在不同类型的网络中正常运行,且综合了多种扫描技术的优点.

关键词:端口扫描;检测;网络安全

ImprovedDesignandImplementationof

LiJirong,ZengAiguo

(SchooIofComputer

Abstract:Portscanningis

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

couldbe

different

types

ofnetworksnormaloperation,andcombinedtheadvantagesof

security

variety

of

scanningtechnology.

Keywords:port

scanning;diction;network

引言

随着计算机网络的飞速发展,网络遭受到的攻击越来越多。

版本,这样就能间接或直观的了解到远程主机所存在的安全问题。端口扫描的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

})

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

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

更多相关推荐:
实习工作计划

20xx年下半年山西师范大学国培省培实习计划姓名院系专业班级学号实习地区实习县市实习学校带队教师成绩唐利伟物信学院电子信息工程专业1104班11520xx105晋城地区陵川县沙河小学孔瑞山西师范大学顶岗支教实习...

20xx简单计划

20xx20xx第一学期科研计划1以课题为载体深化学校课改研究以学校三项课题为载体深入学校开展的课改研究工作尝试实践五步教学法从分享交流研究中提炼课题研究成果2收集研究成果做好十二五结题工作1收集十二五以来教师...

外贸业务员实习总结及工作计划

20xx实习总结及20xx工作计划20xx年x月中旬,我正式走进xxxx国际业务部,开始了人生中的第二份工作。转眼间,我已经实习了两个半月的时间,并将和同事们一起迎接20xx新的一年。希望借着跨年的喜庆我也能…

12届质保部见习生李荣吉个人实习计划

个人实习计划单位质量保证部姓名李荣吉日期20xx85一实习目的在半个月的新员工入职培训后我们12届的176名毕业生被分配到不同的岗位开始了为期一年的实习期很荣幸来到质量保证部因为在入职培训期间已经接受过刘杰老师...

教学实习安排

教学实习安排一教学实习的目的与意义为了搞好教学实习工作首先要明确教学实习的目的与意义这样才能在将来的教学实习中有的放矢打好基础做好准备教学实习的目的在于使学生在平时学习与实习的基础上更系统的了解高等数学与工程数...

内科实习教学计划

内科实习教学计划实习目的通过内科临床实习把所学到的基础理论知识综合运用于临床实践加深对内科常见病的认识掌握内科常见病的诊治技能和预防措施培养临床思维能力和独立工作能力树立全心全意为人民服务的思想和良好的医德医风...

个人教育实习计划

个人教育实习计划我在轻工实习实习生姓名王亚玲专业班级英语师范1202班基本概述时光飞逝转眼间我已经步入大四虽然课程不多但面临的各种压力学习工作等却日益剧增作为一名英语师范专业的学生明年的现在我将真正的步入课堂教...

实习教师实习计划万能模板

实习计划一实习目的通过到小学实习深入学习如何当好一名任科老师以及如何做好班主任工作把理论与实践相结合把所学的知识转化为能力不断提高自身的综合素质为将来的教学工作打好基础熟悉教师工作锻炼与同学沟通的能力适应新角色...

20xx届本科音乐学教育实习计划

南京晓庄学院音乐学院20xx届本科音乐学教育实习计划一目的任务教育教学实习是高等师范教育教学工作的一个重要组成部分是贯彻党和国家的教育方针巩固高师学生的专业思想培养合格的中小学教师的重要环节它与课堂教学息息相关...

实习计划

实习计划一实习目的和意义1通过在中学实习巩固和实践所学的教育理论2在英语教学工作实习中将专业知识和基本理论加以运用和提升通过向优秀教师学习认识人民教师的光荣职责树立忠诚人民教育事业的理想不断实践教育理论学科知识...

实习教学工作计划

实习教学工作计划1充分发挥科教处临床教学办公室各教研室的管理协调职能加强教学督导组的教学监督作用严格贯彻执行教学管理制度加大教学检查考核力度使教学管理工作更规范化制度化2认真学习传达潍坊医学院20xx年下发的各...

骨科实习教学计划

骨科实习教学计划实习目的通过骨科临床实习把所学到的基础理论知识综合运用于临床实践加深对骨科常见病的认识掌握骨科常见病的诊治和基本操作技能培养临床思维能力和独立工作能力树立全心全意为人民服务的思想和良好的医德医风...

实习简单计划(4篇)