V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
msmmbl
V2EX  ›  问与答

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

  •  
  •   msmmbl · 2022-04-02 09:34:51 +08:00 · 1826 次点击
    这是一个创建于 964 天前的主题,其中的信息可能已经有所发展或是发生改变。
    海康的机器: 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 。这种有可能实现吗?
    10 条回复    2022-04-04 07:47:43 +08:00
    whenov
        1
    whenov  
       2022-04-02 09:56:07 +08:00
    你有办法让设备自带的应用 GUI 操作 /dev/fb0 之外的路径吗
    msmmbl
        2
    msmmbl  
    OP
       2022-04-02 10:01:57 +08:00
    @whenov 有的,IDA 已经找到了它打开 /dev/fb0 的位置,直接改它的应用就行
    whenov
        3
    whenov  
       2022-04-02 13:00:58 +08:00
    @msmmbl 创建两个链接可以吗?一个指向 /dev/null ,另一个指向 /dev/fb0 。根据需求切换指向
    whenov
        4
    whenov  
       2022-04-02 13:02:34 +08:00
    @whenov 不过自带应用不关闭文件 handler 的话可能这样没啥用
    msmmbl
        5
    msmmbl  
    OP
       2022-04-02 16:10:26 +08:00
    @whenov 嗯,是的,而且看起来,目标应用对这个设备文件还有一些 ioctl 调用
    whenov
        6
    whenov  
       2022-04-02 16:31:03 +08:00
    用户态下想不到怎么解决。也许可以仿照 linux/fb.h 接口写个内核模块,但是对于魔改系统来说太难了
    ysc3839
        7
    ysc3839  
       2022-04-02 23:45:50 +08:00 via Android
    尝试使用 loopback framebuffer 拿到图像后自己混合?
    https://github.com/MajenkoProjects/fb2v4l
    但这个方案需要编译内核
    msmmbl
        8
    msmmbl  
    OP
       2022-04-03 09:57:54 +08:00
    @whenov
    @ysc3839
    谢谢,看来绕不过内核。
    ysc3839
        9
    ysc3839  
       2022-04-03 22:24:23 +08:00 via Android
    @msmmbl 还有一种方案是 hook 目标程序输出图像那块逻辑
    msmmbl
        10
    msmmbl  
    OP
       2022-04-04 07:47:43 +08:00
    @ysc3839 看了下,他用了 minigui 做了 UI ,minigui 带有一个 gal 层用于分离应用和硬件,可以朝这个方向试试
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3366 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 00:45 · PVG 08:45 · LAX 16:45 · JFK 19:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.