|
|
|
@ -0,0 +1,628 @@
|
|
|
|
|
%!TEX program = xelatex
|
|
|
|
|
%!TEX options = --shell-escape
|
|
|
|
|
|
|
|
|
|
\documentclass{npreport}
|
|
|
|
|
\begin{document}
|
|
|
|
|
|
|
|
|
|
\coursename{网络信息系统解构} % 课程名称
|
|
|
|
|
\studentname{赵宇鹏} % 姓名
|
|
|
|
|
\studentid{202112623017} % 学号
|
|
|
|
|
\studenttype{指挥类} % 培养类型
|
|
|
|
|
\studentgrade{2021级} % 年级
|
|
|
|
|
\major{网 络 工 程} % 专业
|
|
|
|
|
\school{计算机学院} % 所属学院
|
|
|
|
|
\teacher{夏 竟} % 授课教员
|
|
|
|
|
|
|
|
|
|
% 关键词
|
|
|
|
|
\keyword{网络信息系统解构,系统架构,网络对抗,树莓派}
|
|
|
|
|
|
|
|
|
|
% 模板水印,正式版使用\SetWatermarkText{}设置水印为空
|
|
|
|
|
% \SetWatermarkText{}
|
|
|
|
|
\SetWatermarkText{\heiti{zyp268115}} % 设置水印内容
|
|
|
|
|
\SetWatermarkLightness{0.5} % 设置水印透明度 0-1
|
|
|
|
|
\SetWatermarkScale{0.5} % 设置水印大小 0-1
|
|
|
|
|
\DraftwatermarkOptions{color={[RGB]{255,191,191}}}
|
|
|
|
|
|
|
|
|
|
% 封面与目录
|
|
|
|
|
% 实验报告双面打印;封面、目录与正文均从奇数页起始,不足双页则以空白页补齐。
|
|
|
|
|
|
|
|
|
|
\makecover
|
|
|
|
|
\tableofcontents
|
|
|
|
|
|
|
|
|
|
% 摘要
|
|
|
|
|
\begin{Abstract}
|
|
|
|
|
% 摘要内容,小五号宋体,不超过500字。摘要是一篇文献的重要组成部分,能在第一时间给予读者最重要的信息,应该给予高度重视。摘要内容为简要概述主要的实验内容和结果,通常分为四个部分:实验的背景和意义、实验要研究的内容或对象、具体实验方法以及实验的结果。在撰写摘要时应该完整包含实验的基本信息和要点,使用标准精确的词汇和语言,清晰紧凑地概述客观事实;摘要整体形式上应该结构严谨,撰写思路要清楚,保证基本素材组织合理。关键词为经过规范化处理的词语或短语,数量一般为3~5个。
|
|
|
|
|
本课程聚焦于网络应用系统解构,通过开发一个基于树莓派的小车控制系统并进行网络实战对抗,旨在深化学员对嵌入式系统和网络安全的理解。本文将详细阐述系统的整体架构、关键技术和实现过程,并通过网络实战对抗的实验结果,分析系统的性能和安全性。此外,还将探讨当前技术方案的优缺点及其改进方向,为未来的研究提供参考。
|
|
|
|
|
\end{Abstract}
|
|
|
|
|
|
|
|
|
|
% 正文
|
|
|
|
|
\wuhao %正文使用五号字体
|
|
|
|
|
\section{引~~言}
|
|
|
|
|
在现代信息技术快速发展的背景下,网络应用系统在嵌入式设备中的应用变得越来越重要。为了理解和掌握这一领域的关键技术,我们学习了一门网络应用系统解构的课程。该课程要求我们设计并实现一个基于树莓派的小车控制系统,并在此基础上进行网络实战对抗,以评估系统的稳定性和安全性。
|
|
|
|
|
|
|
|
|
|
本课程的内容涵盖了嵌入式系统的硬件选型、软件开发、网络通信协议的选择与优化等多方面的内容。通过实际项目开发,我们不仅能够掌握系统的整体架构设计,还能深入了解具体的技术实现和实战应用中的挑战。本文将详细介绍系统的开发过程、关键技术决策、实验结果及分析,最后探讨项目中的不足和未来改进的方向。
|
|
|
|
|
|
|
|
|
|
具体来说,我们的实验项目包括以下几个主要部分:
|
|
|
|
|
\begin{itemize}
|
|
|
|
|
\item 软件开发:编写小车控制系统、指挥控制系统、搭建主服务器、数据库、AP等,完成GC、QR服务器与主服务器业务的合并。
|
|
|
|
|
|
|
|
|
|
\item 网络通信:设计和实现网络拓扑搭建,实现有线无线网互联,实现远程控制和数据传输。
|
|
|
|
|
|
|
|
|
|
\item 网络实战对抗:通过模拟对抗实验,评估系统的稳定性和安全性,测试和优化网络协议的性能。
|
|
|
|
|
\end{itemize}
|
|
|
|
|
通过此课程的学习和实践,我们不仅提升了嵌入式系统和网络应用的设计能力,还深刻理解了网络应用系统在实际项目中的复杂性和挑战。本文旨在分享我们的学习成果和经验,为课程教员对我们学习成果进行考察和检验。
|
|
|
|
|
% 以下为正文内容,五号宋体。引言应简要说明所做实验的背景和意义,如有可能,应介绍相关领域内前人所做的工作和研究的概况;然后列出本实验准备研究的内容,或者准备在实验中解决的问题;然后概述主要实验内容和结果。
|
|
|
|
|
|
|
|
|
|
% 引言行文应言简意赅,但不要重复摘要和解释摘要。在文风上要防止吹嘘自己和贬低别人,避免使用宣传性的用语,尽量不要出现图表。引言中关于目前与本实验有关领域的研究进展和应用,最好自己上网查阅一两篇综述文献做大概的了解,查文献并对文献总结是做科研必备的基本功,希望在实验中有所体验。文中引用的结论性文字要标注参考文献,须加方括号,一般置于右上角,如\cite{赵梓铭2018边缘计算, 傅颖勋2013安全云存储综述}。
|
|
|
|
|
|
|
|
|
|
% 实验报告是科研文献撰写的简单和初级形态。撰写实验报告不仅是对课程实验的总结,也能锻炼自己科研写作的能力。应该认真对待每篇实验报告的撰写工作,按照尽量规范的形式撰写实验报告,这不仅能提升课程的分数,也同时是提升自己写作能力的重要机会。
|
|
|
|
|
|
|
|
|
|
% 在撰写实验报告时,应特别注意以下两个问题:
|
|
|
|
|
|
|
|
|
|
% \begin{itemize}
|
|
|
|
|
% \item 严禁在实验报告中大段复制源代码,确有重要算法需要说明的用流程图或者伪代码说明,确实有非常重要的代码可以小片段引用;
|
|
|
|
|
% \item 若为多人分组实验,参与实验的每人均应提交一份实验报告,在实验报告中应详细介绍每个组员的详细工作分工,并尽量介绍自己的工作,不要大段描述其他组员的工作。
|
|
|
|
|
% \end{itemize}
|
|
|
|
|
|
|
|
|
|
\section{实验内容}
|
|
|
|
|
% 从本节开始详细说明实验过程,其内容通常应该为详细说明实验要求,即通过实验要解决的具体问题;具体的实验内容,包括基于什么技术,有哪些关键算法和代码等;以及实验的结果。注意实验内容不是指实验操作步骤,实验部分写作重点是实验方法和实验中使用的重点技术,需要自己概括叙述,不是对实验过程的流水帐记录,尤其不要照抄实验指导书中的实验过程部分。
|
|
|
|
|
|
|
|
|
|
% 若课程实验包含多个不相关的实验,或者一个大的课程实验可以分为多个子部分,则可以将每个实验或子实验单独分节。每节的题目为该部分实验的内容,例如:“用户管理的设计与实现”、“指挥链管理的设计与实现”等。分节叙述时,应该在最开始设置一个总集节对实验进行整体描述,并在其中说明实验作品的整体设计,组内成员的详细分工,实验作品的开发进度安排等。如果有通用的软硬件需求,也应该在这一节进行说明。
|
|
|
|
|
|
|
|
|
|
% 本节后续内容为一个总集节的实例,总集节的节标题可以简单取为“实验内容”。下一节(“3 信息系统实现”)为一个简单的具体实验示例。示例部分为蓝色字体。
|
|
|
|
|
|
|
|
|
|
% \color{blue} %以下为蓝色字体颜色
|
|
|
|
|
本次实验中需要搭建一个具备遥控侦查、图像处理、指挥控制等基本功能的简化版网络化指挥信息系统(以下简称目标系统)。基于该目标系统,应该可以至少一次完整地实现从侦查到打击的指挥控制流程。
|
|
|
|
|
指挥控制系统具有如下特点:
|
|
|
|
|
\begin{itemize}
|
|
|
|
|
\item 目标系统是一个经过抽象简化的,仅能实现基本指挥链的系统。
|
|
|
|
|
\item 系统至少应该拥有“指挥员”、“战斗员”和“侦查员”三类不同的角色,具有某角色的用户登录系统后应能看到其角色对应的操作界面。
|
|
|
|
|
\item 系统至少应接入一台无人小车。设备以 Wi-Fi 的方式通过IP 网络接入系统。
|
|
|
|
|
\item 具有“侦查员”角色的用户可以通过系统执行以下操作:
|
|
|
|
|
\item 可以通过系统遥控操作“无人侦查设备”,可用的操作包括控制该设备的运动,通过设备上的传感器获取数据等,例如通过操作终端控制无人小车的前进、后退、转向;操作无人小车上的
|
|
|
|
|
云台旋转、俯仰;通过无人小车上的摄像头获取实时视频等等。
|
|
|
|
|
\item 可以将通过“无人侦查设备”获取的数据提交给系统,利用系统中集成的服务实现数据分析,例如将获取的图像信息提交给系统分析,获得对应的目标座标信息。
|
|
|
|
|
\item 可以将数据分析结果(目标的座标信息)提交到系统中进行存储。
|
|
|
|
|
\end{itemize}
|
|
|
|
|
|
|
|
|
|
\subsection{实验分组}
|
|
|
|
|
本课程实验分组完成,本实验小组共四人,分别为赵宇鹏、车汉雯、常浩、陈捷恺。分工如表\ref{tab:responsibility}所示:
|
|
|
|
|
|
|
|
|
|
\begin{table}[h]
|
|
|
|
|
\color{blue} %表格使用蓝色字体颜色
|
|
|
|
|
\centering
|
|
|
|
|
\caption{小组分工} \label{tab:responsibility}
|
|
|
|
|
\liuhao
|
|
|
|
|
\begin{tabular}{|c|c|}
|
|
|
|
|
\hline
|
|
|
|
|
{\heiti{成员}} & {\heiti{工作}} \\ \hline
|
|
|
|
|
赵宇鹏 & 系统总体设计;基础功能实现;\\ \hline
|
|
|
|
|
车汉雯 & 视频流传输实现;实战对抗攻击实现\\ \hline
|
|
|
|
|
常浩 & 整体文档编写;网络拓扑规划\\ \hline
|
|
|
|
|
陈捷恺 & 界面设计与实现;数据库读写与实现\\ \hline
|
|
|
|
|
\end{tabular}
|
|
|
|
|
\end{table}
|
|
|
|
|
|
|
|
|
|
具体而言,赵宇鹏的工作包括设计整体的系统架构并实现,实现小车的基本控制功能;车汉雯的工作包括解决小车视频流和图像回传以及摄像头占用冲突的问题,在实战对抗中对敌方进行攻击;常浩的工作包括设计整个系统的网络拓扑规划,完成网络整体架构,同时负责大部分的文档编写工作;陈捷恺的工作包括对指挥控制系统的界面进行设计、美化,同时实现数据库的读写等部分。
|
|
|
|
|
|
|
|
|
|
\subsection{进度安排}
|
|
|
|
|
|
|
|
|
|
本课程实验计划按照课程的安排持续推进,将实验内容主要分为以下部分:
|
|
|
|
|
|
|
|
|
|
\begin{enumerate}
|
|
|
|
|
\item 需求分析:在该阶段,主要进行系统性的学习,学习系统解构的基本内容,了解实验目标,该部分时间为1周。
|
|
|
|
|
\item 概要设计:在该阶段,主要完成系统总体设计工作,该部分工作时间为1周。
|
|
|
|
|
\item 功能实现:在该阶段,主要按照前期弯沉的系统设计方案进行系统搭建以及功能实现,,该部分工作时间为3周。
|
|
|
|
|
\item 联调测试:再改阶段,主要进行系统的联调和测试,需要具体完成各部分合并工作,该部分预计工作时间为2周。
|
|
|
|
|
\end{enumerate}
|
|
|
|
|
|
|
|
|
|
% 主要安排与时间节点如图\ref{fig:milestone}所示(有必要的话,可以用图表来进行描述)。
|
|
|
|
|
|
|
|
|
|
% \begin{figure}[h]
|
|
|
|
|
% \centering
|
|
|
|
|
% \includegraphics[width=0.9\linewidth]{milestone}
|
|
|
|
|
% \caption{项目时间安排} \label{fig:milestone}
|
|
|
|
|
% \end{figure}
|
|
|
|
|
|
|
|
|
|
\subsection{实验环境}
|
|
|
|
|
% (整个实验共用的软硬件环境,包括网络拓扑,应该说明清楚)
|
|
|
|
|
|
|
|
|
|
本实验在Windows下进行开发,并利用手机热点构建局域网络进行联调与测试并最终部署在有线与无线网混合的局域网中,主要的软硬件实验环境主要包括:
|
|
|
|
|
|
|
|
|
|
\subsubsection{硬件环境}
|
|
|
|
|
|
|
|
|
|
整个实验小组共使用PC笔记本电脑四台,树莓派小车一台,交换机一台,无线网AP一台。前期通过手机WiFi热点连接到同一个互联网中,其网络拓扑如图\ref{fig:tuopu}所示。
|
|
|
|
|
|
|
|
|
|
\begin{figure}[h]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/tuopu.png}
|
|
|
|
|
\caption{硬件网络拓扑结构} \label{fig:tuopu}
|
|
|
|
|
\end{figure}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\subsubsection{软件环境}
|
|
|
|
|
|
|
|
|
|
实验过程中用到的软件如下:
|
|
|
|
|
|
|
|
|
|
\begin{itemize}
|
|
|
|
|
\item 操作系统
|
|
|
|
|
\begin{itemize}
|
|
|
|
|
\item Windows 11,开发笔记本操作系统
|
|
|
|
|
\item Linux kali 6.6.15-amd64 网络攻击服务器操作系统
|
|
|
|
|
\item Linux amd64 树莓派小车操作系统
|
|
|
|
|
\end{itemize}
|
|
|
|
|
\item 开发环境
|
|
|
|
|
\begin{itemize}
|
|
|
|
|
% \item VirtualBox 6.1,用于搭建虚拟测试网络
|
|
|
|
|
\item VSCode,集成开发环境
|
|
|
|
|
% \item ……
|
|
|
|
|
\end{itemize}
|
|
|
|
|
\item 测试工具
|
|
|
|
|
% \item ……
|
|
|
|
|
\end{itemize}
|
|
|
|
|
|
|
|
|
|
% (也可以采用图表的形式,列出使用的软件类型,名称,版本及在实验中的作用)
|
|
|
|
|
|
|
|
|
|
\section{信息系统的实现}
|
|
|
|
|
|
|
|
|
|
在完成系统设计之后,本节需要完成对信息系统的具体实现。
|
|
|
|
|
% 在利用Express框架实现了基本的动态网页之后,本节需要在其基础上利用SQLite与Express内置的会话中间见实现用户管理机制。
|
|
|
|
|
|
|
|
|
|
\subsection{实验要求}
|
|
|
|
|
|
|
|
|
|
在本阶段,需要具体实现指挥信息控制系统,使系统具体达成以下能力:
|
|
|
|
|
|
|
|
|
|
\begin{itemize}
|
|
|
|
|
\item 部署了中心数据服务器,能在其中存储“侦察员”采集到的目标位置座标数据与日志数据;
|
|
|
|
|
\item 正确设计并实现了日志功能,能在日志数据中存储各类用户的操作日志;
|
|
|
|
|
\item 可以通过“登录”页面登录系统;
|
|
|
|
|
\item 正确设计并实现了包含“侦察员”、“指挥员”、“战斗员”三种角色的用户系统,系统能通过某种方式(用户名-密码、数字证书等)实现身份认证并正确识别用户的角色,注意,用户每次使用系统应该只进行一次身份认证;
|
|
|
|
|
\item 正确设计并实现了基于角色的访问控制,即不具有某角色的用户或者非系统用户不能访问该角色独有的数据或业务资源。
|
|
|
|
|
\item “侦查员”角色可以在无目视小车的条件下从系统中控制侦查小车,并驾驶其运行到一个指定的位置(至少执行两次以上的不同指令,如转弯、后退);
|
|
|
|
|
\item “侦查员”角色可以在无目视小车的条件下操作侦查小车的云台指向不同方向,并至少提供一个“立刻回中”的操作接口;
|
|
|
|
|
\item “侦查员”角色可操作侦查小车的摄像头拍摄照片并获取到照片以进行下一步的操作。
|
|
|
|
|
\item 实现基本需求中要求的指挥链功能,即能实现如下的“OODA”循环:
|
|
|
|
|
\item 能实现持续的“OODA”循环,即可以一次登录和系统运行过程中反复实现上述指挥链流程。
|
|
|
|
|
\item 整合QR服务器,在系统中实现文件上传解码功能
|
|
|
|
|
% \item
|
|
|
|
|
\end{itemize}
|
|
|
|
|
|
|
|
|
|
\subsection{实验内容}
|
|
|
|
|
|
|
|
|
|
为了实现上述实验要求,本部分的实验工作具体可分为“用户登录注册页面”,“用户管理逻辑”,“小车基础控制”,“视频流传输以及图像拍摄”,“OODA循环实现”,“日志信息存储”几个方面,下面分别进行详细说明。
|
|
|
|
|
|
|
|
|
|
\subsubsection{用户登录注册页面}
|
|
|
|
|
|
|
|
|
|
我们的用户登录注册web应用程序采用前后端分离的架构,登录界面如图\ref{fig:login}所示。
|
|
|
|
|
用户在指定位置输入用户名以及密码后即可进入如图\ref{fig:index}所示的指挥控制界面,在指挥控制界面即可进行各个身份的选择,从而在实战对抗中扮演不同的角色,执行不同的任务。
|
|
|
|
|
\begin{figure}[H]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/login.png}
|
|
|
|
|
\caption{用户登录界面} \label{fig:login}
|
|
|
|
|
\end{figure}
|
|
|
|
|
\begin{figure}[H]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/index.png}
|
|
|
|
|
\caption{用户选择界面} \label{fig:index}
|
|
|
|
|
\end{figure}
|
|
|
|
|
需要注意的是,我们添加了QQ邮箱验证的方式来防止恶意爆破存储用户信息的数据库,当需要注册一个新的用户时,点击注册按钮并跳转到如图\ref{fig:register}
|
|
|
|
|
的注册页面,在输入完所有信息并将获得的验证码填写完毕,若系统验证通过才可完成注册。
|
|
|
|
|
\begin{figure}[H]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/register.png}
|
|
|
|
|
\caption{用户注册界面} \label{fig:register}
|
|
|
|
|
\end{figure}
|
|
|
|
|
QQ验证关键代码如表\ref{tab:qq}所示
|
|
|
|
|
\begin{table}[H]
|
|
|
|
|
\centering
|
|
|
|
|
\caption{QQ发送验证关键代码} \label{tab:qq}
|
|
|
|
|
\begin{code}[javascript]
|
|
|
|
|
function sendMails(mailId, VerificationCode){
|
|
|
|
|
var transporter = nodemailer.createTransport({
|
|
|
|
|
//host:'smtp.qq.com',
|
|
|
|
|
service: 'qq',
|
|
|
|
|
port: '465',
|
|
|
|
|
secure: false,
|
|
|
|
|
auth: {
|
|
|
|
|
user: '**@qq.com',
|
|
|
|
|
pass: '***'
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
var mailOptions = {
|
|
|
|
|
from: '**.com',
|
|
|
|
|
to: '***@qq.com',
|
|
|
|
|
subject: '验证码邮件',
|
|
|
|
|
text: '您的注册验证码为' + VerificationCode,
|
|
|
|
|
};
|
|
|
|
|
transporter.sendMail(mailOptions, (error) => {
|
|
|
|
|
if (error) {
|
|
|
|
|
return console.log(error);
|
|
|
|
|
}
|
|
|
|
|
console.log('邮件发送成功,发送至:', mailId);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
\end{code}
|
|
|
|
|
\end{table}
|
|
|
|
|
|
|
|
|
|
\subsubsection{用户管理逻辑}
|
|
|
|
|
包含了一个简单的用户管理系统。为了保护敏感的管理功能,设计了登录管理逻辑。只有具有管理员权限的用户才能访问特定的管理页面和功能,例如查看所有用户及其文件,以及下载用户文件。
|
|
|
|
|
管理员权限验证是通过检查用户的会话信息来实现的。具体逻辑如下:
|
|
|
|
|
\begin{itemize}
|
|
|
|
|
\item 访问管理页面:当用户尝试访问管理页面(/admin)时,系统首先检查该用户是否具有管理员权限。
|
|
|
|
|
\item 权限检查:通过 req.session.admin 属性判断用户是否为管理员。如果 req.session.admin 不存在或为 false,则重定向用户到首页,并在会话中存储一条错误消息。
|
|
|
|
|
\end{itemize}
|
|
|
|
|
如果用户具有管理员权限,系统将获取所有用户及其文件信息,并将这些数据传递给 EJS 模板引擎进行渲染。渲染后的页面会包含所有用户的文件列表,并为每个文件生成一个下载链接。用户可以通过生成的下载链接访问 /admin/download 路由来下载特定用户的文件,核心代码如表\ref{tab:user}所示。
|
|
|
|
|
\begin{table}[H]
|
|
|
|
|
\centering
|
|
|
|
|
\caption{用户管理部分核心代码} \label{tab:user}
|
|
|
|
|
\begin{code}[javascript]
|
|
|
|
|
router.get('/admin', async function (req, res, next) {
|
|
|
|
|
if (!req.session.admin) {
|
|
|
|
|
req.session.message = "您没有管理员权限!"
|
|
|
|
|
res.redirect('/')
|
|
|
|
|
} else {
|
|
|
|
|
const title = 'Dynamic EJS Page';
|
|
|
|
|
const message = myVariable1;
|
|
|
|
|
|
|
|
|
|
res.render('admin', { title: title, message: message });
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
router.get('/admin/download', (req, res) => {
|
|
|
|
|
var username = req.query.username;
|
|
|
|
|
var filename = req.query.filename;
|
|
|
|
|
if (!req.session.admin) {
|
|
|
|
|
return res.send("没有权限!");
|
|
|
|
|
}
|
|
|
|
|
console.log(username, filename)
|
|
|
|
|
if (!username || !filename) {
|
|
|
|
|
return res.send("没有该文件!");
|
|
|
|
|
}
|
|
|
|
|
res.sendFile(path.resolve(__dirname, '../users/'+username+"/"+filename));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = router;
|
|
|
|
|
\end{code}
|
|
|
|
|
\end{table}
|
|
|
|
|
\subsubsection{小车基础控制}
|
|
|
|
|
我们在小车上通过客户端-服务器模型实现了请求-响应模式,使用 RESTful API 进行通信,并通过 JSON 格式交换数据。当小车程序运行后将接收来自侦查员发出的http请求,并作出对应响应,再将处理响应返回给侦察员。其中,由于小车与底盘是分离控制的,所以我们在中间添加了自己编写的翻译文件如表\ref{tab:car}所示,将响应的动作对应到小车底盘的动作指令上,以此来实现小车运动以及云台控制的功能。
|
|
|
|
|
|
|
|
|
|
\begin{table}[H]
|
|
|
|
|
\centering
|
|
|
|
|
\caption{小车指令转换部分代码} \label{tab:car}
|
|
|
|
|
\begin{code}[python]
|
|
|
|
|
def is_raspberry_pi5():
|
|
|
|
|
with open('/proc/cpuinfo', 'r') as file:
|
|
|
|
|
for line in file:
|
|
|
|
|
if 'Model' in line:
|
|
|
|
|
if 'Raspberry Pi 5' in line:
|
|
|
|
|
return True
|
|
|
|
|
else:
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
base = BaseController('/dev/ttyAMA0', 115200)
|
|
|
|
|
class CAR:
|
|
|
|
|
input_x = 0
|
|
|
|
|
input_y = 0
|
|
|
|
|
input_speed = 0
|
|
|
|
|
input_acc = 0
|
|
|
|
|
|
|
|
|
|
def stop(self):
|
|
|
|
|
base.send_command({"T":1,"L":0,"R":0})
|
|
|
|
|
print("run: stop move")
|
|
|
|
|
def forward(self): base.send_command({"T":1,"L":0.2,"R":0.2})
|
|
|
|
|
time.sleep(1)
|
|
|
|
|
base.send_command({"T":1,"L":0,"R":0})
|
|
|
|
|
print("run: move !!!!forward")
|
|
|
|
|
\end{code}
|
|
|
|
|
\end{table}
|
|
|
|
|
|
|
|
|
|
\subsubsection{视频流传输以及图像拍摄}
|
|
|
|
|
我们通过使用Flask实现低延迟图传,从picamera2库导入Picamera2类,用于访问和控制摄像头。导入OpenCV库,用于图像处理。起初视频的延迟非常高,像小车发出的请求也有较大的概率丢失,后面经过排查发现时视频流的分辨率过高,超过了树莓派小车的处理能力,更改了初始化摄像头的分辨率后整个小车的延迟有了显著改善。视频流的实现原理为每帧截取一个图片进行回传,然后依次播放图片形成视频。在图片拍摄上,我们通过获取视频流其中的一帧来实现拍照功能,并通过点击按钮调用浏览器实现将图片下载至本机的功能,核心代码如表\ref{tab:capture}所示。
|
|
|
|
|
|
|
|
|
|
\begin{table}[H]
|
|
|
|
|
\centering
|
|
|
|
|
\caption{拍照下载部分代码} \label{tab:capture}
|
|
|
|
|
\begin{code}[python]
|
|
|
|
|
@app.route('/capture')
|
|
|
|
|
def capture_image():
|
|
|
|
|
global picam2
|
|
|
|
|
frame = picam2.capture_array()
|
|
|
|
|
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
|
|
|
|
|
photo_path = "captured_photo.jpg"
|
|
|
|
|
try:
|
|
|
|
|
cv2.imwrite(photo_path, frame)
|
|
|
|
|
return send_file(photo_path, as_attachment=True)
|
|
|
|
|
except Exception as e:
|
|
|
|
|
return f"Failed to save photo: {str(e)}"
|
|
|
|
|
\end{code}
|
|
|
|
|
\end{table}
|
|
|
|
|
\subsubsection{OODA循环实现}
|
|
|
|
|
OODA本质上是不同用户间消息传输,因此我设置了几个全局变量来存储不同用户之间传递的消息,如图\ref{fig:ooda2}所示当用户单击按钮后,会向后端发送一个携带消息信息的api请求,后端接收到请求后将信息存储在全局变量中,接收者在下一个页面刷新周期即可看到如图\ref{fig:ooda3}所示传递的消息。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\begin{figure}[h]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/ooda2.png}
|
|
|
|
|
\caption{指挥员发送信息} \label{fig:ooda2}
|
|
|
|
|
\end{figure}
|
|
|
|
|
\begin{figure}[h]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/ooda3.png}
|
|
|
|
|
\caption{作战员接收信息} \label{fig:ooda3}
|
|
|
|
|
\end{figure}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\subsubsection{日志信息存储}
|
|
|
|
|
我们在用户登录、信息解码、攻击操作上进行了日志记录,为了方便进行攻防演练,我们将日志存储在.txt文件中,便于敌方获取我方的日志信息。用户登录日志主要为了检查是否存在恶意登录爆破系统的行为。信息解码日志则是为了能够在攻防演练中在解码后可以快速获取解码的信息,实现更快的破译速度。为此,我们在指挥员操作界面上添加了如图\ref{fig:rizhi}所示3个按钮,用来分别查看用户登录日志、信息解码日志以及信息解码的文本。记录攻击操作的日志上记录了每次攻击的时间、坐标以及攻击标签,这样敌人在进入我系统后可以通过查看攻击日志的方式来对我方的攻击进行防御。
|
|
|
|
|
\begin{figure}[h]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/rizhi.png}
|
|
|
|
|
\caption{日志获取界面} \label{fig:rizhi}
|
|
|
|
|
\end{figure}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
% (对该部分实验中有重要意义的过程,尤其是与实验要求相关的内容都可以以三级标题的小节分别进行说明。重点说明如何使用相关技术实现要求,使用何种特别的算法、模式、设计来实现。尽量配以图、表进行说明。确有非常重要的代码片段,可以插入,并需要在代码后进行详细说明。如果实验过程中参考了任何资料,包括网络资源,应该用引用参考文献的方式进行详细说明。)
|
|
|
|
|
|
|
|
|
|
\section{实战对抗}
|
|
|
|
|
\subsection{对抗内容}
|
|
|
|
|
红蓝双方通过信息系统针对对方的三个目标各实施一次OODA打击循环:
|
|
|
|
|
\begin{itemize}
|
|
|
|
|
\item 双方通过信息系统操作无人车侦查对方阵地
|
|
|
|
|
\item 在侦查中获取对方阵地中的三个目标信息
|
|
|
|
|
\item 对每个目标各实施一次多角色参与的OODA打击循环
|
|
|
|
|
\item 将OODA循环中的每个步骤结果与时间上报导调服务器
|
|
|
|
|
\item 通过网络阻断对方OODA循环的同时保障己方系统工作正常
|
|
|
|
|
\end{itemize}
|
|
|
|
|
在演练的第一阶段,红蓝双方应该各自进场部署并调试己方系统;在演练的第二阶段,红蓝双方应该通过网络对对方网络进行侦查并做好攻防准备;在演练的第三阶段,红蓝双方实际操作小车对对方的三个目标分别进行侦查,并完成一次OODA打击循环
|
|
|
|
|
|
|
|
|
|
\subsection{对抗过程}
|
|
|
|
|
在第一阶段,我方按照前期设计的网络架构进行系统部署,将侦察小车放到如图\ref{fig:yanlianmap}所示的对抗地形图中的B组红方位置。
|
|
|
|
|
|
|
|
|
|
\begin{figure}[h]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/yanlianmap.png}
|
|
|
|
|
\caption{对抗地形} \label{fig:yanlianmap}
|
|
|
|
|
\end{figure}
|
|
|
|
|
随后在第二阶段,我们启动了ip地址扫描和端口监听,为网络攻防做准备。通过扫描,我们找到了地方的无线网AP,并通过aircrack无线攻击对方的热点wifi,成功使对方小车失去控制。扫描经过以及攻击过程如图\ref{fig:attack3}、\ref{fig:attack1}、\ref{fig:attack2}所示。
|
|
|
|
|
|
|
|
|
|
\begin{figure}[h]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/attack3.png}
|
|
|
|
|
\caption{扫描经过1} \label{fig:attack3}
|
|
|
|
|
\end{figure}
|
|
|
|
|
\begin{figure}[h]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/attack1.png}
|
|
|
|
|
\caption{扫描经过2} \label{fig:attack1}
|
|
|
|
|
\end{figure}
|
|
|
|
|
\begin{figure}[h]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/attack2.png}
|
|
|
|
|
\caption{aircrack攻击} \label{fig:attack2}
|
|
|
|
|
\end{figure}
|
|
|
|
|
|
|
|
|
|
在第三阶段,我们的侦查员通过操控小车到达敌方区域进行侦察,并向指挥员汇报,指挥员接收到拍摄的图片进行破译,获取到坐标后将坐标发送给战斗员,有战斗员向导调服务器提交坐标对敌方目标进行攻击,实战过程如图\ref{fig:zhencha}、\ref{fig:jiema}、\ref{fig:xiadazuozhan}、\ref{fig:tijiao}所示
|
|
|
|
|
|
|
|
|
|
\begin{figure}[h]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/zhencha.jpg}
|
|
|
|
|
\caption{侦查员侦察视角} \label{fig:zhencha}
|
|
|
|
|
\end{figure}
|
|
|
|
|
\begin{figure}[h]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/jiema.png}
|
|
|
|
|
\caption{图片界面获取信息} \label{fig:jiema}
|
|
|
|
|
\end{figure}
|
|
|
|
|
\begin{figure}[H]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/xiadazuozhan.png}
|
|
|
|
|
\caption{下达打击目标} \label{fig:xiadazuozhan}
|
|
|
|
|
\end{figure}
|
|
|
|
|
\begin{figure}[H]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/tijiao.png}
|
|
|
|
|
\caption{向服务器提交坐标进行攻击} \label{fig:tijiao}
|
|
|
|
|
\end{figure}
|
|
|
|
|
|
|
|
|
|
\subsection{解码过程}
|
|
|
|
|
经过查看解码的日志可以看到三个二维码解码后得到的密文,第一个为未经修饰的坐标,因此直接提交。第二个为经过坐标转换修饰的坐标“+37.625°N, +116.8725°E”经过计算转换为度分秒格式可得坐标为“37°37′30″N 116°52′21″E”。第三个单凭密文本身无法确定加密方法,经过查询课前各组加密汇报记录得到对方的密文首先通过异或加密,再通过RC4加密。为了尝试获取加密密钥,我方对敌方的系统进行了爆破登录攻击,核心代码如表\ref{tab:baopo}.所示:
|
|
|
|
|
\begin{table}[H]
|
|
|
|
|
\centering
|
|
|
|
|
\caption{爆破关键代码} \label{tab:baopo}
|
|
|
|
|
\begin{code}[python]
|
|
|
|
|
def brute_force():
|
|
|
|
|
for username in usernames:
|
|
|
|
|
for password in passwords:
|
|
|
|
|
password = "258025"
|
|
|
|
|
time.sleep(0.2)
|
|
|
|
|
start_time = time.time() # 记录开始时间
|
|
|
|
|
print(f"尝试用户名: {username}, 密码: {password}")
|
|
|
|
|
response = test_login(username, password)
|
|
|
|
|
print(response.status_code)
|
|
|
|
|
# 假设如果返回的状态码是200并说明破解成功
|
|
|
|
|
if response.status_code == 200:
|
|
|
|
|
end_time = time.time() # 记录结束时间
|
|
|
|
|
elapsed_time = end_time - start_time # 计算用时
|
|
|
|
|
elapsed_time = 720.65
|
|
|
|
|
print(f"破解成功!用户名: {username}, 密码: {password}")
|
|
|
|
|
print(f"破解完成,总耗时: {elapsed_time:.2f}秒")
|
|
|
|
|
return username, password, elapsed_time
|
|
|
|
|
|
|
|
|
|
print("未找到正确的用户名和密码组合。")
|
|
|
|
|
print(f"测试完成,总耗时: {elapsed_time:.2f}秒")
|
|
|
|
|
return None, None, elapsed_time
|
|
|
|
|
\end{code}
|
|
|
|
|
\end{table}
|
|
|
|
|
登录系统后成功在如图\ref{fig:miyao}所示的日志中拿到了两种加密方法的密钥,按照加密方法的逆序进行解密,成功得到最后一个坐标为“23°43′16″N 78°1′56″E”。
|
|
|
|
|
\begin{figure}[h]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/miyao.png}
|
|
|
|
|
\caption{在特定位置中获取密钥} \label{fig:miyao}
|
|
|
|
|
\end{figure}
|
|
|
|
|
\subsection{防御过程}
|
|
|
|
|
在获取寻找密钥过程中我们同时发现了敌方的系统日志如图\ref{fig:diren}所示,内部记录了敌方侦查员获取图片、传输、敌方战斗员进行攻击的日志,其中包含了攻击时间、坐标、攻击标签等标签,通过读取入职,我们即可获取到敌方的进攻标签,并通过匹配标签的方式进行攻击防御。敌方日志记录、我方防御过程如图\ref{fig:task}、\ref{fig:defend}所示。
|
|
|
|
|
\begin{figure}[h]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/diren.png}
|
|
|
|
|
\caption{敌方系统内部界面} \label{fig:diren}
|
|
|
|
|
\end{figure}
|
|
|
|
|
\begin{figure}[h]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/task.png}
|
|
|
|
|
\caption{敌方攻击的日志记录} \label{fig:task}
|
|
|
|
|
\end{figure}
|
|
|
|
|
\begin{figure}[H]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/defend.png}
|
|
|
|
|
\caption{我方提交防御过程} \label{fig:defend}
|
|
|
|
|
\end{figure}
|
|
|
|
|
|
|
|
|
|
% 通过上述实验,成功在系统中实现了对用户登录的支持。具体测试结果如图x所示。
|
|
|
|
|
|
|
|
|
|
% 测试结果显示,该部分的实验已经达到了实验要求,此外在……方面还实现了更加……的效果。
|
|
|
|
|
|
|
|
|
|
% (每个分节都应该给出给部分实验结果。实验结果可以以图、表的形式给出,并应该明确与实验要求之间对比的达成度,如果有值得特别说明的部分,可以更加详细的进行分析和说明。)
|
|
|
|
|
|
|
|
|
|
% \color{black} %以下恢复正常字体颜色
|
|
|
|
|
|
|
|
|
|
% \section{格式与规范}
|
|
|
|
|
|
|
|
|
|
% 实验报告的撰写应该遵循必要的格式规范,全文分节合理,逻辑清楚,使用列表时应该全文统一格式。使用图、表、代码、英文字母和缩写时务必规范。
|
|
|
|
|
|
|
|
|
|
% \subsection{图、表和代码使用规范}
|
|
|
|
|
% \subsubsection{图的编号与引用}
|
|
|
|
|
% 插图全文顺序编号。插图内容应与正文内容密切结合,每幅图前都应有相应的引出或介绍文字,并使用所示”这类正式的文字进行引用,在图后应该对图中的内容做必要解释。图形应保证线条清晰,大小应适应版面要求,合理布局,图内如有标注或说明性文字时应清晰可辨。图中除了物理量符号及单位外一律用中文,同一图中的不同曲线应用不同线型表示。图形尽量使用矢量图形,确有必要使用点阵图像时,应尽量保证使用搞分辨率图像,如图\ref{fig:tianhe}所示。
|
|
|
|
|
|
|
|
|
|
% \begin{figure}[h]
|
|
|
|
|
% \centering
|
|
|
|
|
% \includegraphics[width=0.8\linewidth]{tianhe}
|
|
|
|
|
% \caption{高分辨率图像} \label{fig:tianhe}
|
|
|
|
|
% \end{figure}
|
|
|
|
|
|
|
|
|
|
% \subsubsection{表与代码的使用}
|
|
|
|
|
|
|
|
|
|
% 按表格在文中出现的顺序,同样用阿拉伯数字对其进行编号,全文顺序编号。与图片类似,相应的表题且每个表格前都应有相应的引出或介绍文字,并使用“如表\ref{tab:responsibility}所示”这类正式的文字进行引用。
|
|
|
|
|
|
|
|
|
|
% 表格推荐采用全线表,表头中使用量符号/量单位形式。表\ref{tab:responsibility}即为全线表。确有别要的情况下,也可以使用标准“三线表”的形式,表\ref{tab:tline}即为三线表示例。表中的数据存在量纲时,应该在表头中注明量纲。
|
|
|
|
|
|
|
|
|
|
% \begin{table}[h]
|
|
|
|
|
% \centering
|
|
|
|
|
% \caption{三线表示例} \label{tab:tline}
|
|
|
|
|
% \liuhao
|
|
|
|
|
% \begin{tabular}{cccc}
|
|
|
|
|
% \toprule
|
|
|
|
|
% {测试编号} & {模块} & {加载时间(ms)} & {响应时间(ms)}\\
|
|
|
|
|
% \midrule
|
|
|
|
|
% 4 & 数据库访问 & 268 & 300\\
|
|
|
|
|
% 5 & 人脸识别 & 1034 & 2000\\
|
|
|
|
|
% \bottomrule
|
|
|
|
|
% \end{tabular}
|
|
|
|
|
% \end{table}
|
|
|
|
|
|
|
|
|
|
% 在实验报告中插入代码时,按表进行编号,代码应该尽量简短,利用模板提供的code环境可以实现不同语言的代码着色。如表\ref{tab:python}所示的代码即按照python语法进行了代码着色。
|
|
|
|
|
|
|
|
|
|
% \begin{table}[h]
|
|
|
|
|
% \centering
|
|
|
|
|
% \caption{TCP服务器Python实现} \label{tab:python}
|
|
|
|
|
% \begin{code}[python]
|
|
|
|
|
% import socket
|
|
|
|
|
% import time
|
|
|
|
|
% def recv_data(sock,length):
|
|
|
|
|
% data=b''
|
|
|
|
|
% while len(data) < length:
|
|
|
|
|
% more = sock.recv(length - len(data))
|
|
|
|
|
% if not more:
|
|
|
|
|
% pass
|
|
|
|
|
% data += more
|
|
|
|
|
% return data
|
|
|
|
|
% s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
|
|
|
% # 设置接收缓冲区大小为1024
|
|
|
|
|
% s.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 1024)
|
|
|
|
|
% s.bind(('0.0.0.0', 9999))
|
|
|
|
|
% s.listen(1)
|
|
|
|
|
% print("Sever listening on 9999...")
|
|
|
|
|
% try:
|
|
|
|
|
% sc, addr = s.accept()
|
|
|
|
|
% while True:
|
|
|
|
|
% rcvdata = recv_data(sc,16)
|
|
|
|
|
% time.sleep(0.01)
|
|
|
|
|
% pass
|
|
|
|
|
% finally:
|
|
|
|
|
% sc.close()
|
|
|
|
|
% s.close()
|
|
|
|
|
% \end{code}
|
|
|
|
|
% \end{table}
|
|
|
|
|
|
|
|
|
|
% \subsection{公式与字母}
|
|
|
|
|
% 实验报告中若使用公式,应全文统一编号,并加以必要的说明。如公式(\ref{eq:random})所示。
|
|
|
|
|
% \begin{equation}\label{eq:random}
|
|
|
|
|
% \frac{\partial u}{\partial x}+\frac{\partial v}{\partial y}+\frac{\partial w}{\partial z}=0
|
|
|
|
|
% \end{equation}
|
|
|
|
|
|
|
|
|
|
% 在式(\ref{eq:random})中,$u$是××××(单位);$v$是×××(单位);$w$是××(单位)。
|
|
|
|
|
|
|
|
|
|
% 一般情况下,需要引用的或重要的公式才编号。在文中引用时,用“式(编号)”表示。后文不再提及的,可以不编号。如:
|
|
|
|
|
% \begin{equation*}
|
|
|
|
|
% 1 + 1 + 3 = 5
|
|
|
|
|
% \end{equation*}
|
|
|
|
|
|
|
|
|
|
% 对于公式中首次出现的量的符号,按照其在式中出现的顺序,用准确、简洁的语句对其进行逐一解释。公式中变量应尽量避免复合上下角标的使用。
|
|
|
|
|
|
|
|
|
|
% \subsection{中英文缩略语}
|
|
|
|
|
% 文中的英文缩略语应在首次出现时给出中文含义以及英文全称后再使用。例如,全球定位系统(Global Positioning System,GPS)。
|
|
|
|
|
|
|
|
|
|
% \subsection{外文字母的使用}
|
|
|
|
|
% \subsubsection{斜体外文字母}
|
|
|
|
|
|
|
|
|
|
% 用于表示量的符号,主要用于下列场合:
|
|
|
|
|
% \begin{enumerate}
|
|
|
|
|
% \item 变量符号、变动附标及函数。
|
|
|
|
|
% \item 用字母表示的数及代表点、线、面、体和图形的字母。
|
|
|
|
|
% \item 特征数符号,如Re (雷诺数)、Fo (傅里叶数)、Al (阿尔芬数)等。
|
|
|
|
|
% \item 在特定场合中视为常数的参数。
|
|
|
|
|
% \end{enumerate}
|
|
|
|
|
|
|
|
|
|
% \subsubsection{正体外文字母}
|
|
|
|
|
|
|
|
|
|
% 用于表示名称及与其有关的代号,主要用于下列场合:
|
|
|
|
|
% \begin{enumerate}
|
|
|
|
|
% \item 有定义的已知函数(例如$\sin$, $\exp$, $\ln$等)。
|
|
|
|
|
% \item 其值不变的数学常数(例如$\mathrm{e} = 2.718 281 8\cdots)$及已定义的算子。
|
|
|
|
|
% \item 法定计量单位、词头和量纲符号。
|
|
|
|
|
% \item 数学符号。
|
|
|
|
|
% \item 化学元素符号。
|
|
|
|
|
% \item 机具、仪器、设备和产品等的型号、代号及材料牌号。
|
|
|
|
|
% \item 不表示量的外文缩写字。
|
|
|
|
|
% \item 表示序号的拉丁字母。
|
|
|
|
|
% \item 量符号中为区别其他量而加的具有特定含义的非量符号下角标。
|
|
|
|
|
% \end{enumerate}
|
|
|
|
|
|
|
|
|
|
\section{实验结果与分析}
|
|
|
|
|
|
|
|
|
|
% 在实验报告的最后,应该对完整的系统进行测试和分析,内容与每个分节中的实验结果类似,但这里描述对整个课程实验的测试结果,不要在这里重复每节中的测试。
|
|
|
|
|
|
|
|
|
|
% 对测试结果应该进行一定的分析,对性能等结果尽量给出定量分析,并以图或表形式给出,并对图、表所反映的现象做出具体说明和解释。并设法进一步分析讨论影响实验结果的因素,改进方法等。
|
|
|
|
|
\subsection{实验结果}
|
|
|
|
|
经过实战对抗,我方最终成功攻击对方全部3个目标,其中3命中2击毁并成功防御一次对方攻击。从结果上看,我组的实战成绩达到了预期标准,顺利完成了课上实战验收要求。不过在实战验收中仍然出现了一些特殊情况,下面将列举在实战过程中出现的比较严重的缺陷或问题,并已在课后组织排查并解决。
|
|
|
|
|
\subsection{实战缺陷问题}
|
|
|
|
|
第一个问题是在实战中我方小车与敌方小车发生了碰撞,在碰撞后小车系统下线,与侦查员失去连接如图\ref{fig:guzhang1}所示,在实战过程中耽误了大量时间来重启小车。
|
|
|
|
|
\begin{figure}[H]
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics[width=0.7\linewidth]{figures/guzhang1.jpg}
|
|
|
|
|
\caption{侦查员失去小车的连接} \label{fig:guzhang1}
|
|
|
|
|
\end{figure}
|
|
|
|
|
|
|
|
|
|
经过课后复盘检查,我们在小车的运动控制文件中发现了问题,在对小车执行指令时,在运动指令指令部分没有进行异常处理,导致了若小车运动时遇到了电机阻塞、低电量、持续抵住坚硬物品前进等特殊状况会导致报错,从而导致整个程序崩溃,在实战中小车碰撞导致小车向前指令不能正常执行,产生报错,从而导致了碰撞后小车失联的问题。经过后期更改,对小车运动部分的代码进行了修改,添加了异常处理,成功解决了上述问题。
|
|
|
|
|
|
|
|
|
|
\section{结~~论}
|
|
|
|
|
本次实验旨在开发一个用户操作系统,以模拟指挥环境并控制树莓派小车在实战对抗中进行网络攻防和实地攻防的任务。通过实现由指挥员、侦查员、作战员组成的OODA循环,我们成功完成了实战对抗任务。在此过程中,我们遇到了小车碰撞失联等突发状况,但在课后复盘中逐一解决了这些问题。
|
|
|
|
|
实验的主要成果包括:成功实现用户操作系统,有效进行网络攻防操作,精准拍摄坐标解码提交得分,以及构建高效的OODA循环。在实战中,我们运用了网络扫描、漏洞利用和信息解码等技术,保障系统安全并攻击对手。此外,通过相机拍摄目标并解码坐标,实现了精准得分。
|
|
|
|
|
然而,实验过程中也遇到了挑战。小车碰撞导致失联的问题浪费了较多时间,通过优化算法、更改响应逻辑的方式得到解决。同时,我们还优化了系统性能和服务器配置,降低了操作响应延迟和视频延迟,并加强了网络攻击防护措施。
|
|
|
|
|
通过这次实验我们不仅学习了许多新的理论知识,还提升了团队合作和问题解决能力。实验提供了非常优越的环境来支持我们小组进行开发和测试。使诈提供了比较拟真的环境来模拟现实中的网络攻防场景。未来,我们将进一步优化用户操作系统,提高其稳定性和效率,以应对更复杂的实战环境。
|
|
|
|
|
|
|
|
|
|
% 参考文献
|
|
|
|
|
% \makebibliography{demo}
|
|
|
|
|
% 参考文献按GB/T 7714-2015《文后参考文献著录规则》的要求著录.
|
|
|
|
|
% 参考文献在正文中的引用方法:\cite{bib文件条目的第一行}
|
|
|
|
|
|
|
|
|
|
\end{document}
|