Ethernaut 笔记

简介 最近从 Ethernaut 学习到了很多,抛开那些比较基础的,记录一些 ECDSA 相关的 以下公式中小写字母代表一个值,大写字母代表一个点,除了 N 是曲线的 order 我们知道 ECDSA 依赖于椭圆曲线上的离散对数问题,对于私钥 privkey,公钥 PubKey 是椭圆曲线上的一个点并且有 $\text{PubKey} = \text{privkey} \cdot G$,其中 G 是椭圆曲线的生成元,正是因为椭圆曲线上的离散对数问题,已知 PubKey 和 G 求 privkey 是困难的,才让数字签名得以可能 Sign 签名公式 $$ s = k^{-1} \cdot (h + r \cdot \text{privkey})\mod{N} $$k 是随机数,RFC6979 提供了生成方法,不建议真的随机生成,因为重用会导致私钥泄漏,后续会提到 h 是要被签名的 hash 值 r 是 k * G 这个点的 x 轴坐标 计算出 s 后,和 r 共同构成签名 (r, s),但在签名恢复的过程还会产生歧义,有两种结果,所以还要引入一个 v 来确认是哪一个结果,后续会提到 1import hashlib 2from eth_hash.auto import keccak 3from ecdsa import SECP256k1 4from ecdsa.rfc6979 import generate_k 5 6CURVE = SECP256k1 7N = CURVE.order 8G = CURVE.generator 9 10priv_key = 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 11 12h = keccak(b'hello') 13print(f'hash: 0x{h.hex()}') 14 15h_int = int.from_bytes(h, 'big') 16 17# random k, important 18k = generate_k( 19 order=N, 20 secexp=priv_key, 21 hash_func=hashlib.sha256, 22 data=h, 23) 24 25R = k * G 26r = R.x() % N 27k_inv = pow(k, -1, N) 28 29# s = k^-1 * (h + r * pk) 30s = (k_inv * (h_int + r * priv_key)) % N 31 32print(f'sig : 0x{r.to_bytes(32, 'big').hex()}{s.to_bytes(32, 'big').hex()}') 33print(f'r : 0x{r.to_bytes(32, 'big').hex()}') 34print(f's : 0x{s.to_bytes(32, 'big').hex()}') Recover 签名恢复公式,即从签名 (r, s) 中恢复出公钥 Pub ...

December 1, 2025 · 6 min · 🦉

科技爱好周刊 357 期阅读笔记

已经快全是 AI 相关的内容了 😅 这个倒是不意外,学习就是需要不断练习来建立神经突触的

July 18, 2025 · 1 min · 🦉

proxychains4 在 macOS 上无法正常工作的问题小记

安装了 proxychains-ng 来强制特定程序走代理,发现在 macOS 上有时可以正常工作有时不行 经查询是 macOS SIP 的问题 因为 proxychains4 的工作原理是替换子程序的动态链接库来强制走代理,而 macOS SIP 为了安全考虑会阻止所有内置 executable 被替换动态链接库,以至 proxychains4 对所有内置 executable 无法正常工作,比如 /usr/bin/ 下的所有 解决方法,使用 Homebrew 安装的版本就好,通过 Homebrew 安装的程序就没有 SIP 保护 (实在只能用内置就只好关闭 SIP 了 如果 /usr/bin 和 /opt/homebrew/bin 下都有某个程序,可通过调整 PATH 里 /opt/homebrew/bin 的位置来调整优先级 特例,通过 Homebrew 安装的 curl 在 /opt/homebrew/opt/curl/bin 1export PATH=/opt/homebrew/bin:/usr/bin:$PATH

July 4, 2025 · 1 min · 🦉

又幻想了

差点以为可以小赚一周的生活费 才发现自己已经到了连 switch case 里的 return 都看不见的地步

June 30, 2025 · 1 min · 🦉

科技爱好周刊 354 期阅读笔记

科技爱好周刊 354 期 天才,我居然都没想到过 相比于自己配代理直接拉,没法自动检查更新,还得加个 schedule 来自动拉取 latest 对于大陆服务器上最初部署需要拉一大堆镜像的场景,很适合 这些描述,越来越接近现实 能被 AI 轻松替代的技能已经完全不值得投入时间了 有很多可以思考的

June 28, 2025 · 1 min · 🦉

惊觉自己变成老油条

以前上班的态度都是:有什么问题,I can handle everything 现在:不是我做的,这个找谁谁,None of my business 这个应该算是成熟了,还是算老油条,不是很确定 还是搞自己的事情有意思呀,虽然也好久都没更新,每天的收入渐渐连一杯咖啡都买不上了 写博客不该是为了吐槽的,但是有时候真的就感觉,是被生活给骟了吧,做什么都没有劲 前几天看到朋友讨论,买了移动相机之类的,拍摄记录生活,很好奇他们的这股劲是哪里来的,他们也感叹我竟变得如此颓丧,竟没有些爱好,我也感叹 其实以前的我又喜欢过什么呢,真的有过任何爱好吗,好像啥都不喜欢,单方面坚定为玉玉了

June 23, 2025 · 1 min · 🦉

博客在手机端的应用模式适配

以下场景仅在 iOS 端完成测试 电脑上打开博客当然很友好啦 但是在手机端打开,保存书签到桌面,就有很神奇的体验了 其他书签比如 Grafana, UptimeKuma 之类的,打开都是全屏模式,体验非常丝滑 唯独自己博客的书签,点击后会跳转去 Safari 打开,令人疑惑 简单搜索了一下还是找到了原因以及解决方案 Safari docs 原来可以通过 meta tag 来调整,还好使用的 hugo 主题简单,可以使用 layouts/partials/extend_head.html 覆盖默认来自定义一些 html head ( 居然有一天会查阅 Safari 的文档

June 23, 2025 · 1 min · 🦉

WWDC

果子这新的玻璃效果真是一言难尽啊,控制中心虚化搞得看都看不清了 iPadOS 向 macOS 靠拢确实还不错 希望 Intelligence 早点上吧

June 10, 2025 · 1 min · 🦉

科技爱好周刊 351 期阅读笔记

科技爱好周刊 351 期 惭愧,今天也让 AI 生产了平庸之作 甚至还能模仿我的风格

June 6, 2025 · 1 min · 🦉

使用 GitHub Copilot 提升代码编写效率

本文由 AI 生成 GitHub Copilot 推出了编程助手功能,可以直接在 GitHub Issues 中 assign 给 @copilot,它会自动分析问题并创建 PR 来解决。 注意:使用 GitHub Copilot 编程助手功能需要 Copilot Pro+ 订阅。 主要功能 GitHub Copilot 编程助手能够: 自动分析 GitHub Issues 中描述的问题 理解代码库的结构和上下文 生成完整的代码解决方案 自动创建 Pull Request 并提交修改 使用方法 创建或找到一个 Issue Assign 给 @copilot 等待 Copilot 分析和处理 检查自动创建的 PR 总结 通过 Issue assign 功能,GitHub Copilot 实现了从问题描述到代码实现的自动化流程,提升开发效率。

June 6, 2025 · 1 min · 🦉