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

linux病毒编写+vim shell编程

学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章
感谢泷羽sec 团队的教学

请一定遵循《网络空间安全法》!!!

Linux目录介绍

  • /bin 二进制可执行文件(kali里面是工具+一些文件)
  • /etc 系统的管理和配置文件
  • /etc/rc.d 启动的配置文件和脚本
  • /home 用户主目录的基点
  • /lab 标准程序设计苦逼,又叫动态链接共享库
  • /sbin 超级管理命令,这里存放的是系统管理员使用的管理程序
  • /tmp 公共的临时文件存储点
  • /root 系统管理员的主目录
  • /mnt 系统提供这个目录是让用户临时挂载的文件系统
  • /lost+found 这个目录平时是空的,系统非正常关机而留下的"无家可归"的文件就在这里面
  • /proc 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息
  • /var 某些大文件的溢出区,比如说各种服务器的日志文件
  • /usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录
  • /usr/bin众多的应用程序
  • /usr/sbin 超级用户的一些管理权限

Linux中的vim编辑器

什么是vim

Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

vim的使用

vim分为三种模式

  • 命令模式
  • 输入模式
  • 底线命令模式
    在这里插入图片描述
命令模式

输入vim+文件名(如果没有则会创建一个新的文件)进入vim编辑器

vim 1.txt

在这里插入图片描述
此时就是在命令模式中,此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符,比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。

命令模式常用命令

  • i – 切换到输入模式,在光标当前位置开始输入文本。
  • x – 删除当前光标所在处的字符。
  • : – 切换到底线命令模式,以在最底一行输入命令。
  • a – 进入输入模式,在光标下一个位置开始输入文本。
  • o:在当前行的下方插入一个新行,并进入输入模式。
  • O – 在当前行的上方插入一个新行,并进入输入模式。
  • dd – 剪切当前行。
  • yy – 复制当前行。
  • p(小写) – 粘贴剪贴板内容到光标下方。
  • P(大写)-- 粘贴剪贴板内容到光标上方。
  • u – 撤销上一次操作。
  • Ctrl + r – 重做上一次撤销的操作。
  • :w – 保存文件。
  • :q – 退出 Vim 编辑器。
  • :q! – 强制退出Vim 编辑器,不保存修改。
输入模式

在命令模式下按下 i 就进入了输入模式,使用 Esc 键可以返回到普通模式。

输入模式里面想输入什么就可以输入什么,并且可以通过cat命令查看

在这里插入图片描述
在这里插入图片描述

底线命令模式

在命令模式下按下 :(英文冒号)就进入了底线命令模式。

常用命令

  • :w 保存文件。
  • :q 退出 Vim 编辑器。
  • :wq 保存文件并退出 Vim 编辑器。
  • :q! 强制退出Vim编辑器,不保存修改。
    在这里插入图片描述

像这样就是保存退出

Shell编程

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

进行shell编程的时候,编程中的第一行一般都是

#! /bin/bash
输出Hello World!
#! /bin/bash
echo "Hello World!"
运行shell脚本的两种方法
作为可执行程序

将上面的代码保存为 test.sh,并 cd 到相应目录:

chmod +x ./test.sh  #使脚本具有执行权限
./test.sh  #执行脚本

注意,一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。

作为解释器参数

这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如:

/bin/sh test.sh
/bin/php test.php

这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。

Shell变量
定义变量

在 Shell 编程中,变量是用于存储数据值的名称

注意,变量名和等号之间不能有空格,变量名的命名须遵循如下规则:

  • 只包含字母、数字和下划线: 变量名可以包含字母(大小写敏感)、数字和下划线 _,不能包含其他特殊字符。
  • 不能以数字开头: 变量名不能以数字开头,但可以包含数字。
  • 避免使用 Shell 关键字: 不要使用Shell的关键字(例如 if、then、else、fi、for、while 等)作为变量名,以免引起混淆。
  • 使用大写字母表示常量: 习惯上,常量的变量名通常使用大写字母,例如 PI=3.14。
  • 避免使用特殊符号: 尽量避免在变量名中使用特殊符号,因为它们可能与 Shell 的语法产生冲突。
  • 避免使用空格: 变量名中不应该包含空格,因为空格通常用于分隔命令和参数。
使用变量

使用一个定义过的变量,只要在变量名前面加美元符号即可,如:

a="hello"
echo $a
echo ${a}

在这里插入图片描述

变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:

for skill in Ada Coffe Action Java; doecho "I am good at ${skill}Script"
done

如果不给skill变量加花括号,写成echo "I am good at s k i l l S c r i p t " ,解释器就会把 skillScript",解释器就会把 skillScript",解释器就会把skillScript当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。

只读变量

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

语法:

readonly 变量

删除变量

使用 unset 命令可以删除变量。

语法:

unset 变量

变量被删除后不能再次使用。unset 命令不能删除只读变量。

变量类型

字符串变量

在 Shell中,变量通常被视为字符串。

可以使用单引号 ’ 或双引号 " 来定义字符串

如:

a='hello'
a="hello"

整数变量

在一些Shell中,可以使用 declaretypeset 命令来声明整数变量。

这样的变量只包含整数值,例如:

declare -i a=42

这样的声明告诉 Shell 将 a 视为整数,如果尝试将非整数值赋给它,Shell会尝试将其转换为整数。

数组变量

数组可以是整数索引数组或关联数组,以下是一个简单的整数索引数组的例子:

my_array=(1 2 3 4 5)

或者关联数组:

declare -A my_array
my_array["name"]="John"
my_array["age"]=30
字符串拼接

字符串可以用单引号,也可以用双引号,也可以不用引号。

例:

your_name="runoob"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting  $greeting_1# 使用单引号拼接
greeting_2='hello, '$your_name' !'
greeting_3='hello, ${your_name} !'
echo $greeting_2  $greeting_3

在这里插入图片描述

Shell数组

bash支持一维数组(不支持多维数组),并且没有限定数组的大小。

定义数组
数组名=(值1 值2 值3...)

例如:

array_name=(value0 value1 value2 value3)
或者
array_name=(
value0
value1
value2
value3
)
或者
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen
读取数组

读取数组元素值的一般格式是:

${数组名[下标]}

使用 @ 符号可以获取数组中的所有元素,如:

echo ${array_name[@]}
注释

以 # 开头的行就是注释,会被解释器忽略。

单行注释

比如:

#这
#是
#注
#释
多行注释

例:

:<<EOF
注释内容...
注释内容...
注释内容...
EOF
或者
: '
这是注释的部分。
可以有多行内容。
'
这个格式为:+空格+单引号
Shell流程控制
判断语句if else

语法:

if 条件1
then执行命令1
elif 条件2
then执行命令2
else执行条件n
fi

if else 的 […] 判断语句中大于使用 -gt,小于使用 -lt

if [ "$a" -gt "$b" ]; then...
fi

如果使用 ((…)) 作为判断语句,大于和小于可以直接使用 > 和 <。

if (( a > b )); then...
fi
for循环

for循环格式:

for var in item1 item2 ... itemn
do命令1命令2...命令n
done

也可以写成一行

for var in item1 item2 ... itemN; do command1; command2… done;
while语句

语法:

while 条件
do命令
done
case … esac

case … esac 为多选择语句,与其他语言中的 switch … case 语句类似,是一种多分支选择结构,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 case … esac 语句,esac(就是 case 反过来)作为结束标记。

可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。格式:

casein
模式1)command1command2...commandN;;
模式2)command1command2...commandN;;
esac
跳出循环break/continue

和C语言一样,break 命令允许跳出所有循环(终止执行后面的所有循环),continue 命令与 break 命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。

Shell函数

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用

格式:

[ function ] funname [()]{action;[return int;]}

例:

helloFun(){echo "Hello,World!"
}
helloFun

输出结果
在这里插入图片描述

例:

funWithReturn(){echo "这个函数会对输入的两个数字进行相加运算..."echo "输入第一个数字: "read aNumecho "输入第二个数字: "read anotherNumecho "两个数字分别为 $aNum$anotherNum !"return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"

输出:

在这里插入图片描述

Linux资源耗尽病毒

使用alert或notify-send等工具发送通知

使用vim编辑器编写一个脚本名为shell.sh

内容为

#!/bin/bashwhile truedonotify-send    "无限弹窗" "这是一个无限循环的弹窗"sleep 2done

然后

然后运行这个脚本./shell.sh

就会无限弹窗了

…"
echo "输入第一个数字: "
read aNum
echo "输入第二个数字: "
read anotherNum
echo “两个数字分别为 $aNum 和 $anotherNum !”
return ( ( (( ((aNum+$anotherNum))
}
funWithReturn
echo “输入的两个数字之和为 $? !”


输出:[外链图片转存中...(img-xmPK20vu-1731557854155)]### Linux资源耗尽病毒使用alert或notify-send等工具发送通知使用vim编辑器编写一个脚本名为shell.sh内容为```bash
#!/bin/bashwhile truedonotify-send    "无限弹窗" "这是一个无限循环的弹窗"sleep 2done

然后

然后运行这个脚本./shell.sh

就会无限弹窗了

相关文章:

linux病毒编写+vim shell编程

学习视频来自B站UP主泷羽sec&#xff0c;如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 请一定遵循《网络空间安全法》&#xff01;&#xff01;&#xff01; Linux目录介绍 /bin 二进制可执行文件&#xff08;kali里面是工具一些文件&#xff09;/etc 系统的管理和配置文…...

WinDefender Weaker

PPL Windows Vista / Server 2008引入 了受保护进程的概念&#xff0c;其目的不是保护您的数据或凭据。其最初目标是保护媒体内容并符合DRM &#xff08;数字版权管理&#xff09;要求。Microsoft开发了此机制&#xff0c;以便您的媒体播放器可以读取例如蓝光&#xff0c;同时…...

智能工厂的设计软件 为了监管控一体化的全能Supervisor 的监督学习 之 序5 架构for认知系统 总述 (架构全图)

本文提要 本文讨论的“智能工厂的设计软件” for认知系统的架构全图 &#xff0c;这有别于前面所说的“智能工厂的设计软件”的“全景图”。两者在内容和侧重点上有所不同&#xff0c;但它们共同构成了对智能工厂设计软件的全面描述。 全景图是对智能工厂设计软件的整体概览&…...

vmware集群 vSAN HCL 数据库

HCL数据库升级 https://partnerweb.vmware.com/service/vsan/all.json VSAN版本目录升级 https://vcsa.vmware.com/ph/api/v1/results?deploymentId2d02e861-7e93-4954-9a73-b08692a330d1&collectorIdVsanCloudHealth.6_5&objectId0c3e9009-ba5d-4e5f6-bae8-f25ec5…...

人工智能引发直播革命:AI 技术塑造无人直播全新体验

在数字化浪潮席卷全球的今天&#xff0c;人工智能&#xff08;AI&#xff09;技术以其无与伦比的速度和广度&#xff0c;正深刻地改变着各行各业的面貌。其中&#xff0c;直播行业作为新媒体时代的宠儿&#xff0c;也迎来了由AI技术引领的颠覆性变革。这场由人工智能引发的直播…...

数据研发基础 | 什么是流批一体

流批一体的概念是可能出现在大厂的面试题中的&#xff0c;虽然就算大厂实习也没机会实操这样的高级操作&#xff0c;学一点概念&#xff0c;面试多少是能说上一两句的。大致就是希望一套代码能同时在批处理和流处理中运行&#xff08;同时做离线计算和实时计算&#xff09;。下…...

《Python网络安全项目实战》项目6 编写密码工具程序

《Python网络安全项目实战》项目6 编写密码工具程序 项目6 编写密码工具程序任务6.1 猜数字游戏任务描述任务分析任务实施6.1.1 编写基本的猜数字程序6.1.3 测试并修改程序6.1.4 给程序增加注释 任务拓展任务实施6.2.1 生成随机密码6.2.4 菜单功能 相关知识1. 密码字典2. 密码字…...

现代C++HTTP框架cinatra

文章目录 cinatra简介主要特点 快速上手编译器版本要求使用指南快速示例 项目地址 cinatra简介 cinatra是一个基于C20协程的高性能HTTP框架&#xff0c;它的目标是提供一个快速开发的C HTTP框架解决方案 它不仅支持HTTP/1.1和1.0&#xff0c;还支持SSL和WebSocket&#xff0c…...

【功耗现象】com.gorgeous.lite后台Camera 使用2小时平均电流200mA耗电量400mAh现象

现象 轻颜相机(com.gorgeous.lite)后台Camera 使用2小时平均电流200mA(BugReport提供的电流参考数据),耗电量400mAh 即耗电占比(200mA*2h)/(12.83h*52.68mA )400mAh/623mAh62% CameraOct 10 202321:03:08 - 23:03:372h16m15s859ms to 4h16m44s984msactive duration: 2h 0m 29…...

06.VSCODE:备战大项目,CMake专项配置

娇小灵活的简捷配置不过是年轻人谈情说爱的玩具&#xff0c;帝国大厦的构建&#xff0c;终归要交给CMake去母仪天下。一个没有使用 CMake 的 C 项目&#xff0c;就像未来世界里的一台相声表演&#xff0c;有了德纲却无谦&#xff0c;观众笑着遗憾。—— 语出《双城记》作者&…...

还是小时候味道的麻辣片

麻辣片的诞生&#xff0c;源于人们对辣味的热爱和对丰富口感的追求。它将辣椒的火辣、香料的浓郁和豆制品的醇厚完美结合在一起&#xff0c;创造出了一种令人回味无穷的美食体验。无论是在学校的小卖部、街头的小吃摊&#xff0c;还是超市的货架上&#xff0c;麻辣片都以其鲜艳…...

GaussDB部署架构

GaussDB部署架构 云数据库GaussDB管理平台&#xff08;TPOPS&#xff09;基于B/S架构开发&#xff0c;由Web、管控Service、管控Agent三部分组成&#xff0c;软件结构如图1所示。 图1 各节点部署架构 Web&#xff1a;作为用户接入子系统&#xff0c;用于将用户在Web下发的操作…...

遥测数据采集工具Grafana Alloy

介绍 Alloy是Grafana产品公司旗下的一款新主推遥测数据采集工具&#xff0c;Grafana Alloy也是一个开源OpenTelemetry收集器&#xff0c;具有内置 Prometheus管道并支持指标、日志、跟踪和配置文件。Alloy支持为OTEL、Prometheus、Pyroscope、Loki等服务提供许多指标、日志、跟…...

线性数据结构

数组 数组&#xff08;Array&#xff09; 是一种很常见的数据结构。它由相同类型的元素&#xff08;element&#xff09;组成&#xff0c;并且是使用一块连续的内存来存储。 我们直接可以利用元素的索引&#xff08;index&#xff09;可以计算出该元素对应的存储地址。 数组…...

【ArcGIS微课1000例】0127:计算城市之间的距离

本文讲述,在ArcGIS中,计算城市(以地级城市为例)之间的距离,效果如下图所示: 一、数据准备 加载配套实验数据包中的地级市和行政区划矢量数据(订阅专栏后,从私信查收数据),如下图所示: 二、计算距离 1. 计算邻近表 ArcGIS提供了计算点和另外点之间距离的工具:分析…...

【算法】二分

1. 找到有序区间中 x 最左边的数字的位置 static int getL(int a[], int l, int r, int x) {while (l < r) {int mid l r >> 1;if (x < a[mid]) {r mid;} else {l mid 1;}}if (a[l] ! x) return -1;return l;} 2. 找到有序区间中 x 最右边的数字的位置 stati…...

ARM CCA机密计算安全模型之简介

安全之安全(security)博客目录导读 目录 1、引言 2、问题陈述 3、CCA 安全保证 3.1 对领域所有者的安全保证 3.2 对host环境的安全保证 Arm 机密计算架构&#xff08;CCA&#xff09;安全模型&#xff08;SM&#xff09;定义了 CCA 隔离架构的安全要求和基本安全属性。这…...

蓝桥杯-洛谷刷题-day3(C++)

目录 1.忽略回车的字符串输入 i.getline() ii.逐个字符的识别再输入 2.获取绝对值abs() 3.做题时的误区 4.多个变量的某一个到达判断条件 i.max() 5.[NOIP2016 提高组] 玩具谜题 i.代码 6.逻辑上的圆圈 i.有限个数n的数组 7.数组的定义 i.动态数组 1.忽略回车的字符串输…...

K8S资源限制之ResourceQuota

ResourceQuota介绍 在K8S中&#xff0c;大部分资源都可以指定到一个名称空间下&#xff0c;因此可以对一个名称空间的计算资源&#xff0c;存储资源&#xff0c;资源数量等维度做资源限制。 如限制pod数量、svc数量&#xff0c;控制器数量&#xff0c;限制PVC请求的存储量 注…...

释放高级功能:Nexusflows Athene-V2-Agent在工具使用和代理用例方面超越 GPT-4o

在不断发展的人工智能领域&#xff0c;Nexusflows 推出了 Athene-V2-Agent 作为其模型系列的强大补充。这种专门的代理模型设计用于在功能调用和代理应用中发挥出色作用&#xff0c;突破了人工智能所能达到的极限。 竞争优势 Athene-V2-Agent 不仅仅是另一种人工智能模型&…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...