当前位置: 首页 > article >正文

Linux基础之病毒编写

声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章

声明:本文主要用作技术分享,所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险,并遵循相关法律法规。

感谢泷羽sec 团队的教学
视频地址:linux基础之病毒编写(完结)_哔哩哔哩_bilibili

今天的主题是Linux目录介绍,一些基本命令使用以及资源耗尽病毒的编写。

一、Linux目录结构 

Linux 目录结构概述:

  • /bin: 存放二进制可执行文件和命令,特别重要,不能删除。
  • /boot: 启动系统所需文件,特别重要,不能删除。
  • /dev: 设备文件目录,特别重要,不能删除。
  • /etc: 配置文件目录,特别重要,不能删除。
  • /home: 普通用户的家目录。
  • /lib: 32位库文件目录,特别重要,不能删除。
  • /lib64: 64位库文件目录,特别重要,不能删除。
  • /media: 用于挂载多媒体设备。
  • /mnt: 用于临时挂载文件系统(如光盘和U盘)。
  • /opt: 可选的软件包安装目录。
  • /proc: 虚拟文件系统,提供系统进程信息,特别重要,不能删除。
  • /root: root用户的家目录,特别重要,不能删除。
  • /run: 系统运行时产生的临时文件。
  • /sbin: 超级用户专用命令目录,特别重要,不能删除。
  • /srv: 服务数据目录。
  • /sys: 系统信息目录,特别重要,不能删除。
  • /tmp: 临时文件存放目录。
  • /usr: 用户级程序和数据目录,特别重要,不能删除。
  • /var: 存放可变文件(如日志文件),特别重要,不能删除。
  • /lost+found :用于存放文件系统检查时恢复的文件碎片。

二、基本命令

cd 
  • 作用: 切换到用户的主目录。
  • 示例:cd /home/tom

ls
  • -l: 详细信息列表。
  • -a: 显示所有文件,包括隐藏文件。
  • -h: 以可读的格式显示文件大小。
  • 示例: ls -lah

pwd 
  • 作用: 显示当前目录的完整路径。
  • 示例: pwd

clear
  • 作用: 清空终端屏幕。
  • 示例: clear

vim
  • 作用: 打开文件进行编辑。
  • 示例: vim file.txt

cat
  • -n: 显示行号。
  • 示例: cat -n anaconda-ks.cfg

tail
  • -n num: 显示最后的 num 行。
  • -f: 实时跟踪文件更新。
  • 示例: tail -n 10 anaconda-ks.cfg      #显示文件最后10行

head
  • -n num: 显示前 num 行。
  • 示例: head -n 5 anaconda-ks.cfg    #显示文件前5行

more
  • 作用: 分屏显示文件内容。
  • 示例: more anaconda-ks.cfg

chown
  • owner:group: 设置文件的所有者和组。
  • 示例: chown tom:root new.txt

useradd
  • -m: 创建用户的主目录。
  • -s: 指定用户的登录 shell。
  • 示例: useradd -m -s /bin/bash gg

adduser
  • 通常是 useradd 的交互式版本。
  • 示例: adduser GGB

su
  • -: 切换用户并加载其环境。
  • 示例: su - tom

userdel
  • -r: 删除用户的同时删除其主目录。
  • 示例: userdel -r tom

passwd
  • 作用: 修改当前或指定用户的密码。
  • 示例: passwd root

sudo
  • 作用: 以超级用户身份执行命令。
  • 示例: sudo yum update    #检查所有已安装的软件包,并将它们更新到最新可用的版本。

三、 Linux权限详解

权限位

权限用三个字符表示:

  • r (读): 值为 4
  • w (写): 值为 2
  • x (执行): 值为 1
  • - (无权限): 值为 0
权限组合

权限组合通过加和值确定:

  • 0: ---
  • 1: --x
  • 2: -w-
  • 3: -wx
  • 4: r--
  • 5: r-x
  • 6: rw-
  • 7: rwx
权限结构

权限分为三组:

  • User (用户)
  • Group (组)
  • Other (其他人)

例如:rwxr-xr-x

  • 用户 (User): rwx(读写执行)
  • 组 (Group): r-x (读执行)
  • 其他人 (Other): r-x (读执行)

改变权限

使用 chmod 命令修改权限:

  • 数字方式: chmod 755 0708.txt           #给文件0708.txt权限提升至最高

    • 7 = rwx (用户)
    • 7 = rwx (组)
    • 7 = rwx (其他人)
  • 符号方式: chmod ugo-wx 0708.txt      #删除0708.txt写、执行权限

    • u (用户), g (组), o (其他人)
    • + 添加权限, - 删除权限

用户与组
  • root 用户: 最高权限,能够执行所有操作。
  • 普通用户: 受限于分配的权限。
  • 用户组 (users): 共享文件和权限的用户集合。

四、vim编辑器详解

基本操作
  • 打开文件: vim filename
  • 进入编辑模式: 按 i(插入模式)
常用模式
  • 普通模式: 默认模式,用于导航和操作。
  • 插入模式: 按 i 进入,可编辑文本。
  • 命令模式: 按 : 进入,用于执行命令。
常用命令
  • 保存并退出: :wq
  • 仅保存: :w
  • 仅退出: :q
  • 强制退出: :q!
导航
  • 移动光标: 使用方向键或 h(左),j(下),k(上),l(右)
  • 跳转到行首: 0
  • 跳转到行尾: $
  • 跳转到文件开头: gg
  • 跳转到文件结尾: G
编辑
  • 删除字符: x
  • 删除整行: dd
  • 复制(拷贝)行: yy
  • 粘贴: p
  • 撤销: u
  • 重做: Ctrl + r
查找与替换
  • 查找: /pattern 然后按 Enter
  • 下一个匹配: n
  • 上一个匹配: N
  • 替换: :s/old/new/g(当前行替换)
  • 全局替换: :%s/old/new/g
实用技巧
  • 行号显示: :set number
  • 语法高亮: :syntax on
  • 自动缩进: :set autoindent
  • 按 : 进入命令模式使用。

五、资源耗尽病毒分析

该脚本通过notify-send发送无限弹窗通知,从而导致资源消耗的效果。

  1. 编写脚本:将以下代码保存到tc.sh文件中。

    #!/bin/bash 
    while true 
    do 
        notify-send "无限弹窗" "这是一个无限循环弹窗" 
        sleep 2 
    done
    
    
    说明:
    #!/bin/bash:指定使用 Bash 作为解释器。
    while true:创建一个无限循环,true 始终为真,因此循环不会停止,除非手动终止。
    notify-send:这是一个 Linux 下的桌面通知命令,通常用于显示桌面通知。它的第一个参数是通知的标题,第二个参数是通知的内容。
    sleep 2:让脚本每 2 秒暂停一次。
  2. 设置权限:使用以下命令赋予执行权限。

    chmod +x tc.sh
  3. 运行脚本:使用以下命令运行脚本。

    ./tc.sh

 改进

 设置一个计时器,运行 10 次后自动停止。

#!/bin/bash
count=0
while [ $count -lt 10 ]
do
    notify-send "有限弹窗" "这是一个有限次数的循环弹窗"
    sleep 2
    count=$((count+1))
done


解释:
#!/bin/bash:这行指定了脚本使用的解释器是 Bash。
count=0:初始化一个计数器 count,初始值为 0。
while [ $count -lt 10 ] do:开始一个 while 循环,条件是 count 小于 10。
notify-send :使用 notify-send 命令发送一个弹窗通知,标题为“有限弹窗”,内容为“这是一个有限次数的循环弹窗”。
count=$((count+1)):将 count 的值增加 1。
done:结束while循环。

http://www.kler.cn/a/390131.html

相关文章:

  • HarmonyOS Next星河版笔记--界面开发(4)
  • 猿创征文|Inscode桌面IDE:打造高效开发新体验
  • 【MySQL】数据库表连接简明解释
  • C++初阶——list
  • LeetCode【0036】有效的数独
  • 以往运维岗本人面试真题分享
  • Docker 操作指令
  • 如何设置el-date-picker的默认截止时间为“23:59:59”
  • 故事121
  • Ceph MDS高可用架构探索:从零到一构建多主一备MDS服务
  • (Go基础)Go的运行流程步骤与包的概念
  • 使用docker方式进行Oracle数据库的物理迁移(helowin/oracle_11g)
  • 【Linux系列】 环境配置文件合并的艺术:从`.env`到`.env.combined`
  • Radix Sorts
  • 音视频入门基础:FLV专题(25)——通过FFprobe显示FLV文件每个packet的信息
  • LeetCode每日一题3258---统计满足 K 约束的子字符串数量 I
  • pycharm连接oracle数据库查询数据
  • C# 多线程编程
  • 文本语义分块、RAG 系统的分块难题:小型语言模型如何找到最佳断点
  • Spring Boot框架下编程训练系统开发指南
  • 【Docker】Mac安装Docker Desktop导致磁盘剩余空间较少问题如何解决?
  • Spring Cloud Alibaba Spring Cloud Spring Boot JDK 版本依赖关系
  • jQuery UI 使用
  • 性能测试链路分析与压测平台的对接
  • 【逆向爬虫实战】--全方位分析+某某学堂登录(DES加密)
  • Vue功能菜单的异步加载、动态渲染