Пишу (пытаюсь) модуль для ядра (анализ пакетов), но знаний в Си и в сетевой подсистеме Linux маловато...
Не могу вытянуть из sk_buff данные пакета. Точнее там какаято чушь...
Кусок кода
unsigned int Hook_Func(uint hooknum,
struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn)(struct sk_buff *) )
{
struct iphdr *ip;
struct tcphdr *tcp;
...................
memcpy(data, skb->data + sizeof(ip) + sizeof(tcp), skb->data_len);
printk (KERN_INFO "%s\n", data);
printk (KERN_INFO "%u\n", skb->len);
printk (KERN_INFO "%u\n", skb->data_len);
...................
return NF_ACCEPT
...................
пробовал и так: sprintf (data, «%s», (char*)skb->data);
Игрался и с отступом (sizeof(ip) + sizeof(tcp)) и с размером (skb->data_len)
Выдаёт либо «E», либо такую хрень:
[57414.859619] Data:
[57414.859625] W▒▒▒▒
[57414.859626] 150
[57414.859626] 110
А там HTTP передаётся...
Подскажите пожалуйста где загвоздка