gpt4 book ai didi

python - Netfilter 和 Scapy

转载 作者:行者123 更新时间:2023-11-28 18:54:46 25 4
gpt4 key购买 nike

我正在研究内核模块中的 netfilter Hook 。我希望能够捕获由 scapy 创建的数据包。

钩子(Hook)以及通过 scapy 生成的数据包都在同一台物理主机上运行。似乎没有可用的 netfilter Hook 能够捕获数据包。

我也尝试从 VM 内部发送相同的数据包,但这也不起作用。

我怀疑这个问题与在环回接口(interface)上运行的所有东西有关,因为它们都在同一个盒子上。

我当然可以使用两个物理主机,但不幸的是现在不可能:(

static unsigned int out_hook(unsigned int hooknum,
struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn)(struct sk_buff *))
{
sock_buff = skb;

if (!sock_buff) {
return NF_ACCEPT;
} else {
ip_header = (struct iphdr *)skb_network_header(sock_buff);
if (!ip_header) {
return NF_ACCEPT;
} else {
if (ip_header->protocol == IPPROTO_TCP) {
th = (struct tcphdr *)(skb_transport_header(sock_buff)+sizeof(struct iphdr));

printk(KERN_INFO "[LOCAL_OUT] %d.%d.%d.%d:%d -> %d.%d.%d.%d:%d\n", ip_header->saddr & 0x000000FF, (ip_header->saddr & 0x0000FF00) >> 8,(ip_header->saddr & 0x00FF0000) >> 16,(ip_header->saddr & 0xFF000000) >> 24, th->source, ip_header->daddr & 0x000000FF, (ip_header->daddr & 0x0000FF00) >> 8,(ip_header->daddr & 0x00FF0000) >> 16,(ip_header->daddr & 0xFF000000) >> 24, th->dest);

unsigned int len = sock_buff->len - sizeof(struct tcphdr) - sizeof(struct iphdr);
printk(KERN_INFO "\t [skbuf->len]=%d", sock_buff->len);
printk(KERN_INFO "\t [skbuf->data_len]=%d", sock_buff->data_len);


return NF_ACCEPT;

} else {
return NF_ACCEPT;
}
}
}
}

上面是钩子(Hook)。

#!/usr/bin/env python

import sys
sys.path.append('/usr/local/bin')

import time
from threading import Thread
from scapy.all import *
from hashlib import sha1, md5
import random
import crypt

conf.iface='wlan0'


packet = IP(dst="192.168.0.104") / TCP(sport=1234, dport=2222) / Raw("testtest")
send(packet)

上面是send.py

最佳答案

Sniffing with Scapy

[mpenning@Bucksnort ~]$ sudo python
Python 2.5.2 (r252:60911, Jan 24 2010, 14:53:14)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from scapy.all import sniff
>>> from scapy.all import wrpcap
>>> foo = sniff(filter="icmp", count=3)
>>> wrpcap("icmppaks.pcap", foo)
>>> quit()
[mpenning@Bucksnort ~]$ tshark -r icmppaks.pcap
1 0.000000 192.0.2.178 -> 192.0.2.6 ICMP Echo (ping) request
2 0.000065 192.0.2.6 -> 192.0.2.178 ICMP Echo (ping) reply
3 1.004224 192.0.2.178 -> 192.0.2.6 ICMP Echo (ping) request
[mpenning@Bucksnort ~]$

关于python - Netfilter 和 Scapy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5059649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com