HNU电子测试平台与工具2_《计算机串口使用与测量》,零基础入门到精通,收藏这篇就够了

(这个有留word哈哈)

4.1 4.2 Linux 操作系统平台

一、实验目的

  1. 了解 Linux 系统文件系统的基本组织
  2. 了解 Linux 基本的多用户权限系统
  3. 熟练使用 ls、cd、cat、more、sudo、gcc、vim 等基本命令
  4. 会使用 ls 和 chmod 命令查看和修改文件权限

二、实验过程

(1)安装 Linux 系统虚拟机

(2)安装firstrun.deb包

​使用指令sudo dpkg -i firstrun.deb 进行安装。

(3)安装成功后,运行根目录下的/gettips 可执行程序。该程序将在屏幕上给出下一步骤要探索的目录。

(4)切换到root权限进入目录

运行指令切换到上面提供的目录,切换到root用户(直接进入权限不够),进入该目录。

(5)使用ls打开文件

ls查看并使用vim打开文件.puzzle.txt。

文件中内容如下:

(6)使用curl提交结果

使用如下命令提交:

curl “132.232.98.70:6363/check?id=2022xxxxxxxx&v=3321385423”

提交后返回OK,表示正确。

4.3 Linux 平台串口数据接收

一、实验目的

1、熟练使用 Linux 下 io 函数 read、write 和 epoll 函数

2、了解 Linux 设备文件机制

3、熟练使用示波器识读 UART 波形

二、实验过程

(1)安装 STC-ISP 软件

(2)按照 4.3.1 节说明,向 STC 单片计算机板下载程序

(3)使用示波器观察 STC 单片机 UART 串口输出信号,识别单片机发送数据所使用的波特率。

测得该板波特率为 1800。

(4)根据单片机串口波特率,编写 C 语言程序从虚拟机的串口读取信息。

修改 com.c 的波特率:

(5)使用 gcc 进行编译并运行,解析程序返回的序列号和密码,并且向服务器发送指令

根据指导书:

【STC单片机计算串口发出来的内容格式为:

0xAA 0x55 序列号

以上内容为二进制数据表示,共13个字节。例如:

0xAA 0x55 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 0x99 0xAA 0xBB 。

其中0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 0x99 0xAA 0xBB 就是该单片机的序列号。请用程序读出所领单片机的序列号。】

可知,这里aa 55是开始的序列号,而后面的 a0 1d 55 17 75 98 e6 66 66 9e 7e即为传输的11位数据。

注意,提交答案的时候不要把aa,55放入,否则是错误的。

返回OK,说明正确。

4.4 计算机串口数据收发与测量

一、实验目的

1、熟练使用 Linux 下 io 函数 read、write 和 epoll 等

2、熟练处理流式通信数据二、实验过程

二、实验过程

(1)向 STC 单片机下载下面的程序

(2)下载程序后,单片机将使用 1200 波特率发送自身序列号,格式同上一节课(4.3 节内容)相同。请记录下该序列号。

可得序列号为AA 55 A0 1D 56 4F 74 72 F7 39 0D 46 9E

(机器序列号为AA55后面的部分)

(3)向串口写入自己的学号,格式为 0xAA 0x55 十二位学号数字。

如我就写入AA 55 02 00 02 02 XX XX XX XX XX XX XX XX

(4)STC 单片机接收到学号后会发送第一串密码,密码长度为 4 字节。请将解析出该串密码并原样发回给串口。STC 单品机收到返回后会继续发送下一串密码,请继续解析出该串密码并原样发回给串口。以此往复,将收到的最后一串密码记录下来。

由于只将以上(3)(4)步获得的密码提交得分较低,因此选择在Linux系统下使用 Python代码完成上面两步动作,并将取到的最后一组密码发送到课程后台中。

程序如下:

1.	import serial.tools.list_ports  
2.	# 字符串转字符串  
3.	def b2s(data):  
4.	    return ''.join([f'{ch:0>2x}' for ch in data]).upper()  
5.	# 连接设备  
6.	ser = serial.Serial(list(serial.tools.list_ports.comports()[0])[0], 1200)  
7.	# 判断是否连接到设备  
8.	assert (ser != None)  
9.	# 输入学号  
10.	studentID = input("学号:")  
11.	# 判断学号是否正确  
12.	assert (studentID.isdigit() and len(studentID) == 12)  
13.	# 读入序列号  
14.	number = b2s(ser.read(13))  
15.	# 断言魔数为AA55  
16.	assert (number[:4] == "AA55")  
17.	# 取出序列号  
18.	number = number[4:]  
19.	assert (len(number) == 11 * 2)  
20.	print(f'序列号:{number}')  
21.	# 使用学号构造即将发送的字节数据  
22.	startData = b'\xaa\x55' + bytes([ord(ch) - ord('0') for ch in studentID])  
23.	# 写入设备  
24.	ser.write(startData)  
25.	password = b''  # 读到的密码  
26.	i = 1  # 循环次数  
27.	# 开启永真循环,直到ctrl+c被按下  
28.	while True:  
29.	    # 读1位,探测魔数  
30.	    t = b2s(ser.read(1))  
31.	    # 第一个魔数应该是AA  
32.	    if t != "AA":  
33.	        continue  
34.	    # 再读一位  
35.	    t = b2s(ser.read(1))  
36.	    # 第二个魔数应该是55  
37.	    if t != "55":  
38.	        continue  
39.	    # 判断魔数后可以放心读取数据  
40.	    # 读入密码开始位置的索引  
41.	    index = list(ser.read(1))[0]  
42.	    # 若索引大于4,则表明中间有无关字节,吸收掉无关字节  
43.	    if index - 4 > 0:  
44.	        ser.read(index - 4)  
45.	    # 读入四字节的密码  
46.	    password = ser.read(4)  
47.	    print(f'[{i}]密码:{b2s(password)}')  
48.	    # 使用这次读到的密码构造数据,发送给设备以读取下一次的密码  
49.	    ser.write(b'\xaa\x55' + password)  
50.	    i += 1  

在sudo权限下运行main.py,输入自己的学号,得到结果。

(5)将学号、序列号、最后一串密码发送到课程后台。上送命令语法为

curl “132.232.98.70:6363/checkSecret?id=学号&v=序列号&s=密码”

返回256,表示已经拿到最高分,实验成功。

4.5 RS485 信号的测量

一、实验目的

1、熟练使用 Linux 下 io 函数 read、write 和 epoll 等

2、熟练 RS485 串口的信号特点二、实验过程

二、实验过程

(1)为自己的板(A板)下载新的hex文件。

然后按下K3按键,电路板将通过RS485向外发出一组序列号信息。该信号序列格式为:

0xAA 0x55 4字节序列号

在板上RS485接口插上杜邦线,然后示波器观察该序列信息的内容和波特率并做好记录。

下图是A板的示波器显示,使用1÷836μs,其波特率为1200

(2)下载B板文件

使用同学的STC电路板(后面称为B板),下载B板Hex文件:

B板会将计算机通过USB 串口发送的数据,转发到RS485接口上。同时将RS485接口收到的数据,通过USB 串口转发到计算机上。我们接下来使用这个B板与自己的A板进行通信,读取A板的密码。

B板每次上下拨动摇杆,其串口和RS485总线上波特率会发生变化,同时会在RS485接口上输出一个0x55。请插上杜邦线后,使用示波器观察其波特率。

请通过上下拨动B板摇杆调节B板波特率,使之与A板输出的RS485波特率相匹配。

这里我们上下拨动B板摇杆,直至差不多能等于上面的836μs为止,这样B板的波特率也会是1200,与A板对应。

完成时结果如下:

(3)获取A板序列号

在A板、B板的波特率相同后,按下A板K3键,返回序列号(请一定注意是4字节)如下:

96 20 48 98

(4)使用串口通信程序,调用 write 函数接口向串口发送读密码命令。读密码命令格式为:

0xAA 0x55 A 板序列号 12 字节学号

A 板会回应密码,回应格式为:

0xAA 0x55 4 字节密码

回应密码会经过B板转发到计算机上。请调用read函数接口从串口读取该密码。

返回答案如下图所示:

密码为18 1C 99 F3

5、请将 A 板序列号、学号和密码通过 curl 命令发送到课程后台系统。

上送命令语法为

curl “132.232.98.70:6363/check485?id=学号&v=序列号&s=密码”

返回 OK。

4.6 RS485 总线数据收发

一、实验目的

1、熟练使用 Linux 下 io 函数 read、write 和 epoll 等

2、熟练处理流式通信数据

3、理解 485 总线的冲突问题

二、实验过程

(1)向单片机板下载程序

向 A 单片机板下载下面的程序

下载程序后,A 板单片机将使用 1200 波特率约每 300ms 发送一次自身序列号,格式为

0xAA 0x55 4 字节序列号

向 A 单片机板下载下面的程序

(2)通过 B 板串口向 RS485 总线写入自己的学号,格式为

0xAA 0x55 十二位学号数字。

(3) A 板单片机接收到学号后会每 300ms 发送第一串密码,密码长度为 4 字节。请将解析出该串密码并在 150ms 内原样发回给串口(否则会造成总线的冲突)。STC 单品机收到返回后会继续发送下一串密码,请继续解析出该串密码并在 150ms 内原样发回给串口。以此往复,将收到的最后一串密码记录下来。

由于人力无法实现满分,因此接下来编写代码来进行实验。

(4)编写python代码并获取结果

代码如下:

1.	import serial  
2.	import serial.tools.list_ports  
3.	# 字节转字符串  
4.	def b2s(data):  
5.	    return ''.join([f'{ch:0>2x}' for ch in data]).upper()  
6.	# 连接设备  
7.	ser = serial.Serial(list(serial.tools.list_ports.comports()[0])[0], 1200)  
8.	# 判断是否连接到设备  
9.	assert(ser != None)  
10.	# 输入学号  
11.	studentID = input("学号:")  
12.	# 判断学号是否正确  
13.	assert(studentID.isdigit() and len(studentID) == 12)  
14.	# 读入序列号  
15.	number = b2s(ser.read(6))  
16.	# 断言魔数为AA55  
17.	assert(number[:4] == "AA55")  
18.	# 取出序列号  
19.	number = number[4:]  
20.	# 判断序列号长度是否正确  
21.	assert(len(number) == 4 * 2)  
22.	print(f'序列号:{number}')  
23.	# 使用学号构造即将发送的字节数据  
24.	startData = b'\xaa\x55' + bytes([ord(ch) - ord('0') for ch in studentID])  
25.	# 写入数据  
26.	ser.write(startData)  
27.	password = b''  # 读到的密码  
28.	i = 1   # 记录循环次数  
29.	# 开启永真循环,直到Ctrl+C被按下  
30.	try:  
31.	    while True:  
32.	        data = ser.read_all()  
33.	        sdata = b2s(data)  
34.	        if data != b'' and sdata[:4] == "AA55":  
35.	            password = data[-4:]  
36.	            if len(password) == 4:  
37.	                print(f'[{i}]密码:{b2s(password)}')  
38.	                # 使用这次读到的密码构造数据,发送给设备以读取下一次的密码  
39.	                ser.write(b'\xaa\x55' + password)  
40.	                i += 1  
41.	# 当Ctr+C被按下时执行,建议在读到的密码不再变化时按下,大概在256次循环之后  
42.	except KeyboardInterrupt:  
43.	    print(f'[结束]最后一串密码为:{b2s(password)}') 

(5)获得结果并向服务器发送指令:

结果如下:

将学号、序列号、最后一串密码发送到课程后台。上述命令语法为

curl “132.232.98.70:6363/check485Secret?id=学号&v=序列号&s=密码”

使用curl指令提交答案,获取分数256,表明实验完美实现。

实验总结

通过本次计算机串口使用与测量实验,我获得了深入且实际的串口通信知识,并且在实际操作中进一步熟悉了相关技术和方法。实验不仅让我掌握了串口基本概念,还加深了对Linux操作系统及单片机编程的理解。

在实验过程中,我使用Linux操作系统进行了大量的文件操作,并通过单片机软件与硬件交互。这不仅加深了我对操作系统的熟悉,也让我更好地理解了计算机硬件与软件的协同工作方式。

我学习了如何通过编写程序,使用IO函数来实现串口的数据收发。通过实际编写串口数据收发程序,我体会到了如何处理串口数据,使用如write和read等函数进行数据读写。实验中,我特别关注了RS485接口的应用,通过半双工通信模式,成功实现了两块单片机间的数据传输。

在进行RS485通信时,我发现了数据冲突导致错误的情况,这使我认识到在编程时对错误处理的重要性。我通过Python编写程序来实现功能,意识到后续还需要进一步提高代码的性能及优化编程技巧。

总结来说,这次实验不仅增强了我对串口通信的理论知识和实际操作的理解,而且通过实验的即时反馈,如使用curl命令获取实验分数,极大地增强了我学习的动力和实验的互动性。未来我希望继续探索更多关于串口通信的深层次知识,并将这些知识应用到实际问题的解决中。

这两年,IT行业面临经济周期波动与AI产业结构调整的双重压力,确实有很多运维与网络工程师因企业缩编或技术迭代而暂时失业。

很多人都在提运维网工失业后就只能去跑滴滴送外卖了,但我想分享的是,对于运维人员来说,即便失业以后仍然有很多副业可以尝试。

网工/运维/测试副业方向

运维网工,千万不要再错过这些副业机会!

第一个是知识付费类副业:输出经验打造个人IP

在线教育平台讲师

操作路径:在慕课网、极客时间等平台开设《CCNA实战》《Linux运维从入门到精通》等课程,或与培训机构合作录制专题课。
收益模式:课程销售分成、企业内训。

技术博客与公众号运营

操作路径:撰写网络协议解析、故障排查案例、设备评测等深度文章,通过公众号广告、付费专栏及企业合作变现。
收益关键:每周更新2-3篇原创,结合SEO优化与社群运营。

第二个是技术类副业:深耕专业领域变现

企业网络设备配置与优化服务

操作路径:为中小型企业提供路由器、交换机、防火墙等设备的配置调试、性能优化及故障排查服务。可通过本地IT服务公司合作或自建线上接单平台获客。
收益模式:按项目收费或签订年度维护合同。

远程IT基础设施代维

操作路径:通过承接服务器监控、日志分析、备份恢复等远程代维任务。适合熟悉Zabbix、ELK等技术栈的工程师。
收益模式:按工时计费或包月服务。

网络安全顾问与渗透测试

操作路径:利用OWASP Top 10漏洞分析、Nmap/BurpSuite等工具,为企业提供漏洞扫描、渗透测试及安全加固方案。需考取CISP等认证提升资质。
收益模式:单次渗透测试报告收费;长期安全顾问年费。

比如不久前跟我一起聊天的一个粉丝,他自己之前是大四实习的时候做的运维,发现运维7*24小时待命受不了,就准备转网安,学了差不多2个月,然后开始挖漏洞,光是补天的漏洞奖励也有个四五千,他说自己每个月的房租和饭钱就够了。

为什么我会推荐你网安是运维和网工测试人员的绝佳副业&转型方向?

1.你的经验是巨大优势: 你比任何人都懂系统、网络和架构。漏洞挖掘、内网渗透、应急响应,这些核心安全能力本质上是“攻击视角下的运维”。你的运维背景不是从零开始,而是降维打击。

2.越老越吃香,规避年龄危机: 安全行业极度依赖经验。你的排查思路、风险意识和对复杂系统的理解能力,会随着项目积累而愈发珍贵,真正做到“姜还是老的辣”。

3.职业选择极其灵活: 你可以加入企业成为安全专家,可以兼职“挖洞“获取丰厚奖金,甚至可以成为自由顾问。这种多样性为你提供了前所未有的抗风险能力。

4.市场需求爆发,前景广阔: 在国家级政策的推动下,从一线城市到二三线地区,安全人才缺口正在急剧扩大。现在布局,正是抢占未来先机的黄金时刻。

网工运维测试转行学习网络安全路线

在这里插入图片描述

(一)第一阶段:网络安全筑基

1. 阶段目标

你已经有运维经验了,所以操作系统、网络协议这些你不是零基础。但要学安全,得重新过一遍——只不过这次我们是带着“安全视角”去学。

2. 学习内容

**操作系统强化:**你需要重点学习 Windows、Linux 操作系统安全配置,对比运维工作中常规配置与安全配置的差异,深化系统安全认知(比如说日志审计配置,为应急响应日志分析打基础)。

**网络协议深化:**结合过往网络协议应用经验,聚焦 TCP/IP 协议簇中的安全漏洞及防护机制,如 ARP 欺骗、TCP 三次握手漏洞等(为 SRC 漏扫中协议层漏洞识别铺垫)。

**Web 与数据库基础:**补充 Web 架构、HTTP 协议及 MySQL、SQL Server 等数据库安全相关知识,了解 Web 应用与数据库在网安中的作用。

**编程语言入门:**学习 Python 基础语法,掌握简单脚本编写,为后续 SRC 漏扫自动化脚本开发及应急响应工具使用打基础。

**工具实战:**集中训练抓包工具(Wireshark)、渗透测试工具(Nmap)、漏洞扫描工具(Nessus 基础版)的使用,结合模拟场景练习工具应用(掌握基础扫描逻辑,为 SRC 漏扫工具进阶做准备)。

(二)第二阶段:漏洞挖掘与 SRC 漏扫实战

1. 阶段目标

这阶段是真正开始“动手”了。信息收集、漏洞分析、工具联动,一样不能少。

熟练运用漏洞挖掘及 SRC 漏扫工具,具备独立挖掘常见漏洞及 SRC 平台漏扫实战能力,尝试通过 SRC 挖洞搞钱,不管是低危漏洞还是高危漏洞,先挖到一个。

2. 学习内容

信息收集实战:结合运维中对网络拓扑、设备信息的了解,强化基本信息收集、网络空间搜索引擎(Shodan、ZoomEye)、域名及端口信息收集技巧,针对企业级网络场景开展信息收集练习(为 SRC 漏扫目标筛选提供支撑)。

漏洞原理与分析:深入学习 SQL 注入、CSRF、文件上传等常见漏洞的原理、危害及利用方法,结合运维工作中遇到的类似问题进行关联分析(明确 SRC 漏扫重点漏洞类型)。

工具进阶与 SRC 漏扫应用:

  • 系统学习 SQLMap、BurpSuite、AWVS 等工具的高级功能,开展工具联用实战训练;

  • 专项学习 SRC 漏扫流程:包括 SRC 平台规则解读(如漏洞提交规范、奖励机制)、漏扫目标范围界定、漏扫策略制定(全量扫描 vs 定向扫描)、漏扫结果验证与复现;

  • 实战训练:使用 AWVS+BurpSuite 组合开展 SRC 平台目标漏扫,练习 “扫描 - 验证 - 漏洞报告撰写 - 平台提交” 全流程。
    SRC 实战演练:选择合适的 SRC 平台(如补天、CNVD)进行漏洞挖掘与漏扫实战,积累实战经验,尝试获取挖洞收益。

恭喜你,如果学到这里,你基本可以下班搞搞副业创收了,并且具备渗透测试工程师必备的「渗透技巧」、「溯源能力」,让你在黑客盛行的年代别背锅,工作实现升职加薪的同时也能开创副业创收!

如果你想要入坑黑客&网络安全,笔者给大家准备了一份:全网最全的网络安全资料包需要保存下方图片,微信扫码即可前往获取!

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

(三)第三阶段:渗透测试技能学习

1. 阶段目标

全面掌握渗透测试理论与实战技能,能够独立完成渗透测试项目,编写规范的渗透测试报告,具备渗透测试工程师岗位能力,为护网红蓝对抗及应急响应提供技术支撑。

2. 学习内容

渗透测试核心理论:系统学习渗透测试流程、方法论及法律法规知识,明确渗透测试边界与规范(与红蓝对抗攻击边界要求一致)。

实战技能训练:开展漏洞扫描、漏洞利用、电商系统渗透测试、内网渗透、权限提升(Windows、Linux)、代码审计等实战训练,结合运维中熟悉的系统环境设计测试场景(强化红蓝对抗攻击端技术能力)。

工具开发实践:基于 Python 编程基础,学习渗透测试工具开发技巧,开发简单的自动化测试脚本(可拓展用于 SRC 漏扫自动化及应急响应辅助工具)。

报告编写指导:学习渗透测试报告的结构与编写规范,完成多个不同场景的渗透测试报告撰写练习(与 SRC 漏洞报告、应急响应报告撰写逻辑互通)。

(四)第四阶段:企业级安全攻防(含红蓝对抗)、应急响应

1. 阶段目标

掌握企业级安全攻防、护网红蓝对抗及应急响应核心技能,考取网安行业相关证书。

2. 学习内容

护网红蓝对抗专项:

  • 红蓝对抗基础:学习护网行动背景、红蓝对抗规则(攻击范围、禁止行为)、红蓝双方角色职责(红队:模拟攻击;蓝队:防御检测与应急处置);

  • 红队实战技能:强化内网渗透、横向移动、权限维持、免杀攻击等高级技巧,模拟护网中常见攻击场景;

  • 蓝队实战技能:学习安全设备(防火墙、IDS/IPS、WAF)联动防御配置、安全监控平台(SOC)使用、攻击行为研判与溯源方法;

  • 模拟护网演练:参与团队式红蓝对抗演练,完整体验 “攻击 - 检测 - 防御 - 处置” 全流程。
    应急响应专项:

  • 应急响应流程:学习应急响应 6 步流程(准备 - 检测 - 遏制 - 根除 - 恢复 - 总结),掌握各环节核心任务;

  • 实战技能:开展操作系统入侵响应(如病毒木马清除、异常进程终止)、数据泄露应急处置、漏洞应急修补等实战训练;

  • 工具应用:学习应急响应工具(如 Autoruns、Process Monitor、病毒分析工具)的使用,提升处置效率;

  • 案例复盘:分析真实网络安全事件应急响应案例(如勒索病毒事件),总结处置经验。
    其他企业级攻防技能:学习社工与钓鱼、CTF 夺旗赛解析等内容,结合运维中企业安全防护需求深化理解。

证书备考:针对网安行业相关证书考试内容(含红蓝对抗、应急响应考点)进行专项复习,参加模拟考试,查漏补缺。

运维网工测试转行网络攻防知识库分享

网络安全这行,不是会几个工具就能搞定的。你得有体系,懂原理,能实战。尤其是从运维转过来的,别浪费你原来的经验——你比纯新人强多了。

但也要沉得住气,别学了两天Web安全就觉得自己是黑客了。内网、域渗透、代码审计、应急响应,要学的还多着呢。

如果你真的想转,按这个路子一步步走,没问题。如果你只是好奇,我劝你再想想——这行要持续学习,挺累的,但也是真有意思。

关于如何学习网络安全,笔者也给大家整理好了全套网络安全知识库,需要的可以扫码获取!

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

1、网络安全意识
在这里插入图片描述

2、Linux操作系统
在这里插入图片描述

3、WEB架构基础与HTTP协议
图片

4、Web渗透测试
在这里插入图片描述

5、渗透测试案例分享
图片

6、渗透测试实战技巧
图片

7、攻防对战实战
图片

8、CTF之MISC实战讲解
图片

关于如何学习网络安全,笔者也给大家整理好了全套网络安全知识库,需要的可以扫码获取!

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*****优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值