- 博客(48)
- 收藏
- 关注
原创 20242817李臻-安全文件传输系统-项目验收
本实验旨在设计并实现一个完整的安全文件管理系统,基于SM2+SM3+SM4混合密码体系,构建了一个具备高安全性的C/S架构文件传输平台。项目采用C/S架构,使用Qt框架开发,满足Linux系统调用、Socket网络编程、多线程处理等技术要求。
2025-06-08 20:10:18
796
原创 李臻20242817_安全文件传输系统项目报告_第14周
Gitee 仓库地址:https://gitee.com/li-zhen1215/homework/tree/master/Secure-file。
2025-06-01 15:34:13
922
原创 李臻20242817_安全文件传输系统项目报告_第12周
Gitee 仓库地址:https://gitee.com/li-zhen1215/homework/tree/master/Secure-file。
2025-05-18 20:40:22
1227
1
原创 20242817-李臻-课下测试:基于商用密码的数字信封协议(AI)
数字信封协议是一种结合了对称加密和非对称加密优势的加密通信机制。在通信过程中,发送方首先使用对称加密算法对需要传输的信息进行加密,生成密文。然后,发送方随机生成一个对称加密密钥,并使用接收方的公钥对这个对称加密密钥进行加密,形成数字信封。数字信封和加密后的信息一起发送给接收方。接收方收到后,先用自己的私钥解密数字信封,得到对称加密密钥,再用这个对称加密密钥解密信息,从而获取原始明文。
2025-05-18 13:36:28
652
原创 20242817李臻《Linux⾼级编程实践》第9周
是常见的客户端连接库,适用于客户端与 MySQL 服务器的独立进程通信。libmysqld:是 MySQL 内嵌式服务器库,可以将 MySQL 数据库嵌入到应用程序中,通常用于在没有独立 MySQL 服务器的情况下运行数据库。不过,libmysqld 已不再是主流选择,在现代的 MySQL 版本中已经逐渐不被推荐或被淘汰。MySQL的事务支持:MySQL支持ACID(原子性、一致性、隔离性、持久性)事务,确保在数据库操作中的数据一致性和可靠性。常用的事务控制命令包括COMMIT和ROLLBACK。
2025-05-11 12:26:36
1094
原创 李臻20242817_安全文件传输系统项目报告_第9周
Gitee 仓库地址:https://gitee.com/li-zhen1215/homework/tree/master/Secure-file。
2025-04-27 21:17:03
702
原创 20242817-李臻-课下测试:网络编程高级I/O(AI)
在非阻塞模式下,系统调用(如 recv()、send())不会导致进程阻塞等待数据。如果没有数据可读或可写,函数会立即返回,并给出一个特定的错误码(例如,EAGAIN 或 EWOULDBLOCK)。在网络编程中,Socket支持不同的I/O模式,其中阻塞模式和非阻塞模式是最常用的两种模式。代码仓库链接:https://gitee.com/li-zhen1215/homework/tree/master/Week9。运行程序前,确保有一个服务器在 127.0.0.1:8080 上监听。
2025-04-25 11:03:26
842
原创 20242817-李臻-课上测试:网络编程
在 Ubuntu 或 openEuler 中完成任务(推荐openEuler)参考《head first C》实现knock knock服务器,提交代码knock.c,编译运行过程(3分)使用多线程实现knock knock服务器,提交代码knockmt.c,编译运行过程,至少两个客户端测试,服务器运行结果中要打印线程id(10分)提交git log结果(1分)
2025-04-25 10:16:31
329
原创 20242817-李臻-课上测试:信号处理
仓库链接:https://gitee.com/li-zhen1215/homework/tree/master/Week8/keshang3。
2025-04-25 09:45:03
795
2
原创 20242817-李臻-课上测试:进程间通信
管道()将前一个命令(ls)的标准输出作为后一个命令(sort -r)的标准输入,实现进程间通信。此处sort -r对ls的结果按名称逆序排序。
2025-04-25 09:34:01
572
原创 20242817-李臻-课上测试:文件系统
仓库链接:https://gitee.com/li-zhen1215/homework/tree/master/Week8/keshang1。在ext4文件系统中,文件名存储在目录项中,inode存储文件的元数据,数据块存储实际的文件内容。在Ubuntu系统上,通常使用的是ext4文件系统。命令则会通过目录项找到inode,再通过inode找到数据块读取文件内容。命令会创建目录项、分配inode和数据块,而。在Ubuntu系统上,
2025-04-25 09:09:40
714
原创 20242817李臻《Linux⾼级编程实践》第8周
网络协议分层的表述问题原文将TCP/IP模型划分为五层(包含物理层),但标准的TCP/IP四层模型不单独定义物理层。应用层(HTTP/FTP)传输层(TCP/UDP)网络层(IP/ICMP)网络接口层(以太网/WiFi)建议增加OSI七层模型对比说明,避免与混合模型混淆。
2025-04-21 18:24:45
657
原创 20242817李臻《Linux⾼级编程实践》第7周
线程与进程:线程是轻量级进程,共享进程资源,提高程序效率和响应性。线程生命周期管理:掌握线程创建、终止、同步、互斥等系统调用。同步与互机制互斥量:保护共享资源,防止并发访问冲突。信号量:用于资源的互斥和同步访问。条件变量:等待特定条件发生,与互斥锁结合使用。合理选择机制:根据应用程序需求,选择适当的同步与互机制,保护共享资源一致性。内容的全面性和准确性原文说Linux线程是"用户级线程",这是不准确的。
2025-04-15 10:40:07
942
原创 李臻20242817_安全文件传输系统项目报告_第6周
Gitee 仓库地址:https://gitee.com/li-zhen1215/homework/tree/master/Secure-file。
2025-04-06 22:23:23
998
原创 20242817-李臻-课下测试:输出重定向
在 C 语言中,输入输出重定向是指将程序的标准输入(stdin)、标准输出(stdout)或标准错误(stderr)从默认的终端设备(如键盘和屏幕)重定向到文件或其他设备。这种技术在处理文件输入输出时非常有用,尤其是在需要自动化处理数据或记录程序运行结果时。
2025-04-05 11:13:58
902
原创 20242817-李臻-课下测试:文件系统fcntl
fcntl是一个用于文件控制的系统调用,它提供了对文件描述符的多种操作,主要用于控制和管理文件的打开、关闭、读写、锁定等操作。以下是fcntlfcntl通过设计和实现这些测试用例,我对fcntl的功能有了更深入的理解。文件描述符操作:学会了如何使用fcntl复制文件描述符,并理解了复制后的文件描述符与原始文件描述符之间的关系。文件锁定:掌握了如何使用fcntl对文件进行加锁、解锁和查询锁状态,理解了文件锁定在多进程环境中的重要性。非阻塞 I/O。
2025-03-28 10:07:14
975
原创 20242817-李臻-课下测试:系统调用错误处理
Gitee仓库链接:https://gitee.com/li-zhen1215/homework/tree/master/Week5/kexia。
2025-03-28 09:20:42
963
原创 20242817李臻《Linux⾼级编程实践》第6周
AI工具(你使用的AI工具及其链接)问小白Kimi图书《Linux编程基础.李养群》电子版网站优快云“20242817李臻 原创作品转载请注明出处 《Linux高级编程实践》”**
2025-03-24 16:03:24
353
原创 20242817-李臻-课下测试:Windows MIRACL静态库使用测试
检查头文件路径是否正确。确保头文件已添加到项目中。检查#include语句是否正确。确保项目路径和编译器配置正确。如果问题仍未解决,可以提供具体的错误信息和项目结构,我可以进一步帮助你分析问题!
2025-03-23 20:14:28
635
原创 20242817李臻《Linux⾼级编程实践》第五周
信号是Linux进程间通信的一种机制,本质是软中断,用于通知进程某个事件发生(如错误、用户输入等)。用途:控制进程行为,例如终止进程(SIGINT)、暂停进程(SIGSTOP)或自定义处理。可重入函数:可被多个任务并发调用而不会产生数据错误。不可重入函数:使用静态变量或全局变量,可能导致数据竞争。信号分类:可靠/不可靠、实时/非实时、同步/异步。处理机制signal简单但不可靠,sigaction支持信号队列和附加信息。发送方式killraisesigqueue。可重入性。
2025-03-21 11:39:33
607
原创 课上测试:文件系统之链接
通过这次实现我对ln命令有了深刻的理解。我认识到硬链接和符号链接的本质区别:硬链接与源文件共享相同的 inode,适用于同一文件系统内的文件链接;而符号链接则是一个独立的文件,存储目标路径,可以跨文件系统使用。其次,我掌握了如何通过系统调用 link 和 symlink 来实现这两种链接,并学会了如何解析命令行参数和处理错误。通过编写myln代码,我更加熟悉了 Linux 文件系统的工作原理,以及如何在 C 语言中调用系统级函数。
2025-03-21 11:14:27
919
原创 20242817李臻《Linux⾼级编程实践》第四周
主题关键点fork()写时复制、父子进程独立执行、返回值区分角色。exec系列替换进程映像、参数传递方式(列表/数组)、路径查找(完整路径/PATH守护进程setsid()脱离终端、chdir("/")umask(0)、关闭文件描述符。僵尸进程父进程未调用wait()、通过信号或非阻塞等待回收。Shell实现fork()execvp()wait()循环,支持命令解析与执行。原内容存在问题补充主题新增关键点PCB结构task_struct包含进程所有元数据,如内存映射、文件表、信号处理等。
2025-03-18 21:30:52
1100
原创 课下测试:gdb调试
通过b设置7、8、9三个行断点,通过s命令进行执行到下一个断点。通过tb命令设置了三个临时断点。使用gdb运行testgdb。将函数断点设置在sum函数。
2025-03-15 15:44:04
309
原创 20242817李臻《Linux⾼级编程实践》第三周
文件系统:Linux将所有外部设备抽象为文件,文件操作通过系统调用(如)实现。系统调用与函数区别系统调用涉及用户空间到内核空间的切换。函数在用户空间执行,系统调用由内核完成。系统调用与用户空间:文件操作通过系统调用实现,涉及用户空间与内核空间的切换。文件描述符:每个打开的文件通过文件描述符(fd)标识,用于后续操作。原内容存在问题unlink描述错误:原内容提到"unlink删除目录"是错误的,实际上unlink只能删除普通文件,删除目录需使用rmdir且目录必须为空。
2025-03-15 15:13:42
921
原创 课上测试:SM4算法测试
使用OpenSSL的AES-256-CBC加密 sn.txt。使用Openssl生成随机密钥。解密加密文件到 sn2.txt。我的学号是20242817。
2025-03-14 09:53:25
381
原创 课上测试:SM3算法测试
由此可见,使用Gmssl和Openssl的SM3算法计算文件Hash值,得到的结果一致。由此可验证Gmssl计算结果正确。
2025-03-14 09:26:25
276
原创 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
773
原创 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
911
原创 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
362
原创 2024-2025-1 20242817《Linux内核原理与分析》第十三周作业
本次实验通过 zipfile 模块实现了 Zip 文件的暴力破解。学习了如何使用 zipfile 来解压带密码的 Zip 文件,并验证了基本的解压操作。接着,借助 argparse 模块,我们实现了一个命令行接口,用于接收用户输入的 Zip 文件路径和密码字典路径,进一步增强了程序的灵活性和可用性。实验的核心部分是暴力破解,通过逐一尝试密码字典中的每一个密码,直到找到正确的密码并成功解压文件。通过实现一个简单的暴力破解程序和创建密码字典文件进行测试,成功破解了加密的 Zip 文件。
2024-12-19 17:06:24
1793
原创 2024-2025-1 20242817《Linux内核原理与分析》第十二周作业
实验原理:缓冲区溢出漏洞是计算机历史上最经典且最危险的安全漏洞之一。它利用程序对内存操作的缺陷,实现对程序控制流的劫持。实验过程:实验中,我们编写了两段简单的代码,来实现缓冲区溢出漏洞,攻击者可以通过溢出漏洞获得系统的高权限,本实验中就被获取了root权限。预防措施:可以在编程中避免使用不安全的函数(如 strcpy、gets 等)或动态内存分配来预防缓冲区溢出。潜在危害:在网络服务程序中,攻击者可利用缓冲区溢出漏洞执行任意代码,修改程序的控制流或窃取敏感信息。
2024-12-12 19:53:03
835
原创 2024-2025-1 20242817《Linux内核原理与分析》第十一周作业
访问控制是Linux系统中确保资源仅被授权用户访问的重要机制。它包括传统的文件权限控制、强制访问控制(MAC)和基于角色的访问控制(RBAC)。Linux通过设置文件的所有者、组和权限来限制用户和进程的访问。
2024-12-04 10:00:04
644
原创 2024-2025-1 20242817《Linux内核原理与分析》第十周作业
Linux 容器技术是一种轻量级的虚拟化技术,通过操作系统层的资源共享和隔离,为应用程序提供独立的运行环境。它相比传统虚拟机更加高效,具有启动速度快、占用资源少的特点。容器技术的优势在于其灵活性和便携性,能够支持“一次构建,到处运行”的开发与部署模式,大幅提升了开发效率和资源利用率,广泛应用于云计算、微服务架构和 DevOps 流程。
2024-11-26 14:14:28
764
原创 2024-2025-1 20242817《Linux内核原理与分析》第九周作业
在操作系统中,进程切换和中断处理是核心功能。schedule()函数负责调度,它通过调用函数来执行进程调度算法,从而选择下一个即将运行的进程。随后,schedule()会利用函数来完成进程的上下文切换,确保进程能够顺利交接控制权。在函数的实现中,宏扮演着至关重要的角色。它负责保存当前进程的上下文信息至其栈中,并从目标进程的栈中恢复上下文,这涉及到处理器寄存器、堆栈指针和程序计数器等关键状态的保存与恢复。的实现细节会根据不同的硬件架构和编译选项进行调整。
2024-11-23 19:33:24
760
原创 2024-2025-1 20242817《Linux内核原理与分析》第八周作业
当用户调用 execve 系统调用时,Linux 内核会接管执行流程,首先清理当前进程的资源,关闭不需要的文件描述符,清空旧的地址空间。接着,内核解析 ELF 文件,检查文件合法性后,将代码段、数据段等加载到内存中。对于动态链接的可执行文件,内核会启动动态链接器来加载所需的共享库并进行符号重定位。然后,内核为新程序设置栈,将命令行参数和环境变量传入。最后,内核将控制权交给新程序的入口点,使其在用户态开始执行。整个过程确保了当前进程的地址空间被新程序完全替换,实现无缝启动。
2024-11-13 10:14:09
594
原创 2024-2025-1 20242817《Linux内核原理与分析》第七周作业
通过本次实验,我对Linux系统中fork函数如何创建新进程有了更深入的理解。主要分析了fork系统调用的内核处理过程,特别是sys_clone如何创建并初始化新的task_struct数据结构,以及如何通过GDB跟踪新进程的执行起点。以下是我对fork函数的分析和理解:fork函数的基本功能:fork是用户态系统调用,用于创建一个几乎完全相同的子进程。子进程继承了父进程的大部分资源,如文件描述符、环境变量等,但拥有独立的pid,使其在系统中独立存在。
2024-11-09 21:37:19
600
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人