作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对套接字编程完全陌生。我正在尝试嗅探和欺骗数据包。我在 Linux 的 libpcap
库中使用 pcap_loop
并使用以下签名:
int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user);
我想使用 pcap_inject
或 pcap_sendpacket
从 pcap_loop
内部的回调函数中注入(inject)数据包。
但是,pcap_inject
和 pcap_sendpacket
需要 pcap_t *
句柄来发送原始数据包。
回调函数似乎没有一种简单的方法来访问句柄。我想知道是否可以从回调中访问它,或者是否有更简单的方法来执行此操作。
最佳答案
这就是回调的 user
参数的用途。我不确定为什么它是 u_char *
而不是 void *
,因为它是一个“通用指针”,并且 BPF 可以追溯到 1992 年,其中我认为大多数 C 编译器都支持 void *
- 也许并非全部都支持。
在任何情况下,指向任意值的指针都可以通过将其作为参数传递给 pcap_loop()
或 pcap_dispatch()
来传递给回调函数;它可能是一个指向结构的指针,其中包含您要捕获的 pcap_t *
等值。
这样,回调就可以使用 pcap_t *
调用 pcap_inject()
。
关于c - 如何在 pcap_loop 的回调函数中注入(inject)数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59252930/
我是一名优秀的程序员,十分优秀!