我写了一个数据包嗅探器代码,一切正常,但是我想将数据包与特定IP分开。为此,我需要访问缓冲区,该缓冲区通过使用inet_ntop()存储IP地址。如何比较“ sbuf / dbuf”和特定IP。我尝试通过将IP存储在另一个“字符”数组中并进行比较来进行尝试,但是没有用。
这是我的传入数据包IP的代码;
/* Parse IP protocol */
struct iphdr *ip = (struct iphdr*) next_hdr;
char sbuf[32];
char dbuf[32];
printf("\tIP version: %u ihl: %u ttl: %u protocol: %u src: %s dst %s\n",
ip->version,
ip->ihl,
ip->ttl,
ip->protocol,
inet_ntop(AF_INET, &ip->saddr, sbuf, sizeof(sbuf)),
inet_ntop(AF_INET, &ip->daddr, dbuf, sizeof(dbuf))
);
只需要帮助我比较传入的数据包中的特定IP,剩下的我就解决。
我在这个问题上停留了一段时间。帮助... !!!
我正在Linux上工作。
答案 0 :(得分:0)
您应该反过来进行;将您要查找的IP转换为整数,然后直接与ip->saddr
进行比较:
in_addr_t x = inet_addr("1.2.3.4");
if (x == ip->saddr) {
// Do something
}
这应该是更有效和更好的方法。