用Scoop(Win­dows 命令行安装工具)实现安全工具安装及自动更新

注意
本文最后更新于 2024-04-10,文中内容可能已过时。

Linux和MacOS都有包管理工具,如apt、brew,只需敲几个命令,就可以轻松实现软件的安装、更新、删除。但是在Windows安装、更新软件,是件相当繁琐和耗费时间的事情,效率太低,尤其是遇到不带自动更新的工具,每次都需要我们手动去下载。借助Scoop,可以像在Linux或macOS上使用apt或brew一样,轻松地下载和更新各种软件。

日常效果:

**安全工具一键更新:**使用scoop update *命令一键更新已安装的工具到最新版

image-20240920183252906

**BurpSuite 插件更新:**对应插件重新勾选一下就是最新版

image-20240920223557706

Scoop 是是一个开源的Windows命令行包管理器,由JavaScript编写,并通过PowerShell脚本运行,类似于 De­bian 的 apt、ma­cOS 的 homebrew。虽然 Scoop 的作者在项目的 GitHub Wiki 中谈到, Scoop 只是一个安装工具(installer),不应该被称为包管理器(package manager)。但是对于使用者而言,它与我们一般认为的软件包管理工具其实很是相似。

官网:https://scoop.sh

powershell

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

在windows中默认不允许任何脚本运行,所以我们可以使用 **Set-ExecutionPolicy**来改变PowerShell运行环境,共有4种运行权限,如下所示:

  • Restricted——默认的设置,不允许任何script运行;
  • AllSigned——只能运行经过数字证书签名的script;
  • RemoteSigned——运行本地的script不需要数字签名,但是运行从网络上下载的script就必须要有数字签名(使用脚本安装scoop这一等级就行);
  • Unrestricted——允许所有的脚本运行;

在非管理员的PowerShell中运行此命令,以默认配置安装scoop

powershell

irm get.scoop.sh | iex


#如果你在访问GitHub时遇到网络问题,你可以使用代理,例如:
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://gh.llkk.cc/https://raw.githubusercontent.com/scoopinstaller/install/master/install.ps1')

//或者
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://gitcode.com/gh_mirrors/inst/Install/blob/master/install.ps1')

Scoop 将默认把所有用户安装的 App 和 Scoop 本身置于C:\Users\<你的用户名>\scoop,如果需要自定义安装位置,请选择高级安装。

如果你想高级安装。你可以下载安装程序,然后用参数手动执行它。

powershell

irm get.scoop.sh -outfile 'install.ps1'

#如果你在访问GitHub时遇到网络问题,你可以使用代理,例如:
curl -o scoop_install.ps1 https://gh.llkk.cc/https://raw.githubusercontent.com/scoopinstaller/install/master/install.ps1

查看安装程序的所有可配置参数。

powershell

./scoop_install.ps1 -?

例如,将 scoop 安装到一个自定义目录(D:\Scoop),并在安装时使用代理

powershell

./scoop_install.ps1 -ScoopDir 'D:\Scoop' -Proxy 'http://127.0.0.1:7890'

在国内访问github总是不成功,而且scoop的大部分包都在github,那么配置scoop的下载代理,将会极大的提高效率。

powershell

# 设置全局代理
scoop config proxy 127.0.0.1:7890

# 取消代理:
scoop config proxy None

powershell

# 先设置 PowerShell 允许执行未签名脚本
set-executionpolicy remotesigned -s currentuser

# 下载 Scoop 安装脚本进行安装
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')

由于 Scoop 的安装脚本托管在 GitHub 的仓库里,所以对于无法正常访问 GitHub 的用户来说,安装的时候可能需要加一层全局代理后再进行安装。

  • 查看命令列表:

powershell

scoop help
  • 搜索软件

powershell

scoop search <app>
  • 安装软件

powershell

scoop install <app>
  • 查看软件详细信息

powershell

scoop info <app>
  • 卸载软件

powershell

scoop uninstall <app>
  • 一次性卸载多个软件

powershell

scoop uninstall <app> <app>
  • 更新 scoop 本体和软件列表

powershell

scoop update
  • 更新指定软件

powershell

scoop update <app>
  • 更新所有已安装的软件

powershell

scoop update *
  • 查看已安装的程序

powershell

scoop list
  • 查看哪些程序可以升级

powershell

scoop status

更多详情请官网安装说明书: ScoopInstaller

所有的包管理器都会有相应的软件仓库 ,Scoop 管理存放软件包描述文件的地方叫做桶(Bucket),桶里面就是一个个 json 格式的软件包描述文件,类似Homebrew 的 Tap,关于桶的详细概念可以查看一下 Scoop 的 Wiki 页。

Scoop 默认软件仓库(main bucket)软件数量是有限的,但是可以添加第三方 bucket。

scoop-security 是用于 Scoop 的软件仓库,本项目旨在提供用于Windows平台渗透测试和网络安全相关工具的快捷安装、管理和自动更新。

确保你已经有 Scoop 环境后,执行以下命令订阅本软件仓库:

powershell

//scoop bucket add <仓库别名> <仓库地址>

scoop bucket add sec https://github.com/whoopscs/scoop-security
  • 查找软件

powershell

scoop search sec/nuclei
//或者
scoop search nuclei
  • 安装本仓库中的软件:

powershell

scoop install sec/nuclei
//或者
scoop install nuclei

大多数情况下,是可以省略仓库别名 sec/,只需要执行类似 scoop install nuclei 的命令,除非安装的多个仓库都有此软件,则需要指定安装来源仓库。

本仓库已经添加 github ci 自动化,每隔几个小时会自动更新所有软件到最新版本

Scoop 默认不会污染用户的 PATH 环境变量(除非软件包有修改环境变量的定义),而是使用垫片(shims)来进行统一管理调用执行文件。


更多信息请查看 官方文档