首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Netfilter和Scapy

Netfilter和Scapy
EN

Stack Overflow用户
提问于 2011-02-21 04:01:56
回答 1查看 2.1K关注 0票数 3

我正在使用内核模块中的netfilter钩子。并且我希望能够捕获由scapy创建的数据包。

钩子和通过scapy生成的数据包都在同一物理主机上运行。似乎所有可用的netfilter钩子都无法捕获数据包。

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

我怀疑这个问题与所有通过loopback iterface运行的东西有关,因为它们都在同一个机器上。

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

代码语言:javascript
复制
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;
            }
        }
    }
}

上面就是钩子。

代码语言:javascript
复制
#!/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

EN

回答 1

Stack Overflow用户

发布于 2011-05-09 14:03:35

Sniffing with Scapy

代码语言:javascript
复制
[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 ~]$
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5059649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档