标签: libpcap

libpcap:未检测到无线设备

我想捕获从我的机器出来的数据包,我正在使用libpcap(版本1.0.0-1).问题是,像这样的基本程序 -

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

int main(int argc, char *argv[]) {
    char *dev, errbuf[PCAP_ERRBUF_SIZE];
    dev = pcap_lookupdev(errbuf);
    if (dev == NULL) {
        fprintf(stderr, "%s\n", errbuf);
        return (2);
    }
    printf("Device : %s\n", dev);
    return (0);
}
Run Code Online (Sandbox Code Playgroud)

似乎没有显示无线接口.每次我编译并运行程序时,它都会检测到eth0.我怎样才能捕获无线接口呢?

c pcap libpcap

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

pcap_set_rfmon不起作用?

我试图将我的设备设置为监控模式,我知道它能够处于监控模式,执行"iwconfig wlan0模式监控"工作,我运行我的代码,我可以从任何地方捕获数据包.

问题是在libpcap中它根本无法将我的设备设置为监控模式(没有输入上述命令行).在手动连接到接入点之前,我无法捕获任何数据包.

       pcap_t *handler = pcap_create("wlan0",errbuff);
       if(pcap_set_rfmon(handler,1)==0 )
       {
           std::cout << "monitor mode enabled" << std::endl;
       }
       handler=pcap_open_live ("wlan0", 2048,0,512,errbuff);
       int status = pcap_activate(handler); //it returns 0 here.
Run Code Online (Sandbox Code Playgroud)

这是一个代码问题,还是pcap库的问题?有没有人成功将他们的设备设置为监控模式而不使用命令行?我正在使用Realtek2500 btw.

c++ pcap libpcap

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

捕获数据包然后丢弃数据包IPS系统

是否有任何可能的方法在Windows中"丢弃"像真正的IPS(入侵防御系统),类似于unix中的iptables.

此外,如果我使用matlab有一种方法"捕获网络上的数据包"并将其提供给神经网络?在Windows上的Matlab是.

我很难理解libpcap如何"捕获"数据但你却无法实时"丢弃"数据?

相当令人讨厌的snort不能这样做,snort只能作为Windows上的IDS,而不是Linux上的IDS/IPS,因为它能够正确规则到iptables.

c# c++ matlab libpcap neural-network

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

网络编程中什么时候使用ntohs函数?

我正在使用 WinPcap 学习网络编程。这是片段:

int ip_hlen = (ih->ver_ihl & 0xf) * 4; /* get ip header length */
tcp_header *th = (tcp_header *) ((u_char*)ih + ip_len);
int tcp_hlen = (ntohs(th->th_len_resv_code) & 0xf000) >> 12)*4; /* get tcp header length */
Run Code Online (Sandbox Code Playgroud)

问题是为什么ntohs只有在获取 tcp_hlennot时才使用ip_hlen
事实上,ntohs只接受u_short作为参数解释一点。http://msdn.microsoft.com/en-us/library/windows/desktop/ms740075%28v=vs.85%29.aspx

我仍然对何时使用 ntohs 何时不使用感到困惑。

以下是 IP 和 TCP 数据包定义的结构:

/* ipv4 header */
typedef struct ip_header {
    u_char ver_ihl;         /* version and ip header length */
    u_char tos;             /* …
Run Code Online (Sandbox Code Playgroud)

c c++ network-programming winpcap libpcap

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

如何在Mac OS X上安装Python libpcap模块

我开始研究python嗅探器项目.我想使用pcap模块,但我的电脑总是说"没有名为pcap的模块".我读到libpcap和pcap附带OS X但实际上它不起作用......

我在网上做了很多研究,仍然无法运行我的python代码.我怎么做运行/链接或安装pcap?

请注意,我最近更新到OSX Yosemite(但我不知道pcap之前是否有效).

python macos sniffer pcap libpcap

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

Wireshark如何解释字节顺序?

我正在使用802.11 radiotap标头制作我自己的解析器,它指出数据包格式是这种格式,长度为2个字节:

在此处输入图片说明

在Wireshark中,标头的十六进制是以下形式,其中2个字节19 00是长度字段,但是Wireshark忽略尾随的00,并将其解释为legnth 25(十进制),而不是长度6400(十进制):

在此处输入图片说明

Wireshark如何(正确)知道正确地解释数字?

上面的链接说长度存储在little endian中,而我的系统是little endian,所以我不确定在那前面发生了什么?

c packet-capture wireshark libpcap 802.11

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

链接新版本的libpcap库

我想在CentOS 5.5机器上安装和使用libpcap的最新版本(1.1.1).我通过以下方式配置,编译和安装了新的libpcap库:

[dima@localhost libpcap-1.1.1]$ ./configure
[dima@localhost libpcap-1.1.1]$ make
[dima@localhost libpcap-1.1.1]$ sudo make install
Run Code Online (Sandbox Code Playgroud)

但是当我尝试链接libpcap共享库(使用-lpcap链接器标志)时,我的应用程序链接到旧版本的libpcap库(使用pcap_lib_version()API调用验证).

我需要做什么才能链接到新的libpcap库?

提前致谢

linux linker shared-libraries pcap libpcap

0
推荐指数
1
解决办法
4848
查看次数

在不使用libpcap的情况下在linux中进行数据包嗅探

我已经获得了大学课程(网络工程)的项目,该项目涉及编写数据包嗅探器,可以捕获和识别IPv4,IPv6,TCP,UDP,IP,ICMP等数据包并显示其内容.

最初我们被指示使用libpcap来做这件事,但我们刚刚被一位大学技术人员告知,目前的安装(Arch linux)不可能使用libpcap.

还有哪些方法可以在C中创建不使用libpcap的数据包嗅探器?

我不是要求这个项目的答案,我只是在问方向,我应该从哪里开始?

c packet-sniffers libpcap

0
推荐指数
1
解决办法
2402
查看次数

分组数据拦截和修改

我希望能够在tcp客户端的tcp流中拦截/修改数据.pcap的示例显示了如何解析tcp包头/有效负载.但是假设,我想在tcp客户端读取之前修改数据包有效负载,或者完全丢弃数据包.我怎么能用pcap capure做到这一点?

pcap libpcap

0
推荐指数
1
解决办法
4614
查看次数

运行一个简单的libpcap示例时出错

我正在尝试编译一个简单的libpcap示例,

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

int main(int argc, char *argv[])
{
  char *dev;
  char errbuf[PCAP_ERRBUF_SIZE];
  struct bpf_program fp;

  char filter_exp[] = "port 23";
  bpf_u_int32 mask;
  bpf_u_int32 net;
  dev = pcap_lookupdev(errbuf);
  if (dev == NULL )
  {
    fprintf(stderr, "couldn't find default device: %s\n", errbuf);
    return (2);
  }
  printf("Device: %s\n", dev);

  //LOOKUP NETMASK and IP
  if (pcap_lookupnet(dev, &net, &mask, errbuf) == -1)
  {
    fprintf(stderr, "can't get netmask for device %s\n", dev);
    net = 0;
    mask = 0;
  }

  printf("lookup\n");

  pcap_t *handle;
  printf("handle defined\n");
  handle …
Run Code Online (Sandbox Code Playgroud)

c network-programming tcpdump pcap libpcap

0
推荐指数
1
解决办法
463
查看次数

如何从头开始编写pcap文件,修饰libpcap函数?

我有这段代码,可以很好地用libpcap编写一个pcap文件(仅用于测试的以太网协议):

struct ethernet {
  u_char        mac1[6];
  u_char        mac2[6];
  u_short       protocol;
};

int main() {
  pcap_t *pd;
  pcap_dumper_t *pdumper;

  pd = pcap_open_dead(DLT_EN10MB, 65535);
  pdumper = pcap_dump_open(pd, "test.pcap");

  struct pcap_pkthdr packet_header;
  struct timeval ts;

  packet_header.ts = ts;
  packet_header.caplen = sizeof(struct ethernet);
  packet_header.len = sizeof(struct ethernet);

  struct ethernet ethernet;

  bzero(ethernet.mac1, 6);
  bzero(ethernet.mac2, 6);
  ethernet.protocol = 8977; // randomly choose
  pcap_dump((u_char*)pdumper, &packet_header, (const u_char*)&ethernet);
  pcap_close(pd);
  pcap_dump_close(pdumper);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是我想尝试不使用pcap函数,所以我开始修饰上面使用的函数。

这是我发现的来源:

pcap_open_dead函数:http ://www.wand.net.nz/trac/libtrace/browser/lib/pcap_open_dead.c?rev=808a478a2459f3cf0e8bf927fcaad371138efb20

pcap_dump_open,pcap_dump等:http : //www.opensource.apple.com/source/libpcap/libpcap-2.1/libpcap/savefile.c

所以,这是我的想法:

pcap_open_dead函数是无用的,只是实例化一个pcap_t结构(我不想在我的代码中使用)并用参数填充其值。

pcap_dump_open返回一个pcap_dumper_t(似乎就像一个FILE *),只是打开文件并在其中写入标题(如果我们不关心错误处理的话)。顺便说一句,似乎它给sf_write_header提供了“ p-> tzoff”作为参数,该参数尚未在我的代码中初始化(并且仍在工作)。关于链接类型,在我们的例子中,它等于1。 …

c pcap libpcap

0
推荐指数
1
解决办法
3545
查看次数

如何使用c中的pcap执行扫描附近的wifi ap

基本上我想要一个简单的C代码,它说明了在混杂模式下捕获数据包并从中提取出ssid.

EDIT1

我正在编写我编写的代码来执行基本的嗅探.

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

int main(int argc, char *argv[]){
    pcap_t *handle;
    struct pcap_pkthdr header;
    const u_char *packet;
    int i;

    char *dev, errbuf[PCAP_ERRBUF_SIZE];
    //      dev = pcap_lookupdev(errbuf);
    dev = argv[1];
    if( dev == NULL ){
            fprintf(stderr, "Couldn't find default device\n");
            return 0;
    }
    printf("Device: %s\n", dev);
    handle = pcap_open_live( dev , BUFSIZ , 0 , 1000 , errbuf);
    if( handle == NULL ){
            fprintf(stderr , "couldn't open device %s: %s\n" , dev , errbuf);
            return 0;
    }
    else{ …
Run Code Online (Sandbox Code Playgroud)

c sockets pcap libpcap 802.11

-3
推荐指数
1
解决办法
871
查看次数