记录使用unredacter的流水账

unredacter是一个实验性的还原图片中打马赛克的文字的小工具。具体介绍请见github(https://github.com/BishopFox/unredacter)。 README中使用说明部分描述的使用步骤很简单,但是如果你照着尝试,会发现程序跑不起来,各种报错(node的三方库版本依赖的天坑😭),我就将我淌坑的经历记录下来吧。

工作环境:windows 11(因为windows 11才支持wslg),启用wsl2,使用Ubuntu 22.04镜像

步骤:

1. (wsl2的Ubuntu里)安装node v12版本。(直接去官网下载v12版本的二进制文件 https://nodejs.org/download/release/v12.22.12 ,将bin目录加到path路径即可)
2. (wsl2的Ubuntu里)下载源码到本地https://github.com/BishopFox/unredacter
3. (wsl2的Ubuntu里)进入项目根目录,执行 npm --registry https://registry.npmmirror.com install (注意:不要再使用https://registry.npm.taobao.org这个镜像地址了,该地址已经停用了)
4. (wsl2的Ubuntu里)进入项目根目录执行npm --registry https://registry.npmmirror.com install electron@10 (注意一定要安装electron v10版本, v11版本就不行)
5. (wsl2的Ubuntu里)进入项目根目录执行npm start

最终效果图:

问题1: 如果在执行 npm start时遇到如下错误:[5095:0621/232535.423408:FATAL:gpu_data_manager_impl_private.cc(442)] GPU process isn’t usable. Goodbye.
/home/{username}/unredacter /node_modules/electron/dist/electron exited with signal SIGTRAP

解决办法:在windows 11下需要按照官方说明安装对应显卡厂商的显卡驱动(https://github.com/microsoft/wslg ),这样wsl2就支持使用GPU了。

问题2: unredacter已经能正常工作了,但是隔了几天突然又不能工作了,有如下报错:
../../third_party/tcmalloc/chromium/src/tcmalloc.cc:337] Attempt to free invalid pointer 0x55dd1f867dc0
/home/{username}/unredacter-main/node_modules/electron/dist/electron exited with signal SIGSEGV
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! unredacter@1.0.0 start: `npm run build && electron ./dist/main.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the unredacter@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

解决办法:检查你的显卡驱动是不是被操作系统升级,导致和wslg不兼容了。对于AMD:

 

 

References:

https://mp.weixin.qq.com/s/W20dZpX6nJrNFMrXB4P4Mg

 

《记录使用unredacter的流水账》上有13条评论

  1. 跟着学到这里了,报错,还是运行不了,找不到如何解决
    GET file:///C:/Users/linas/OneDrive/Desktop/unredacter-main/undefined net::ERR_FILE_NOT_FOUND
    Image (async)
    (anonymous) @ renderer.js:85
    step @ renderer.js:38
    (anonymous) @ renderer.js:19
    (anonymous) @ renderer.js:13
    __awaiter @ renderer.js:9
    gatherResults @ renderer.js:67
    (anonymous) @ renderer.js:57
    postMessage (async)
    (anonymous) @ renderer.js:93
    VM58 renderer_init.js:71 Uncaught (in promise) Error: Error invoking remote method ‘redact’: RangeError [ERR_OUT_OF_RANGE]: The value of “offset” is out of range. It must be >= 0 and <= 58236. Received -33920
    at EventEmitter.i.send.i.invoke (VM58 renderer_init.js:71)

  2. npm WARN unredacter@1.0.0 license should be a valid SPDX license expression

  3. 还是不行,折腾了这么长时间,各种各样乱七八糟的代码,就是没搞定……

    1. 从你的日志信息看,你是用的Onedrive同步的代码,可能需要确认你下载的unredacter源码是否完整,node版本是不是v12。

      1. 大哥确认是按照你上面交待的步骤一步一步执行的,确实是不行。应该还是卡到NPM START这里,启动是可以但是程序跑不起来,GET file:///C:/Users/linas/OneDrive/Desktop/unredacter-main/undefined net::ERR_FILE_NOT_FOUND
        这个报错怎么都搞不懂。
        我只有一个图要解密一下,大哥帮我整一下好不,高抬贵手呢

        1. 你是在windows里执行的吗?我的示例都是在wsl里面执行脚本的(不会存在C:/Users/…这样的路径)!

    1. 正确的命令是npm –registry(两个-),是因为wordpress样式的问题展示的是单个-。

  4. 应该不是这个问题,\npm start是可以跑出来的,但是点击start的时候跑不起来,程序运行不了

  5. 累计花了100多个小时,程序是跑起来了,但是解码不了,跑不出来什么结果,没啥卵用

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

*