次序基于linux平台的libpcap源代码剖析源代码

gdwkb ,Aug 29 13:40 , 文章教程 , 评论(0) , 引用(0) , 阅读(125) , 本站原创 | |
次序  机制  系统  大年夜  用户  接口  繁杂  软体  句柄  装备  函数  以太  类型  底层  数据  细致  平台  平安  号令  任务  代码  协定  文件  方法  比拟  自力  惯例  内核  源代码  局部  框架  装置  除此而外  手段  本文  状况  条件  旁路  如许  旌旗  数据结构  狭义  笼统  官方站点  功用  肉食  以太网  美国  希冀  充沛
Ji∴Yu∴linuxPing∴Tai∴De∴libpcapYuan∴Dai∴Ma∴Po∴Xilibpcap 是
unix/linux 平台下的收集数据包捕捉函数包!大年夜少数收集监控软体都以它为基础Libpcap 能够正在尽大年夜少数类 unix
平台下任务!本文剖析了 libpcap 正在 linux 下的源代码完成!此中重点是 linux
的底层包捕捉机制和过滤器设置方法!同时也简明的议论了 libpcap 使用的包过滤机制 BPF
收集监控

大年夜少数的现代操纵系统都供给了对底层收集数据包捕捉的机制!正在捕捉机制之上能够建立收集监控使用软体收集监控也常简称为sniffer!其最后的手段正在于对收集通信状况停止监控!以对收集的壹些异常状况停止调试处理但
随着互连网的快速提高和收集进犯行动的屡次出现!保护收集的运转平安同样成为监控软体的另壹个主要手段例如!收集监控正在路由器!防火墙!侵略检查等方面使
用也很广泛除此而外!它也是壹种比拟有效的黑客手腕!例如!美国当局平安部分的"肉食动物"计划
包捕捉机制
从狭义的角度上看!壹个包捕捉机制包含叁个主要局部最底层是针对特定操纵系统的包捕捉机制!最高层是针对用户次序递次的接口!第叁局部是包过滤机制
分歧的操纵系统完成的底层包捕捉机制能够
是不壹样的!但从方法上看一模一样数据包惯例的传输道路依次为网卡!装备驱动层!数据链路层!IP
层!传输层!最后到达使用次序递次而包捕捉机制是正在数据链路层增加壹个旁路处理!对发送和接收到的数据包做过滤/缓冲等相干处理!最后间接传送到使用次序递次
值得留心的是!包捕捉机制实在不影响操纵系统对数据包的收集栈处理对用户次序递次而言!包捕捉机制供给了壹个壹致的接口!使用户次序递次只需求繁杂的调用若干函数
就可以取得所希冀的数据包如许壹来!针对特定操纵系统的捕捉机制对用户透明!使用户次序递次有比拟好的可移植性包过滤机制是对所捕捉到的数据包依据用户的要
求停止挑选!终究只把满意过滤条件的数据包传送给用户次序递次
Libpcap 使用次序递次框架
Libpcap
供给了系统自力的用户级别收集数据包捕捉接口!并充沛考虑到使用次序递次的可移植性Libpcap 能够正在尽大年夜少数类 unix 平台下任务!参考资料
A 中是对基于 libpcap 的收集使用次序递次的壹个细致列表正在 windows 平台下!壹个与libpcap 很相似的函数包 winpcap
供给捕捉功用!其官方站点是
http://winpcap.polito.it/
  
Libpcap 软体包可从  
http://www.tcpdump.org/
下载!然后依此施行以下叁条号令便可装置!但假设期看 libpcap 能正在 linux 上一般任务!则必须使内核支撑"packet"协定!也即正在编译内核时打开建设选项 CONFIG_PACKET
./configure
./make
./make install
libpcap
源代码由 20 多个 C 文件形成!但正在 Linux 系统下实在不是壹切文件都用到能够经过检查号令 make
的输进了解实践所用的文件本文所针对的libpcap 版本号为 0.8.3!收集类型为惯例以太网Libpcap
使用次序递次从方法上看很繁杂!下面是壹个繁杂的次序递次框架
char  device。 / 用来捕捉数据包的收集接口的称号 /
pcap_t  p。 / 捕捉数据包句柄!最主要的数据结构 /
struct bpf_program fcode。 / BPF 过滤代码结构 /
/ 第壹步查找能够捕捉数据包的装备 /
device = pcap_lookupdev
/ 第贰步创立捕捉句柄!准备停止捕捉 /
p = pcap_open_live
/ 第叁步假设用户设置了过滤条件!则编译和装置过滤代码 /
pcap_compile
pcap_setfilter
/ 第肆步进进循环!重复捕捉数据包 /
for

while)) == NULL)。
/ 第伍步对捕捉的数据停止类型转换!转化成以太数据包类型 /
eth = ptr。
/ 第陆步对以太头部停止剖析!辨别所包含的数据包类型!做进壹步的处理 /
if)  

if)  


/ 最后壹步封闭捕捉句柄!壹个繁杂技能是正在次序递次初始化时增加旌旗灯号处理函数!
以便正在次序递次参与前施行本条代码 /
pcap_close
检查收集装备
libpcap
次序递次的第壹步通常为正在系统中找到适宜的收集接口装备收集接口正在Linux
收集系统中是壹个很主要的概念!它是对细致收集硬件装备的壹个笼统!正在它的下面是细致的网卡驱动次序递次!而其上则是收集协定层Linuxlibpcap 是 unix/linux 平台下的收集数据包捕捉函数包!大年夜少数收集监控软体都以它为基础Libpcap 能够正
飞扬黑客网  http://www.gdwkb.cn
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]