Skip to main content

share

  1. 精华内容:难道说,GFW 通过参考了一篇 GFW Report 研究分析 GFW 识别 FET 的手段和行为的 paper、才实现了识别 FET 的功能、在代码实现过程中还 参考/借鉴/移植 了 AperNet 团队参考 GFW Report 那篇论文 实现并 开源在 GitHub 上的 OpenGFW 代码?


    发一个暴论,考虑到比较暴论,所以就只丢我的 TG 频道和 Mastodon 上好了。

    这次积至泄漏的疑似 GFW 相关文件 一石激起千层浪,闹得沸沸扬扬,并且可以肯定的是,积至确实开发了一个类似 GFW 的网络审查工具(在下文中,我将其称之为「积至 GFW」),可以按照一定的误伤率支持识别部分 VPN 和隧道协议、并且有主动发现 VPN 的能力(暴论:这个功能一听就像是海外一些国家的定制需求)。

    从积至泄漏的源码中关于 FET(即 Fully Encrypted Traffic,Shadowsocks 流量即是 FET 的一个典型且著名的 example)识别功能的实现代码(CPP-based)、存在一段注释、包含下述两个 URL:

    - GFW Report 为二作的这篇 paper: https://www.usenix.org/conference/usenixsecurity23/presentation/wu-mingshi
    - AperNet 团队( https://apernet.io ,他们也是 Hysteria 和 Hysteria2 协议背后的开发者)的 玩具 IDS/IPS/DPI 项目 OpenGFW 中基于上述 paper 而实现的 FET 识别功能 https://github.com/apernet/OpenGFW/blob/278d731b6f0df6665e00987fa9e8afa99244d5f6/analyzer/tcp/fet.go

    感兴趣的观众可以在积至泄漏文件中找到 /decoders/session_flags/fet.cpp 文件,即可在文件开头看到我所说的包含两个 URL 的代码注释。

    难道说,GFW 通过参考了一篇 GFW Report 研究分析 GFW 识别 FET 的手段和行为的 paper、才实现了识别 FET 的功能、在代码实现过程中还 参考/借鉴/移植 了 AperNet 团队参考 GFW Report 那篇论文 实现并 开源在 GitHub 上的 OpenGFW 代码?

    先有鸡还是先有蛋的问题 听着非常匪夷所思,但是让我们做一个思维实验:如果我们把 2015 年起部署在国际出口和北京根 DNS 镜像上、并历经多年升级迭代至今的 GFW 称作「The True Original GFW(原初 GFW)」;积至根本无法获取到「The True Original GFW」的源码、不得不在开发「积至 GFW」的过程中进行 cleanroom 净室开发,在开发过程中甚至 参考/借鉴/移植 了 AperNet 在 GitHub 上的开源的 OpenGFW 的代码。进一步暴论,积志这套「积至 GFW」和「The True Original GFW」可能 除了都是网络审查工具之外,没有任何其他关系

    我们可以进一步推测:中央控制的网络审查手段可能仍只有「The True Original GFW」一个、且仍只部署在 DNS 和国际出口;地方政府、地方运营商分公司,为了满足各种 KPI(反诈、对异见人士的识别和抓捕、地方网安/网警的行政诉求),向积至和其他厂商招标、定制、采购「GFW 类似物」。这也解释了为什么江苏虽然向积至采购了「积至 GFW」产品,却只用于反诈拦截。

    这个暴论完全可以自圆其说,并且也能够解释为什么「GFW 呈现去中心化和边缘计算的趋势」。「The True Original GFW」本身并没有去中心化,可能也没有在多地大量部署;真相可能是,在「中央集权+地方分权」的政治大背景下,整个网络审查制度自发地、自下而上地 实现了去中心化,「边缘计算」只不过是相应的错觉罢了。

    然而,网络审查制度的去中心化,只会 让 审查对抗手段 面临更多挑战
  2. https://blog.thirdweb.com/vulnerability-report/

    ERC-2771 把calldata最后20字节当作_msgSender() 当msg.sender是可信的时,组合上合约自带的multicall(delegatecall给自己)就能出问题
    攻击者让可信的forwader发起multicall,这时候只有multicall函数读取的_msgSender()是真的,进入delegatecall里面执行的_msgSender()就是攻击者自己构建的calldata 可以伪造成高权限地址

    修复方案就是multicall函数需要重写来带上真正的sender:
    
    function multicall(bytes[] calldata data) external returns (bytes[] memory results) {
        results = new bytes[](data.length);
        address sender = _msgSender();
        bool isForwarder = msg.sender != sender;
        for (uint256 i = 0; i < data.length; i++) {
            if (isForwarder) {
                results[i] = Address.functionDelegateCall(address(this), abi.encodePacked(data[i], sender));
            } else {
                results[i] = Address.functionDelegateCall(address(this), data[i]);
            }
        }
        return results;
    }
    Security Vulnerability Incident Report 12/8
  3. 怎样让老板给你涨工资

    展现你的优势:谈加薪的时候 不是从自己的需要出发 而是解释为什么你值这么多 列出你给公司带来的好处和独特的优势,写下你的长处,提前和老板约好谈话时间,缺乏经验就先自己对着镜子练习 不要犹豫 而是展现你的优势

    关注你的义务 而不是权利: “不要问你的国家能为你做什么,而要问你能为你的国家做什么”

    如果你得到8小时的薪水,不妨工作10小时:业精于勤而荒于嬉

    只争朝夕 把平凡的事物转化成紧急事务 把工作当成一种竞赛 用速度让别人吃惊 不要怕犯错 “我怎样才能有卓越的表现?”

    勿以事小而不为:该做的事情一定要做好 任何事情都全力以赴 想象一个亿万富翁正在盯着你做的每一件事情,追求卓越而不是完美

    使自己不可替代:主动请缨 承担起项目的管理责任 “我就是公司” ,同时下放权力 不要事必躬亲 使自己超脱于事务性工作之外

    学海无涯 :毕业不等于学习的结束,10年不看电视 每天2小时看专业书籍

    越是困难越向前:想多挣钱就不能回避问题

    让自己成为专家:只是做别人都在做的事情就不会有特别的收获,“为了在3年内成为所在领域的专家,你都做了哪些工作?” 成为专家并不难因为专家是外行封的

    不变则不通:想改善客观条件 必须首先完善自我,准备一页广告 描述你的特长和能提供的服务 从客户角度考虑自己的长处


    能力:为了提高专业能力和个人能力 在72小时内你能具体做些什么?
    精力:为了有更多精力,你可以采取哪些具体的步骤?
    影响力:为了更加有名,你能做些什么?
    自我评价:为了提升你的自我评价和更好地自我推销,你能做些什么?
    创意:为了使你的创意工厂全速运转,你能做些什么?


    挣钱不能使你富有,能存下的钱才能
  4. ubuntu上安装duplicati:
    1. https://www.duplicati.com/download 找到Debian/Ubuntu的下载链接 wget后dpkg -i duplicati-*.deb
    2. apt install -f
    3. systemctl start duplicati; systemctl enable duplicati
    4. 修改自己.ssh/config加上8200的端口转发 例如LocalForward 38200 127.0.0.1:8200
    5. systemctl --no-pager --full status duplicati 获取登陆链接 Duplicati
  5. 成功搞定zfs上运行mysql/mariadb容器如何使用duplicati备份: bash脚本使用coproc来启动mysql子进程,先FLUSH TABLES WITH READ LOCK锁住整个数据库,再执行zfs snapshot,完成后就能释放unlock tables ;整个脚本作为duplicati配置的run-script-before,不想保留快照可以再配置run-script-after删掉创建的快照

    Claude给的bash脚本:

    
    #!/bin/bash
    
    # 配置
    ZFS_DATASET="pool/mysql/data"
    SNAPSHOT_NAME="duplicati_backup"
    MYSQL_SOCKET="/var/run/mysqld/mysqld.sock"  # 或使用TCP连接
    
    # 清理函数
    cleanup() {
        if [ -n "$COPROC_PID" ]; then
            echo "UNLOCK TABLES;" >&${COPROC[1]}
            echo "QUIT;" >&${COPROC[1]}
            wait $COPROC_PID 2>/dev/null
        fi
    }
    trap cleanup EXIT
    
    # 删除旧快照
    if zfs list -t snapshot "${ZFS_DATASET}@${SNAPSHOT_NAME}" &>/dev/null; then
        zfs destroy "${ZFS_DATASET}@${SNAPSHOT_NAME}" || exit 1
    fi
    
    # 启动MySQL协进程
    coproc mysql --unbuffered -u root
    
    # 发送锁命令
    echo "FLUSH TABLES WITH READ LOCK;" >&${COPROC[1]}
    echo "SELECT 'LOCKED';" >&${COPROC[1]}
    
    # 等待锁确认
    while IFS= read -r line <&${COPROC[0]}; do
        if [[ "$line" == "LOCKED" ]]; then
            break
        fi
    done
    
    # 创建快照
    if ! zfs snapshot "${ZFS_DATASET}@${SNAPSHOT_NAME}"; then
        echo "快照创建失败" >&2
        exit 1
    fi
    
    # 释放锁
    echo "UNLOCK TABLES;" >&${COPROC[1]}
    echo "QUIT;" >&${COPROC[1]}
    
    wait $COPROC_PID
    echo "备份完成"
  6. 最后发现卖飞才是和所有币最好的关系。想靠一个币吃到退圈是对自己的不自信,能找到第一个也能找到下一个,除了比特币可以格局,其他都仅仅是次高卖低买的行为而已。卖飞不会输,也永远会有下一次机会,但不走就会输,长期来看一定输。
  7. 无论是什么投资,都请仔细地评估风险,认真算好投入产出比。特别值得注意的是:如果你有100万~200万元,又想投资“自己的好想法”,需要谨慎,要做好充分的调研和考察。因为中国有上下五千年历史,14亿人口,大多数时候你的好想法、好点子,你发现的新商机,早就已经有人想到过了,至于为什么市场上还是空白的,那你就要去看看,到底是没有人在做,还是说,做过的人都已经失败了。
  8. 买房考虑7个要素:功能/刚需,大小,价格,交通,配套,新旧,再售出

    买房要趁早,准备要提前,计划要周全。
  9. 一直都有一种收藏型仓鼠症,具体表现是很喜欢在各种平台点收藏。
    但收藏只需要花一秒点一下,使用就需要漫长的时间了,所以收藏夹在不断膨胀。
    比较经典就是网盘存了10TB专业学习资料,B站收藏了1000个学习视频。

    从个人经历来看这种仓鼠症的原因主要还是当时的审美/眼光问题。
    就像刚入坑游戏的时候,游戏推荐里什么游戏都觉得值得一玩,愿望单长到翻不完尽头。
    但是玩愿望单的百分之一后,新鲜感丧失加上有了自己的判断之后,都变得挑剔了,都想把乱加的愿望单清空了。

    毕竟囤积的前提也得是自己觉得有价值,才有囤积的快感。如果觉得没价值了,就变成想要清理垃圾的强迫症了。
    但是下次入坑别的东西又会再来一次,变成一种循环。
    入坑->囤积资源->使用资源->要求变高->嫌弃自己之前囤积的->入坑新的
  10. 钱生钱:“生”讲的是模式和方法,而生字的左边有一个“钱”,代表的是现金流,右边也有一个“钱”,代表的是投资的回报,三个字缺了一个,就不能成立。请记住,千万不要因为有了右边,就忘记了左边。你可以不上班,但不能不工作。有的同学甚至会想,有了被动收入,我就可以“躺赚”了,我就可以彻底成为废人了,抱有这样想法的人,往往难以进入钱生钱的大门。切记,钱生钱的目的,是让我们赚钱更有效率、更加稳健,同时让我们能够“自主地做更多的选择”,而不是让我们更被动和变得更懒。