玩了一把小区的门禁, Linux 系统,有没有办法在它屏幕上显示自定义的 GUI

2022-04-02 09:34:51 +08:00
 msmmbl
海康的机器: https://www.hikvision.com/cn/products/Video-Intercom/Video-Intercom/Video-Intercom-Indoor-Station/DS-KH6320-A/

机器的 ssh 默认关闭的,不过把 flash 焊下来,魔改一把,绕过了。运行了 busybox 精简魔改的系统。不过可以通过 buildroot ( https://buildroot.org/)交叉编译出可用的执行文件。

发现图形缓冲文件 /dev/fb0 ,和触摸事件文件 /dev/input/event3 。交叉编译 framebuffer-vncserver ( https://github.com/ponty/framebuffer-vncserver )可以成功的让它可以从远程 PC 的 VNC 直接操作它。

此外,往 /dev/fb0 中写入数据屏幕也有反应。

设备自带的应用 GUI 不带 X ,直接操作 /dev/fb0 。我可以通过 fbvnc ( https://github.com/aligrudi/fbvnc )这个项目,直接在这个屏幕上显示远程 PC 的画面。但是设备自带的 GUI 会和它争抢 /dev/fb0 设备出现画面闪烁。

有没有什么办法,在这个的基础上,做个类似画面切换的程序,可以自由切换设备自带的 GUI 和我自己写的 GUI 。

这个屏幕只做门禁感觉比较浪费,如果可以显示一个 hass 的 vnc 画面,或者显示一个门口门铃的视频,同时不影响楼下呼叫就太好了。


-----

比如,我想在用户态,创建一个虚拟的 framebuffer ,把它自带的 gui 导向这个虚拟的 framebuffer 。再控制虚拟的 framebuffer 是否显示在实际的 framebuffer 。这种有可能实现吗?
1826 次点击
所在节点    问与答
10 条回复
whenov
2022-04-02 09:56:07 +08:00
你有办法让设备自带的应用 GUI 操作 /dev/fb0 之外的路径吗
msmmbl
2022-04-02 10:01:57 +08:00
@whenov 有的,IDA 已经找到了它打开 /dev/fb0 的位置,直接改它的应用就行
whenov
2022-04-02 13:00:58 +08:00
@msmmbl 创建两个链接可以吗?一个指向 /dev/null ,另一个指向 /dev/fb0 。根据需求切换指向
whenov
2022-04-02 13:02:34 +08:00
@whenov 不过自带应用不关闭文件 handler 的话可能这样没啥用
msmmbl
2022-04-02 16:10:26 +08:00
@whenov 嗯,是的,而且看起来,目标应用对这个设备文件还有一些 ioctl 调用
whenov
2022-04-02 16:31:03 +08:00
用户态下想不到怎么解决。也许可以仿照 linux/fb.h 接口写个内核模块,但是对于魔改系统来说太难了
ysc3839
2022-04-02 23:45:50 +08:00
尝试使用 loopback framebuffer 拿到图像后自己混合?
https://github.com/MajenkoProjects/fb2v4l
但这个方案需要编译内核
msmmbl
2022-04-03 09:57:54 +08:00
@whenov
@ysc3839
谢谢,看来绕不过内核。
ysc3839
2022-04-03 22:24:23 +08:00
@msmmbl 还有一种方案是 hook 目标程序输出图像那块逻辑
msmmbl
2022-04-04 07:47:43 +08:00
@ysc3839 看了下,他用了 minigui 做了 UI ,minigui 带有一个 gal 层用于分离应用和硬件,可以朝这个方向试试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/844463

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX