从$scihub到自由网络意志
2024年11月16日到20号,不太平静的MEME圈中发生了一件有趣的事情。简单来说,一个北大出身的大V(0xAA_Science)发现了一个已经被原始开发者脱手的meme: scihub,并意识到了这是一个好机会,或许是帮助DeSci(去中心化学术)的好机会,亦或是赚钱的好机会,当然,更有可能的是二者兼有,总之,他购入了20%的scihub代币,并联系Scihub的创始人 Alexandra Elbakyan 计划分批次将代币捐赠。 一开始,Alexandra 的态度是合理的质疑,一方面,分批次的捐助很难不让人起疑心; 另一方面,对于不怎么关注币圈的她来说,将代币冠以scihub的名字在市场上流通,很难不让人觉得这是一种亵渎,尤其是以知识平权为目标的scihub。 而对于常年混迹web3的投资客们,这种行为也无异于巧妙的营销: DeSci的理念和背靠的扎实项目,让$scihub的叙事成为了乱七八糟的meme众生中的一股清流,而且通过捐助行为,让这个原本无人问津的代币与scihub的联系从仅仅同名上升到了利益相关。在今天的代币海洋,哪怕多几个人喊喊口号炒作炒作故事和概念都可以让代币一飞冲天,更别提如果背靠扎实而具体并且运营多年的项目了。 好了,关于币圈的内容先暂停,现在谈谈所谓的DeSci概念的源头: 网络自由意志主义。 与其他平权运动相同,知识平权也起源于自由意志主义,在互联网黑客中,这体现为网络自由意志主义,其重点在于,减少政府管制审查或其他干涉互联网"自由"的行为。在当时,新兴的互联网通讯技术令政府处于认知混乱的状态,在执法过程中出现了不少侵犯个人自由的案例。 在此背景下,约翰·吉尔摩等人于1970年成立了电子前线基金会 (Electronic Frontier Foundation),其主要使命是: 帮助公众了解更多有关计算机和通信领域发展带来的机遇与挑战 促使政策制定者对那些构成通信的自由和开放的基本问题有更好的了解 提高公众对随新计算机通信媒介迅速发展而产生的公民自由问题的认识 为那些受到毫无根据或误导的法律威胁的新技术和个人进行辩护 鼓励和支持新技术的开发,帮助非技术用户可不受任何影响且方便地接触到新通信技术 电子前线基金会为推进当时的互联网自由发挥过不少作用,但更重要的是,它为当时为数不多但在日后具备更多互联网话语权的技术极客们或多或少地传递了自己的理念, 这其中就包括Reddit的联合创始人,同时也是RSS格式和Markdown格式的开发者,“互联网之子” Aaron Hillel Swartz。 受EFF的影响,Aaron在年少的时候就积极参与网络自由相关的事业:14岁参与开发RSS1.0版本,帮助创办了先进社会变革活动委员会,成功制止《禁止网络盗版法案》的颁布等等。 2008年时,Aaron 做出了一个轰动一时的举动:从政府的收费数据库系统中下载了大约270万份联邦法院的文件并让网络大众免费访问。不过按照法律,政府文件不受版权法保护,这些文件原本就是应该公开的,因此即便受到了FBI的调查,Aaron也没有被控告。“幸运” 的他继续在英文维基百科中进行着从2003年以来的编辑活动,在美国政治机构、政府官员等主题上添加了许多条目。 直到他自杀的那一天。 2011年1月6日晚,斯沃茨在哈佛大学校园附近被警察和特工逮捕, 他们发现 Aaron 通过MIT的校园网下载了大量的期刊文章,因此以非法从受保护的计算机中获取信息的罪名检控 Aaron。 而在联邦检察官的介入下,Aaron 新增了九项重罪,面临最高50年的监禁和100万罚款! 在压力下,Aaron选择了上吊。 Aaron的死亡无疑代表了当时美国司法系统中的过分检控和恐吓,更重要的是,他成为了一个符号,一个殉道者,他的死亡激起了全社会各界的广泛关注。人们在白宫网站上要求罢免为Aaron新增罪名的检察官,艺术界用各种涂鸦和壁画纪念他,黑客们攻入了MIT和政府的网站,将页面替换为了对Aaron的纪念和哀悼。 Aaron的死所带来的最深远影响,便是刺激了越来越多的人和组织参与到了开放获取和知识平权中的运动上来,以至于Journal of Library Administration 的一位编委会成员写道,在Aaron死后,“在非开放获取刊物上发表要受到良知的谴责”。可以说Scihub就是这股运动的继承者。 与其他鼓吹scihub的言论相比,我并不是很看重它在免费获取论文上的效果,就个人的有限体验而言,我查询的文献中依旧有很大一部分是scihub没有收录的,而研究生期间,通过学校的校园网就可以下载到那些需要付费订阅的论文,也没有使用scihub的刚需,不过它的存在和发展依旧是值得被认可和支持的,不仅仅是为了它为了那些没有条件的科研人员做出的虽然有限但切实存在的平权努力,更是为了那份传承了三十余年的精神图腾,它让人们在陈腐的商业世界中,依旧能够看到理想主义和早期互联网自由精神的余辉。 当然,Alexandra 依旧面临着严峻的知识封锁和法律风险,以及更现实的经济问题。尽管有不少志愿者试图传播和帮助Scihub,但范围有限,效果甚微, 部分原因在于,互联网的新生一代正逐渐掌握话语权,而他们生活在一个被前辈"修正"过了的网络世界, 没有经历过矛盾的冲突和历史性的运动,缺乏对网络自由意志主义的认知和体会,最多便是称道一声Respect。 好比只有当你是上世纪三四十年代的中国农民时,才能真正体会到今天政治书里的陈词滥调在当年确实是救国图存的存在。 社会的健忘不仅为知识平权带来了困难,也让其他曾经被"修复"过的那些问题重新浮现,甚至变得更加高明和棘手,因为政府和商业公司已经学会温水煮青蛙的模式慢慢侵犯用户,而时间和健忘是他们的盟友。试问有谁记得谷歌曾经在自己的行为准则开头中承诺过"Don’t be evil"呢? 大部分的人仅仅关心自己的需求能不能满足,至于那"小小"的隐私侵犯? 或许让人不快,但那又如何? 可以说,互联网的历史,就是人们用隐私和自由换取便利的历史,即便这种交易有时候并不等价。 回到web3,这是一个黑暗森林,也是一个充满了机会的地方。除了为Scihub的推广带来了便利之外,去中心化技术的本质核心,也就是加密技术,同样是当年网络自由意志主义的产物,其背后的一些故事也同样颇具传奇色彩。 1991年,菲尔·齐默曼为了让所有人可以安全访问BBS和存储信息,开发了用于通讯加密的应用程序PGP(Pretty Good Privacy)并发布在互联网上供人免费使用。而在当时的美国,使用大于40位密钥的加密系统被视为军需品。PGP的密钥长度远远超出了这一限制,因此政府以"没有授权的军需品出口"为名对他发起调查,但齐默曼使用了一个天才般的想法去对抗规定: 他将PGP的源代码出版为一本书。 与军需品出口不同,书本出口和传播符合美国宪法第一修正案中的言论自由部分,因而受到保护,法院因此判定齐默曼无罪。这个案件深刻影响了后来类似案件的司法裁定,而PGP依旧继续发挥着隐私保护的强大作用,它的后辈GPG (GnuPG) 帮助 Edward Joseph Snowden 在逃亡期间联系新闻界,一举揭发了2013年引爆全球的美国棱镜计划。 ...
《在世界尽头的咖啡馆》读书笔记
小说的主人公在偶遇一间奇妙的咖啡馆后, 通过店员们的引导开始思考起了人生的意义和价值, 并最终得到了启发. 这里记录书中几个有意思的片段. 有意义的三个问题: 你为什么来这里 你害怕死亡吗 你满足吗 提出问题, 人的心灵才会去追寻答案 每一天都是一个实现人生意义的机会,可以做我想做的事。不需要等到‘退休’ 我们每天都暴露在大量营销信息中,如果不谨慎点儿,我们肯定会把自己的幸福和满足寄托在某样产品或服务上。最后,我们会陷入一种财务困境,必须不断去做事情去挣钱,尽管那些事情不是我们真正想做的。而这会造成恶性循环 转变心态的重点在于,你要清楚,某样东西是否能让你的生活更圆满,由你自己说了算,和别人告诉你它圆不圆满无关。 想想, 如果我不需要‘逃离’或 ‘减压’,那我还会想买那些东西吗?如果我一直在做我想做的事,那么我应该没什么可‘逃离’的,也没那么多压力需要释放, 那么我真的需要通过工作去赚那么多钱吗? 沉浸在爱好中的大多数人根本就不太关心自己运气好不好。他们只知道,当自己为实现存在意义而努力时,幸运的巧合就会自然出现,他们管这个叫顺其自然。 有很多人为了钱或权力,说服其他人去相信,他们的产品或服务是实现人生圆满的关键。想象一下,如果大家都意识到,我们的满足感其实掌握在自己手中,那前面那种人就会受到巨大的威胁。说服他人的那些人将失去他们的力量。对于这类人,失去对他人的影响力可不是什么好事情。 只有你真正了解自己存在的意义。永远不要因为其他人或事失去对自己命运的掌控。要积极地选择自己的人生道路,不然就只能被动接受安排。 如何寻找人生意义和热爱的事物: 人生意义的答案,全世界只有我们自己可以决定。所以很多人都在追寻答案的过程中选择独处。要是你整天被资讯和信息轰炸,就很难集中精力思考问题。 多去接触不同的新鲜事物。有人发现,一旦他们有新体验或者接触到新理念,有些体验或理念就会让他们产生共鸣。遇到他们热爱的事物时,很多人都有生理反应,比如汗毛倒竖、脊梁骨仿佛触电、喜极而泣等等。还有人会产生一种‘就是它’的感觉。这些都是找出自己存在意义的线索。
终端工具集(2024)
声明: 此项目与那些声称要取代vscode等GUI工具的配置不同, 而是力图填补这些大型开发工具在终端环境下的空白 项目地址: https://github.com/ch3n9w/dev, 后续README更新不会同步到这篇博客, 但是大体上秉承的思想不会改变: 极简、可用以及最少化心智负担 Development Toolkit 📡 A comprehensive and user-friendly development toolkit to boost up your productivity 🚀. terminal emulator: kitty shell: zsh editor: neovim terminal filemanager: lf multiplexers: tmux or kitty Try docker run -it --rm --name dev ch4xer/dev:latest /bin/zsh Install git clone https://github.com/ch3n9w/dev cd dev # install dependency software and install configuration ./scripts/install-software.sh Alternatively (if you dont want to install all of them), you can copy the configuration directory you like to XDG_CONFIG_HOME (commonly ~/.config), for example: ...
《如何阅读一本书》读书笔记
这本书主要介绍了在进行以提升理解力为目的的阅读时所应该掌握的技巧, 这些技巧可以帮助提升阅读的效率, 节约时间的同时抓住重点. 注意, 这些技巧并不会让阅读变得更轻松, 相反, 读者消耗的精力可能会更多, 因为这些技巧要求读者更多地发挥其主动性, 然而, 这些技巧能够帮助读者更好地提升自己的理解力和知识吸收的速度, 并且有针对性地运用有限的精力. 本书并不谈论以消遣为目的的阅读活动, 也不会谈论单纯以获取资讯为目的的阅读活动, 尽管在提升理解力后, 获取资讯会更加迅速. 四个层次的阅读 阅读的四个层次, 这几个层次是相互包含, 层层递进的: 基础阅读: 熟悉理解并掌握词语和句子的意思 检视阅读: 在规定时间内从宏观层面上理解书中的重点, 从而判断值不值得读 系统性略读 阅读书名 序言 目录 从目录中挑几个与主题相关的篇章, 仔细阅读开头和结尾处的摘要说明 随便翻翻全书, 随时寻找主要论点, 不要忽略最后的两三页 粗浅阅读 从头到尾先读完一遍, 碰到不懂的地方不要停下来查询或思考, 只注意你能理解的地方, 不要为了一些没能立刻理解的地方而停顿, 这样就不会拘泥于局部 克服在🧠大脑中念出声的阅读方式, 头脑和眼睛不一样, 并不需要一次只"读"一个字或者句子 => 利用手指在书页上的移动来引导眼睛和大脑 分析阅读: 全盘完整的阅读 (不完全适用于小说和诗集) 阶段一 为书籍分类(小说?爱情小说?论说类?经济学?历史?哲学?) => 什么类型的房子 用几句话叙述整本书的内容 => 房子的整体功能(整体性) 将重要篇章列举出来, 说明它们如何形成了整体 => 砖瓦的功能和联系(复杂性) 阶段二 找出关键字, 确认每个字不同意义之间的转换, 与作者找出共通的语义 重新架构作者论述的前因后果 确定作者解决了什么问题, 还有哪些问题没有解决 阶段三: 对书本下评论 主题阅读: 面对一本书时去阅读许多同类型的其他书籍, 并相互对比 针对主题设计实验性书目, 找出并确定相关的书籍 阅读这些书籍的相关章节 建立中立的主旨和词汇, 列出一连串相关的问题 界定每个作者研究的主要和次要议题 分析这些讨论。这得把问题和议题按顺序排列,以求突显主题 所谓阅读速度, 不只是要能读得快, 还要能用不同的速度来阅读, 要知道什么时候用什么速度是恰当的. ...
《高效原力》读书笔记
这本书主要讨论了如何在工作过程中保持愉悦的心态, 进而提升工作效率, 保护精神健康. 作者认为愉悦心态可以帮助克服焦虑和过度的压力, 成功不会让你感觉愉悦, 但是感觉愉悦会为你带来成功. 本书内容分为三个部分: 激励(让工作更有兴致) 解锁(消除面对工作时的负面情绪) 续航(通过良好的习惯克服倦怠感) 激励 游戏化思维 有趣的游戏化体验会带来愉悦 选择一个游戏性格, 找出最能与你产生共鸣的游戏状态, 并有意识的把自己当作这个角色来对待工作, 代入一场冒险 收藏家:喜欢收集和整理物品,喜欢寻找珍稀植物、拍卖档案馆或车库中的珍宝等活动。 竞争者:喜欢游戏和体育赛事,以全力以赴和获胜为乐。 探索者:喜欢徒步旅行、公路旅行和其他探索活动,喜欢行走和发现新的地方和从未见过的事物。 创造者:在创造中找到快乐,每天可以花几个小时涂鸭、绘画、制作音乐、园艺等。 讲故事的人:想象力丰富,能用自己的想象力取悦他人。他们喜欢写作、舞蹈、戏剧和角色扮演。 小丑:努力逗人发笑,可能会通过倒立、即兴表演或恶作剧逗你发笑。 导演:喜欢策划、组织和领导他人,能胜任各种角色和活动,从导演舞台剧到管理公司,再到参与政治或社会运动。 动觉型: 在杂技、体操和自由跑等体育活动中找到乐趣。 善于运用好奇的力量, 当被问到让人好奇的问题的时候, 大脑会开始分泌多巴胺, 更让人专注 工作时候多问问自己问题 每天除了日常任务之外给自己增加一个让人好奇的支线任务: 探索新的软件 学习新的编程语言 学习新的模型, 给玩心创造空间 多问问自己, 怎么样能让这个任务变得更加有趣? 要更加专注于任务过程带来的乐趣, 而不是结果. 压力会降低游戏的能力, 也会降低生产力, 这意味着为了激发玩心, 我们不只需要追求冒险和寻找乐趣, 还需要努力创造一个低风险能让人放松的环境 学习黑暗之魂的思路去看待失败, 将失败看作是冒险中不可分割的一部分, 是尝试新事物的实验, 是成功路上的必经之路, 是隐形的进步 多提醒提醒自己, 不要过于严肃, 而是真诚以对 好比玩一场大富翁游戏, 无所谓的心态自然无法玩好, 过于严肃对得失斤斤计较则无论过程是否顺利都体会不到乐趣, 只有真诚对待游戏, 全心投入每一个过程却又不计较得失, 才能开怀大笑. (很重要) 自我赋权 自信心会给工作过程带来快乐, 让人表现更好 对于人类的表现和福祉而言, 重要的不只是我们的能力, 而使我们对自身能力的感受 自信并非与生俱来, 而使透过学习获得 你说的话往往会成为你相信的真理, 当你听到"你能办到", “就快成功了"等微小鼓励, 就足以对自信水平发生影响, 更重要的是, 自己可以向自己传达正面讯息. ...
特殊网络环境下的微信代理
目前单位实施了微信封锁,本文旨在记录绕过封锁的过程. 阶段一: 抓域名 使用了tcpdump抓取各个dns请求, 来获取需要代理的域名列表 sudo tcpdump -i any -n -s 0 port 53 但是抓到域名后加入daed的代理列表中还是无法登陆,怀疑是没抓全. 阶段二: 进程代理 既然抓不全, 那么就对整个微信的进程进行流量代理吧, 在daed中添加规则: pname(WeChatAppEx) -> proxy pname(wechat) -> proxy 这下登陆和发文字消息都正常了, 但是图片的发送和接收有极其严重的延迟, 应该是走了代理导致的. 阶段三: 仅代理登陆相关域名 经过几次实验, 发送单位对微信的封禁主要有两方面: 登陆相关的流量封禁 微信公众号图片相关的流量封禁 那么在搜索到相关域名列表之后,将对应的域名添加到daed规则中,其他的流量不作处理使用直连. domain(keyword:login.weixin,keyword:open.weixin,keyword:mp.weixin,keyword:qpic) -> proxy 重新加载规则, 一切正常.
卡牌迷思:从万智牌的衰退开始
这几天被万智牌所吸引, 富有史诗感的画风, 复杂但不混乱的规则, 简洁的卡面语言, 丰富的卡片种类, 多样性的玩法……这些都是我在游戏王中所接触不到但怀念许久的, 在接触万智牌之前,这种怀念源自于过去的炉石传说,而在了解到万智牌后才发现,这些特质其实是万智牌所创造而让炉石继承下来的, 再加上略倾向于黑暗史诗的画风, 万智牌在很多维度上都比过去接触过的所有卡牌游戏更戳我的xp. 当然, 它并不是没有缺点的, 虽然主要的几个缺点都不是卡牌本身带来的. 最大的缺点其实在于威世智的运营太垃圾了 缺乏推广, 国内的推广力度相比较宝可梦来说几乎为0, 我目前能看到的最近的一次推广还是在2021年, 找的甚至还是半佛而不是正儿八经的明星 官方对民间赛事的抵制态度让"积极组织->积极阻止"成为大陆万智牌玩家口口相传的黑历史, 失去了民心 取消中文线不仅妨碍的新人入坑, 也让老玩家对买卡的投资价值产生了怀疑, 继而推动这两类人去投资其他发展更有前景的卡牌 万智牌的定价, 四美元十五抽的全球统一定价在三十年的万智牌历史中就没有变过, 可即便在消费水平远胜过去的现在, 这个价格在大部分人, 尤其是圈外玩家看来依旧偏高, 再加上至少60牌的构筑体量和二级市场交易, 让成型万智套牌的价格普遍在500+, 与之形成鲜明对比的, 是宝可梦和游戏王等TCG后辈们更加亲民的价格, 让万智牌显得像是一个跟不上时代的老人. 当然了, 就我个人而言, 万智牌的设计感值得让它的价格比别的卡牌贵, 虽然我不会买 背景故事质量不高. 人类是一个以讲故事起家的物种, 人类社会也是在金钱政治国家宗教等种种抽象故事基础上建立起来的, 可以说没有故事就没有社群. 万智牌不是没有故事, 而是它的故事太过单薄且没有吸引人的地方, 在这个故事遍地走的年代, 随便一本主流的冒险小说都可以拉出来吊打它, 而不够精彩的故事就注定无法吸引注重故事的人 缺乏故事的传播媒介. 客观来说, 游戏王和宝可梦的背景故事放在现在来看同样水平一般, 假如大家的故事形式都只是小说, 我相信万智牌在讲故事这方面或许还有一战之力, 但是游戏王和宝可梦有了动画, 竞争的维度就变得不一样了, 在处理得当的情况下, 视频影像会大幅度提高一个故事情感渲染的上下限, 即便剧情再怎么糟糕, 人们也会因为那么几个印象深刻的画面而记住这个IP, 随着时间的推移, 动画带来的传播效应会呈现滚雪球式的增加: 老玩家会因为获得滤镜加持, 新玩家同样可以轻松因为画面而发生共情. 剩下的涉及卡牌平衡性的缺点, 这也引发了我对众多TCG游戏的思考, 包括游戏整体的生命周期以及TCG游戏的意义. 生命周期 实体苦厄 纵观众多TCG, 万智牌受限于底层费用机制似乎在这方面相对来说做得好一些, 然而问题在于, 作为一个商业产品, 它的第一任务是给公司带来财富, 第二任务才是服务于玩家, 尽管二者在有些时候, 尤其是游戏发展的早期是不冲突的. 从玩家来说, 游戏本体的运营发展存在两个方向, 一是玩法的扩张, 二是强度的迭代, 前者更灵巧更得人心, 后者则由于对已有卡牌的淘汰而常常备受争议. 一般来说, 有经验的卡牌运营商并不着急于强度迭代, 而是优先致力于玩法的扩张, 间或夹杂必要的强度提升, 可惜的是, 近乎固化的底层规则框架决定了玩法的扩张是有边际效应的, 当扩张玩法的边际效应变得越来越低时, 说明TCG的生命周期已经步入了后半段, 然而这与商业产品的第一使命相互冲突, 随之而来的是强度的无限扩张和争议的发生, 在没有新玩法的情况下, 可以预见的是无止境的强度爆炸. 在这点上, 所有商业TCG都面临着同样的问题: 有限的卡牌玩法和无限的公司贪欲与玩家需求引发的主要矛盾. ...
Kubernetes Admission Webhook 部署和调试
Deployment and Debugging of Admission Webhook in Kubernetes cluster Intro Dynamic admission control 允许开发者添加自己的逻辑代码来对提交给API Server的对象进行修改和验证, 是非常强大的功能. 本文将部署一组demo admission webhook, 包括一个validating webhook 和一个 mutating webhook, 并介绍webhook的调试方法. 本文主要使用和参考了从0到1开发K8S_Webhook最佳实践, 并通过查阅官方文档对其中的一些不适应新版本k8s的内容进行了修正. 本文使用的集群环境为Kubernetes v1.25.16, 使用minikube创建. 我所在的机器为Arch Linux. 代码仓库为 admission-webhook-example中的v1部分. 在开始之前, 请确保集群的API Server开启了MutatingAdmissionWebhook和ValidatingAdmissionWebhook (一般默认情况下都开启了). Deployment 创建 service account 创建一个用于webhook的service account kubectl apply -f deployment/rbac.yaml 创建证书 API Server调用Webhook的过程是需要HTTPS通信的(其实集群内的通信几乎都是HTTPS), 因此需要为webhook创建证书来对webhook的service进行域名认证. 原博客使用的webhook-create-signed-cert.sh已经过时, 不再适用于1.25.16版本的集群了, 主要出问题的地方如下: # create server cert/key CSR and send to k8s API cat <<EOF | kubectl create -f - apiVersion: certificates.k8s.io/v1beta1 kind: CertificateSigningRequest metadata: name: ${csrName} spec: groups: - system:authenticated request: $(cat ${tmpdir}/server.csr | base64 | tr -d '\n') usages: - digital signature - key encipherment - server auth EOF 根据文档, 在1.22以及之后版本的kubernetes中, certificates.k8s.io/v1beta1 已经被抛弃不可用, 需要修改为certificates.k8s.io/v1, 并且需要在spec中增加signerName, signer的作用是签署证书. k8s内置的signerName 有以下几种: ...
CVE-2023-26484 Kubevirt 权限提升漏洞复现
该漏洞是论文工作 “Take Over the Whole Cluster: Attacking Kubernetes via Excessive Permissions of Third-party Applications” 挖掘到的, 对其进行复现可以更好地理解rbac的潜在风险. ...
若为自由故, 软件皆可抛
借着"若为自由故"这本书, 读者可以更深刻地理解开源软件与自由软件的异同之处. 由于在实际情况中, 二者都开放了源代码, 大部分情况下也都会采用互相兼容甚至相同的协议, 因此其中的区别在越来越多人眼里逐渐模糊. 如今的软件行业, 大多数人在表达相同意思时更加倾向于使用"Open-source"而不是"Free"这个词, 不仅能够直观清晰地表达信息, 也能避免"Free"这个单词常用的"免费"之意 (为了人们认识到"Free software"中的Free不是免费而是自由的意思, Stallman 可强调了许多次, 但很遗憾, 大部分公司在听到他的强调前就会被吓跑). 但只要了解过自由软件和开源软件的历史, 就能发现其中差距并不在技术而是在道德层面上的分歧. 具体来说, 开源运动更加注重软件开发方式的开放性, 一种类似于集市场景中人人可参与的, 以软件质量为最终目标的倡议, 它关注的是软件本身, 因此颇具工程师的纯粹特性; 相反, 自由软件运动不仅仅注重软件开发方式, 更赋予软件本身以道德属性, 它更强调软件用户的自由修改和自由传播的权利, 以"人的自由"为中心, 任何限制软件用户这些权利的个人和组织都是"邪恶"且需要被抵制的, 这让它更像是一种社会运动. 有一句Stallman的话可以很好地阐释其意: “如果一个软件是不自由的, 哪怕它的技术非常先进, 我也不会去使用它”, 相反, 开源运动的代表人物Linus曾经在一次大会上公开表示自己是Microsoft Powerpoint的粉丝用户, 二者的冲突也由此而来: 在开源主义者眼中, 商业软件是一个不完美的解决方案, 但是在自由软件者眼中, 商业软件则是彻头彻尾的敌人. 两种运动并不是互相独立的, 相反, 开源运动脱胎于自由软件运动, 是后者为了适应软件行业商业发展的一种必然演变, 也是追求自由的理想主义者在现实屡屡碰壁后的一种妥协. 在今天, 尽管Stallman依旧在全球各地对着众多慕名而来的听众布道, 他也依旧能给人以震撼人心开悟明智的感觉, 但这种感觉过后又有谁会真的去追随他的步伐, 去将自己生活中的所有专有软件清除呢? 要知道, Stallman的攻击目标, 可不仅仅是个人计算机中的专有软件, 任何非自由软件, 不管是汽车上的, 飞机上的, 动车上的, 乃至收音机里的, 都是他的抵制对象. 而对于没有资源的普通人来说, 单是找一台彻头彻尾源码可见(指主板上的固件)的笔记本电脑, 就已经是一件非常困难且完全没有性价比的事情了. 从我的角度来看, 虽然很遗憾, 但是自开源运动成长起来后, 自由软件存在的意义就没有以前那么大了, 甚至说的不客气一些, 微乎其微. 这是需要联系历史背景来看的, 在自由软件运动诞生的那个年代, 软件行业极度闭塞, 互联网才刚刚诞生, 各个公司都在自己蒙头闭门造车, 极尽所能保护自家的代码不被公开, 相互之间更不用说有什么兼容合作了. 自由软件的诞生是对那个封闭环境的一种彻头彻尾的反叛, 它以一种偏激的姿态在软件行业逐渐打动了一批人, 也培养起了别具一格更加开放的文化. ...
k8s lan party
Long time no CTF~~ RECON Just check the environment related to K8s using env and reconnoiter internal service using dnscan This blog is good written link Finding Neighbours According to the description, the sidecar container of current pod is sending some information (possibly flag) to remote server. So, the first step is digging the remote server like what we do in the first challenge, which leads me to reporting-service.k8s-lan-party.svc.cluster.local. ...
2023年度总结
一事无成的一年, 但也算有所收获, 如果教训也算收获的话. ...
Learning eBPF
eBPF 是一项革命性的技术, 起源于Linux 内核, 它可以在特权上下文中(如操作系统内核)运行沙盒程序. 它用于安全有效地扩展内核的功能, 而无需通过更改内核源代码或加载内核模块的方式来实现. 从历史上看,由于内核具有监督和控制整个系统的特权,操作系统一直是实现可观测性, 安全性和网络功能的理想场所. 对ebpf慕名许久, 正好趁寒假拜读一下Learning eBPF, 虽然是基于略过时的框架bcc, 但是在这个过程中学到的知识想必依旧可以迁移到别的框架去. Background and pre-knowledge bcc bcc的ebpf c代码不是真正的C, 而是bcc自己定义的一种和C类似的语言. limitation of ebpf program eBPF 程序必须被验证器校验通过后才能执行,且不能包含无法到达的指令; eBPF 程序不能随意调用内核函数,只能调用在 API 中定义的辅助函数; eBPF 程序栈空间最多只有 512 字节,想要更大的存储,就必须要借助映射存储; 在内核 5.2 之前,eBPF 字节码最多只支持 4096 条指令,而 5.2 内核把这个限制提高到了 100 万条; 由于内核的快速变化,在不同版本内核中运行时,需要访问内核数据结构的 eBPF 程序很可能需要调整源码,并重新编译。 tracepoint and kprobe tracepoint其实就是在Linux内核的一些关键函数中埋下的hook点,这样在tracing的时候,我们就可以在这些固定的点上挂载调试的函数,然后查看内核的信息. Tracepoint是在内核中固定的hook点, 并不是在所有的函数中都有tracepoint. 这时候, 我们就需要用到kprobe了. kprobe可以动态地在所有的内核函数(除了inline函数)上挂载probe函数 eBPF virtual machine The ebpf virtual machine uses 10 general-purpose registers (0-9), and additional register 10 which was used as a stack frame pointer (can only be read but not written). As a BPF program is executed, values get stored in these registers to keep track of state. ...
RIP Clash
2023年11初,简中互联网又发生了一出闹剧,不过于以往的过眼云烟所不同的是,这次的事件导致了一系列优秀开源软件的消亡. 起因 事件的经过其实并不复杂.11.2,clash for windows 的作者删除了github上用于发布的仓库中的信息,并在个人telegram频道上宣布不再开发.由于cfw的操作简单,对小白友好,因此其用户数量相当之大.删库的消息出来后,网友们纷纷开始关注作者的社交账号,对是否因信息泄露导致被抓加以猜测.其实对于一个网络代理软件来说,无论是因为被请喝茶还是因为作者不想干了而删库都是一件很正常的事情. 如果事情仅仅到这里就结束,那么大家顶多也就感慨一句过去说烂了的那些话,甚至对于开源主义者来说连感慨都没有,因为cfw本身就是一个闭源软件,而github仅仅是用来发布二进制包的. 但是事情没有那么简单. clash for windows是基于开源的clash core核心代码做的图形化客户端工具,而该核心代码同样是一系列类似软件(例如clash x, clash meta)的基础组件.或许是出于对clash core作者的尊重,这些项目的名称中也都包含了clash字样. 通常情况下,开发者并不会在意自己的软件被普通用户和其他clash相关软件搞混.而对于cfw用户,尤其是其中的小白用户来说,他们中的大部分仅仅接触过cfw,因此在口口相传中会自然而然地将clash这个有特征的词作为clash for windows的指代以节约沟通成本,cfw是clash, clash是cfw. 因此,cfw被删库后,消息通过互联网在用户群体之间开始广泛传播开来,很快就演变为了下面这张图上的消息. 假消息只是第一步.对于大部分cfw的用户来说,他们似乎并不知道此种软件的敏感程度和软件作者所面临的风险,他们只是在盲目地在各大社交媒体上发问,而很遗憾却也意料之中的,这其中,包括了微博. 前面提到,cfw的低门槛为它带来了众多的用户,而现在,这些用户将成为压死所有clash相关项目的稻草.由于提问和吃瓜的人太多,相关话题的热度不断上升,该话题很快出现在了微博的热搜上. 于是事情失控了. 结果 11月3号,出于对自身安全的考虑,几乎所有clash相关软件作者,包括clash内核项目作者,集体将代码库删除.一个持续了数年,帮助到许多网民的软件,却因为网民们的无知,在一天之间内尽数消亡.整个过程实在太快,快得根本不像有关部门的有组织行动.因为驱使项目消亡的,仅仅只是网民们的狂欢,和开源作者们的恐惧. 而可悲的是,在删库时间结束后,clash在微博的话题热度更高了,是的,没有人关心项目作者是否会因为这场风波而被捕入狱,他们只想四处打听,吃瓜,并迫切地希望看到血流成河. 一直到现在, 有关话题在telegram上还在被持续不断的争论中, 其中跳出了一些人来试图通过捏造事实抹黑多位作者来洗脱自身的责任. 可笑的是,当被要求放出对应的项目时,此人开始转移话题,并且在他臆想的情况下,对作者进行了人身攻击. 可悲的是,这种人在这场风波中并不少见,他们不仅仅是无知,更是无耻. 教训 其实单纯责怪用户并没有什么意义,毕竟像cfw这样方便的软件,其用户群体是鱼龙混杂的,要求他们集体提升相关的意识也是不现实的,所以很遗憾,尽管我们可以斥责部分的微博用户,但是归根到底,如何改变此类软件尤其是开源软件的危险现状,作者该做出什么样的改变来更好地保护自己,才是更有现实意义的话题. 具体来说, 对我而言, 除非开源软件合法合规,否则: 不要做windows平台下的软件 不要在项目中包含简体中文说明 不要取朗朗上口好记的项目名 控制推广范围,就是对作者最大的保护 尽管以上措施会限制软件的使用范围,但是对于此类软件来说,开发者的人身安全才是第一位的. 只是,这些教训,对于已经消亡的项目来说,已经太迟了. 参考 https://github.com/net4people/bbs/issues/303 https://www.eaimty.com/2023/opensource-project-based-on-hormone/
2023 记北京秋游
与所爱之人在一起的时光, 会生出互相的珍惜, 这份珍惜犹如风筝线一般, 即便对方远在云端, 依旧可以感知到其心念所动, 于是思念由此而生. 在yq成功上岸家乡的教师编后, 为了庆祝, 也为了缓解许久未见的相思之苦, 我匆忙计划了一下行程, 一边让她订来北京的车票, 一边思考附近哪里有卖香槟的. 颐和园 选择颐和园, 是因为离信工所比较近. 当日原本想带yq去我平时去的早餐店, 可惜我们出发之时, 已是中午十二点了, 于是带她吃之前推荐过的意大利沙县萨莉亚. 这是一个价格非常亲民的意大利西餐厅, 看了看菜单上十几二十元的菜品后, 我们彻底放下了对价格的顾虑, 仅仅考虑口味和胃口. 实际上这家店的口味确实不错, 特别是蘑菇浓汤, 虽然肯定不能说顶级, 但这种不用顾虑价格就享受西餐的轻松感, 独此一份 (说白了还是太穷). 阳光正好, 晒在身上暖洋洋的. 我们在下公交之后, 慢慢悠悠前往颐和园的入口, 路上落叶飞舞, 却无半点萧条, 行人来来往往, 一个婴儿车里的小孩指着另一个在妈妈自行车车筐里的小孩羡慕地哇哇直叫, 惹得两边的家长忍俊不禁. 走走停停之间, 我们时而在路边的亭子里歇脚, 时而在红砖绿瓦的不知名府门前驻足拍照, 心下一片闲适. 进入颐和园后才发现这里出乎意料的大, 但想想这毕竟是皇帝的游玩之地, 倒也算合理. 我们绕过威武的麒麟像, 路过皇帝慈禧临时听政的仁寿宫和一棵棵百年龙柏, 穿过城关, 来到谐趣园. 因为是秋天的缘故, 尽管气温并不让人觉得有秋意, 但是池中的荷花已经尽数枯萎, 风光不再, 宛如那个死去多时的王朝. 沿着回廊行走, 我恼于这行走的空间竟然如此狭窄, 古代的皇帝不与人并肩行走, 其他的人只能尾随, 因此凡是走廊一类的地方都可以设计地窄小一些, 只是我不禁开始无端思考, 长期地处于这样的空间里, 人的心胸眼界是否也会变得狭小呢? 一路上看到了许多格格打扮的女生在凹造型拍照, 纸扇轻摇, 回眸一笑, 气质优雅, 恬静端庄, 只是都没有我的身边人这般可爱. 来到苏州街, 我和yq沿河而行, 小心路过一间间无人的商铺. 昔日皇帝为在此重现江南风情, 仿照水镇在此地建造了买卖街, 专供宫中人游览, 即所谓"宫市". 这个地方1860被列强烧毁, 一百多年后才由共和国重建, 然而我对此类皇室娱乐并不感冒, 只是紧张地一遍遍提醒不停拍照的yq小心别把手机丢进河里. ...
lineageos使用体验
2024年7月更新: 经过了半年的时候, 遇到的问题包括但不限于 1) 微信卡顿 2) 银行类app无法使用 3) system UI经常崩溃 4) 快充消失. 出于可用性考虑, 已经转回coloros 2024年2月更新: Lsposed连同一系列root隐藏模块已经归档无法使用, 为了方便日常使用, 建议卸载magisk, 刷机的时代已经过去了. 不知道从什么时候开始, 往日被冠以高可玩性高自由度的安卓系统逐渐变得封闭, 一步步沦为资本市场的玩物和工具. MIUI也好, ColorOS也罢, 用户总能在使用系统的过程中发现一些去也去不掉的应用和小程序, 看到一些不想看也得看的广告, 而起初, 有些人尽管对此有所不满, 但基本都选择容忍的态度, 但这几年国内的趋势越来越不对劲: 先是某APP在全社会的宣传下或软性或硬性地被安装在了相当大一部分人的手机中监控个人信息(当然, 我理解打击诈骗行为, 保护平民百姓的钱包远比软件自由重要得多), 又是拼多多被爆出利用安卓手机的0day漏洞在所有用户的手机上进行多种恶意行为, 一直到最近, 一则某信部的发文通知将这种 我的手机不归我管 的焦虑感推向了新的高潮. 就目前来看, 这则通知的社会反响并不强烈, 不出意外应该可以顺利推行. 之后最直观的效果就是所有使用国内安卓系统的用户都只能安装指定的app, 不再具备安装推特等软件的能力, 这无异于干掉了安卓最大的特点, 使其沦落为全方位落后于苹果的手机系统. 作为一个经历过安卓app爆发式增长年代的玩家, 我很好奇现在新接触到手机的用户对自己掌中的设备是一个什么样的印象, 是一个拥有无限可能的工具? 还是一个用低质量内容, 广告和充满限制的操作系统来无限吸收注意力, 获取个人隐私并变相管理个人精神世界的资本和政府工具? 万幸的是, 安卓的开源属性为它保留下了一些自由的火种, 那边是第三方rom. 本文主要记录自己安装 lineageos, magisk, Lsposed 以及一些有用软件的过程. 购买机器 查看lineageos支持的设备列表, 出于对一加的偏好和对骁龙888发热的不放心, 我选择以一加8pro作为自己的新设备. 在咸鱼上逛了很久, 筛掉一大批机器贩子和低质量卖家后, 我看中了一位宝妈的二手机并下单. 机器到手后我非常满意, 因为成色实在是很好, 连维修店里给我手机换电池的工程师也赞叹保养得不错, 这1700虽然有点贵, 但还是值得的. ...
动荡时代
乱世之中, 唯有自我与我所爱值得珍惜 ...
我的neovim
现在回头看几年前自己写的插件配置文章, 看着那些曾经用过但后来都纷纷被替代的插件, 我会莫名怀念那段因计算机和终端而兴奋不已的自己. ...
2023 小游京城
难得黄小姐来一次北京, 作为肥宅的自己紧急规划了一下游玩路线, 发现北京可玩的地方相当的多, 这里仅仅记录这次游玩所经过的三个景区. ...
优化neovim markdown中的treesitter高亮
eye candy也是一种生产力! ...