- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我遇到了一些无法正确编译的函数的问题。它们几乎是从示例程序中借用的,以便更好地理解网络编程的工作原理,并查看我是否可以使用 RAW 套接字建立可靠的 TCP 连接(3 次握手)。这些是函数:
void recieve(u_char *args, const struct pcap_pkthdr *pkthdr, const u_char *buffer)
{
const int one = 1;
u_char *ptr;
int LEN = args; /* FIRST WARNING POINTS HERE */
struct ipheader *ip;
struct tcpheader *tcp;
ip = (struct ipheader *)(buffer + LEN);
tcp = (struct tcpheader *)(buffer + LEN + sizeof (struct ipheader));
printf("%d\n", LEN);
printf("Packet recieved. ACK number: %d\n", ntohl (tcp->tcph_seqnum));
printf("Packet recieved. SEQ number: %d\n", nthol (tcp->tcph_acknum));
s_seq = nthol (tcp->tcph_seqnum);
send_syn_ack(s_seq, dip, sip, dport, sport);
sleep(100);
}
和
void capture()
{
pcap_t *pd;
bpf_u_int32 netmask;
bpf_u_int32 localnet;
char *filter = ("ip dest host %s", dstip); /* SECOND WARNING POINTS HERE */
char *dev = NULL;
char errbuf[PCAP_ERRBUF_SIZE];
struct bpf_program filterprog;
int dl = 0, dl_len = 0;
if ((pd = pcap_open_live(dev, 1514, 1, 500, errbuf)) == NULL)
{
fprintf(stderr, "cannot open device %s: %s\n", dev, errbuf);
exit(1);
}
pcap_lookupnet(dev, &localnet, &netmask, errbuf);
pcap_compile(pd, &filterprog, filter, 0, localnet);
if (pcap_setfilter(pd, &filterprog) == - 1)
{
fprintf(stderr, "cannot set pcap filter %s: %s\n", filter, errbuf);
exit(1);
}
pcap_freecode(&filterprog);
dl = pcap_datalink(pd);
switch(dl) {
case 1:
dl_len = 14;
break;
default:
dl_len = 14;
break;
}
if (pcap_loop(pd, -1, recieve, (u_char *)dl_len) < 0) { /* LAST WARNING HERE */
fprintf(stderr, "cannot get raw packet: %s\n", pcap_geterr(pd));
exit(1);
}
}
这些是错误信息:
In function ‘recieve’:
warning: initialization makes integer from pointer without a cast
In function ‘capture’:
warning: initialization makes pointer from integer without a cast
Warning: cast to pointer from integer of different size
即使在示例程序中,我也会收到第一个也是最后一个警告。这两个函数有什么用吗?是否有更简单、更清晰的方法来实现它们的目的?如果没有,我应该怎么做才能摆脱这些警告?谢谢:)
最佳答案
u_char 不是标准类型。等效的是 uint8_t,它是 C99 标准的一部分。大致第一个错误请尝试,
int LEN = *参数
uint8_t 在库 stdint.h 中定义
在第二个错误的地方,进行如下操作,
`char *s = "ip dest host";
char *filter = (char *)malloc(strlen(s) + strlen(dstip) + 1);
strcpy(filter,s);
strcat(filter,dstip);'
请包括字符串函数 strlen、strcpy 和 strcat。
关于c - tcp raw 程序中的 PCAP 函数。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11724966/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 5年前关闭。 Improve this qu
大家好,我如何收集 pcap 文件中每个数据包的数据包长度?非常感谢 最佳答案 我推荐一个很少有人知道的高科技方法:阅读文档。 man pcap 告诉我们实际上有两种不同的长度可用:
我在我的 linux 系统上安装了 pcap 库,但是当包含它时,我得到了错误 /usr/include/pcap/bpf.h:88:1: error: unknown type name ‘u_i
是否有任何简单的方法可以使用 tshark 为与特定日期时间范围相关的数据包创建 pcap 文件? , tcpdump或其他命令行工具? tshark -R与 frame.time看起来很有希望,但我
我有Tcpdump生成的“ .pcap”文件。我一直在寻找一种使用PHP读取文件中数据的方法。我尝试了几种可用的方法,但是我唯一能看到的是,有一些数据包带有针对每个数据包的时间戳记。我试图进一步阅读,
我有一个很大的 pcap 文件,我想生成一个仅包含前十分钟流量的新 pcap。我可以使用 tcpdump 执行此操作吗?我在网上看到过 editcap ,但如果可能的话我想使用 tcpdump 。 最
我有一个很大的 pcap 文件,我想生成一个仅包含前十分钟流量的新 pcap。我可以使用 tcpdump 执行此操作吗?我在网上看到过 editcap ,但如果可能的话我想使用 tcpdump 。 最
我从一个答案中阅读了文档: ntohs 函数采用 TCP/IP 网络字节顺序(AF_INET 或 AF_INET6 地址族)的 16 位数字,并以主机字节顺序返回一个 16 位数字。 请举例说明,什么
我有一堆通过 tcpdump 获得的 pcap 文件。我需要在所有文件中搜索特定关键字并记录哪些文件包含这些字符串。有没有办法使用 tcpdump 命令自动搜索这些关键字? 最佳答案 使用 tshar
我卡住了。 我使用 PCAP.NET 读取 .PCAP 文件并将数据包写入数据库。现在我可以查询数据库并取回与约束匹配的数据包。我需要一种方法将结果写入新的 .PCAP 文件。 问题是,据我所知,生成
我需要嗅探特定 Linux 用户 (UID) 的流量。我正在使用 iptables/NFLOG ( http://wiki.wireshark.org/CaptureSetup/NFLOG ) 来做这
作为我正在进行的实验室练习的一部分,有人问我; 使用 tcpdump 从 tcpdumpep1.pcap 读取数据包并过滤来自 IP 地址 184.107.41.72 和端口 80 的数据包。将这些数
有没有办法使用 Java 将 pcap-ng 文件转换为 pcap(不使用 editcap)? 我注意到一些 pcap 被读取为 .pcap 格式,但当我查看 Wireshark“摘要”时,它被识别为
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。 我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。 关闭
我正在用nodejs开发一个数据包捕获应用程序。 当我发出命令npm install pcap时,出现以下错误: 谁能帮我解决一下吗?谢谢 最佳答案 谢谢,这个( enter link descrip
我对JNetPcap很陌生,我仍在寻找它的方法,我正在尝试为我的项目构建一个数据包嗅探器,最近我正在尝试打印输出数据包信息通过附加我正在使用的 pcap.loop() 中的信息到 JTextArea
我有由 Tcpdump 生成的“.pcap”文件。我一直在寻找一种使用 PHP 读取文件中数据的方法。我已经尝试了几种可用的方法,但我唯一能看到的是有一定数量的数据包,每个数据包都有时间戳。我试图进一
如何确定通过 Makefile 编译/安装的 C 源代码中包含的 pcap.h 文件? 具体来说,它是一个通过以下方式安装的 Ruby 库 (pcaprub): ruby extconf.rb &&
运行“tcpdump -w 1.pcap”时需要限制文件大小。我尝试使用键“-C”来执行此操作,但是当我添加它时,我收到错误“权限被拒绝”。所以: > sudo tcpdump -w 1.pcap t
所以...我正在尝试使用RawCap捕获到本地主机的流量 当我运行rawcap时,它会在cmd提示符下报告数据包-但转储文件始终为空。 任何想法(我尝试使用admin privs运行) 最佳答案 您应
我是一名优秀的程序员,十分优秀!