- 博客(15)
- 收藏
- 关注
原创 Windows 批处理和 Linux 下的 shell 脚本实现两个文本文件内容的交替输出
本实验旨在通过 Windows 批处理和 Linux 下的 shell 脚本实现两个文本文件内容的交替输出。实验要求脚本能够处理不同情况下的文件,包括正常文件、巨大文件、一个空文件以及两个空文件的情况。
2025-01-02 11:37:53
497
原创 Zip 文件暴力破解
本实验成功实现了对 Zip 文件的暴力破解。通过 Python 的 zipfile 模块,能够尝试使用不同的密码来解压加密的 Zip 文件。实验中,编写了一个 Python 脚本来自动化这一过程,该脚本能够读取密码字典文件,并尝试每一个密码直到找到正确的解压密码。
2025-01-02 11:37:11
3587
原创 ShellShock 攻击实验
ShellShock 漏洞是一个严重的安全问题,它允许攻击者通过环境变量执行任意代码。本实验通过攻击 Set-UID 程序,展示了如何利用该漏洞获取 root 权限。实验结果表明,即使在没有 setuid 的情况下,攻击者仍然有可能通过其他方式利用该漏洞。设置其为 Set-UID 程序,保证其所有者是 root。```bash$ sudo suShellShock 漏洞,也称为 Bash 漏洞,是一个严重的安全问题,它允许攻击者通过环境变量执行任意代码。
2025-01-02 11:36:31
2056
原创 嵌入式 Linux 设备驱动开发-康奈尔笔记
操作系统通过驱动程序驾驭硬件设备,提供统一操作方式。Linux 内核模块化设计,驱动程序作为内核模块动态加载。设备分为字符设备、块设备和网络设备。设备号由主设备号和次设备号组成,用于标识设备类型和具体设备。设备驱动程序运行在内核模式,提供 I/O 接口。学习了嵌入式 Linux 设备驱动的基本概念和开发流程。掌握了字符设备和块设备驱动程序的编写和测试。理解了中断处理在设备驱动中的重要性。通过 GPIO 驱动程序实例,加深了对设备驱动编写步骤的理解。
2025-01-02 11:35:20
327
原创 《Linux 内核原理与分析》第 10 周&第 11 周作业
通过以上措施,逐渐克服了学习过程中的难点,并深入理解了 KVM 虚拟机技术和 Linux 容器技术的原理和应用。同时也积累了丰富的实践经验和技能,为未来的学习和工作打下了坚实的基础。容器技术是一种轻量级虚拟化技术,基于操作系统内核的隔离机制(如namespace和cgroups),为应用提供独立的运行环境。它在资源占用和启动速度上较虚拟机更具优势,广泛应用于云计算和微服务架构。通过本章的学习和实践,我深入理解了 Linux 容器技术的原理和应用场景,特别是在namespace隔离、cgroups。
2025-01-02 11:34:46
591
原创 《Linux 内核原理与分析》第 9 周作业
通过源码分析,我们可以将 schedule()的调用时机归纳为以下几类:进程主动放弃 CPU(例如 kthread 中的调用)进程退出时(exit.c 中的调用)等待资源时(如工作队列、定时器等待)系统管理操作(如电源管理、CPU 热插拔)时间片耗尽时(通过时钟中断触发)高优先级任务唤醒时(通过设置 TIF_NEED_RESCHED 标志)中断返回时的重新调度检查。
2025-01-02 11:33:51
569
原创 《Linux 内核原理与分析》第 7 周作业
是 Linux 内核中定义进程的数据结构,它包含了进程的所有信息,包括但不限于:这些字段共同定义了一个进程的属性和行为,是内核管理进程的基础。是系统调用的内核入口点,其工作流程如下:通过设置断点并跟踪系统调用,我们可以得到以下信息:通过实验,我们验证了 Linux 系统创建新进程的过程。、和三个系统调用都可以创建一个新进程,而且都是通过调用来实现进程的创建。Linux 通过复制父进程来创建一个新进程,这个过程涉及到复制 PCB()、分配新的内核堆栈、修改复制过来的进程数据等步骤。子进程的执行起点和内核堆栈的
2025-01-02 11:32:28
1573
原创 《Linux 内核原理与分析》第 6 周作业
通过这次实验,我深入理解了 Linux 系统中系统调用的整个处理流程。从用户态到内核态的切换,寄存器的保存和恢复,系统调用号的检查,以及系统调用的执行和返回,每一步都是系统调用机制的重要组成部分。这个过程不仅涉及到底层的硬件中断处理,还涉及到内核中的系统调用表和进程管理。通过 gdb 的调试,我能够直观地观察到这些步骤的执行,加深了我对操作系统内核工作原理的理解。
2025-01-02 11:31:57
889
原创 《Linux 内核原理与分析》第 5 周作业
通过本实验,我们验证了在 Linux 系统下可以使用库函数 API 和内联汇编两种方式来调用相同的系统调用。本次实验使用的getpid系统调用较为简单,不需要额外参数,因此避免了复杂的操作数约束问题,使内联汇编代码更易于实现。
2025-01-02 11:30:53
441
原创 《Linux 内核原理与分析》第 4 周作业
本次实验从 start_kernel 到 init 进程启动,让我对 linux 内核的启动过程有了一定的了解。其主要步骤如下:内核启动Linux 系统内核启动时首先调用函数。这个函数负责执行一系列的初始化操作,包括 CPU、内存、驱动程序、文件系统等硬件和软件组件的初始化。创建 0 号进程在函数的末尾,会调用rest_init函数来创建 0 号进程(也称为初始进程或 idle 进程)。这个进程是系统所有进程的祖先,负责调度其他进程的执行。进程调度。
2025-01-02 11:30:22
376
原创 《Linux 内核原理与分析》第 3 周作业
任务结构体:定义 task_struct 结构体来表示进程,包含了进程 ID、状态、时间片等信息。任务链表:使用循环链表来存储所有的进程,并且通过 next 指针指向下一个进程,实现了轮转调度。轮转调度算法:通过时间片轮转算法来调度进程,每个进程运行其时间片,时间片用完后即切换到下一个进程。调度器运行:在主调度循环中,通过调用 schedule() 来实现多个时钟周期的调度,确保所有进程公平获得 CPU 时间。
2025-01-02 11:30:00
429
原创 《Linux 内核原理与分析》第 2 周作业
通过汇编代码,我们可以看到计算机是如何一步步执行程序的:从函数调用、参数传递、局部变量管理到返回值处理。这些低级操作是计算机执行任何程序的基础,它们展示了计算机如何在硬件层面上理解和执行高级语言编写的程序。
2025-01-02 11:28:16
496
原创 Linux 安装与基础学习
现在 vmware 个人版可以免费注册下载,但由于账号注册出现未知原因,收购 vmware 的 BROADCOM 网站拒绝下载,因此只能从网上搜索资源包,成功下载安装 vmware。这部分遇到了较多的问题 二、 Linux 命令的学习1. 学习方法快捷键的学习:之前学习过一段时间的 Linux,这次掌握了几个新的快捷键:打开终端:新建标签页:切换到第 N 个标签页:终端中命令补全主动学习相关命令本次结合和,尝试学习了和查找相关的核心命令:,,,,等采用 markdown 做学习笔记的
2025-01-02 11:27:44
747
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅