“Yaker,你可以全局配置插件环境变量!“
周四周四,Vme50(bushi
大家好,这里是疯狂超级牛(功能上新版)

经常有用户问
“牛牛如何为不同插件配置相同的变量值呢?”
“能有一个一波搞定插件变量的方式就好了”
超级牛听到了广大用户的声音,默默地拿起了鞭子,走向开发团队…
于是!插件全局变量配置功能,上新!
那么如何具体使用此功能来配置插件的环境变量呢?
请看VCR⬇️



我们的设计中,使用cli的选项作为环境变量的获取接口。一个简单的例子如下
// setPluginEnv 是一个选项函数,设置参数从插件环境中取值
key = cli.String("key", cli.setPluginEnv("api-key"))
获取插件环境变量和使用普通cli参数基本一致,只需要在选项里设置 cli.setPluginEnv(“api-key”)即可,其中传入的是环境变量的key值。
需要说明的是一旦设置这个选项,Yakit将不再提供输入,其数据必定来自于插件环境变量。

可以看到上述demo中为cli参数 env设置 setPluginEnv之后,参数预览处就没有对应的输入框了。

插件环境变量可以在两处配置 插件商店页面的配置页 和 单个插件的配置页

这两处的配置有一些细节的不同。

这里的配置页面拥有完整的对环境变量的增删改查能力。可以新建环境变量,即使没有插件使用。

需要说明的是变量是可以支持空值的,这与没有环境变量并不等价。

这部分的配置是为了方便使用做出的针对单个插件的简单版配置

它只对本插件代码中使用的环境变量进行了展示,只提供对应的修改功能。
这里是对代码进行了解析处理,如果有代码中需要使用的环境变量没有被配置的话,会在此处提示用户。

点击配置即可在此处快捷配置环境变量
需要注意的时候环境变量的影响范围是全局,这里修改之后,所有的使用对应环境变量的地方都会受到影响。

有了插件环境变量之后,一些情况可以有更好的解决方案。比如为简单改动插件 就可以为其添加特定的校验头。
这里使用简单的内置插件——HTTP请求走私为例
buildSmugglePacket = (host, newPacket) => {
...
}mirrorNewWebsite = func(isHttps /*bool*/, url /*string*/, req /*[]byte*/, rsp /*[]byte*/, body /*[]byte*/) {...payload = buildSmugglePacket(host, req)println(payload)...rsp, _ = poc.HTTPEx(payload, poc.https(isHttps), poc.noFixContentLength(true))~...
}
假设现在进行渗透测试的一批目标中,分别添加特定的头 TestHeader,不同的测试目标的校验值不一样。
那么这个时候就可以通过环境变量进行一次通用改造。
header = cli.String("header",cli.setPluginEnv("testheader"))
cli.check()buildSmugglePacket = (host, newPacket) => {
...
}mirrorNewWebsite = func(isHttps /*bool*/, url /*string*/, req /*[]byte*/, rsp /*[]byte*/, body /*[]byte*/) {...payload = buildSmugglePacket(host, req)println(payload)...originResponse, req = poc.HTTP(standardPacket.Replace("REPLACEME_HOST", host), poc.https(isHttps),poc.replaceHeader("TestHeader", header))~...
}
改造之后此参数会在插件发送测试数据包的时候添加特定的请求头值,如需改动请求头值只需,修改环境变量配置即可,无需再改代码。
修改完毕在配置页面可以看到有未配置的变量

点击配置设置好环境变量之后执行插件,可以看到成功地进行请求头插入

如果需要更换测试目标,只需要在配置页面替换即可。
当然,这只是一个例子用来帮助社区用户快速了解插件环境变量的用途。
实际工作中可以改造热加载插件,使用hijack系列的hook,达到”一处修改,全局生效“的效果,用户可以自行探索。
END
YAK官方资源
Yak 语言官方教程:
https://yaklang.com/docs/intro/
Yakit 视频教程:
https://space.bilibili.com/437503777
Github下载地址:
https://github.com/yaklang/yakit
https://github.com/yaklang/yaklang
Yakit官网下载地址:
https://yaklang.com/
Yakit安装文档:
https://yaklang.com/products/download_and_install
Yakit使用文档:
https://yaklang.com/products/intro/
常见问题速查:
https://yaklang.com/products/FAQ
相关文章:
“Yaker,你可以全局配置插件环境变量!“
周四周四,Vme50(bushi 大家好,这里是疯狂超级牛(功能上新版) 经常有用户问 “牛牛如何为不同插件配置相同的变量值呢?” “能有一个一波搞定插件变量的方式就好了” 超级牛听到了广大用户的声音,默默地拿起…...
SAAS美容美发系统架构解析
随着技术的不断发展,SAAS(Software as a Service,软件即服务)模式在各个行业的应用逐渐深化,美容美发行业也不例外。传统的美容美发店面通常依赖纸质记录、手动操作和复杂的管理流程,而随着SAAS平台的出现&…...
如何为 ext2/ext3/ext4 文件系统的 /dev/centos/root 增加 800G 空间
如何为 ext2/ext3/ext4 文件系统的 /dev/centos/root 增加 800G 空间 一、引言二、检查当前磁盘和分区状态1. 使用 `df` 命令检查磁盘使用情况2. 使用 `lsblk` 命令查看分区结构3. 使用 `fdisk` 或 `parted` 命令查看详细的分区信息三、扩展逻辑卷(如果使用 LVM)1. 检查 LVM …...
vscode远程连接ssh
一. 使用vscode里的ssh查件连不上远程的解决方法 删除Windows上的known_host文件,该文件会在连接之后自动生成,用于验证远程服务器的身份。 konwn_host和id_rsa,id_rsa.pub的关系 (1)konwn_host用于客户端验证远程服务…...
智慧防汛平台在城市生命线安全建设中的应用
随着城市化进程的加快,城市基础设施的复杂性和互联性不断增强,城市生命线的安全管理面临前所未有的挑战。智慧防汛平台作为城市生命线安全建设的重要组成部分,通过现代信息技术提升城市防汛应急管理的智能化水平,保障城市安全。 …...
python实现TCP Socket控制测试仪器
python实现TCP Socket控制测试仪器 说明前提条件代码 说明 本例是用python实现TCP Socket,最终目的是为了控制LCR电容测试仪器。 前提条件 测试仪器 配备了以太网接口,支持TCP/IP协议栈 用户可以通过IP地址和端口号连接到仪器,建立TCP通信…...
51c自动驾驶~合集38
我自己的原文哦~ https://blog.51cto.com/whaosoft/12358456 #GaussianPretrain 万能3D高斯预训练表示!爆拉3D检测、Occ、高精地图等四大任务! 受Tesla的技术的推动,越来越多的厂商开始走"纯视觉"的路线,多数方案还…...
电脑显示器拔插DVI线后副屏不显示
问题:台式机副屏显示器插拔DVI线后副屏无法检测到,不显示 其他现象:电脑设备管理器“显示适配器”中只有独显,未显示集显。 尝试方法: 1、 重新插拔并拧紧DVI线、更换DVI线、将DVI线替换为VGA线、调换DVI线及VGA线两…...
Bash脚本常用命令
1.Bash常用快捷键 2.通配符 3.Bash其他特殊符号 4.位置参数 5.预定义变量 6.常用变量比较 7.基础正则表达式 8.文件类型判断 9.文件权限判断 10.整数比较命令 11.字符串判断 其他常用参考: https://zhuanlan.zhihu.com/p/748857250...
《Unity Shader 入门精要》高级纹理
立方体纹理 图形学中,立方体纹理(Cubemap)是环境映射(Environment Mapping)的一种实现方法。环境映射可以模拟物体周围的环境,而使用了环境映射的物体可以看起来像镀了层金属一样反射出周围的环境。 对立…...
vue3实现自定义导航菜单
一、创建项目 1. 打开HBuilder X 图1 2. 新建一个空项目 文件->新建->项目->uni-app 填写项目名称:vue3demo 选择项目存放目录:D:/HBuilderProjects 一定要注意vue的版本,当前选择的版本为vue3 图2 点击“创建”之后进入项目界面 图…...
[2024年3月10日]第15届蓝桥杯青少组stema选拔赛C++中高级(第二子卷、编程题(2))
方法一(string): #include <iostream> #include <string> using namespace std;// 检查是否为回文数 bool isPalindrome(int n) {string str to_string(n);int left 0, right str.size() - 1;while (left < right) {if (s…...
EDA软件研发的DevOps平台
1:什么是DevOps DevOps是十几年前,在互联网比较火的词,实际上就是ci/cd平台的另外一种说法,核心是说打破研发,测试,运维的边界,能够将整个产品开发的流程快速循环起来,随时可发版&a…...
从单机缓存到分布式缓存那些事
作者:秦怀 1 缓存前世今生 1.1 故事从硬件开始 Cache 一词来源于 1967 年的一篇电子工程期刊论文。其作者将法语词“cache”赋予“safekeeping storage”的涵义,用于电脑工程领域。当时没有 Cache,CPU 和内存都很慢,CPU 直接访…...
[Ubuntu20] Gym入门,Mujoco
OpenAI Gym是 OpenAI 出的研究强化学习算法的 toolkit,对于强化学习算法来说,大部分的论文环境都已经被 OpenAI 的 gym 环境集成,我们可以很便利的使用该工程来测试自己的强化学习算法,与他人的算法做一个对比。 Gym 官网 Github…...
Linux(ubuntu)系统的一些基本操作和命令(持续更新)
操作: Ctrl Alt T(打开命令终端) Ctrl Shift (放大命令终端窗口) Ctrl c(退出当前在终端运行的程序) 在命令终端窗口按Tab键可以补全要写的命令 命令: pwd(查…...
【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化?
【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化? 重要性:★★ NLP Github 项目: NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用&am…...
android 安全sdk相关
前述 在网上有看到许多android安全sdk相关的内容,有重复的也有比较新鲜的内容,这里做一个整体的合集,以及后续又看到一些比较新的东西会一起放在这里。 android内sdk目前可以分为以下几个部分(有一些部分可能会存在一些重合&#…...
NVR监测软件EasyNVR多个NVR同时管理:录播主机的5条常见问题与解决办法
视频监控广泛应用于城市治安、交通管理、商业安保及家庭监控等领域。在使用EasyNVR平台管理多个NVR设备时,尤其是涉及到海康录播主机的场景中,使用者可能会遇到一些常见问题。本文将探讨海康录播主机的五个常见问题及其解决办法。 1、海康录播主机的5条常…...
Z2400027基于Java+SpringBoot+Mysql+thymeleaf引擎的图书馆管理系统的设计与实现 代码 论文
图书馆管理系统的设计与实现 一、项目背景与简介二、系统总体功能三、运行环境与技术选型四、系统架构与模块划分五、系统界面截图六、源码获取 一、项目背景与简介 项目背景: 随着信息技术的不断发展和图书资源的日益丰富,图书馆作为知识传播和学习的重…...
盘点那些提高作物耐盐性的方法(一)
本文内容速览:随着全球气候变化加剧和不合理灌溉的持续影响,土壤次生盐渍化问题日益突出,许多地区的耕地盐碱化程度不断加重。传统手段在应对作物的高盐胁迫时逐渐显现出效果上限——部分作物的耐盐性改良已进入平台期,单纯依靠农…...
【MySQL | 第一篇】 深入理解三大日志(undo Redo Bin)
目录 Undo Log日志 Redo Log日志 Redo Log与Bin Log的区别 Bin Log日志 三大日志全流程 Undo Log日志 一、核心定义 Undo Log 是MySQL InnoDB存储引擎特有的事务回滚日志,核心作用是记录事务执行前的数据版本,用于事务回滚、MVCC实现,是…...
【Nano Bana】谷歌风格智能手表UI界面
谷歌风格智能手表UI提示词(专业工程版设计/开发专用) 在嵌入式智能手表UI设计与开发过程中,符合行业规范且适配开发需求的提示词,是高效生成可用界面、对接GUI框架的关键。本文汇总了适配Nano Banana工具的谷歌风格智能手表UI提示…...
从‘生日悖论’到‘碰撞攻击’:一个故事讲明白哈希函数为什么会被攻破
从生日派对到数字指纹:哈希函数的安全冒险之旅 想象一下,你正在参加一个23人的小型生日派对。服务员突然打赌说:"这里至少有两个人同一天生日。"你环顾四周觉得概率渺茫——毕竟一年有365天呢。但惊人的是,这个赌注的胜…...
家里装了 OpenClaw,在公司也能随时管理——Shield CLI 远程访问方案
家里装了 OpenClaw,在公司也能随时管理 OpenClaw 火到不用介绍了——GitHub 25 万 Star,一个能真正帮你干活的 AI Agent。很多人装在家里的 Windows 电脑上,配好了 API Key 和各种插件,用着很爽。但一到公司或者出门在外ÿ…...
WPS宏工具实战:5分钟搞定批量图片尺寸调整(JSA/VBA双版本代码)
WPS宏工具实战:5分钟搞定批量图片尺寸调整(JSA/VBA双版本代码) 在文档处理中,批量调整图片尺寸是个高频需求。想象一下,你手头有份50页的产品手册,每页都嵌入了不同尺寸的图片,而客户要求所有图…...
sklearn分类指标实战:如何用precision_recall_curve优化你的模型效果
sklearn分类指标实战:如何用precision_recall_curve优化模型效果 在机器学习项目中,分类模型的评估往往比训练过程更考验数据科学家的专业素养。当你的模型在测试集上达到95%的准确率时,是否就意味着可以高枕无忧?现实情况往往复杂…...
别再只调包了!手把手拆解OpenCV车位识别核心代码:像素统计、背景建模与形态学处理
从像素到决策:OpenCV车位识别核心技术实战解析 停车场监控画面中那些看似简单的"空"或"满"状态判定,背后隐藏着一系列精妙的图像处理魔法。今天,我们将抛开现成的API,直接解剖计算机视觉在车位检测中的核心算…...
别再只用M法了!手把手教你用Arduino和旋转编码器实现M/T法测速(附代码)
别再只用M法了!手把手教你用Arduino和旋转编码器实现M/T法测速(附代码) 在电机控制项目中,精确的速度测量往往是实现闭环控制的第一步。许多初学者会直接采用简单的M法(频率测量法),但在实际测试…...
ConcurrentHashMap讲解
在 Java 并发编程中,ConcurrentHashMap 是高频使用的线程安全 Map 实现,也是面试中几乎必问的核心知识点。它完美解决了 HashMap 线程不安全、Hashtable 性能极差的痛点,在高并发场景下实现了安全与性能的平衡。本文将从设计背景、JDK1.7/JDK…...
