我正在帮助IM的开发人员测试他们的安全性和问题,他们想要一个在他们的服务器上报告的tcp重置漏洞的例子。我有编译问题,有人可以帮忙吗? 错误日志: http://pastie.org/4212921
答案 0 :(得分:2)
从第一个报告的错误开始几乎总是一个好主意。
在您的情况下,首次报告的错误是:
reset-tcp.c:51: error: ‘u_char’ undeclared (first use in this function)
u_char
不是标准的C类型;它可能是unsigned char
的typedef。
您的源文件具有以下#include
指令:
#include <libnet.h>
#include <stdio.h>
<stdio.h>
无法定义u_char
,因此必须在<libnet.h>
中定义 - 特别是在源文件所依赖的<libnet.h>
版本中。
这是一个非标准的标题(它没有安装在我的系统上),所以我最好的猜测是你使用的是不同版本的libnet,而不是reset-tcp.c
设计用来实现的。
我知道这不能解决你的问题,但它应该给你一个很好的起点。
编辑:
我刚刚在我的Ubuntu 12.04系统(libnet1
版本1.1.4-2.1)上安装了libnet1-dev
,libnet1-doc
和libnet1
个软件包。您的源文件现在编译(在加入第74和75行之后)并发出一些警告。类型u_char
在/usr/include/i386-linux-gnu/sys/types.h
中定义,libnet.h
间接包含该类型。
我收到一些警告:
291.c:95:1: warning: format ‘%X’ expects argument of type ‘unsigned int *’, but argument 3 has type ‘u_char *’ [-Wformat]
291.c:95:1: warning: format ‘%X’ expects argument of type ‘unsigned int *’, but argument 4 has type ‘u_char *’ [-Wformat]
291.c:95:1: warning: format ‘%X’ expects argument of type ‘unsigned int *’, but argument 5 has type ‘u_char *’ [-Wformat]
291.c:95:1: warning: format ‘%X’ expects argument of type ‘unsigned int *’, but argument 6 has type ‘u_char *’ [-Wformat]
291.c:95:1: warning: format ‘%X’ expects argument of type ‘unsigned int *’, but argument 7 has type ‘u_char *’ [-Wformat]
291.c:95:1: warning: format ‘%X’ expects argument of type ‘unsigned int *’, but argument 8 has type ‘u_char *’ [-Wformat]
291.c:116:1: warning: format ‘%i’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat]
你应该注意的;代码当前尝试在int
(u_char
)个对象中存储unsigned char
值。
建议:
告诉我们您正在使用的操作系统和libnet
版本;如果我们有这些信息,某人可能会提供更好的建议。
让我们知道源代码的来源,看看您是否可以找到它应该使用的libnet
版本。
答案 1 :(得分:0)
您需要安装libnet
及其开发包。
在Debian下,您可以通过安装软件包libnet1
和libnet-dev
来完成此操作。