【发布时间】:2014-10-31 13:10:09
【问题描述】:
我写了一个小的 go 脚本并使用 strace 跟踪它 虽然这个脚本,我正在尝试使用 netlink 协议从内核获取审计消息,就像 auditd 一样。
以下是我的 go 脚本上的 strace 输出-http://paste.ubuntu.com/8272760/
我正在尝试查找 auditd 提供给 sendto 函数的参数。 当我在 auditd 上运行 strace 时,我得到以下输出
sendto(3, "\20\0\0\0\350\3\5\0\1\0\0\0\0\0\0\0", 16, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 16
当我 strace 我的 go 文件时,我得到以下输出。 我正在寻找解码此语句的第二个参数
sendto(3, "\21\0\0\0\350\3\5\0\1\0\0\0\0\0\0\0\t", 17, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 17
具体一点
"\21\0\0\0\350\3\5\0\1\0\0\0\0\0\0\0\t"
现在我想将其转换为字符串或字节数组,有没有办法将其转换为字符串或字节数组?
在我实际的 go 代码中,这个参数是一个字节数组。
https://github.com/mozilla/Audit-Go/blob/testing/netlink_old.go#L58
【问题讨论】:
-
Hrm:看起来你的源代码中的
wb已经是[]byte,所以我不明白提出的问题,或者为什么涉及 strace . (发生了什么使得strace变得必要而不是依赖于 Go 代码的检测?) -
另外,it's conventional to avoid dot imports 就像`。 “系统调用”。
-
我不确定,但问题可能在于您正在处理的 strace 输出并非全部来自您的代码,而且您不确定如何解析它。我所拥有的可能不是最佳实践方法,但我认为 JavaScript 使用的引用规则足够接近相同的引用规则,您可以将字符串放入脚本中:jsfiddle.net/2tukw37o