理解apache鳄梨调查协议[关闭]

问题描述 投票:0回答:1
我已经尝试了几天来了解它如何生成文件,其中包含指令创建/重新创建实时会话。例如,在核心上,它使用libssh2库与目标进行通信,但它通过this
this
等说明发送到了使用这些说明来创建的客户端,记录实时会话。

I首先使用GDB逐步浏览GUACD文件夹中的守护程序。 CTRL+单击顺序中的每个功能也最终导致了它从Libssh2频道读取的位置,但我仍然不明白鳄梨调味酱如何创建这些说明,甚至将图像存储为base64等。我已经浏览了他们网站上的所有文档,并了解了这些说明的所有文档,并了解了这些指令

do

,但无法在其中识别它们。 是我第一次通过开源项目,理解它变得越来越复杂。我现在只尝试了SSH会议。有助于理解代码流的一些帮助真的很有帮助。

daemon.c(在

guacd

中)聆听传入的客户连接。收到新连接后,它会创建一个新的客户端线程(

guacd_client_thread()
c guacamole
1个回答
0
投票
main()

接受循环中的新客户端,为每个连接创建线程。每个连接都由其自己的线程处理,流量从

daemon.c
移到特定于协议的处理程序。对于SSH,在初始设置后,该线程将在SSH协议插件中调用功能。
SSH协议插件
guac_ssh_client_thread()
是您应该调查的核心位置。 SSH逻辑的输入点是设置会话处理程序的函数
src/protocols/ssh/ssh.c
,包括使用
guac_client_plugin_init()
创建SSH会话。 SSH处理的核心会话线程是Intial libssh2会话,连接到远程主机,然后循环读取数据。  在SSH插件中,鳄梨调味酱持续从
libssh2

guac_ssh_client_thread()
接收字节代表来自SSH会话的原始终端输出。

SSH数据与鳄梨调原协议指令之间的转换发生在终端仿真逻辑(VT100/ANSI)中,由

libssh2_channel_read()
组件管理
int bytes_read = libssh2_channel_read(channel, buffer, sizeof(buffer));
以及相关文件,例如
guac_terminal
src/terminal/terminal.c

    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.