- 博客(346)
- 资源 (27)
- 收藏
- 关注
原创 【linux c开发】fork进程实例
#include #include #include #include #include void main(){ pid_t pid; pid = fork(); if(pid { perror("fork error!\n"); strerror(1); } el
2013-08-12 17:35:55 1104
原创 SMP与AMP-UMA与NUMA概念
NUMA架构在中大型系统上一直非常盛行,也是高性能的解决方案,在系统延迟方面表现都很优秀。Windows一向都没有在NUMA架构上有多少表现机会,AMD的多路系统大多也会用在UNIX/Linux上。Intel如期进入了NUMA架构的怀抱,英特尔最新的服务器处理器至强5500是一项重大的结构变革。与上一代至强处理器相比,至强5500采用了非一致性存储结构(NUMA non-unified memor
2013-08-12 17:26:57 4475
原创 gcc static静态编译选项提示错误修正(/usr/lib/ld: cannot find -lc)
用gcc静态编译C程序时显示出:/usr/lib/ld: cannot find -lc/usr/lib/ld: cannot find -lgcc_s/usr/lib/ld: cannot find -lm/usr/lib/ld: cannot find -lgcc_s的错误。主要问题出在静态编译时需要链接静态库,将动态库编译到文件中,去掉此参数是没问题。非静态编译时 l
2013-08-10 10:23:37 23690
原创 【协议分析】H323标准规范
1、H323,SIP等VOIP协议规范说明http://www.protocols.com/Protocols.com offers a comprehensive listing of data communications protocols, their functions in respect to the OSI model, the structure of the pro
2013-07-26 17:02:46 1788
原创 vim、ctags、cscope配置及使用
windows下流行的源码阅读软件是source insight,而linux则没有与其可匹敌图形化的源码阅读软件,现在日趋流行的eclipse开发软件,虽然可以较好的支持源码中符号之间相互跳转,但总体感觉不是十分强大和好用,可能因为eclipse是通过cdt插件的形式来支持c/c++项目,很多方面表现还有待提高。而且eclipse在终端下无法使用,而今天的主角vim+ctags+cscope可谓
2013-07-23 14:42:01 1676
原创 32位和64位平台锁大小比较
#include "pthread.h"#include "stdlib.h"#include "stdio.h"int main(){ printf("Mutex:%d\nSpin:%d\nRwLock:%d\n",sizeof(pthread_mutex_t),sizeof(pthread_spinlock_t),sizeof(pthread_rwlock_t));
2013-07-10 15:54:42 1096
原创 PF_Ring性能提升使用说明
pf_ring通过用户态、内核态共享内存达到提高包处理效率的目的。1、PF_Ring加载的3种模式,模式0和调用libpcap性能相同,模式1和模式2相当于0 coyp性能会提升,官网http://www.ntop.org/products/pf_ring/。As of PF_RING 4.1, when inserting the pf_ring module it is pos
2013-07-02 12:52:10 6896
原创 Makefile wildcard通配符使用方法。
在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTERN...)。在Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表。如果不存在任何符合此模式的文件,函数会忽略模式字符并返回空。需要注意的是:这种情况下规则中通配符的
2013-06-22 12:11:24 2328
原创 linux JDK与Tomcat安装及错误解决方案
1.上传jdk-6u17-linux-i586.bin和apache-tomcat-6.0.20.tar.gz到/usr2.安装JDK$chmod a+x jdk-6u17-linux-i586.bin$ ./jdk-6u17-linux-i586.bin$ vi /etc/profile#添加如下export JAVA_HOME=/usr/jdk1.6.0_17exp
2013-06-01 00:42:00 1038
原创 防火墙开发硬件选型
网络设备最经常用到的,也是最重要的一个安全设备就是防火墙了。作为一款IT设备,无非两种选择方式。一种是购买品牌防火墙成品,另一种是自己DIY防火墙。两种方式各有自己的优劣,购买品牌防火墙最大的问题莫过于是投入较多的资金,却可以得到更多的后期维护。而自己 DIY防火墙的最大弊端就在于需要一个专业的人员来定制,还要投入更多的精力做后期的维护。 作为一个热血IT青年,自己DIY一个防火墙设
2013-05-22 13:07:35 3255
原创 【协议识别】H323协议数据流识别
H323信令子集H225和H245。H323是一个信令族,包含H225和H245等子集,工作模式有快慢之分。H225负责维护通道,H245负责能力协商1、H225:解析H225的connect连接可获取H245的数据流连接的IP地址和端口src->dst setup:发起呼叫,H225数据包中包含当前信令流的源目的IP地址和端口号。dst->src:callprocessing和ale
2013-05-19 18:33:22 5705
原创 【协议识别】Wireshark重要过滤条件
1、表示包含关系的数据流信息过滤tcp contains "youku.com"2、表示包含关系的Hex负载数据内容过滤udp[8:2]==53493、IP端口过滤ip.src == a.b.c.d and tcp.port==2345
2013-05-19 17:50:47 1293
原创 【协议识别】SIP协议解析数据流
1、发送报文中INVITE sip,通过解析c=IN IP4 127.0.0.1获取源IP地址,通过解析m=audio 5000 RTP/AVP 0获取源端口信息,从而关联数据流。报文内容如下:INVITE sip:[email protected] SIP/2.0Via: SIP/2.0/UDP 127.0.0.1:45298;branch=z9hG4bKrDQpyyaNWz;rport
2013-05-19 17:37:05 3431 3
原创 Linux 服务器SSH时乱码
Linux服务器乱码问题设置: 1.环境变量设置LANG="zh_CN.GB18030" //ssh乱码直接修改此处将此处加入.bash_profile中LANGUAGE="zh_CN.GB18030;zh_CN:zh:en_US.UTF-8:en_US.en"2.vim 设置设置termencoding为utf-8 vim //根据termencodin
2013-05-13 15:30:27 815
原创 64位与32位linux c开发时默认字节对齐值
64位与32位linux c开发时默认字节对齐方式分别为8和4。1、64位机器sizeof的值为16struct A{char a;int b;int c;}2、32位机器sizeof的值为123、空间换时间如果在编程的时候要考虑节约空间的话,那么我们只需要假定结构的首地址是0,然后各个变量按照上面的原则进行排列即可,基本的原则就是把结构中的变量按照类型
2013-05-07 16:48:24 5488 2
原创 协议内容审计模块设计与开发
typedef struct { ip地址等信息;}PACKET_S;typedef struct { char *pPrivData[0];}RESULT_S;typedef int (*PARSE_FUNC)(PACKET_S *pPacket,RESULT_S *pResult);struct parse_map_tag{
2013-05-07 14:04:29 969
原创 Linux 查看64位还是32位系统
1. 从系统查看1.1 uname -a 命令[root@qs-dmm-rh2 ~]# uname -aLinux qs-dmm-rh2 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:43 EDT 2010 i686 i686 i386 GNU/Linux [root@qs-xezf-db2 ~]# uname -aLinux qs-xezf
2013-05-06 16:47:57 754
原创 64位linux c语言开发注意事项
一、64位系统的优势?既然要采用64位系统,首先要知道64位系统的优势所在。对于技术人员来说,完全没有必要去看那些厂家拿出的厚厚的说明书、或者某个研究机构抛出的一堆的数字,64位系统的优势总结起来很简单:内存大、速度快!1、内存大与32位系统相比,64位系统的地址空间大大增大,达到了18PB,18PB究竟是多大呢?说出来有点吓人:4G内存的40亿倍!这么大的空间,不要说内存
2013-05-06 16:27:27 1113
原创 AC_Trie字符串搜索算法介绍
转载:http://www.cnblogs.com/dolphin0520/archive/2011/10/11/2207886.html Trie树 Trie树也称字典树,因为其效率很高,所以在在字符串查找、前缀匹配等中应用很广泛,其高效率是以空间为代价的。一.Trie树的原理
2013-05-03 10:48:47 1256
原创 模块-模块加载时参数设置
对于如何向模块传递参数,Linux kernel 提供了一个简单的框架。其允许驱动程序声明参数,并且用户在系统启动或模块装载时为参数指定相应值,在驱动程序里,参数的用法如同全局变量。使用下面的宏时需要包含头文件。 通过宏module_param()定义一个模块参数:module_param(name, type, perm);name既是用户看到的参数名,又是模块内接受
2013-05-03 10:05:15 1337
原创 模块-内核模块加载命令modprobe使用注意事项
1、要想使用modprobe必须将ko模块文件拷贝到/lib/moudels/uname -r/kernel目录中,然后执行depmod -A否则无法使用modprobe加载模块。[root@localhost kernel]# cp fw.ko /lib/modules/2.6.18-164.el5/kernel/[root@localhost kernel]# depmod -A
2013-05-03 09:55:47 1804
原创 模块-模块开发(用户态和内核态通信-通过参数传递数据)
1、代码示例static struct file_operations cmd_fop = { ioctl: cmd_ioctl,};static int cmd_ioctl (struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg){
2013-05-02 16:23:55 2965
原创 模块-kernel 模块编译(Makefile编写)
发现自己以前写的2.4的模块无法在2.6下面编译使用了,需要用新的Makefile才行。简单的说就像这个样子:
2013-04-22 16:23:11 1144
原创 Netfilter协议过滤功能
Netfilter中的5个钩子点:1]:NF_IP_PRE_ROUTING:刚刚进入网络层的数据包通过此点(刚刚进行完版本号,校验和等检测),源地址转换在此点进行;[2]:NF_IP_LOCAL_IN:经路由查找后,送往本机的通过此检查点,INPUT包过滤在此点进行;[3]:NF_IP_FORWARD:要转发的包通过此检测点,FORWORD包过滤在此点进行;[4]:NF_IP_PO
2013-04-22 16:18:04 1552
原创 netfilter按IP过滤报文
2.6版内核的网络协议栈较2.4版有所改变,比如sk_buff结构中去掉了nh联合体的定义。在2.6内核中我们如果要得到ip数据包的源节点地址,需要使用const struct iphdr *iph = ip_hdr(skb); ip_hdr的定义在linux/ip.h中定义。下面通过一个简单的例子介绍在2.6内核中如何在netfilter上挂载hook函数实现数据包的过滤。
2013-04-22 16:08:04 1519
原创 netfilter按端口过滤报文
1、程序如下:#include #include #include #include #include #include #include #include struct nf_hook_ops nfkiller;//static unsigned short deny_port = 0x5000;unsigned char *deny_port
2013-04-22 15:57:35 1708
原创 【协议识别】FTP主动模式与被动模式介绍
1、FTP主动模式与被动模式都是指服务器主动连接客户端还是被动等待客户端连接2、主动模式信令流:服务器主动连接客户端,所以客户端通过Port命令告诉服务器客户端开放的连接端口,如下端口为9547=37*256 + 75数据流:服务器用20端口连接服务器的9547端口3、被动模式信令流:客户端登陆成功后,客户端发送PASV命令0000 1c c1 de af b
2013-04-20 22:17:47 1007
转载 提高程序并行效率的一点经验
分类: LINUX原文地址:提高程序并行效率的一点经验 作者:GFree_Wind作者:[email protected]博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net 本文的copyleft归[email protected]所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性
2013-04-20 19:06:14 926
原创 用户态与内核态共享内存例程
例子中,用户态程序的KERNEL_VIRT_ADDR就是内核模块打印的地址p ,这里是hard coding(先加载内核模块,再把打印的地址赋值给KERNEL_VIRT_ADDR),可以采用其他的方式传递。 2.6内核验证。//kernel#include linux/config.h>#include linux/module.h>#inclu
2013-04-20 18:57:09 2520
原创 Linux 启动配置相关服务或脚本启动
/etc/rc.d/rc.local直接在上面rc.local加入命令如service network restart保证启动后IP地址设置成功。
2013-04-20 12:51:01 650
原创 [linux 内核]kmalloc/kfree,vmalloc/vfree函数用法和区别
1.kmalloc1>kmalloc内存分配和malloc相似,除非被阻塞否则他执行的速度非常快,而且不对获得空间清零.tiger说明:在用kmalloc申请函数后,要对起清零用memset()函数对申请的内存进行清零。> 2>kamlloc函数原型:#includeVoid *kmalloc(size_t size, int flags);(1)第一个参数是要
2013-04-20 12:41:48 1565
原创 Linux内核源码分析
http://www.kerneltravel.net/kernel-book/%E7%AC%AC%E5%8D%81%E4%BA%8C%E7%AB%A0%20%E7%BD%91%E7%BB%9C/12.2.3.htm12.4.3 sk_buff数据结构的核心内容sk_buff 数据结构中包含了一些指针和长度信息,从而可让协议层以标准的函数或方法对应用程序的数据进行处理,其定义于
2013-04-20 11:26:29 967
原创 Linux程序用户态到内核态移植
Linux环境下,在内核写程序限制很多,相比用户态程序:不能使用C库、不能使用系统调用、理解内核各个部分的实现原理及相关函数的机制及作用、熟悉内核使用的锁机制并仔细处理跟锁相关的细节 之前做过将一个用户态的加密库(包括AES和RSA的实现)移植到内核态使用,主要涉及调试消息的打印,内存空间申请与释放,数据类型的转换,随机数的生成等问题。 没有printf,如何打印消息?内核中可
2013-04-20 11:12:43 1275
原创 Linux内核库函数
当编写驱动程序时,一般情况下不能使用C标准库的函数。Linux内核也提供了与标准库函数功能相同的一些函数,但二者还是稍有差别。 类别函数名功能函数形成参数描述字符串转换simple_strtol把一个字符串转换为一个有符号长整数long simple_strt
2013-04-20 00:48:22 750
转载 Linux内核模块读写文件
在Linux内核中进行文件的读写操作,在一般情况下不推荐这样操作,但在不得已时,也是可以实现的.#include #include #include #include #include #include #include #include #include #include #include MODULE_LICENSE("Dual BSD
2013-04-20 00:41:55 1025
转载 sk_buff结构
http://blog.chinaunix.net/uid-387104-id-1744095.html16.1.4 sk_buff结构http://book.51cto.com 2009-12-11 09:42 宋敬彬/孙海滨 清华大学出版社 我要评论( 00)摘要:《Linux 网络编程》第16章Linux内核中网络部分结构以及分布,本章介绍Linux内核代码的
2013-04-20 00:36:02 937
原创 Linux文件内容输出常用功能命令
1.输出文本文件内容命令cat:cat [option] fileoption:-b:给非空白行编上行号-n:给所有行编上行号-s:多个连续的空行只显示一行-T:显示制表符-v:显示非打印字符-E:显示行尾号-A:相当于同时使用vET2.进阶文本显示命令more:more [-dlfpcsu] [-num] [+/pattern] [+linenum
2013-04-19 23:44:27 4721
原创 C开发注意事项_字符串及指针使用
1、字符串指针引用str变量在栈中,返回值不确定char *getStr(){ char str[]="abcd"; return str;}str变量在rodata中,可以获取到此字符串地址信息,同时注意字符串常量不能修改其内存内容char *getStr(){ char *str="abcd"; return str;}
2013-04-14 17:35:28 886
原创 Vxworks及Linux 中常用的延时方法
在应用编程的时候,通常会碰到需要一个任务在特定的延时之后执行一个指定的动作,如等待外设以确保数据可靠,控制扬声器发声时间以及串口通信超时重发等。这就需要利用定时器机制来计量特定长度的时间段。 vxWorks作为实时嵌入式系统,提供多样的定时接口函数。下面结合我的项目经历和网上的参考资料列举一些常用的定时方式,并说明其注意事项。一、taskDelay taskDelay(n)
2013-03-28 14:20:28 1581
原创 volatile的作用
vlatile作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.简单地说就是防止编译器对代码进行优化.比如如下程序:XBYTE[2]=0x55;XBYTE[2]=0x56;XBYTE[2]=0x57;XBYTE[2]=0x58;对外部硬件而言,上述四条语句分别表示不同的操作,会产生四种不同的动作,但是编译器就不能像对待纯粹的程序那样对上述四条语句进行
2013-03-28 13:58:24 722
ImmunityDebugger_mona_vulnserver_python
2015-09-16
http2文档报文及分析
2015-04-16
OpenSSL_HeartBleed_POC_Pcap
2014-06-12
报文发送软件
2013-11-06
ftpfuzz(infigo ftpstress fuzzer)
2012-09-14
URL内容提取工具
2012-09-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人