在C中的无符号字符中搜索关键字

时间:2019-03-10 14:01:44

标签: c arrays pointers

我的主要想法是在有效载荷中搜索一个特定的单词,无论是否存在。我编写了这段代码,以在search_for_stringunsigned 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.");
   }

0 个答案:

没有答案