版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北京理工大学珠海学院2020届本科生毕业设计基于GUI网络渗透侦察工具设计与实践基于GUI网络渗透侦察工具设计与实践摘要最近几年来,计算机网络的发展从未停下脚步,并且速度日益增快。为了应付日益增长的网络需求及网络流量,特别是多媒体流量的快速增长,网络信息技术不断产生,人们的生活开始变的更加离不开网络。然而网络给人们带来的帮助的同时也带来了问题。长久以来,网络攻击的数量在不断增长,网络安全事件在不断上演,网络攻防形势日益严峻。网络侦察也成为一种新型的情报信息获取方式。其作为网络攻击的第一个阶段,对于帮助黑客识别攻击系统信息,选择适合的攻击方式起到了重要的作用。因此有一个便于使用的网络渗透信息侦察工具至关重要的。此应用是结合当下网络发展的实际情况,以满足实际应用为开发目的,参考国外主流的网络渗透侦察工具进行实际需求分析,基于python使用pyqt5开发出来的网络渗透侦察工具。本文详细介绍了网络侦察工具的系统概况,开发背景,网络侦察的研究现状、以及此系统各个模块的分析与实现。关键词:web安全、网络攻防、网络侦察、图形用户界面DesignandPracticeofGUI-basedNetworkPenetrationReconnaissanceToolAbstractInrecentyears,thedevelopmentofnetworksisconstantlyevolving.Inordertocopewiththeincreasingnetworkdemandandnetworktraffic,especiallytherapidgrowthofmultimediatraffic,networkinformationtechnologyisconstantlybeingproduced.TheInternethasdevelopedintoaveryimportantpartofpeople'slives.Butthebenefitsbroughtbythedevelopmentofthenetworkhavealsobroughtalotofproblems.Foralongtime,thenumberofcyberattackshasbeenincreasing,cybersecurityincidentsarebeingstaged,andthesituationofcyberattacksanddefensesisbecomingincreasinglygrim.Networkreconnaissancehasalsobecomeanewwayofacquiringintelligenceinformation.Asthefirststageofnetworkattack,itplaysavitalroleinhelpinghackerstoidentifyinformationandchooseasuitableattackmethod.Therefore,itisessentialtohaveaneasy-to-usenetworkpenetrationinformationreconnaissancetool.Thisapplicationiscombinedwiththeactualsituationofthecurrentnetworkdevelopmenttomeettheactualapplicationfordevelopmentpurposes.Refertothemainstreamforeignnetworkpenetrationreconnaissancetoolsforactualneedsanalysis,basedonpythonnetworkpenetrationreconnaissancetoolsdevelopedusingpyqt5.Thisarticleintroducesindetailthesystemoverviewofthenetworkreconnaissancetool,thedevelopmentbackground,thenetworkreconnaissanceresearchstatus,andtheanalysisandimplementationofeachmoduleofthissystem.Keywords:Websecurity,Networkattackanddefense,networkreconnaissance,GUI北京理工大学珠海学院2020届本科生毕业设计目录TOC\o"1-3"\h\u322781前言 前言1.1设计背景1.1.1计算机网络发展历程在1980年之后,网络开始走进一个全新的阶段,各种各类技术开始和网络结合,网络可以提供的服务也越来越多,并且应用范围越来越广。计算机网络已经覆盖至全球各地,并且其触手已经伸向了越来越多的领域。网络将成为国家的经济、政治和军事等的重要支柱。各个国家都在加紧对于地域、国家乃至全球的网络建设[1]。以此最终将会建成全球各地人人互通的大型互联网络。截至2018年,全球上网用户高达44亿人。1.1.2网络侦察的前景网络的普及应用使得网络侦查的作用日益突出。网络侦察给黑客攻击提供支持,甚至给军事情报侦察开辟了新的领域。但是,随之而来的是新的挑战和新的要求。当今世界是一个全球化信息化时代,网络攻击行为日益增加、信息化战争出现端倪[1]。因此,网络渗透侦察逐渐开始显露出其重要的地位和作用。1.1.3Gui的优势人机的交互告别了以前复杂麻烦的字符命令语言时期,目前正处于基于图像用户界面的新时期。图像用户界面(GUI)是当下的一种主流的用户界面,其被运用于各种系统中。其中,众所周知的Windows系统就是基于图形用户界面。因其具有人机交互性、美观性、实用性、技术性等的优势,因此广受喜爱。目前流行的图形化用户界面的特点是以窗口界面为关键,通过键盘鼠标等进行输入,并且用户通过点击鼠标即可完成大多数操作。这一种界面在人机交互的过程中主要是靠眼睛观看和手动控制。因此具有极其强的便利性,对于用户,特别是不懂计算机指令的用户非常友好。1.2网络渗透侦察的现状及发展由于计算机的广泛使用,计算机网络上存在着大量的数据,其具有极高的价值。并且网络侦察频繁应用于军事斗争、政治斗争等重要场合中,因此网络侦察的作用在当今时代下越发明显。当下,社会已经进入信息化时代。我国当前互联网安全的显示日益严峻,在网络上存在着大量的个人信息及重要的数据,一旦泄露后患无穷,同时我国部分主要的网络遭受到大量的DDos攻击。网络的信息情报战已经成为当前国际战争的一个主战场。网络侦察给当下的情报收集工作提供了新鲜思路,注入新鲜力量。着眼未来,我们可以预见,网络对于人们来说会越来越重要,同时网络渗透侦察也会日渐重要。1.3系统的创新点1.3.1集成各工具的便捷性当下要进行网络的一些基本侦察,需要使用多个工具。如,要想对于某一主机进行注册信息的查询,则需要通过使用站长之家、中国万网、阿里查询等网址进行查询,若这时还需要查询网站的开放端口需要通过其他脚本工具进行查询。这种工具间的切换会给用户的网络侦察工作带来不必要的麻烦,浪费用户的时间。因此本次设计的作品,集成了whois、端口扫描等多种功能模块,使得用户在一个工具中即可查询到目标主机的多种信息,大大缩短用户的使用时间,给用户的侦察工作提供便利。1.3.2交互式的应用形式用户在使用时无需掌握计算机的相关指令,无需考虑网络渗透侦察的具体细节及方式。通过键盘输入和鼠标点击的方式即可轻松的获取到自己需要查询的信息。同时该设计也对于每一项功能都进行了适当的说明,通过这种方式提高了用户与程序之间的交互性,降低了用户的使用门槛,使得程序更加便于使用。1.4系统应用的意义1.4.1对用户此项集成了多个网络侦察常用的方法,对于用户在进行一些网络信息收集及网络攻击的过程中起到了一个侦察兵及情报员的作用。能够帮助用户了解到目标网络的网络状态、网络地址、网络关键结点、网络联系方式如电话、姓名、邮件、地理位置等等。通过这种方式可以给用户在进行后续的操作时提供一些决策依据,使得用户的后续工作可以更加顺利的进行。1.4.2对网络渗透如同普通战争需要使用无人侦察机、侦察卫星、侦察兵等手段进行信息侦察,以便于后续的军事打击行动顺利展开一样,信息化战争中,网络渗透侦察是战争的第一步[2],其起着至关重要作用,使用者通过一定的网络渗透侦察方式来进行主机的侦察及信息的收集,以便后续工作更好的展开。1.5本章小结对系统的设计背景及现状进行了简单的概述。并对系统中创新的点进行了初步介绍。系统本身的意义在于帮助用户去简化网络侦察的操作,给用户一个方便、快捷、功能较为齐全的网络侦察工具,以此助力我国的网络侦察事业的发展。
2相关技术概述2.1网络侦察技术网络侦察是使用相关技术手段,获取对象计算机的相关信息。网络侦察是一次完整的网络攻击的第一阶段,为后续网络攻击的相关工作提供决策信息。其所获情报越丰富则对后续工作帮助越大。通过对于前人经验的总结,认为一般需要侦察的信息有如下几点[2]:对象网络的IP地址、名字及域对象网络的注册信息,比如电话、姓名、邮件和位置等信息DNS服务器、邮件地址网络的拓扑结构满足指定条件的设备一切与目标主机有关系的其他信息网络侦察的方式一般包括如下几点:使用搜索引擎收集,通过搜索引擎全网快速检索和定位信息。Whois查询,查到目标的注册相关信息。DNS信息查询,了解IP地址网址名称的对应情况。网络拓扑发现,通过对于数据包所经过的路径了解目标网络的关键结点。利用社交网络获取信息,社交网络存在着复杂并且庞大的信息,这些信息也是帮助了解目标网络的重要方式之一。2.2Python技术Python是一种程序设计语言,并且它在当今时代逐渐变的非常流行。具有强的编译性、解释性、互动性[3]、其易读、易维护,深受用户的欢迎与喜爱。一开始,它仅仅是被拿来编写一些自动化相关的脚本。但是,后来他的版本开始更新,功能也变得越来越多,所以它开始被用于开发一些规模比较大的项目。并且在当今社会,其应用领域越来越高。其具有非常多的优势。重要优势之一就是完全免费,使用者可以不花钱就在随意一台计算机上安装使用Python和他提供的一些扩展库。且其的拓展库越来越丰富,根据这些库可以完成许多的任务。2.3Pyqt5技术Python是现在很流行好用的一种程序设计语言,Qt则是一个很流行好用的开发库,而pyqt则是二者的结合出来的一种产物[4]。其中pyqt5是一个python的模块之一,是一种非常方便的插件。它一共拥有六百二十多个类,六千多个函数。是当下比较流行的开发工具,其功能也非常强大,用其可以开发出美观的界面。由于python是可以跨越不同的平台之间的限制,pyqt5也支持跨越平台,它可以运行在任何一个多人使用的系统中,比如有UNIX系统,Windows系统,MacOS系统。2.4QtDesigner设计工具在PyQt的UI界面有两种方法实现[5]。一个是代码,但是比较的麻烦,也不够美观。另一个则是QtDesigner,用户可以直接使用它来设计界面。并且其界面的图像视图与业务逻辑相互之间互不干扰,使得开发更加便捷。QtDesigner中的使用方式非常的方便灵活,可以直接使用鼠标来设置各类控件,并且设置完成后可以直接查看界面的整体效果。最终生成的UI文件也直接通过pyuic5工具转换成PY文件。方便了程序开发,帮助开发人员更好的进行开发。
2.5本章小结此章节对与此次设计中用到的基本技术做了大致的介绍,帮助阅读者可以更好的了解此次系统的设计。
3系统需求分析及总体设计3.1系统需求需求分析是为了对目标系统提出的完整的、明确的、清晰的、可行的需求以便开发。3.1.2确定软件需求在经过多方位的了解及咨询,参考主流软件(SamSpade)及网络攻击者的实际侦察经验。确定了此工具提供的服务有如下几个:主机的状态、IP地址、名字及域注册信息,如电话、姓名、邮件和地理位置等信息DNS服务器地址网络的路由查询网络开放端口3.1.3系统需求实现为了满足以上需求,此系统提供了以下的几个功能模块:Ping模块、DNS模块、Whois模块、Nslookup模块、端口扫描模块、Tracter模块。具体流程如图3.1所示。图3.1程序运行具体流程图3.2系统总体设计3.2.1用户界面设计用户界面设计基本规则:其一是界面具有一致性,要求界面中的控件的整体风格相差不大,界面整体较为和谐。并且在多个界面设置有相似的界面外观、布局以及相似的信息显示(比如背景颜色,控件颜色等)[6]。这样的界面会有比较高的一致性,用户使用起来会更加舒适。因此,控件的颜色、字体字号,边框设置,窗口背景颜色、布局方式和风格、提示信息等都有一个比较统一的标准规则,做到真正具有一致性。其二是界面要简洁易用,不要过于复杂花俏。太花哨的界面会影响用户对与程序的使用,同时也可能会使得工具的运行变慢。因此界面设计的简洁明了非常重要。特别是对于攻防侦察软件来说,其界面不能太过于吸引眼球,也不能太富贵华丽。因为太过华丽复杂会比较容易使人产生视觉上的疲劳及审美疲劳,让人心浮气躁。同时使用者的注意力有可能会被复杂的界面分散,从而影响工具的使用使其失去其原本的味道。因此,界面设计需合理的布局和设计,颜色相似[6],简洁明了,将软件的性能作为重点进行突出,切勿喧宾夺主。用户界面始终是次要的,起锦上添花的作用。最重要的应该是让软件界面友好实用,这样这样用户才会更加喜爱和接受。其三是要使得用户界面整体协调。比如控件位置要更加的合理协调,便于用户的浏览和使用。不能出现“前重后轻、右宽左窄”的不协调的现象。当然最重要的是关键的控件放在明显位置,突出重要的控件让用户一目了然,比如此侦察工具中的输入框和侦察得到的信息。根据需求将此次的系统用户界面分为了四个界面,一个主要的用户界面及三个次要的界面。在主界面中,需要用户输入需要查询的主机名,及选择需要查询的内容,并且用较大的板块输出查询到的内容。在“关于”界面中,需要有应用的相关信息及应用作者的相关信息。在“帮助”界面中需要有一些帮助用户具体了解如何开始使用系统的信息。在“使用说明”界面中则需要有各个模块功能可以为用户提供的具体帮助的内容及对于查询到的结果进行分析的信息,以帮助用户更好的根据查询到的信息展开后续工作。
根据对上述的分析内容,绘制出了用户界面草图,如图3.2所示。(a)(b)(c)(d)图3.2使用说明界面草图3.2.2程序运行流程设计从需求中可以看出,我们需要进行界面的绘制,数据内容查询,将查询的内容返回至主界面进行显示,各个操作流程如图3.3所示图3.3操作流程图3.3本章小结在此章节中分析了工具的基本需求,以确定系统需要提供的服务及完成的功能,为后续的系统实现指明了方向。同时根据需求对于整个界面进行了初步的设计以及对于系统流程做了初步的介绍。
4主要功能模块分析4.1Ping模块PING(PacketInternetGrope)中文名字是因特网包探索器,它是用来了解网络是否畅通的。它的工作流程为:首先发送一个网络控制的请求消息给想要查询的网络,并告知其自己是否可以接受到对方的应答。通过这种方法就可以了解所需要查询的主机的网络状态,如该主机是否连接在互联网上,网络丢包率,生存时间、往返时间。Ping的返回信息有一下四种,其有各种不同的含义,可以帮助用户进行判断。
第一种是RequestTimedOut,是说明可以找到需要查询的网络,但是超时了。到达这一个主机的路由有存在于途经的一些路由表中,但是因为网络不太好,存在如网络拥塞这样的问题,使得数据包不可到达。
第二种是DestinationNetUnreachable,是说明没有与对方主机建立连接,或者这一个主机是完全不存在的。而且到达这一个主机的路由没有出现在经过的路由表中。 第三种BadIPaddress,是说明这个IP地址根本不存在或者没有方法去连解到DNS服务器,因此无法解析这个IP地址。
第四种Sourcequenchreceived是说明途经的某些服务器或者对方忙,没有办法做出回应。通过这些状态可以很好的帮助使用者判断目标主机的网络状态,为后续的攻击行为服务。4.2DNS模块DNS既域名系统,其是提供一个容易记住及理解的名称(例如)来帮助使用者更轻松的访问互联网。DNS是一个分布式的数据库系统,层次结构来储存IP地址、域名、邮件服务器等信息[1]。根据它的结构,DNS的命名空间是由多个区域组成的,每个区里面有至少一个的域名称相关信息。图4.1[1]为DNS服务器的层次结构图的一个例子:图4.1DNS服务器层次结构[1]大多数的DNS系统的运行要有两个或者以上的DNS服务器:一台主服务器及一台用来容错的辅助服务器。通过DNS查询,攻击者可以了解到主机对应的IP地址,及相关的DNS信息,以此来为后续攻击服务。4.3Whois模块在互联网上建立一个网站服务器或者电子邮件服务器或者其他服务时,需要向相关的机构提交域名注册,以便用户访问。相关的注册的信息,如域名、联系方式、地址、电子邮箱、IP地址等信息则存在whois数据库和DNS数据库中,并且这些信息由注册机构及因特网建设组织进行维护。在1999年之前,互联网上提供的注册服务机构仅有一家:NetworkSolution,然而随着互联网的不断发展,如今提供服务的机构已有数百家。通过对注册机构的查询,可以获取到一些有用的注册信息,包括如下几个:姓名:较为完整的注册信息会有包含管理、技术、付款等人员的信息,即使注册信息并不完整,一般也会有一个或以上联系人。电话号码:联系人的电话号码,一般可用于电话欺骗等的社会工程学攻击。电子邮件:联系人的电子邮件。了解这个信息不仅可以知道联系人的邮件,更可以能从中推断出目标系统的组织使用的电子邮件格式,攻击者则可以根据目标组织内的任何一个用户名字推断出该用户的电子邮件。邮件地址:获得该组织的地理位置,从而可以进行垃圾搜索(该搜索可以获取到一些实用的容易让人忽视的信息,帮助攻击者完成攻击。)或者可以到该地址去扫描不安全的无线电接入,以此达到入侵的目的。IP地址:IP地址及地址段是攻击者开展精确的网络扫描及攻击的基础和前提,其重要性不容小觑。域名服务器:可以获取到目标组织内部的服务器信息,了解目标组织的域名结构。其他有效信息:除了以上的其他信息,包括注册及更新时间,目标组织服务器类型等等。通过进行whois查询,可以帮助攻击者去了解到目标网络的基础信息,以帮助攻击者决策。一般来说,使用者想要了解whois比较全面的内容,最方便的方法是通过站长之家、阿里云查询、站长工具等的网页进行查询。查询示意图4.2如下:图4.2whois网站查询结果4.4端口扫描模块攻击者要想进行进一步的网络攻击,端口扫描则可以为其提供很大的帮助。就网络而言,一个网络提供着多项服务,每一个处于监听状态的端口都会与网络服务密切相关,这些端口是攻击者进行入侵的一个潜在通道。端口扫描可以获取到网络上有哪些端口是开放的,从而得知主机上有哪些服务是在运行的,为更加高效、准确的网络攻击提供了很好的帮助。TCP以及UDP是在传输层中的重要协议,其中端口是一个关键的概念。端口与这两个传输的协议有着很大的关系。端口主要用于识别主机上的网络服务。为了方便使用,给端口进行编号,引出了端口号这一概念,其一般分为两种,一种指定配发给常见程序的熟知端口号(0-1023)。另一种是随机配发给客户进程的一般端口号(1024-65535)[7]。常用的熟知端口号如表4.1下:表4.1常用熟知端口号应用程序SSHTELNETSMTPDNSHTTPPOP3SNMPSNMP熟知端口2223255380110161162攻击者通过对于端口的扫描,可以得知哪些端口是开启的就可以知道哪些服务是开启的,进而利用这些服务的有可能存在的一些漏洞,来进行更进一步的攻击,这样可以帮助攻击更好进行。4.5Tracter模块通过查明目标主机的主要路由路径可以有效的帮助攻击者找到目标网络的关键结点(比如路由器)以此来提高攻击者的攻击效率,使得攻击效果达到最大。Tracert(跟踪路由)是路由跟踪程序,主要是用于确定数据报在访问目标所的途中走过的路由信息。Tracert命令是通过使用IP生存时间字段以及ICMP的消息来确定相关的路由路径,帮助用户找到攻击的道路。4.6本章小结此章节根据第三章的需求确定了提供的服务的模块,并且对于这些模块进行了较为详细的介绍,介绍了这些模块对于网络渗透侦察的重要性,同时也帮助读者可以更好的了解网络渗透侦察的一些基本知识。
5系统设计与实现5.1开发环境搭建5.1.1开发语言阐述Python是一种程序设计的语言,且它在当今时代逐渐变的非常流行。其具有强的编译性、解释性、互动性,并且其易读、易维护,因此深受用户的欢迎与喜爱。\t"/slave/2020041522/211302254614441/htmls/detail_report/right"这门语言是由吉多·范罗苏姆开发的\t"/slave/2020041522/211302254614441/htmls/detail_report/right",在这次的开发中他决心吸取ABC语言失败的教训,在Python中避免出现非开放性而导致的失败问题。一开始,它仅仅是被拿来编写一些自动化相关的脚本。后来由于其的开源免费性,吸引了非常多的科学研究机构来使用。慢慢的,它加入了很多的与数据有关的拓展库,因此它变的很适合数据处理、表格制作、甚至是开发科学技术相关的语言程序。后来他的版本开始不断更新,当今已经发展到了python3,功能也变得越来越多,所以它开始被用于开发一些规模比较大的项目。在当今社会其应用领域越来越高,主要可应用Web和Internet开发、软件的开发、人工智能、网络爬虫等诸多不同领域。其具有非常多的优势。重要优势之一就是完全免费,使用者可以不花钱就在随意一台计算机上安装使用Python和他提供的一些扩展库。逐渐其的拓展库越来越丰富,根据这些库可以完成许多的任务。5.1.2PythonIDE介绍-PyCharmPyCharm一款是由JetBrains打造的PythonIDE(集成开发环境)。其具有调试、管理项目、关键语法高亮等一般的IDE所具有的功能。界面简洁明了,符合用户的习惯,可以给用户带来比较好的使用体验,因此选择其做为开发使用的IDE。因为其具有多种功能,可以给项目的设计带来多种便利,并且其提供免费使用的社区版。所以此次设计选择PyCharm作为开发工具。5.1.3开发使用框架介绍-Pyqt5pyqt5是作为python的插件而实现的,其是Python绑定DigiaQT5的应用框架。pyqt5做为Python的模块之一,拥有620多个类,6000个函数方法。是当下比较流行的开发工具,其功能也非常强大,用其可以开发出美观的界面。由于python的跨平台特性,pyqt5也支持跨平台,它可以运行在任何主流操作的系统中,其中包括UNIX系统,Windows系统,MacOS系统。因其具简单好用、功能强大、跨平台支持、性能高、稳定性高、原生支持、开源免费等的优势,综合考虑,选取作为此次系统的开发框架。5.1.4开发环境搭建首先安装python,可以直接在官网上下载最新版本的python,下载完成后直接双击安装。安装后在配置环境变量,在Path中添加python安装路径。安装Pyqt5:打开命令提示符(cmd),输入“pip3installsip”安装sip,其会自动下载并安装。完成后输入pip3installPyQt5,安装PyQt5,由于网络等多种原因,这个过程会比较漫长。安装好PyQt5后,安装qtdesigner,同样是在命令提示符内输入“pipinstallPyQt5-tools”开始下载安装。完成后我们可以在Python安装路径\Scripts下看到designer.exe文件。通过这个文件我们就可以使用拖拽等可视化完成对于界面的设计。操作流程图5.1如下图5.1操作流程5.2文件结构及用途首先确定“基于GUI的网络渗透侦察工具”的工程名为“my_search”,并建立my_search工程。具体的目录结构如图5.2所示。图5.2工程目录结构为了使得项目的文件结构更加清晰,更易于后期的使用和维护。在工程下设置了多个命名空间,用来保存源代码、使用的图片及GUI界面,其中文件名称及说明如下表5.1所示。表5.1文件名称说明资源目录文件名称文件说明resourceUi文件夹,用来存放.ui格式的GUI界面images文件夹,存放图片文件about.py“关于”的界面help.py“帮助”的界面instruction.py“使用说明”的界面main.py程序的主入口main_window.py程序的主界面my_dns.py进行dns查询my_tcp.py进行开放端口扫描my_whois.py进行whois查询项目使用的图标图片保存在images的文件夹中,具体每个资源的用途如下表5.2所示。表5.2文件夹images下文件名称及说明资源目录文件名文件说明resource.imagesabout_i.png“关于”的图标clearall.png“清屏”的图标download_i.png“下载”的图标help_i.png“帮助”的图标instruction.png“使用说明书”的图标mainsearch.png程序的主图标项目使用的ui界面则保存在ui文件夹中,以便后期可以通过可视化的方式对界面进行二次修改。具体每个资源的相关说明如下表5.3所示。表5.3文件夹ui下文件名称及说明资源目录文件名文件说明resource.uiabout.ui“关于”界面help.ui“帮助”界面instruction.ui“使用说明”界面main.ui主界面5.3用户界面实现用户界面主要是通过Qtdesigner工具来进行设计。根据第三章中提到的设计需求及设计草图,可进行如下具体设计。界面总体是是用网格布局(GridLayout)实现,其可以让整个界面布局更加工整对称。主界面的右上侧区域为输入及其他功能区域。左边有一个输入框用作用户输入。其右侧有五个按钮,分别是:清屏、保存到本地、使用说明、帮助、关于。通过这五个按钮,帮助用户更好的使用该工具进行网络侦察。因其无右对齐属性,所以使用弹簧将五个按钮放到最右边。主界面的左侧为选择查询内容区域。其共有六个按钮,供用户选择所需功能。此应用提供的功能有Ping、Dns、Whois、Port、Tracert、Nslookup,设置按钮属性为仅显示下边框即可到达目标效果。下方是两个字体调节的按钮,通过点击该按钮可以改变输出内容的字体大小,设置按钮为正方形并设置边框加粗即可达到目标效果。为了方便用户使用,为该区域的按钮设置了点击效果,当鼠标移动至按钮上方时,按钮的字体边框变为黑色,当完成点击后按钮字体和边框恢复为白色,其主要是通过代码实现,设置按钮的setStyleSheet为("QPushButton{color:rgb(255,255,255);font:8710pt\"ArialBlack\";""border:none;border-bottom:2pxsolidwhite;}"
"QPushButton:hover{color:rgb(0,0,0);border:none;border-bottom:2pxsolidblack;}")主界面的右下的区域是信息输出的区域,其主要是一个文本框(textBrowser)查询到的信息都会在这个框中显示,并且此框内容无法进行修改。由于此应用主要是信息收集的功能,所以此区域在整个应用中占据最大的板块。并且其默认的显示内容为应用的操作说明,主要包含各个功能模块的介绍,帮助用户了解及使用应用。其实际显示效果如图4.3所示:图5.3主界面实际效果关于界面主要是应用的相关信息(如图标名称等)及应用作者的相关信息。其是使用网格布局,在每个布局区域中使用TextBrowser作为信息输出的控件。帮助界面中则是一些系统使用的简短介绍,帮助用户快速的上手该应用。其使用单个TextBrowser控件进行内容的输出,即可完成对其的显示要求。以上两个界面效果图5.4如图所示:(b)图5.4关于和帮助界面实际效果使用说明界面中则有各个模块功能及可查询到的内容,以帮助用户更好的根据查询到的信息展开后续工作。其使用单个TextBrowser控件进行内容的输出,即可完成对其的显示要求。其显示的内容是通过标签<p></p>来进行显示,并且通过修改<p>标签的属性对输出的内容颜色进行修改,突出显示重点,使得显示更加生动有趣。其效果图如图5.5所示:图5.5使用说明界面实际效果5.4程序功能实现信号与槽:在程序中所有的按钮点击操作都要涉及到信号与槽机制。信号与槽的关联是用QObject::connect()函数实现的。接下来以点击ping控件为例,对于ping_pb控件的点击为信号事件名称,start_ping为槽函数的名称,在整个槽函数中可以完成在点击ping按钮后会产生的操作,比如数据的查询和输出。其关键代码如下: self.ping_pb.clicked.connect(Form.start_ping)程序入口:程序入口文件main.py。在代码中我们可以看到,定义了一个MyWindowClass的类,在类中通过setupUI生成GUI的界面。当main.py文件被直接执行的时侯,运行“if__name__=='__main__'”中的代码,生成一个窗口,将MyWindowClass中的控件绘至窗口中并显示。因此用户可以看到程序的窗口及控件。其关键代码如下:classMyWindowClass(QtWidgets.QWidget,Ui_Form):#定义这个窗口类
def__init__(self):#重写方法以满足需求
super(MyWindowClass,self).__init__()#继承
self.setupUi(self)#生成控件if__name__=='__main__':#执行
app=QtWidgets.QApplication(sys.argv)
window=MyWindowClass()
window.show()#显示
sys.exit(app.exec_())数据传输:在程序中,将查询到的数据传输到用户界面中来,并且显示到界面的文本框内,主要是通过使用subprocess模块[8]产生子进程,获取子进程中的返回值,并将他们按行进行一一的读取,使用textBrowser的append方法以循环的方式显示到界面当中。这样用户就可以在界面中看到查询的内容。以查询输出开放端口为例,其关键代码如下:cmd="my_tcp.py"+t
p=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
foriiniter(p.stdout.readline,''):#读取行
QAcessEvents()#刷新界面
iflen(i)<1:
break
self.textBrowser.append(i.decode('gbk').strip())需要注意的是,由于部分查询过程可能耗时会比较长,如果不对界面进行处理可能会导致界面假死,出现无响应的问题。因此在查询以及数据接收的过程中方法使用QAcessEvents()方法对用户界面进行不断的刷新,这样就可以一边刷新界面一边进行查询,避免出现假死的现象,使得程序的运行看起来较为流畅。打开新页面:用管道的方式直接独立运行并绘制一个新的窗口,使得两个窗口在运行是可以互不干扰,其关键代码如下: os.popen("pythonhelp.py")dns数据查询:直接使用python提供的dns查询的工具包。其中的解析类resolver提供了query方法。使用该方法,并将其查询到的内容以循环的方式进行输出,这样就可以完成一个单纯的dns查询。其关键代码如下:thedns=dns.resolver.query(host,'A')
foriinthedns.response.answer:
forjini.items:
print(j)开放端口数据查询:其查询的思路是使用socket连接,如果连接成功,则认为端口是开放,获取该端口号并输出。如果连接失败,认为端口关闭[9]。具体过程为:首先定义扫描的端口范围为0-1023,通过循环的方式对于每个端口都使用sock.connect_ex进行连接尝试,其的返回的是连接的状态,如果返回值为0的话,则说明此端口是开放的。将开放的端口保存至openports数组中,并将其一一输出。关键代码如下:
defmain():
host=sys.argv[1]
portList=range(0,1023)
openPorts=threadingPortScan(host,portList)
print(host)
iflen(openPorts)==0:
print("Noopenportpleasetryagain")
else:
foriinopenPorts:
print("OpenedPort:"+str(i))#输出defthreadingPortScan(host,portList,openPorts=[]):
hostIP=socket.gethostbyname(host)#获取域名对应的IPnloops=range(len(portList))
threads=[]#声明一个数组
foriinnloops:#循环获取
t=threading.Thread(target=tcpPortScan,args=(hostIP,portList[i],openPorts))
threads.append(t)deftcpPortScan(ip,port,openPort):
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#创建套接字
sock.settimeout(0.1)#设置延时时间
try:
result=sock.connect_ex((ip,port))
ifresult==0:
openPort.append(port)#如果端口开放,就把端口给openPort
except:
pass
sock.close()#关闭whois数据查询:其主要是通过套接字socket方式进行查询[10]。首先连接至,再使用send方法发送查询的数据,再使用recv方法接收到所查询的数据,并将数据输出。由于该查询可能受网络及等的影响较大,为避免过程长时间的查询,或者查询不到结果,使得用户界面无响应,因而使用eventlet.Timeout设置超时的时间,避免用户在使用时出现长时间的等待,影响用户的使用体验。其关键代码如下:defwhois1(t1):
witheventlet.Timeout(5,False):#设置超时时间为5秒
try:
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(('',43))
t=t1.replace('www.','')
print(t)
tb=bytes(t,encoding="utf8")
s.send(tb+b"\r\n")#数据传输,类型为bytes
response=b''
whileTrue:
data=s.recv(4096)
response+=data
ifnotdata:
break
s.close()
print(response.decode())
exceptBaseException:
s="TimeoutPleasecheckthenetworkorURL"
print(s)ping、tracter、nslookup数据查询:由于在windows系统中,通过cmd可以直接对ping、tracter、nslookup进行查询。因此,此次程序直接通过管道的方式查询获取到使用命令提示符的查询数据,并将他输出至界面中。由于数据的获取传输显示的方式在上面做过阐述,在此就不再赘述。数据保存至本地:其是通过使用textBrowser的toPlainText方法获取到显示款内的数据,并且写入文件中。写入完成后弹出一个QMessageBox提示框,提示保存成功。其关键代码如下: content=self.textBrowser.toPlainText()
t=str(self.lineEdit.text())
ntime=str(time.time())
fname=t+ntime
print(fname)
withopen('./'+fname,'w',encoding='utf-8')asf:#设置编码格式 f.write(content)
QMessageBrmation(self,'保存到本地','保存成功!', QMessageBox.Ok)改变字体大小:其是通过使用lambda方法进行带参数的信号传递,槽函数取得textBrowser的字体大小,并且通过font.setPointSize方法将字号进行增加或者减小,随后通过textBrowser.setFont方法重新设置字体的大小。以字体增大为例,其关键代码如下:self.add_pb.clicked.connect(lambda:Form.addfontsize(font))defaddfontsize(self,font):
i=font.pointSize()
font.setPointSize(i+1)
self.textBrowser.setFont(font)5.5本章小结本章节主要对开发语言Python的基本知识,开发环境的搭建、项目结构、用户界面的实现、具体功能的实现等多方面进行了具体的阐述,以帮助阅读者更好的了解这个程序从无到有的实现过程。
6系统测试6.1测试设计至此,已经完成了代码的编写工作,接下来在的这一个章节中对此程序进行系统的测试,测试环境为window10系统。主要测试过程:以为测试的目标主机,对程序实现的功能模块进行一一测试。根据需求和相关使用情况制定了较为系统全面的黑盒测试[11]计划。同时依照测试计划中的操作对程序的功能进行测试并对比结果。具体完整的计划如表6.1所示:表6.1测试计划测试程序测试方法测试步骤预期结果界面显示黑盒测试点击运行程序程序界面显示完整,各按钮及按钮图标均正常显示ping黑盒测试分别对输入框进行如下操作:不输入、输出正确主机、输出错误主机点击ping按钮进行查询不输入时,显示框输出“请输入需要查询的内容!(如)”输入正确主机时,显示款正常显示ping查询的内容。输入错误主机时,显示框提示“找不到主机”DNS黑盒测试1.分别对输入框进行如下操作:不输入、输出正确主机、输出错误主机2.点击DNS按钮进行查询不输入时,显示框输出“请输入需要查询的内容!(如)”输入正确主机时,显示款正常显示所查询主机的IP地址输入错误主机时,显示框提示“PleasecheckthenetworkorURL”Whois黑盒测试1.分别对输入框进行如下操作:不输入、输出正确主机、输出错误主机2.点击Whois按钮进行查询不输入时,显示框输出“请输入需要查询的内容!(如)”输入正确主机时,显示款正常显示所查询主机的注册信息(如名称地址等)输入错误主机时,显示框提示“Nomatchfor”Port黑盒测试1.分别对输入框进行如下操作:不输入、输出正确主机、输出错误主机2.点击Port按钮进行查询不输入时,显示框输出“请输入需要查询的内容!(如)”输入正确主机时,显示款正常显示所查询主机的开放端口号。输入错误主机时,显示框提示“Thehostisinvalid”Tracert黑盒测试1.分别对输入框进行如下操作:不输入、输出正确主机、输出错误主机2.点击Tracert按钮进行查询不输入时,显示框输出“请输入需要查询的内容!(如)”。输入正确主机时,显示款正常显示所查询主机的IP地址。输入错误主机时,显示框提示“无法解析目标系统名称swsws。”。Nslookup黑盒测试1.分别对输入框进行如下操作:不输入、输出正确主机、输出错误主机2.点击Nslookup按钮进行查询不输入时,显示框输出“请输入需要查询的内容!(如)”。输入正确主机时,显示款正常显示所查询主机的IP地址及服务器信息。输入错误主机时,显示框提示“Unkown”。清屏黑盒测试点击清屏按钮显示框内的内容恢复为空保存黑盒测试点击保存按钮显示框内输出的查询信息保存至同一级目录下,并且弹出“保存成功”提示使用说明黑盒测试点击使用说明按钮“使用说明”界面显示完整帮助黑盒测试点击帮助按钮“帮助”界面显示完整关于黑盒测试点击关于按钮“关于”界面显示完整字体放大黑盒测试点击左下方的加号键显示框内字体变大字体缩小黑盒测试点击左下方的加号键显示框内字体变小按钮提示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025云南楚雄州永仁县教育系统遴选校医1人备考考试题库及答案解析
- 2025天津市渤海国资人力资源开发服务有限公司招聘项目制工作人员备考考试试题及答案解析
- 2025年甘肃省嘉峪关市慈善协会招聘公益性岗位人员考试核心题库及答案解析
- 2025南平市延平区国有资产投资经营有限公司招聘综合部业务员1人考试重点试题及答案解析
- 2026年陕西中医药大学第二附属医院博士研究生招聘(20人)备考考试题库及答案解析
- 2025福建三明市某机关单位招聘外包人员3人备考核心试题附答案解析
- 2025广东中山市板芙镇招聘公办中小学校临聘教师1人考试备考题库及答案解析
- 2026辽宁本溪市教育系统冬季名校优生引进急需紧缺人才4人(本溪市第一中学)备考核心试题附答案解析
- 2025福建泉州师范学院招聘人工智能通识课编外硕士教师2人考试重点试题及答案解析
- 2025广西桂林电子科技大学第二批教职人员控制数工作人员公开招聘32人考试重点题库及答案解析
- 肠外营养疗法规范
- sw水箱施工方案
- 2023-2024学年广东省广州市海珠区八年级(上)期末地理试题及答案
- 旅游策划理论及实务第1章旅游策划导论
- 中华人民共和国治安管理处罚法2025修订版测试题及答案
- 产品生命周期管理(PLM)方案
- istqb考试题目及答案
- 2025年嫩江市招聘农垦社区工作者(88人)笔试备考试题附答案详解(a卷)
- 展厅空间设计案例
- 企业降本增效课件
- 中医护理技术提升与临床应用
评论
0/150
提交评论