我正在使用 Ettercap 过滤器来检测来自远程计算机上特定服务的查询响应。当我看到来自服务的响应时,我会搜索数据包中的数据以查看偏移量是否是特定值,如果是,我会更改另一个偏移量的值。
问题是,当我在新的虚拟机上尝试此操作时,我构建的 Ettercap 过滤器不再获取可用的 DATA.data 变量中的任何数据。
if(ip.proto == TCP && tcp.src == 17867) {
msg("Response seen!\n");
if(DATA.data + 2 == "\0x01") {
msg("Flag detected!\n");
DATA.data + 5 = 0x09;
}
}
过滤器已应用于流量,因为 Ettercap 会打印出“Response seen!”消息。但是,不会打印出“Flagdetected!”消息。我思考DATA.data 确实是空的,因为如果我改变第二个“if”语句来检查,DATA.data == ""
那么“检测到标志!”消息就会被打印。
知道为什么会发生这种情况吗?!
另外,如果这个网站不适合问这样的问题,请告诉我。我不确定这里是否更适合,或者像 superuser 或 serverfault 这样的地方更适合。
顺便说一句,这篇文章来自堆栈溢出...我想我应该在这个论坛上发帖。:)
答案1
我遇到了同样的问题。(ettercap 接收空字符(0x00)或 0x20(已解码的 ONE))。我尝试从源代码编译 ettercap,一切正常。尝试使用 LOG 过滤器记录 ettercap 接收的任何内容,然后查看接收到的内容。如果它是一堆空值或零,那么您的问题可能与我的一样!这似乎是 etterfilter 或 ettercap 本身的一些问题。
更改您的 ettercap 版本它就会工作(我的就成功了)。我的问题出在 backtrack 5 r1 中,它是 ettercap。我更新了 ettercap,一切正常。