我的主要想法是在有效载荷中搜索一个特定的单词,无论是否存在。我编写了这段代码,以在search_for_string
(unsigned char
)中搜索关键字(foo
)。
问题是foo
是指向unsigned char
的指针。如何将指针foo
的值保存在新的字符串变量中并在strstr
中使用它?
对于iptables,我已经通过终端设置了以下规则:
sudo iptables -t filter -I OUTPUT --proto tcp -j NFQUEUE --queue-num 1
这是我在运行代码之前的测试nping:
sudo nping -c 10 --tcp -p 80,433 --data-string helloWorld 185.60.216.35
要另外编译文件,请使用
:gcc -o output input.c -lnetfilter_queue -lnfnetlink
代码文件
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <unistd.h>
#include <string.h>
#include <libnetfilter_queue/libnetfilter_queue.h>
#include <linux/netfilter.h>
#include <sys/stat.h>
#include <sys/types.h>
static int cb(struct nfq_q_handle *qh, struct nfgenmsg *nfmsg,
struct nfq_data *nfa, void *data) {
size_t payloadLen = 0;
unsigned char *foo;
payloadLen = nfq_get_payload(nfa, &foo);
struct iphdr *ip_header;
ip_header = (struct iphdr *)foo;
struct nfqnl_msg_packet_hdr *ph;
ph = nfq_get_msg_packet_hdr(nfa);
char search_for_string[] = "helloWorld";
if (strstr((char *)foo, search_for_string)) {
printf("\nThe Payload contains the keyword.");
} else {
printf("\nPayload does not contain the keyword.");
}