在 Linux 下捕获 Framebuffer

最近需要在 linux 下抓取 Framebuffer 的内容,在网上找到了两种方法,在我这里只有第二、第三种可以成功,没有细究具体原因,可能与我的 Framebuffer 配置有关。方法如下: fbgrab :命令就是 fbgrab image.png ,直接得到 png 文件,格式是对的,但是用软件打开就是一片空白。用 ImageMagick 转换为 jpg可以看到一些内容,但是和实际有些不一样。 fbdump :命令就是 fbdump > image.ppm ,得到裸的 ppm 文件,图像是正确的,也可以转换为别的格式正常打开。 cat+脚本处理:直接 cat /dev/fb0 > image.rgb ,然后用下面的脚本转换为 png 。由于 Framebuffer 格式为 RGB ,本来 A 所在的 channel 都为 0 ,所以用一些软件直接打开都是空白,只好写了脚本直接跳过 Alpha Channel 。 Framebuffer 配置( fbset 输出): mode "640x480-0" # D: 0.000 MHz, H: 0.000 kHz, V: 0.000 Hz geometry 640 480 1024 480 32 timings 0 0 0 0 0 0 0 accel false rgba 8/16,8/8,8/0,0/0 endmode 转换脚本(参考[Tips] 擷取framebuffer畫面):

Read More

每周分享第 36 期

QuickJS + libuv https://github.com/saghul/qjsuv Rust 实现的 Ruby https://github.com/artichoke/artichoke 类似 JSON 的数据格式 https://cbor.io/ rls 二代目 https://github.com/rust-analyzer/rust-analyzer 给 MacBook 添加触屏支持 https://github.com/bijection/sistine 用于 MBP with T2 的 Linux patch https://github.com/aunali1/linux-mbp-arch 在 tmux 中使用 Touch ID 认证 sudo https://blog.birkhoff.me/make-sudo-authenticate-with-touch-id-in-a-tmux/ iOS 13 beta 6 发布 Linux Journal 结束了它的使命 ssh 8.0 Add support for ECDSA keys in PKCS#11 tokens

Read More

用 PulseView 配合 DSLogic 调试 SPI Flash

最近需要用到逻辑分析仪来调试 SPI Flash,设备是 DreamSourceLab 的 DSLogic ,最开始用的是官方的 DSView ,确实能够抓到 SPI 的信号,也可以解析出一些 SPI Flash 的数据,但是很多是不完整的。 后来把源码下载下来,发现是基于 sigrok 和 PulseView 做的一个魔改版,然后 sigrok 官网上最新的版本已经支持了 DSLogic ,于是就用 PulseView 替代 DSView 。一开始遇到的问题是没有 firmware ,一番搜索找到了解决方案,按照脚本下载好文件即可。 进到 PulseView 以后,把 SPI 的四路信号接上,然后抓了一段信号,解析: 可以看到它正确地解析出来了 Fast Read 命令。由于 DSView 它 fork 自一个比较老的版本,所以它并不能正确解析出来。 P.S. Linux 下它界面显示比 macOS 下好看一些,估计是没有适配好。

Read More

每周分享第 35 期

Apple Touch Bar 的 Windows 第三方支持 https://github.com/imbushuo/DFRDisplayKm WSL2 新的进展 http://www.phoronix.com/scan.php?page=news_item&px=Windows-WSL2-Localhost-Plus Lightning 转接头里面居然跑 iBoot 和 Darwin https://readhacker.news/s/46Zde iOS 13 beta 5 发布 ES2019 前瞻 https://blog.tildeloop.com/posts/javascript-what%E2%80%99s-new-in-es2019 Rust 可持久化数据结构 https://github.com/orium/rpds Rust 不可变数据结构 https://github.com/bodil/im-rs macOS Catalina 10.15 beta 5 发布 Algebraic Effect https://overreacted.io/algebraic-effects-for-the-rest-of-us/ Donald Knuth 对于 Sensitivity Proof 证明的简化 https://readhacker.news/s/47fsA 真是老当益壮 TLS1.3 标准的简化版 https://readhacker.news/s/47eG9 iTerm 3.3 发布 https://iterm2.com/downloads/stable/iTerm2-3_3_0.changelog

Read More

每周分享第 33 期

一个讲 Rust 比较硬核的博客 http://system.joekain.com/ 利用 fzf 实现 shell 的 REPL https://github.com/pawelduda/fzf-live-repl 类似 Vue 的前端 Go 框架 https://www.vugu.org/doc/start iOS 13 beta 4 发布 14A5534f 针对 T2 NVMe 的 patch http://www.phoronix.com/scan.php?page=news_item&px=NVMe-Patches-LKML-Apple-Mac 一个前端非对称加密的问卷网站 https://blog.fugoes.xyz/crypto-q/

Read More

前端解析上传的 CSV

之前做过一个在前端解析上传的 CSV 的功能,但是只能支持部分的 encoding,遇到 gbk 就傻眼了。一番研究以后,找到了比较科学的方案: import * as Chardet from 'chardet'; import * as Iconv from 'iconv-lite'; const reader = new FileReader(); reader.onload = (e) => { const data = e.target.result; const view = Buffer.from(data); // detect encoding and convert const encoding = Chardet.detect(view); const result = Iconv.decode(view, encoding); const csvData = Papa.parse(result).data; // do anything with it }; reader.readAsArrayBuffer(blob_here); 依赖了两个库:chardet 和 iconv-lite ,测试了一下,解析 UTF-8 GBK UTF-16BE 都没问题。

Read More

每周分享第 32 期

Rpi4 的 Type-C 设计有问题 https://readhacker.news/s/45WYc Debian buster released USB Type-C Serial adapter with WCH/FTDI https://github.com/z4yx/USB-C-Serial Linux 5.2 Kernel released http://www.phoronix.com/scan.php?page=news_item&px=Linux-5.2-Released iOS/iPadOS PB2 发布,与 DB3 差了一个小版本号 Pacman in 512 bytes of x86 boot sector machine code https://readhacker.news/s/466Zm clang 的 use after move checker 使用 https://awesomekling.github.io/Catching-use-after-move-bugs-with-Clang-consumed-annotations/

Read More

每周分享第 31 期

一个 Docker 的 TUI https://github.com/jesseduffield/lazydocker 在线 Git cheatsheet http://ndpsoftware.com/git-cheatsheet.html 带历史合并两个 Git 仓库 https://stackoverflow.com/a/10548919 iOS 13 Dev Beta 3 https://mp.weixin.qq.com/s/6cxLXOYgeP6QkDpa9kdoug iOS 13 FaceTime Attention Correction https://readhacker.news/s/45QX2

Read More

每周分享第 30 期

一个可参考的防止 side channel attack 的方法 https://www.undeadly.org/cgi?action=article;sid=20190621081455 物理上镜像百兆的方法 实测可用 https://greatscottgadgets.com/throwingstar/ 微软员工写的 malloc https://github.com/microsoft/mimalloc 超标量乱序执行的 x86 软核 https://tspace.library.utoronto.ca/bitstream/1807/80713/1/Wong_Henry_T_201711_PhD_thesis.pdf Rust 的 wireshark 替代 https://github.com/kpcyrd/sniffglue Rpi 4 发布 https://readhacker.news/s/45nK9 iOS/macOS Catalina PB1 发布(= DB2) dbg! 移植到了 C++ https://github.com/sharkdp/dbg-macro 类似于 Elm 的 Rust 前端框架 https://github.com/David-OConnor/seed 访问 VMware 虚拟机串口的方法 https://thewayeye.net/2009/december/4/connecting-virtual-machines-serial-console-os-x-and-vmware-fusion/

Read More