自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 李臻20242817_安全文件传输系统项目报告_第6周

Gitee 仓库地址:https://gitee.com/li-zhen1215/homework/tree/master/Secure-file。

2025-04-06 22:23:23 600

原创 20242817-李臻-课下测试:输出重定向

在 C 语言中,输入输出重定向是指将程序的标准输入(stdin)、标准输出(stdout)或标准错误(stderr)从默认的终端设备(如键盘和屏幕)重定向到文件或其他设备。这种技术在处理文件输入输出时非常有用,尤其是在需要自动化处理数据或记录程序运行结果时。

2025-04-05 11:13:58 861

原创 20242817-李臻-课下测试:文件系统fcntl

fcntl是一个用于文件控制的系统调用,它提供了对文件描述符的多种操作,主要用于控制和管理文件的打开、关闭、读写、锁定等操作。以下是fcntlfcntl通过设计和实现这些测试用例,我对fcntl的功能有了更深入的理解。文件描述符操作:学会了如何使用fcntl复制文件描述符,并理解了复制后的文件描述符与原始文件描述符之间的关系。文件锁定:掌握了如何使用fcntl对文件进行加锁、解锁和查询锁状态,理解了文件锁定在多进程环境中的重要性。非阻塞 I/O。

2025-03-28 10:07:14 942

原创 20242817-李臻-课下测试:系统调用错误处理

Gitee仓库链接:https://gitee.com/li-zhen1215/homework/tree/master/Week5/kexia。

2025-03-28 09:20:42 922

原创 20242817李臻《Linux⾼级编程实践》第6周

AI工具(你使用的AI工具及其链接)问小白Kimi图书《Linux编程基础.李养群》电子版网站优快云“20242817李臻 原创作品转载请注明出处 《Linux高级编程实践》”**

2025-03-24 16:03:24 321

原创 20242817-李臻-课下测试:Windows MIRACL静态库使用测试

检查头文件路径是否正确。确保头文件已添加到项目中。检查#include语句是否正确。确保项目路径和编译器配置正确。如果问题仍未解决,可以提供具体的错误信息和项目结构,我可以进一步帮助你分析问题!

2025-03-23 20:14:28 591

原创 20242817李臻《Linux⾼级编程实践》第五周

信号是Linux进程间通信的一种机制,本质是软中断,用于通知进程某个事件发生(如错误、用户输入等)。用途:控制进程行为,例如终止进程(SIGINT)、暂停进程(SIGSTOP)或自定义处理。可重入函数:可被多个任务并发调用而不会产生数据错误。不可重入函数:使用静态变量或全局变量,可能导致数据竞争。信号分类:可靠/不可靠、实时/非实时、同步/异步。处理机制signal简单但不可靠,sigaction支持信号队列和附加信息。发送方式killraisesigqueue。可重入性。

2025-03-21 11:39:33 569

原创 课上测试:文件系统之链接

通过这次实现我对ln命令有了深刻的理解。我认识到硬链接和符号链接的本质区别:硬链接与源文件共享相同的 inode,适用于同一文件系统内的文件链接;而符号链接则是一个独立的文件,存储目标路径,可以跨文件系统使用。其次,我掌握了如何通过系统调用 link 和 symlink 来实现这两种链接,并学会了如何解析命令行参数和处理错误。通过编写myln代码,我更加熟悉了 Linux 文件系统的工作原理,以及如何在 C 语言中调用系统级函数。

2025-03-21 11:14:27 895

原创 20242817李臻《Linux⾼级编程实践》第四周

主题关键点fork()写时复制、父子进程独立执行、返回值区分角色。exec系列替换进程映像、参数传递方式(列表/数组)、路径查找(完整路径/PATH守护进程setsid()脱离终端、chdir("/")umask(0)、关闭文件描述符。僵尸进程父进程未调用wait()、通过信号或非阻塞等待回收。Shell实现fork()execvp()wait()循环,支持命令解析与执行。原内容存在问题补充主题新增关键点PCB结构task_struct包含进程所有元数据,如内存映射、文件表、信号处理等。

2025-03-18 21:30:52 1060

原创 项目开发 1-确定选题,制作原型

问:作为计算机专家,密码学家,给研究生一年级学生设计20个实践项目,具体要求如下:一. 总体要求。

2025-03-15 22:51:39 1062

原创 课下测试:C编程工具测试

以cebitfields.c 为例。

2025-03-15 19:58:11 815

原创 课下测试:gdb调试

通过b设置7、8、9三个行断点,通过s命令进行执行到下一个断点。通过tb命令设置了三个临时断点。使用gdb运行testgdb。将函数断点设置在sum函数。

2025-03-15 15:44:04 290

原创 20242817李臻《Linux⾼级编程实践》第三周

文件系统:Linux将所有外部设备抽象为文件,文件操作通过系统调用(如)实现。系统调用与函数区别系统调用涉及用户空间到内核空间的切换。函数在用户空间执行,系统调用由内核完成。系统调用与用户空间:文件操作通过系统调用实现,涉及用户空间与内核空间的切换。文件描述符:每个打开的文件通过文件描述符(fd)标识,用于后续操作。原内容存在问题unlink描述错误:原内容提到"unlink删除目录"是错误的,实际上unlink只能删除普通文件,删除目录需使用rmdir且目录必须为空。

2025-03-15 15:13:42 832

原创 课上测试:MIRACL共享库使用测试

去github官网下载.zip文件。使用bash命令构建静态库。使用如下命令进行解压。

2025-03-14 11:30:52 431

原创 课上测试:SM4算法测试

使用OpenSSL的AES-256-CBC加密 sn.txt。使用Openssl生成随机密钥。解密加密文件到 sn2.txt。我的学号是20242817。

2025-03-14 09:53:25 363

原创 课上测试:SM3算法测试

由此可见,使用Gmssl和Openssl的SM3算法计算文件Hash值,得到的结果一致。由此可验证Gmssl计算结果正确。

2025-03-14 09:26:25 254

原创 20242817李臻《Linux⾼级编程实践》第二周

GCC:掌握编译流程、常用选项及库文件构建。GDB:熟练使用断点、单步调试和Core文件分析。Make:理解Makefile结构、变量与自动推导,提高项目管理效率。GCC是Linux下C语言的编译器,是GNU编译器集合作用:变量用于简化Makefile的编写,避免重复代码,提高可维护性。类型递归展开变量:使用赋值,变量值在使用时展开。CC = gcc简单变量:使用:=赋值,变量值在定义时立即展开。CC := gcc使用场景在命令中通过$(变量名)使用变量,例如:main: main.o。

2025-03-06 09:37:59 757

原创 20242817-李臻-课上测试:Linux命令实践(AI)

Q:详细介绍一下echo,od,sort,bc的功能并给出实践代码echo功能:在终端打印文本、变量值,或重定向内容到文件。# 1. 输出字符串# 2. 输出环境变量echo "当前用户:$USER"# 3. 输出转义字符(需加 -e)echo -e "第一行\n第二行\t制表符"# 4. 输出内容到文件echo "内容写入文件" > output.txt# 5. 生成序列({1..5})echo {1..5} # 输出:1 2 3 4 5od。

2025-02-28 10:57:41 890

原创 20242817李臻《Linux⾼级编程实践》第一周

的代码块内,若已存在 .tar.gz 文件,将跳过编译步骤,直接执行后续的 make test 和 make install。直接替换 /usr/lib/x86_64-linux-gnu/ 下的系统库和 /usr/bin/openssl。脚本假设库文件生成在 lib64 目录下,但 Ubuntu 默认可能生成到 lib 目录。后果:符号链接 (ln -sf) 会失效,导致系统库丢失,可能引发依赖问题。后果:若源代码未编译,直接运行 make test 会报错。检查openssl版本。

2025-02-28 08:43:17 342

原创 2024-2025-1 20242817《Linux内核原理与分析》第十三周作业

本次实验通过 zipfile 模块实现了 Zip 文件的暴力破解。学习了如何使用 zipfile 来解压带密码的 Zip 文件,并验证了基本的解压操作。接着,借助 argparse 模块,我们实现了一个命令行接口,用于接收用户输入的 Zip 文件路径和密码字典路径,进一步增强了程序的灵活性和可用性。实验的核心部分是暴力破解,通过逐一尝试密码字典中的每一个密码,直到找到正确的密码并成功解压文件。通过实现一个简单的暴力破解程序和创建密码字典文件进行测试,成功破解了加密的 Zip 文件。

2024-12-19 17:06:24 1752

原创 2024-2025-1 20242817《Linux内核原理与分析》第十二周作业

实验原理:缓冲区溢出漏洞是计算机历史上最经典且最危险的安全漏洞之一。它利用程序对内存操作的缺陷,实现对程序控制流的劫持。实验过程:实验中,我们编写了两段简单的代码,来实现缓冲区溢出漏洞,攻击者可以通过溢出漏洞获得系统的高权限,本实验中就被获取了root权限。预防措施:可以在编程中避免使用不安全的函数(如 strcpy、gets 等)或动态内存分配来预防缓冲区溢出。潜在危害:在网络服务程序中,攻击者可利用缓冲区溢出漏洞执行任意代码,修改程序的控制流或窃取敏感信息。

2024-12-12 19:53:03 818

原创 2024-2025-1 20242817《Linux内核原理与分析》第十一周作业

访问控制是Linux系统中确保资源仅被授权用户访问的重要机制。它包括传统的文件权限控制、强制访问控制(MAC)和基于角色的访问控制(RBAC)。Linux通过设置文件的所有者、组和权限来限制用户和进程的访问。

2024-12-04 10:00:04 618

原创 2024-2025-1 20242817《Linux内核原理与分析》第十周作业

Linux 容器技术是一种轻量级的虚拟化技术,通过操作系统层的资源共享和隔离,为应用程序提供独立的运行环境。它相比传统虚拟机更加高效,具有启动速度快、占用资源少的特点。容器技术的优势在于其灵活性和便携性,能够支持“一次构建,到处运行”的开发与部署模式,大幅提升了开发效率和资源利用率,广泛应用于云计算、微服务架构和 DevOps 流程。

2024-11-26 14:14:28 743

原创 2024-2025-1 20242817《Linux内核原理与分析》第九周作业

在操作系统中,进程切换和中断处理是核心功能。schedule()函数负责调度,它通过调用函数来执行进程调度算法,从而选择下一个即将运行的进程。随后,schedule()会利用函数来完成进程的上下文切换,确保进程能够顺利交接控制权。在函数的实现中,宏扮演着至关重要的角色。它负责保存当前进程的上下文信息至其栈中,并从目标进程的栈中恢复上下文,这涉及到处理器寄存器、堆栈指针和程序计数器等关键状态的保存与恢复。的实现细节会根据不同的硬件架构和编译选项进行调整。

2024-11-23 19:33:24 742

原创 2024-2025-1 20242817《Linux内核原理与分析》第八周作业

当用户调用 execve 系统调用时,Linux 内核会接管执行流程,首先清理当前进程的资源,关闭不需要的文件描述符,清空旧的地址空间。接着,内核解析 ELF 文件,检查文件合法性后,将代码段、数据段等加载到内存中。对于动态链接的可执行文件,内核会启动动态链接器来加载所需的共享库并进行符号重定位。然后,内核为新程序设置栈,将命令行参数和环境变量传入。最后,内核将控制权交给新程序的入口点,使其在用户态开始执行。整个过程确保了当前进程的地址空间被新程序完全替换,实现无缝启动。

2024-11-13 10:14:09 576

原创 2024-2025-1 20242817《Linux内核原理与分析》第七周作业

通过本次实验,我对Linux系统中fork函数如何创建新进程有了更深入的理解。主要分析了fork系统调用的内核处理过程,特别是sys_clone如何创建并初始化新的task_struct数据结构,以及如何通过GDB跟踪新进程的执行起点。以下是我对fork函数的分析和理解:fork函数的基本功能:fork是用户态系统调用,用于创建一个几乎完全相同的子进程。子进程继承了父进程的大部分资源,如文件描述符、环境变量等,但拥有独立的pid,使其在系统中独立存在。

2024-11-09 21:37:19 577

原创 2024-2025-1 20242817《Linux内核原理与分析》第六周作业

其次是在main()函数中添加如下代码。

2024-11-03 15:15:40 368

原创 2024-2025-1 20242817《Linux内核原理与分析》第五周作业

系统调用是操作系统提供给应用程序的一种机制,它允许应用程序在受控环境中访问内核资源。这种设计旨在确保系统的安全和效率,防止应用程序对操作系统进行不当操作。内存被分为用户空间和内核空间,其中用户空间是应用程序运行的地方,而内核空间包含操作系统的核心代码和数据。当应用程序需要执行一些只有操作系统内核才能完成的任务,如读写文件或管理进程时,它会发起系统调用。系统调用通常通过特定的指令来实现,例如在x86架构中使用int 0x80或sysenter指令,或者在x86_64架构中使用syscall指令。

2024-10-26 14:56:36 403

原创 2024-2025-1 20242817《Linux内核原理与分析》第四周作业

start_kernel 函数在 Linux 内核的启动过程中扮演着至关重要的角色,它位于内核源代码的 init/main.c 文件中。这个函数的主要任务是初始化内核,它是内核从引导程序接收控制权后执行的第一个函数。架构特定初始化:start_kernel 首先调用 setup_arch 函数,该函数负责执行与处理器架构相关的初始化工作。这包括设置页表、初始化硬件设备、配置控制台等。内存管理初始化:接着,mm_init 函数被调用来初始化内存管理子系统,确保内存管理机制能够正常工作。

2024-10-17 19:29:47 1569

原创 反汇编-2

使用vim编辑如下代码。

2024-10-17 11:31:56 197

原创 课堂测试:求命令行传入整数参数的和

首先使用vim命令,书写一个C程序,要求“求命令行传入整数参数的和”。保存程序,使用gcc命令进行编译。使用./命令运行,并使用自己的学号数据20242817。

2024-10-17 11:11:22 131

原创 2024-2025-1 20242817《Linux内核原理与分析》第三周作业

操作系统(OS)是计算机系统中负责管理硬件资源和提供用户程序运行环境的软件。它的核心功能之一是进程管理,包括进程的创建、调度、同步和通信。下面从进程的角度对操作系统工作原理的描述:进程创建:操作系统在启动时会创建初始进程,这个初始进程通常负责加载其他程序和创建更多的进程。在mymain.c文件中,展示了如何初始化0号进程,并通过复制0号进程的进程控制块(PCB)来创建新的进程。这些进程被组织成链表,以便操作系统进行管理和调度。

2024-10-13 14:05:53 706

原创 图片仓库。

在这里插入图片描述](https://i-blog.csdnimg.cn/direct/59310d5b186c4087bf70dc2b577c05ed.png#pic_center。[在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7ba6f941443d4117ac0181630764c990.png#pic_center。

2024-10-10 17:25:33 126

原创 2024-2025-1 20242817《Linux内核原理与分析》第二周作业

删除以“.”为开头的代码,得到较为干净简洁的数据。不同版本的编译环境最终生成的汇编代码会有差异,此处使用的是蓝桥云环境“shiyanlou”。在汇编代码中所有以“.”开头的指令都是汇编伪指令,他们不属于ARM指令集,在本次实验中属于冗杂数据。使用vim命令,创建并编辑一个.c文件,输入实验样例代码,并更改常数为2817。由于该部分需要安装对应的交叉编译环境,所以我选择在本地虚拟机运行。下面分析汇编代码的工作过程中堆栈的变化。编译源程序并生成汇编代码。使用vi命令打开汇编项目。

2024-09-28 22:05:07 1520 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除