pentestbox自动补全的折腾

本文探讨了pentestbox与cmder在自动补全功能上的差异,详细记录了作者如何通过调整clink设置解决pentestbox自动补全问题的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pentesthbox是如此的好用以至于我很久没有打开kali了,但pentestbox的自动补全的缺失真的伤害了我很多(以及我的键盘),令人惊喜的是在偶然看到一篇介绍cmder的强大功能的文章后,我发现cmder是支持自动补全功能的,那么在cmder基础上开发出来的pentestbox没道理不行,所以我开始了我的折腾(以下都是我的脑抽折腾行为,不和我一样闲的直接看文末的结论就可以了🙃)

首先我下了一个cmder,不大,也就60m,但github显然能让人下一天,所以我采用了一点特殊手段(去gitee下,几分钟就下下来了),它确实支持对命令别名的自动补全,通过阅读cmder的介绍,知道了它的自动补全是通过clink软件实现的,而别名(cmd的)是通过doskey命令实现的
在这里插入图片描述
在这里插入图片描述
查看pentestbox\config\init.bat(也就是它的初始化脚本),可以看到它也是通过clinkdoskey实现的,但它只能补全路径…
在这里插入图片描述
在这里插入图片描述
首先怀疑是不是pentestbox的别名没有初始化成功(因为pentestbox不能执行alias命令),但是通过在pentestbox里运行doskey /macros可以看到所有的别名都出来了,并且发现aliase命令是cmder写的一个脚本而pentestbox没有

然后怀疑是不是clink的设置不对,pentestboxclink设置文件为\config\setting,于是将cmdersetting文件复制了过去,但还是不行

接着去看了看clink的文档,发现它使用了linuxReadline库实现对一行输入的操作,让人惊喜的是,它支持vi-mode,只需ctrl+alt+j就可以进入,然后就可以按esc进入vi的命令模式了,而平常不按ctrl+alt+j进入vi-mode的话,就是按esc清空一行,当然这是可以在setting里设置的.而clink更多的快捷键要看话可以在终端输入alt+h,当然有些似乎需要在pentestbox设置里调(因为冲突了)
在这里插入图片描述
唉,我更爱它了怎么办>﹏<

接着在\base\clink发现了clink.html,这是clink的帮助文件,大概了解了clink的扩展lua脚本要如何写,然后发现pentestboxinit.bat里的clink启动选项--scripts使用的是clink自带的clink.lua(默认的,直接没写),--profile执行的两个文件git.luaprompt.lua只是为了好看的界面,一个简单的替换,去掉会变成这样
在这里插入图片描述
其实看久了就习惯了😁,甚至还有那么点酷
cmder则是明确使用了它的\vendor目录下的一个clink.lua(叫这个名字应该是clink的规定),查看这个文件,发现它执行了clink目录的clink.lua后继续加了一些过滤条件,然后执行clink-completion的和可能存在的用户自定义的lua脚本,然而没有什么发现,甚至将这个脚本复制过去,改了pentestboxclink--scripts选项后也没什么改变
本来对clink自带的clink.lua没带什么期望的,但惊喜的发现了一个有趣的地方
在这里插入图片描述
可以看出来,clink自带了对命令别名的补全,查看clink.html发现这是一个clink提供的API
在这里插入图片描述
查看clink的源码发现一个地方怀疑就是这个API的实现
clink_code\clink\lua\src\os_api.cpp
在这里插入图片描述
可以看到大概是通过一个GetConsoleAliase()的系统api,这应该是不会出错的
为了进一步分析,在pentestboxclink.lua加了几行代码用于输出aliases表内变量的值
在这里插入图片描述
然后…emmm…pentestbox啥也没有出来,然而在cmder进行同样的改动可以看到,一旦按下tab,就会输出所有的别名
在这里插入图片描述
这就太奇怪了,pentestboxclink看来没有从终端得到别名的值,难道是pentestbox设置了不许读???o( ̄┰ ̄*)ゞ

本来都要放弃了,但看到了以为大佬的博客知乎说是可以通过安装clink进行别名的补全(虽然pentestbox本来就安装了clink的,只是通过注入的),看来并不是无路可走,所以猜测应该是clink设置出了问题

静下心认真分析了pentestbox的启动流程,pentestbox.batpentestbox.exe都可以启动终端,估计pentestbox.exe应该是bat转exe转来的,而pentestbox里面主要是启动了\vendor\conemu-maximus5\ConEmu.exe,启动选项设置了图标,标题和加载了一个%pentestbox_ROOT%\config\ConEmu.xml,然后这个ConEmu.xml有一个初始任务,就会去执行之前提到的init.bat
在这里插入图片描述
(这里有个奇怪的问题,\base目录也有个conemu-maximus5里面有终端模拟器和\vendor一样的,估计是作者对cmder改动的时候,将\vendor里的conemu-maximus5移到\base后忘了改了(因为cmder确实是将这个程序放在了\vendor目录下,以及很多的配置的文件,而配置文件被移动了,\vendor里只剩一个conemu-maxmus5了就显得很奇怪了),因此,可以在pentestbox.bat里将vendor该为base,可以看到正常运行,然后你甚至可以删掉\vendor文件夹,而从这个新的pentestbox.bat转来的pentestbox.exe我放在了文末的稽密图片中,可以使用binwalk或是foremost(或是dd手动)提取)

然后在一次偶然的尝试中修改了clink的设置(%pentestbox_ROOT%\config\setting)竟然就成功了,通过将exec_match_style(默认是-1)改为非负数后就可以匹配了
在这里插入图片描述
之前使用移动过来的cmder的setting文件仍然不行大概是我之前修改了init.bat出现的问题吧…心累
不过还是明白了很多东西吧/_
上面说的稽密图片:

稽密图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值