资源下载地址:https://download.csdn.net/download/sheziqiong/85621749

远程控制主机项目介绍

本文为 HITwh 网络空间安全专业网络空间安全设计与实践 I 的选题之一,主要实现了远程监控局域网内的主机桌面与网络情况、简单键鼠控制、远程断网(ARP 攻击)、数据加密传输等功能。由于本文是由 Word 直接复制到 Typora 中生成的,尽管经过了简单的修改,但仍不能保证所有格式都正确,且很多图片模糊不清,暂时没有精力解决。

概要设计

本次课程设计题目为远程控制主机,我选择的远程主机为 windows 10 虚拟机(运行在 VMWare Workstation Pro 16 中)。系统环境为 Windows 10,使用语言为 python,版本 3.9,编程软件为 VS Code。

主要功能包括:图形化界面,视频监控,鼠标键盘远程控制,记录监控时长,监控硬件资源使用,监控网络活动,中断网络访问等。为了更好的性能,还需要使用多线程模型。功能结构图如图 1 所示。

图形化界面由 pyqt5 实现,程序运行后,会启动主界面(图形界面一),然后阻塞,等待用户操作。在该界面上,用户可以输入目标主机 IP,然后开启视频监控线程、硬件资源使用监控线程和监控时长记录线程,其中前两个线程都需要使用 socket 通信。视频监控线程需要不断接收目的主机发来的数据包,将数据包的内容转换成相应的图片,然后显示在主界面上;硬件资源使用监控线程需要在另一个 socket 上接收目标主机发来的 CPU 使用率、内存使用率以及总内存等硬件资源信息,然后将其格式化后显示在主界面;监控时长记录线程需要记录当前视频监控的时长,格式化后将其显示在主界面。键鼠控制我放在了主线程,当用户在视频界面点击某个位置时,将记录点击坐标,并根据缩放比例转换成目标主机桌面的坐标,然后将相应的键鼠操作用整数表示,和坐标一起发送给目标主机,目标主机接收后将进行相对应的操作。同时,表示键鼠操作的整数将被加密,加密方法为 RSA。视频监控随时可以结束,也可以截取当前的屏幕截图并保存。

在视频监控的同时,用户可以选择性地开启网络活动监控线程。如果用户需要开启,则需要先在设置界面(图形界面二)进行过滤设置,选择需要捕获的数据包,可以从网络接口、协议类型、源主机、目的主机几个方面进行设置。开启该线程后,本机将开始抓包,并将抓到的包进行处理后显示在主界面。抓包过程中,随时可以暂停或终止,终止后可以将抓到的数据包保存为 pacp 格式,以供后续使用 wireshark 详细查看。用户也可以选择中断目标主机的网络访问,原理即为 ARP 攻击,该选项将会开启一个线程,持续向目标主机发送 ARP 包。

详细设计

Python 对于多线程的支持对用户非常友好,使用 Threading 库,可以非常方便的创建一个新线程并使其运行,也可以通过 Event () 函数来协调多线程之间的运行与阻塞。图形化界面也可以通过 pyqt5 非常方便的编写。

视频监控的主要原理为目标主机截取当前桌面截图并通过 socket 发送给本机,本机接收后将图片改变为需要的格式并显示在主界面。但是有一个主要问题就是,每次目标主机每次截取的图片大小基本都在 500KB 以上,有些甚至达到了 1MB,如果每秒截取十张,并且全部发送,那么需要的网络带宽为 5M/s 到 10M/s,网络负担明显过大。因此,可以采取差异化传输。同样为每秒截取十张图片,即每 100 毫秒截取一张,目标主机与本机刚建立连接时,截取的第一张图片将完整发送,之后,目标主机截取每一张图片后都将与上一张比较,若没有变化,则不发送,100 毫秒再截取下一张;如果有变化,则将两张图片做减法,找到有差异的部分,仅发送差异化的部分。比如,当前截取的图片与上一张图片仅有一个光标的差别,那么就会只发送该光标。为了继续优化,将再次比较差异化部分与当前截图的大小,哪一个小就发送哪一个。为了方便本机确定接收到的图片是完整图片还是差异化图片,将在数据包设置一个标志位,1 表示完整图片,0 表示差异化图片。目标主机差异化发送图片的伪代码如图 2 所示,本机的图片传输流程图分别如图 3 所示。

目标主机硬件资源的监控也是通过 socket 实现的。目标主机每两秒发送一次 CPU 使用率、内存使用率和总内存,本机循环接收,接收到后即进行格式转换与单位转换,然后填充到主界面对应的位置。本机对应的流程图如图 5 所示,目标主机发送硬件资源信息的流程图非常简单,不再给出。

监控时长的记录主要是通过 python 的 time 库实现的。当开始监控一台主机时,就会获取当前时间,并开启一个新的线程用来记录时间,每秒更新一次。伪代码如图 6 所示。

截图功能可以截取当前目标主机的桌面,这个十分容易实现,因为在把图片显示到主界面之前,一定需要用一个变量 img 来存储它,只要在按下截图按键时,立即获得当前的 img,然后保存为 png 文件即可。

在监控过程中,随时可以结束视频监控,由于视频监控而开启的各个线程也将会随之阻塞或退出。这些线程都是通过一个定义为 event_monitor 的线程事件来调度的。当 event_monitor 被设置时(event_monitor.set () 函数调用),所有线程都将开启,并正常运行,各个线程通过 event_monitor.is_set () 函数来检测对应的进程事件是否被设置;当用户选择结束线程时,将会调用 event_monitor.clear () 函数,清除该事件的设置,并断开 socket 连接,相应的进程也就会阻塞(如监控时间记录线程)或退出(图片接收线程、硬件使用信息接收线程)。结束视频监控的流程图如图 7 所示。

调试分析

在编程过程中,遇到的第一个问题是 Scapy 只能确认到 TCP/UDP 这一层,无法确定具体是 Http 协议、Https 协议或 SMTP 协议等。我最初的想法是想办法去解析更深一层,即 RAW 层的内容,从中可以获得某些字符串如’Http’,进而确定具体的协议类型。但是查找了各种资料,依然没有可行方案,最后突然意识到,可以通过端口号来判断具体的协议类型。比如,Http 协议的数据包通过 TCP 80 端口,Https 协议的数据包通过 TCP 443 端口。而通过 Scapy 可以很轻松的获得端口号等信息。于是,我使用一个字典来保存端口号(或其他整数)和协议类型的映射关系,端口号(或其他整数)作为键,协议类型作为值,当抓到一个数据包后,通过端口号来找到字典中对应的键值对,进而就可以确定协议类型。

在做视频监控模块时,我本来计算将传送的每一张图片加密,密钥使用一张随机生成的图片,将密钥图片与要发送的每一张图片的每一个像素进行异或,然后发送加密后的图片。本机接收到图片后,再次与密钥图片进行异或,得到的就是原图片。但是,由于其中的格式转换过于复杂,我做了接近三天仍没有丝毫进展,只好放弃,去做了键鼠操作的加密。www.biyezuopin.vip

另外就是发送图片的时候,在前文也叙述过,我最开始是采取整张图片完全发送的,这样对网络负担过大。我想过牺牲一些清晰度来减轻网络负担,但是为了本机监控方便,将画面缩放到原来的 0.6 倍本身就已经损失了很多清晰度,如果再压缩,那么在本机就很难看清楚画面了,监控也就失去了意义。后来在参考另外一个项目时得到了灵感,即使用差异化传输。这样,对网络的负担基本可以不需要考虑。

现在回顾整个设计过程,主要涉及到了 socket 编程、arp 攻击原理、scapy 库的使用、多线程模型、图片处理 (opencv 的使用)、RSA 加密以及基本的计算机网络知识等。在学习计算机网络时曾经做过抓包实验,但那是使用 wireshark 工具来进行抓包,本次课设则是自己手写了一个抓包工具,对抓包的原理有了更加深刻的理解。而图片处理、opencv 库和 Pillow 库的使用则是之前没有接触过的,通过这次课设,也对它们的基本使用方法有了一个大概的了解。Socket 编程是这学期刚学习的内容,虽然 python 的 socket 操作与 C 语言相比简单了很多,但作为复习来讲还是有益处的,并且也算是增加了使用经验。

测试结果

接下来我将展示远程控制主机课程设计最终实现的功能:界面展示,视频监控,远程控制,硬件资源使用信息监控,网络活动监控的开始、暂停与终止,保存截图和数据包等。www.biyezuopin.vip

首先是程序运行后的主界面,如下图所示。

输入目标主机 IP,开始视频监控。

远程控制打开浏览器并进行键盘输入(具体已在验收时展示):

结束监控,又回到初始界面:

监控目标主机硬件资源使用信息:

监控网络活动展示(打开浏览器,只抓取 Https 协议类型的数据包):

随便点击表格的一行,显示数据包具体信息:

点击断网,使用 ARP 攻击成功中断了网络访问(在图 17 中网络正常):

资源下载地址:https://download.csdn.net/download/sheziqiong/85621749

基于Python实现的远程控制主机设计相关推荐

  1. python网络爬虫的流程图_基于Python的网络爬虫的设计与实现

    龙源期刊网 http://www.qikan.com.cn 基于 Python 的网络爬虫的设计与实现 作者:高祖彦 来源:<商情> 2020 年第 33 期 [摘要]一个爬虫从网上爬取数 ...

  2. python版植物大战僵尸源码_基于python的植物大战僵尸游戏设计与实现.docx

    湖南理工学院毕业设计(论文) PAGE PAGE 1 学 号 毕业设计(论文) 题目:基于python的植物大战僵尸游戏设计与实现 作 者 届 别 届 院 别 信息与通信工程学院 专 业 信息工程 指 ...

  3. 基于python可视化的网页搜索引擎设计#毕业设计

    开发环境 项目编号:基于python可视化的网页搜索引擎设计#毕业设计 开发语言:Python python框架:django 软件版本:python3.7/python3.8 数据库:mysql 5 ...

  4. 基于Python的图书推荐系统的设计与实现

    基于Python的图书推荐系统的设计与实现 课题描述 在这个数据爆炸的年代,人们的需求逐渐增多,而所对应的资源更是海量. 一个人要从无数的选择中选中自己所感兴趣的无异于大海捞针. 本系统在实现个人信息 ...

  5. 基于Python的数据分析系统的设计和实现

    <基于Python的数据分析系统的设计和实现>该项目采用技术Python的django框架.mysql数据库 ,项目含有源码.论文.PPT.配套开发软件.软件安装教程.项目发布教程.核心代 ...

  6. 可视化平台python_基于Python的可视化数据分析平台设计与实现

    Computer Era No. 12 2017 0 引言 随着云计算.物联网.社交网络等的兴起和数据库技术的成熟,社会中的各类数据正在以前所未有的速度增长.传统的数据处理方式难以发掘出海量数据中所隐 ...

  7. 基于Python的数独游戏的设计与实现

    源码获取:https://www.bilibili.com/video/BV1Ne4y1g7dC/ 基于Python的数独游戏的设计与实现

  8. 基于python的飞机大战游戏设计与实现

    基于python的飞机大战游戏设计与实现,采用MySQL+pygame+Tkinter实现飞机大战游戏,主要功能有注册+登录+游戏初始化(开始游戏+游戏操作说明+版权信息)+游戏主界面[设置敌机种类并 ...

  9. 基于Python的汽车销售系统的设计和实现

    <基于Python的汽车销售系统的设计和实现>该项目采用技术Python的django框架.mysql数据库,项目含有源码.论文.PPT.配套开发软件.软件安装教程.项目发布教程.核心代码 ...

  10. 基于Python的新闻聚合网站设计与实现

    摘 要:本论文研究内容是基于Python的爬虫网络设计,利用Python的Scrapy的框架搭建爬虫网络,并设计一个全新的新闻网站,网站实现对新闻数据的分类,以及用户对新闻的分享.评论等,且本论题设计 ...

最新文章

  1. 为什么你用matplotlib savefig保存下来的图像是一个空白图片?
  2. web接口响应时间标准_从零搭建Web应用(二)
  3. python现在第几版-2020 年10月编程语言排行榜,Python 排名逼近第二
  4. uc浏览器为什么安装在c盘_你肯定不知道为什么Windows上面的软件都想把自己安装在C盘...
  5. 【leetcode 简单】第十一题 搜索插入位置
  6. Hadoop中通过ToolRunner和Configured实现直接读取命令行动态出入reduce task数量,jar文件等...
  7. Spring Boot Redis缓存
  8. java 线程的join_多线程中join()
  9. 庆祝本人在cnblogs排名进入前2000!
  10. Centos7 完全卸载MySQL8.0
  11. postsql获取表字段信息SQL
  12. MATLAB--求一个矩阵中所有元素的平均值
  13. 2021申请邓白氏编码最新操作手册
  14. c语言程序设计精髓第四章编程题
  15. 湖南大学计算机专业推免生,湖南大学2018年招收推荐免试攻读研究生简章
  16. 非淡泊无以明志,非宁静无以致远。
  17. Leetcode——860.柠檬水找零——题解—+代码实现
  18. 英文单词cipher 和password的区别,用法有什么不同,
  19. 想在Windows上使用getopt,我教你原地起飞
  20. 图扑数字孪生军演,构建跨域作战体系

热门文章

  1. 综合行政执法改革依据
  2. Python 彻底搞懂列表推导式|初级到进阶(实例30+)
  3. 《不抱怨的世界》-- 威尔·鲍温(Will Bowen)
  4. 关系抽取论文阅读笔记
  5. 测试学习-测试工具wireshark、HFS、wlan信号
  6. 药物不良反应数据库信息的下载
  7. 杭州电子科技大学acm--2021
  8. hwd分别是长宽高_W H D在尺寸上代表什么??
  9. 飞机地铁的java项目怎么做_个人项目-地铁出行路线规划(Java代码实现)
  10. 怎样完美卸载IE8浏览器