首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>其他编程>正文

开源空间 网络安全工具开发函数库Libnet

http://www.oklinux.cn  2007-10-08  来源:  sixth  会员收藏  游客收藏  【 】 

前言

本文主要介绍几个在UNIX系统平台上开发网络安全工具时最常用的library。此外还提供一些如何使用这些开发库进行网络安全工具开发的设计框架和流程。希望能和对网络安全工具开发有兴趣的朋友共同交流,互相促进。

 

众所周知,基于socket的网络编程已成为当今不可替代的编程方法。这种编程思想将网络通讯当作“文件”描述字进行处理,对这个“网络文件”(即 socket,套接字/套接口)的操作从编程者的角度来讲与普通的文件操作(如读、写、打开、关闭等)大同小异,从而极大地简化了网络程序开发过程。

 

在众多的网络安全程序、工具和软件中都是基于socket设计和开发的。由于在安全程序中通常需要对网络通讯的细节(如连接双方地址/端口、服务类型、传输控制等)进行检查、处理或控制,象数据包截获、数据包头分析、数据包重写、甚至截断连接等,都几乎在每个网络安全程序中必须实现。为了简化网络安全程序的编写过程,提高网络安全程序的性能和健壮性,同时使代码更易重用与移植,最好的方法就是将最常用和最繁复的过程函数,如监听套接口的打开/关闭、数据包截获、数据包构造/发送/接收等,封装起来,以API library的方式提供给开发人员使用。

 

C开发库简介

 

在Unix系统平台上的网络安全工具开发中,目前最为流行的C API library有libnet、libpcap、libnids和libicmp等。它们分别从不同层次和角度提供了不同的功能函数。使网络开发人员能够忽略网络底层细节的实现,从而专注于程序本身具体功能的设计与开发。其中,

 

* libnet提供的接口函数主要实现和封装了数据包的构造和发送过程。

 

* libpcap提供的接口函数主要实现和封装了与数据包截获有关的过程。

 

* libnids提供的接口函数主要实现了开发网络入侵监测系统所必须的一些结构框架。

 

* libicmp等相对较为简单,它封装的是ICMP数据包的主要处理过程(构造、发送、接收等)。

 

利用这些C函数库的接口,网络安全工具开发人员可以很方便地编写出具有结构化强、健壮性好、可移植性高等特点的程序,如scanner、sniffer、firewall、IDS等。

 

libnet

 

libnet库的最新版本为1.0.0,它一共约7600行C源代码,33个源程序文件,12个C头文件,50余个自定义函数,提供的接口函数包含15种数据包生成器和两种数据包发送器(IP层和数据链路层)。目前只支持IPv4,不支持IPv6。已经过测试的系统平台包括:

 

* OpenBSD 2.6snap, 2.5, 2.4, 2.3, 2.2 (i386)

* FreeBSD 4.0-STABLE, 3.3-STABLE, 3.2-RELEASE, 3.1-CURRENT, 3.0, 2.2 (i386)

* NetBSD 1.3.2 (i386)

* BSD/OS 3.x (i386)

* BSDi 3.0 (i386)

* Linux 2.2.x, 2.0.3x, 2.1.124 (i386, alpha) (libc: 2.4.x, glibc: 2.0.x)

* Solaris 7 (SPARC, gcc 2.7.2[13], 2.8.2), 2.6 (SPARC, gcc 2.8.2),

2.5.x (SPARC, gcc 2.7.2[13])

* IRIX 6.2

* MacOS 5.3rhapsody (powerpc)

 

libnet提供的接口函数按其作用可分为四类:

 

* 内存管理(分配和释放)函数

* 地址解析函数

* 数据包构造函数

* 数据包发送函数

 

以下分别列出这些接口函数及其功能(其参数含义简单易懂,不再解释):

 

★ 内存管理函数

 

单数据包内存初始化:

int libnet_init_packet(u_short packet_size, u_char **buf);

 

单数据包内存释放:

void libnet_destroy_packet(u_char **buf);

 

多数据包内存初始化:

int libnet_init_packet_arena(struct libnet_arena **arena,

u_short packet_num, u_short packet_size);

 

访问多数据包内存中的下一个数据包:

u_char *libnet_next_packet_from_arena(struct libnet_arena **arena,

u_short packet_size);

 

多数据包内存释放:

void libnet_destroy_packet_arena(struct libnet_arena **arena);

 

★ 地址解析函数

 

解析主机名:

u_char *libnet_host_lookup(u_long ip, u_short use_name);

 

解析主机名(可重入函数):

void libnet_host_lookup_r(u_long ip, u_short use_name, u_char *buf);

 

域名解析:

u_long libnet_name_resolve(u_char *ip, u_short use_name);

 

获取接口设备IP地址:

u_long libnet_get_ipaddr(struct libnet_link_int *l,

const u_char *device, const u_char *ebuf);

 

获取接口设备硬件地址:

共4页: 上一页 1 [2] [3] [4] 下一页

上一篇:在Linux操作系统下共享库编程的方法介绍   下一篇:Linux操作系统下的GTK图形界面编程方法


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·在Linux操作系统下共享库编程的方法介绍
·Linux系统安装Monodevelop开发工具
·Linux系统中BSD套接口开发基础介绍
·在Ubuntu下建立PowerPC405EP的开发环境
·如何在Ubuntu 7.0上实现C/C++开发环境
·Linux程序设计入门 系统进程的详细介绍
·基于Eclipse的红帽开发者工作站beta版发布
·介绍几种Linux下快被人们忽略的编程语言
·Linux socket编程实例:echo服务器程序
·GNU/Linux应用程序编程:用管道进行编程
·uClinux系统上运行自已编写的Hello程序
·Linux系统下设置环境变量三法
·Linux系统下设置环境变量Path的方法
·Ubuntu 7.0 Linux建立C与GTK的开发环境
·实例解析:编写简单的Linux服务控制脚本
·Linux Kernel 2.6.25-rc1已经释出了
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Linux_shell 特殊符号的简单介绍
·Linux Shell学习小记
·Linux下的编程环境知识点滴
·Linux内核学习记
·Linux编程时获取当前时间实例解析
·Linux操作系统下java中文无法显示问题
·Linux系统中限制用户进程CPU及内存占用
·Linux内核引导参数详解
·Linux环境下Wine的中文显示以及freetyp
·新手学堂 Linux的sort命令使用
·Linux 2.6内核中sysfs文件系统简述
·Linux程序开发的一些基础概念
  阅读排行
·Linux socket编程实例:echo服务器程序
·Linux程序设计入门 系统进程的详细介绍
·GNU/Linux应用程序编程:用管道进行编
·如何在Ubuntu 7.0上实现C/C++开发环境
·JSP应用语法详解大全 (1)
·Linux系统中BSD套接口开发基础介绍
·JSP应用语法详解大全 (2)
·JSP开发入门
·浅析JSP开发中的对象和范围属性
·在Linux操作系统下共享库编程的方法介
·JSP应用语法详解大全 (3)
·基于Eclipse的红帽开发者工作站beta版
·Linux系统安装Monodevelop开发工具
·Linux系统下设置环境变量Path的方法
·JSP单页面网站文件管理器
网摘收藏: