标签: libpcap

11
推荐指数
1
解决办法
9084
查看次数

使用libpcap的原始捕获功能(CAP_NET_RAW,CAP_NET_ADMIN)无法在/ usr/bin和朋友之间进行数据包捕获程序

TL; DR:为什么cap_net_raw,cap_net_admin功能只能在/usr/bin(或/usr/sbin)中工作,而不能在其他地方工作?这可以在某个地方配置吗?

我在使用Ubuntu 14.04中的libpcap为我的C程序分配功能时遇到了问题.即使在使用setcap(8)和使用它来分配功能之后getcap(8),我仍然会收到权限错误.似乎功能仅适用于\usr\bin朋友中的可执行文件.

我的程序test.c如下:

#include <stdio.h>
#include <pcap.h>

int main(int argc, char **argv) {
    if (argc != 2) {
        printf("Specify interface \n");
        return -1;
    }
    char errbuf[PCAP_ERRBUF_SIZE];
    struct pcap* pcap = pcap_open_live(argv[1], BUFSIZ, 1, 0, errbuf);
    if (pcap == NULL) {
        printf("%s\n", errbuf);
        return -1;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

并编译

gcc test.c -lpcap
Run Code Online (Sandbox Code Playgroud)

生成a.out可执行文 我设置了功能:

sudo setcap cap_net_raw,cap_net_admin=eip ./a.out
Run Code Online (Sandbox Code Playgroud)

并检查它是否正确: …

linux ubuntu wireshark libpcap linux-capabilities

10
推荐指数
1
解决办法
7742
查看次数

Mac OS X(Darwin)下的AF_PACKET等价物

我试图在Mac OS X上编译一个使用AF_PACKET套接字和libpcap的C程序,OS X中的等价物是什么?

sockets macos libpcap

9
推荐指数
1
解决办法
4955
查看次数

python/dpkt:找出数据包是tcp数据包还是udp数据包,

我有一个python脚本使用dpkt捕获以太网上的数据包,但我如何区分哪些数据包是tcp和哪些数据包是udp.

最终,我希望在该时间间隔内建立每个tcp连接的数据包列表.

我的代码是:

import dpkt
import pcapy
cap=pcap.open_live('eth0',100000,1,0)
(header,payload)=cap.next()
while header:
    eth=dpkt.ethernet.Ethernet(str(payload))
    ip=eth.data
    tcp=ip.data 
    # i need to know whether it is a tcp or  a udp packet here!!!
    (header,payload)=cap.next()
Run Code Online (Sandbox Code Playgroud)

python network-programming packet-capture pcap libpcap

9
推荐指数
2
解决办法
2万
查看次数

pcap_dispatch - 回调处理问题

我写的只是简单的pcap"实时"捕获引擎,但pcap_dispatch的数据包处理回调实现应该花费相对较长的时间进行处理.pcap是否在单独的线程中运行每个"pcap_handler"回调?如果是,"pcap_handler"是否是线程安全的,还是应该注意保护关键部分?或者,pcap_dispatch回调是否以串行方式工作?例如,只有在数据包1的"pcap_handler"完成后才调用数据包2的"pcap_handler"?如果是这样,是否有办法避免累积延迟?谢谢,-V

libpcap

8
推荐指数
1
解决办法
7810
查看次数

在-lpcap中找不到pcap_open_live

我正在尝试在Ubuntu 12.04 32bit上构建reaver.我已经构建并安装了libpcap.

运行./configure,我收到以下错误:

在-lpcap中检查pcap_open_live ...没有

错误:找不到pcap库!

任何帮助解决这个问题都非常感谢.

编辑:这是配置脚本中的检查:

{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pcap_open_live in -lpcap" >&5

$as_echo_n "checking for pcap_open_live in -lpcap... " >&6; }

if test "${ac_cv_lib_pcap_pcap_open_live+set}" = set; then :

  $as_echo_n "(cached) " >&6

else

  ac_check_lib_save_LIBS=$LIBS
Run Code Online (Sandbox Code Playgroud)

linux ubuntu libpcap

8
推荐指数
1
解决办法
1万
查看次数

libpcap无法捕获IP片段

我想捕获发往本地端口的UDP数据包,过滤表达式就像udp port 20000.我注意到如果UDP数据包上存在IP分片,libpcap只能捕获第一个IP分片.我猜的原因是第二个IP片段没有UDP头(我认为它与TCP相同),所以libpcap无法使用filter express捕获它们udp port 20000.

这有什么解决方法吗?或任何其他可以捕获发往特定本地端口的数据包的库?

谢谢!

tcpdump libpcap

8
推荐指数
1
解决办法
4083
查看次数

什么是iPhone/Android响应ARP请求的策略

当我arping用来发送ARP请求(我知道睡觉的iPhone没有回复ICMP ping)来睡觉的iPhone/Androids(意味着它们打开但是屏幕很暗)连接在同一个wifi上时,iPhone回复给我这样的:

ARPING 10.109.201.139
Timeout
Timeout
Timeout
42 bytes from e0:ac:cb:b0:22:5b (10.109.201.139): index=0 time=20.201 msec
Timeout
Timeout
Timeout
Timeout
Timeout
Timeout
Timeout
Timeout
Timeout
Timeout
42 bytes from e0:ac:cb:b0:22:5b (10.109.201.139): index=1 time=65.401 msec
Timeout
Run Code Online (Sandbox Code Playgroud)

但有时,iPhone会不断回复.有时它根本不回答arping.Android答案如下:

ARPING 10.109.201.119
Timeout
42 bytes from c0:ee:fb:01:f4:fd (10.109.201.119): index=0 time=78.345 msec
42 bytes from c0:ee:fb:01:f4:fd (10.109.201.119): index=1 time=148.228 msec
42 bytes from c0:ee:fb:01:f4:fd (10.109.201.119): index=2 time=217.777 msec
42 bytes from c0:ee:fb:01:f4:fd (10.109.201.119): index=3 time=84.933 msec
Timeout
42 bytes from c0:ee:fb:01:f4:fd (10.109.201.119): index=4 time=174.140 …
Run Code Online (Sandbox Code Playgroud)

networking ethernet ping arp libpcap

8
推荐指数
1
解决办法
834
查看次数

为什么pcap_setfilter没有生效

我正在使用libpcap作为lib来编写一个C程序来赶上即将来临的IP。我的代码段如下:

struct bpf_program filter;
pcap_compile(pcap_handle, &filter, "icmp[icmptype]=0 and '(dst 16.11.26.100 or dst 16.11.27.100)'", 1, 0);
pcap_setfilter(pcap_handle, &filter);
Run Code Online (Sandbox Code Playgroud)

但这没有用,我仍然可以看到其他目标Ips,而不仅仅是上述两个Ips。

pcap libpcap

8
推荐指数
1
解决办法
69
查看次数

ctypes并通过引用传递给函数

我正在尝试使用ctypes在python3中使用libpcap.

在C中给出以下功能

pcap_lookupnet(dev, &net, &mask, errbuf)
Run Code Online (Sandbox Code Playgroud)

在python我有以下内容

pcap_lookupnet = pcap.pcap_lookupnet

mask = ctypes.c_uint32
net = ctypes.c_int32

if(pcap_lookupnet(dev,net,mask,errbuf) == -1):
print("Error could not get netmask for device {0}".format(errbuf))
sys.exit(0)
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

  File "./libpcap.py", line 63, in <module>
 if(pcap_lookupnet(dev,net,mask,errbuf) == -1):
ctypes.ArgumentError: argument 2: <class 'TypeError'>: Don't know how to convert parameter 2
Run Code Online (Sandbox Code Playgroud)

你如何应对&blah价值观?

python ctypes libpcap

7
推荐指数
1
解决办法
1万
查看次数