V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
songjiaxin2008
V2EX  ›  分享创造

开源一个字体混淆工具

  •  
  •   songjiaxin2008 ·
    solarhell · 2019-12-03 12:15:03 +08:00 · 6041 次点击
    这是一个创建于 1816 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这个项目已经在线上运行一阵子,去掉了一些敏感信息开源出来。

    https://github.com/solarhell/fontObfuscator

    使用了久经考验的fontTools包。

    基础字体使用的是 https://github.com/minjiex/kaigen-gothic

    这个字体覆盖了大部分的 CJK 字符(相比其他的开源中文字体)。

    showcase

    20 条回复    2019-12-05 16:38:56 +08:00
    jprovim
        1
    jprovim  
       2019-12-03 12:26:59 +08:00
    思路新颖
    imn1
        2
    imn1  
       2019-12-03 12:53:41 +08:00
    哇靠,头一次见这样的思路
    liyang5945
        3
    liyang5945  
       2019-12-03 13:00:57 +08:00
    six six six
    est
        4
    est  
       2019-12-03 13:03:41 +08:00
    我记得还有 per-user 动态生成的。
    wangxiaoaer
        5
    wangxiaoaer  
       2019-12-03 13:06:25 +08:00   ❤️ 1
    @imn1 #2 好像点评、电商之类很早就用了。
    wangxiaoaer
        6
    wangxiaoaer  
       2019-12-03 13:07:44 +08:00
    楼主这个工具是不是根据输入的明文生成一个新的字体文件?
    okwork
        7
    okwork  
       2019-12-03 13:08:12 +08:00 via Android
    目前支持那几种字体的混淆啊?
    songjiaxin2008
        8
    songjiaxin2008  
    OP
       2019-12-03 13:13:26 +08:00
    @est #4 您是说每个用户都生成不同的字体吗?这个可以业务接入侧做一下。

    @wangxiaoaer #6 是的 相当于一个字体子集化 把需要混淆的字体 单独打出一个文件。

    @okwork #7 目前支持的比较好的就是这个内嵌的 https://github.com/minjiex/kaigen-gothic 因为我们的场景需要用到一些生僻汉字作为密文。微软雅黑或者别的常见字体可能缺失了这部分生僻字。另外一个就是考虑到某些字体不可以免费商用。
    songjiaxin2008
        9
    songjiaxin2008  
    OP
       2019-12-03 13:14:59 +08:00
    @okwork #7 如果你想要用特定的字体,可以 clone 下来测试一下。可能会有一些小问题,不过改一下应该能工作。( TrueType 和 OpenType 有一些差异)
    xenme
        10
    xenme  
       2019-12-03 13:19:58 +08:00   ❤️ 1
    建议是支持 per user 的,否则用处真不大,针对性的太容易破解了,况且现在 OCR 的识别率超级高。
    TimePPT
        11
    TimePPT  
       2019-12-03 14:27:34 +08:00
    @xenme 对的,印刷字体 OCR 一把梭 233
    JCZ2MkKb5S8ZX9pq
        12
    JCZ2MkKb5S8ZX9pq  
       2019-12-03 16:28:59 +08:00
    万一碰到用户缺字体回退到不同字体,或者渲染设置不一样的话,视觉体验可能会很差。
    好像见过几次类似的页面。
    songjiaxin2008
        13
    songjiaxin2008  
    OP
       2019-12-03 18:01:14 +08:00
    @JCZ2MkKb5S8ZX9pq #12 谢谢反馈。我这边选择的基础字体基本是覆盖了常用+生僻的 CJK 字符,之前也有尝试过别的字体,字型缺失会变成一个方块。
    songjiaxin2008
        14
    songjiaxin2008  
    OP
       2019-12-03 18:01:28 +08:00
    @JCZ2MkKb5S8ZX9pq #12 综合考虑选择了这款比较全面的字体。
    songjiaxin2008
        15
    songjiaxin2008  
    OP
       2019-12-03 18:09:43 +08:00
    @xenme #10 per-user 还是需要业务使用这个库的时候 做一些额外的策略。
    字型这方面其实还有很多可以做的事,比如自定义 glyph,都是为了提高爬虫成本。
    gaoryrt
        16
    gaoryrt  
       2019-12-03 18:15:59 +08:00
    反爬第一步
    a719114136
        17
    a719114136  
       2019-12-03 18:19:22 +08:00 via Android
    嗯,看看
    JCZ2MkKb5S8ZX9pq
        18
    JCZ2MkKb5S8ZX9pq  
       2019-12-03 18:27:54 +08:00
    @songjiaxin2008 不是指缺字的问题,而是字体不一致。
    比如整篇文章原本是萍方字体,个别字替代为图片 /svg/嵌入字体,比如雅黑,那看上去有可能会有点不同。
    不同字体常见问题,比如笔画粗细,中宫大小,基线高低,默认行距,等等问题。

    极端例子,比如我看安卓用户,有些会用很个性化的字体,手写体之类的,忽然出现个替换字体就很明显。
    我之前看到的情况是替换了 30 左右,非常高频,比如的得地基本都换了,导致整篇文字基线起伏连绵。

    可能发生率不高,或者一般人注意不到。我就是提一下有这个可能性。
    xupefei
        19
    xupefei  
       2019-12-03 18:47:03 +08:00 via iPhone
    很多年前,这种技术在游戏汉化圈用过。为了防止别人提起汉化文本。
    坏处就是我把加密前后的对应表弄丢了,现在自己也还原不了了。
    myqoo
        20
    myqoo  
       2019-12-05 16:38:56 +08:00
    写个浏览器扩展破解太容易了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1516 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:11 · PVG 01:11 · LAX 09:11 · JFK 12:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.