我正在尝试在 Ruby中实现osquery的扩展。
我发现一些库和示例在 Java、Node 和 Python 中做同样的事情,但在 Ruby 语言中实现没有任何帮助。
根据此文档,可以使用 Thrift 生成代码:https ://osquery.readthedocs.io/en/stable/development/osquery-sdk/#thrift-api
到目前为止,我所做的步骤:
- 使用生成的代码
thrift -r --gen rb osquery.thrift
- 创建了一个类和一些代码来连接服务器并注册扩展
这是类的代码
# include thrift-generated code
$:.push('./gen-rb')
require 'thrift'
require 'extension_manager'
socket = Thrift::UNIXSocket.new(<path_to_socket>)
transport = Thrift::FramedTransport.new(socket)
protocol = Thrift::BinaryProtocol.new(transport)
client = ExtensionManager::Client.new(protocol)
transport.open()
info = InternalExtensionInfo.new
info.name = "zzz"
info.version = "1.0"
extension = ExtensionManager::RegisterExtension_args.new
extension.info = info
client.registerExtension(extension, {'table' => {'zzz' => [{'name' => 'TEXT'}]}})
要获得,<path_to_socket>
您可以使用:
> osqueryi --nodisable_extensions
osquery> select value from osquery_flags where name = 'extensions_socket';
+-----------------------------------+
| value |
+-----------------------------------+
| /Users/USERNAME/.osquery/shell.em |
+-----------------------------------+
当我尝试使用 获取此表osqueryi
时,运行时看不到该表select * from osquery_registry;
。
有没有人已经实现了 osquery 扩展?我被卡住了,我不知道如何从这里开始。