正在学习 PolicyKit !
正在学习 PolicyKit 。
PolicyKit 允许程序中的一部分使用 Root 权限,并且可以记住此权限,这对于 Cugb Freer 中的流量统计功能至关重要,毕竟,在 Linux 下使用 libpcap 是需要 Root 权限的,而 Cugb Freer 显然不能以 Root 权限运行。
想法是在其中添加一页,实现流量统计,此功能使用 PolicyKit 实现 Root 权限的 libpcap,同时让它记住权限,这样以后就不需要密码了。
国内关于 PolicyKit 的文章只有 TualatriX 那两篇残缺不全的……看 Ubuntu Tweak 源码的话,那个又是 Python 写的……这次要是学明白了,一定要写篇解析出来,呵呵~看手册去~
pcap_pkthdr 中 len 和 caplen的区别(转载)
libpcap捕获时,使用pcap_loop之类的函数,在调用处理的handle的时候,返回的第一个参数的类型为pcap_pkthdr,第二个参数为uint8_t的指针,前者中有两个数据域的东东:caplen和len,如下:
struct pcap_pkthdr {
struct timeval ts; /* time stamp */
bpf_u_int32 caplen; /* length of portion present */
bpf_u_int32 len; /* length this packet (off wire) */
};
caplen——真正实际捕获的包的长度
len——这个包的长度
因为在某些情况下你不能保证捕获的包是完整的,例如一个包长1480,但是你捕获到1000的时候,可能因为某些原因就中止捕获了,所以caplen是记录实际捕获的包长,也就是1000,而len就是1480。
libpcap——Linux下抓包与流量监控
CugbFreer中需要流量监控的功能,然而调用其他软件的话,很显然不能满足要求,怎么办呢?
查了查,在Linux中有个库叫做libpcap可以胜任。libpcap是一个简单而又强大的数据包捕获函数库,可以在多种操作系统上运行。
关于libpcap有几个很好的教程:
http://www.tcpdump.org/pcap.htm (官方向导,英文,写得很适合新手)
http://blog.csdn.net/bat603/archive/2006/09/04/1175729.aspx (主要函数中文说明)
http://blog.csdn.net/bat603/archive/2006/09/04/1176251.aspx (入门源码)
