linux
zqt520
这个作者很懒,什么都没留下…
展开
-
xargs用途
xargsxargs 命令用途构造参数列表并运行命令。大多数 Linux 命令都会产生输出:文件列表、字符串列表等。但如果要使用其他某个命令并将前一个命令的输出作为参数该怎么办?例如,file 命令显示文件类型(可执行文件、ascii 文本等);您可以处理输出,使其仅显示文件名,现在您希望将这些名称传递给 ls -l 命令以查看时间戳记。xargs 命令就是用来完成此项转载 2014-11-15 21:20:35 · 549 阅读 · 0 评论 -
关于 OpenSSL“心脏出血”漏洞的分析
原作者:Sean Cassidy 原作者Twitter:@ex509 原作者博客:http://blog.existentialize.com 来源:http://blog.existentialize.com/diagnosis-of-the-openssl-heartbleed-bug.html当我分析GnuTLS的漏洞的时候,我曾经说过,那不会是我们看到的最后一个TLS栈上的严重bu转载 2014-04-27 18:22:47 · 570 阅读 · 0 评论 -
linux网络报文接收发送浅析
对于linux内核来说,网络报文由网络设备来进行接收。设备驱动程序从网络设备中读取报文,通过内核提供的网络接口函数,将报文传递到内核中的网络协议栈。报文经过协议栈的处理,或转发、或丢弃、或被传送给某个进程。网络报文的发送与之相反,进程通过系统调用将数据送入网络协议栈,或者由网络协议栈自己发起报文的发送,然后协议栈通过调用网络接口函数来调度驱动程序,使其将报文传送给网络设备,从而发送出去。本转载 2014-04-29 23:24:35 · 4024 阅读 · 0 评论 -
linux中断处理浅析
近在研究异步消息处理, 突然想起linux内核的中断处理, 里面由始至终都贯穿着"重要的事马上做, 不重要的事推后做"的异步处理思想. 于是整理一下~第一阶段--获取中断号每个CPU都有响应中断的能力, 每个CPU响应中断时都走相同的流程. 这个流程就是内核提供的中断服务程序.在进入中断服务程序时, CPU已经自动禁止了本CPU上的中断响应, 因为CPU不能假定中断服务程序是可转载 2014-04-29 23:25:18 · 489 阅读 · 0 评论 -
Linux Socket学习(三)
无名套接口套接口并不总是需要有一个地址。例如, socketpair函数创建了两个彼此相连的两个套接口,但是却没有地址。实际上,他们是无名套接口。想像一下冷战期间美国总统与苏联之间的红色电话。 他们任何一端并不需要电话号码,因为他们是直接相连的。同样,socketpair函数也是直接相连的,也并不需要地址。匿名调用有时在实际上,连接中的两个套接口中的一个也没有地址。对于要连接的远程套接原创 2013-12-26 21:54:03 · 564 阅读 · 0 评论 -
socketpair的使用
socketpair函数概要如下:#include #include int socketpair(int domain, int type, int protocol, int sv[2]);sys/types.h文件需要用来定义一些C宏常量。sys/socket.h文件必须包含进来定义socketpair函数原型。socketpair函数需要四个参数。他们是:套接口的域转载 2013-12-26 21:35:41 · 526 阅读 · 0 评论 -
linux下获取本机ip地址,ipv4和ipv6
linux下获取本机ip地址,ipv4和ipv6#include #include #include #include #include #include #include #include int GetIP_v4_and_v6_linux(int family, char *address, int size){struct ifaddrs *ifap0, *ifap;c原创 2013-12-25 22:52:25 · 5270 阅读 · 0 评论 -
IFF_UP 和 IFF_RUNNING 的差别在哪
对于如何在 Linux 底下取得网络接口的状态,过去曾经于”取得网络装置(NETDEVICE)的系统讯息”提过,基本上整个操作是很简单明了的,应该不会有太大的问题。有人曾来信问我,IFF_UP 和 IFF_RUNNING 的差别在哪?就实际功用而言,两者都代表了网络装置是否正常启用,但是更仔细观察可以发现拔除网络线时会造成 IFF_RUNNING 的改变,至于 IFF_UP 不会因插拔网络转载 2013-12-25 23:14:25 · 12020 阅读 · 0 评论 -
libcurl部分总结
curl是开源的东西,主要用于页面下载和上传1、对于页面跳转的网站,最好先用sniffer把http数据包全部抓下,分析协议头,尤其是要对应好post后的url地址,以及记住cookie中的session_id(情况根据各网站会有所差别)。2、 curl_easy_setopt(curl,CURLOPT_POST,1);使用POST方式3、curl_easy_setopt(cu转载 2014-01-01 23:16:32 · 110 阅读 · 0 评论 -
CURL详解
curl_setop()函数中的参数中文说明curl_setop()函数中的参数中文说明curl_setopt()函数将为一个CURL会话设置选项。option参数是你想要的设置,value是这个选项给定的值。下列选项的值将被作为长整形使用(在option参数中指定): *CURLOPT_INFILESIZE:当你上传一个文件到远程站点,这个选项告诉PHP你上传文件的大小。转载 2014-01-01 14:24:53 · 13101 阅读 · 0 评论 -
Libcurl库常用接口使用说明,限速设置
libcurl 接口调用方式 libcurl提供了一组C语言API函数直接调用。首先需要提到的两个函数就是curl_global_init()和 curl_global_cleanup()。libcurl要用到一系列的全局常量,curl_global_init()函数就是初始化这些变量,并分配一些全局资源;curl_global_cleanup()则负责释放这些资源。因此一般情况下,在调用转载 2014-01-01 14:53:28 · 2777 阅读 · 0 评论 -
基于Linux的数据包捕获模块设计实现
1、 数据包捕获模块设计流程图 在数据包捕获程序中,通过设置网卡工作于混杂状态,对网络链路进行监听并收集数据包,从而获得数据包头信息。 2、数据包捕获模块实现 该数据包捕获程序用C语言来编写,程序中用到很多Linux网络编程中的函数。 (1)设置网络接口为混杂模式 网络接口的混杂模式使得一个网络接口设备从只能读取目标地址为6字节MAC地址转载 2013-12-30 20:41:56 · 853 阅读 · 0 评论 -
关于struct msghdr和struct cmsghdr
理解struct msghdr当我第一次看到他时,他看上去似乎是一个需要创建的巨大的结构。但是不要怕。其结构定义如下:struct msghdr { void *msg_name; socklen_t msg_namelen; struct iovec *msg_iov; size_t msg_iovlen;转载 2013-12-30 20:14:28 · 717 阅读 · 0 评论 -
LinuxC下获取UDP包中的路由目的IP地址和头标识目的地址
在接受到UDP包后,有时候我们需要根据所接收到得UDP包,获取它的路由目的IP地址和头标识目的地址。(一)主要的步骤:在setsockopt中设置IP_PKTINFO,然后通过recvmsg来获取struct in_pktinfo(struct in_pktinfo是struct msghdr中msg_control的成员).in_pktinfo 结构体(如下所示),我们可以从in转载 2013-12-30 20:10:54 · 1637 阅读 · 0 评论 -
shell脚本是防止多次运行
#!/bin/bash## file locking using bash.# ver 0.1.6## author : malundao ( malundao@sina.com )# date : 2011-08-31 # ref : http://unix.derkeiler.com/Newsgroups/comp.unix.shell/2005-09/0472.h原创 2013-12-06 10:43:06 · 734 阅读 · 0 评论 -
汇编指令
1.通用数据传送指令. MOV----> move MOVSX---->extended move with sign data MOVZX---->extended move with zero data PUSH---->push POP---->pop PUSHA---->push all POPA---->pop all PUSHAD---->push al原创 2013-11-25 23:51:44 · 577 阅读 · 0 评论 -
tcpdump抓包并保存成cap文件
首选介绍一下tcpdump的常用参数tcpdump采用命令行方式,它的命令格式为: tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ] [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ] [ -T 类型 ] [ -w 文件名 ] [表达式 ]1. tcpdump的选项介绍转载 2013-10-30 17:20:38 · 45973 阅读 · 1 评论 -
一个itables的设置
脚本要求:1: 每个客户端IP地址能和服务器建立的并发连接数不超过15个2:服务器自己本身支持的最大并发连接数为300个3:每个连接每秒钟发送的包的数量不能超过10个。iptables –A INPUT –p tcp –m connlimit –connlimit-above 15 –j REJECTiptables -A INPUT -s -p tcp --syn -m connlimit原创 2013-10-01 12:30:12 · 742 阅读 · 0 评论 -
一个fwrite的错误
#include "usbkey.h"int BeepInfo(int length,int time){ int nRet; char CMD_BUFFER[CMD_MAX_LEN]={0}; sprintf(CMD_BUFFER,"beep -f 4000 -l %d -d 500 -r %d",length,time); nRet = system(CMD_BUFFER); r原创 2014-05-22 22:21:39 · 2568 阅读 · 0 评论 -
对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)
一. AES对称加密: AES加密 分组 二. 分组密码的填充 分组密码的填充转载 2014-05-24 16:09:00 · 683 阅读 · 0 评论 -
电子证书 DER vs. CRT vs. CER vs. PEM
证书与编码本至上,X.509证书是一个数字文档,这个文档根据RFC 5280来编码并/或签发。实际上,“X.509证书”经常被用来指代IETF的PKIX(Public Key Infrastructure)证书和X.509 v3 证书标准中的CRL(Certificate Revocation List)。X509 文件扩展名首先转载 2014-05-25 16:47:02 · 1259 阅读 · 0 评论 -
spin_lock浅析
今天我们详细了解一下spin_lock在内核中代码实现,我们总共分析四个项目: 1.spinlock_t的定义分析:首先来看一下spinlock_t的定义:typedef struct { raw_spinlock_t raw_lock;#if defined(CONFIG_PREEMPT) &&defined(CONFIG_SMP) unsig转载 2014-09-28 23:31:47 · 530 阅读 · 0 评论 -
netpoll浅析
netpoll只是一种框架和一些接口,只有依赖这个框架和接口实现的netpoll实例,netpoll才能发挥它的功能。类似于kernel中的vfs,vfs本身并不会去做具体的文件操作,只是为不同的文件系统提供了一个框架。netpoll不依赖于网络协议栈,因此在内核网络及I/O子系统尚未可用时,也可以发送或接收数据包。当然netpoll能够处理的数据包类型也很有限,只有UDP和ARP数据包,并且只能转载 2014-09-26 23:45:28 · 956 阅读 · 0 评论 -
判断一个IP是否在指定的网络中
/**inspect any ip is in subnet?*/#include #include #include #include int main(int argc, char **argv){ if (argc != 4) { printf("usage:test "); return -1;转载 2014-09-11 22:18:04 · 758 阅读 · 0 评论 -
点分十进制子网掩码和CIDR的相互转换
#include #include #include #include int main(int argc, char **argv){ if (argc != 4) { printf("usage:test "); return -1; } struct sockaddr_in ipaddr;/转载 2014-09-11 22:19:10 · 2387 阅读 · 0 评论 -
Linux进程的睡眠和唤醒简析
1 Linux进程的睡眠和唤醒在Linux中,仅等待CPU时间的进程称为就绪进程,它们被放置在一个运行队列中,一个就绪进程的状 态标志位为TASK_RUNNING。一旦一个运行中的进程时间片用完, Linux 内核的调度器会剥夺这个进程对CPU的控制权,并且从运行队列中选择一个合适的进程投入运行。当然,一个进程也可以主动释放CPU的控制权。函数 schedule()是一个调度函数,转载 2014-09-09 00:33:01 · 1091 阅读 · 0 评论 -
SSL双方系统时间不一致导致的SSL连接失败及其解决方案
在产品使用中,实施人员常常报告服务器与客户端无法连接.究其原因是因为客户端机器与服务端机器系统时间不一致.原因在于系统使用了OpenSSL,证书中有一个有效时间段,当客户端或服务器的系统时间不在这个时间段内时SSL会因证书验证失败而无法连接.在实施中系统时间错误是很常见的,因不能上网而未开时间自动同步,bios没电了,客户疏忽等原因都会导致系统时间设置有误.如果连接失败后再查看系统时间设置总是一项原创 2014-06-01 16:27:50 · 18656 阅读 · 4 评论 -
poll&&epoll实现分析(一)——poll实现
0.等待队列在Linux内核中等待队列有很多用途,可用于中断处理、进程同步及定时。我们在这里只说,进程经常必须等待某些事件的发生。等待队列实现了在事件上的条件等待: 希望等待特定事件的进程把自己放进合适的等待队列,并放弃控制全。因此,等待队列表示一组睡眠的进程,当某一条件为真时,由内核唤醒它们。等待队列由循环链表实现,由等待队列头(wait_queue_head_t)和等待队列转载 2014-06-01 11:42:59 · 949 阅读 · 0 评论 -
从select的一个死循环谈epoll的ET模式
最近写程序遇到一个问题,就是发现select监听标准输出的时候遇到了死循环,具体程序如下程序一。程序的意图是每当用户在控制台有任何输入,就输出”hello world!”。程序一:#include #include #include #include int main(int argc, char *argv[]){转载 2014-06-01 11:43:39 · 1405 阅读 · 0 评论 -
彻底学会使用epoll(一)——ET模式实现分析
注:之前写过两篇关于epoll实现的文章,但是感觉懂得了实现原理并不一定会使用,所以又决定写这一系列文章,希望能够对epoll有比较清楚的认识。是请大家转载务必注明出处,算是对我劳动成果的一点点尊重吧。另外,文中如果有不全面或者不正确的地方还请大家指出。也可以私信或者发邮件:lvyilong316@163.com1. ET模式实现分析1.1 ET和LT的实现区别 首先转载 2014-06-01 11:41:46 · 1605 阅读 · 0 评论 -
poll&&epoll实现分析(二)——epoll实现
Epoll实现分析——作者:lvyilong316通过上一章分析,poll运行效率的两个瓶颈已经找出,现在的问题是怎么改进。首先,如果要监听1000个fd,每次poll都要把1000个fd 拷入内核,太不科学了,内核干嘛不自己保存已经拷入的fd呢?答对了,epoll就是自己保存拷入的fd,它的API就已经说明了这一点——不是 epoll_wait的时候才传入fd,而是通过epoll_ctl转载 2014-06-01 11:44:21 · 114 阅读 · 0 评论 -
linux expect自动登录ssh,ftp...
xpect是一种能够按照脚本内容里面设定的方式与交互式程序进行“会话”的程序。根据脚本内容,Expect可以知道程序会提示或反馈什么内容以及 什么是正确的应答。它是一种可以提供“分支和嵌套结构”来引导程序流程的解释型脚本语言。 shell功能很强大,但是不能实现有交互功能的多机器之前的操作,例如ssh和ftp.而expect可以帮助我们来实现.一,安装expectyum i转载 2014-05-27 23:11:57 · 659 阅读 · 0 评论 -
Mysql热备份总结
一主一从备份1、主服务器授权 授权从服务器可以连接主服务器并可以进行更新。这是在主服务器上进行的,创建一个username和password供副服务器访问时使用。在MySQL命令行下输入 mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.0.1' IDENTIFIED BY '123456';转载 2014-05-27 22:10:45 · 593 阅读 · 0 评论 -
Server开发(deamon)进程排他性(文件锁),脚本排他性(fuser)
1、进程排他性: 在linux中进行Server开发:: 第一步、deamon() //调用deamon将进程转后台。 第二步、加文件写锁: fd = open(“filename”,O_CREAT|O_WRONLY,0666); struct flock stL转载 2014-05-27 22:27:59 · 570 阅读 · 0 评论 -
OpenSSLX509证书操作函数
现有的证书大都采用X。509规范,主要同以下信息组成:版本号、证书序列号、有效期、拥有者信息、颁发者信息、其他扩展信息、拥有者的公钥、CA对以上信息的签名。OpenSSL实现了对X。509数字证书的所有操作。包括签发数字证书、解析和验证证书等。涉及证书操作的主要函数有验证证书(验证证书链、有效期、CRL)、解析证书(获得证书的版本、序列号、颁发者信息、主题信息、公钥、有效期等)。主原创 2014-05-25 16:32:53 · 11481 阅读 · 3 评论 -
Open SSL 常用函数——签名与验证
OpenSSL中的验证是先对原始数据计算摘要, 再对摘要进行私钥加密. 验证的过程是对原始消息计算摘要,解密验证值, 和摘要对比是否一致.如果一致, 说明验证有效:否则,则认为原文或验证值已经被篡改. 函数介绍:因为要先对原始数据计算摘要, 所以在计算摘要时用的函数是计算摘要的函数一样. 最后在结束函数中进行验证或验证. 为了方便描述,OpenSSL对计算摘要函数进转载 2014-05-25 20:52:05 · 935 阅读 · 0 评论 -
OpenSSL 常用函数——Base64编码及解码和证书操作
Base64编码就是把二进制数据转换为可见的ASCII字符。 Base64解码是相反的过程。主要函数1、 Base64编码初始化函数VoidEVP_EncodeInit(EVP_ENCODE_CTX *ctx);参数ctx:[IN]用于保存Base64编码的的状态。2、 Base64编码Update函数。VoidEVP_EncodeUpdate(转载 2014-05-25 20:51:23 · 3487 阅读 · 0 评论 -
linux下字符编码转换
一、利用iconv函数族进行编码转换iconv函数族的头文件是iconv.h,使用前需包含之。#include iconv函数族有三个函数,原型如下:(1) iconv_t iconv_open(const char *tocode, const char *fromcode);此函数说明将要进行哪两种编码的转换,tocode是目标编码,fromcode是原编码,该函数返回一个转载 2014-05-25 20:11:01 · 684 阅读 · 0 评论 -
Linux下nm和ldd 命令
1. Linux nm 命令nm [‘-a’|‘--debug-syms’] [‘-g’|‘--extern-only’][‘-B’] [‘-C’|‘--demangle’[=style]] [‘-D’|‘--dynamic’][‘-S’|‘--print-size’] [‘-s’|‘--print-armap’][‘-A’|‘-o’|‘--print-file-name’][‘-转载 2013-09-30 16:40:57 · 556 阅读 · 0 评论 -
程序的链接和加载基础(1)
1. 程序的链接 程序链接的核心是找“符号”,即函数或者变量定义的位置。“符号”可能位于其它程序文件,静态库,动态库,如果没找到,编译器可能报错,还可能帮你生成一个。 1.1 窥豹一斑 c++的extern关键字 c++编写的so,希望在c中使用。因为某种原因,c中只能用gcc编译器。 $ cat e.cccons转载 2013-09-30 14:52:31 · 912 阅读 · 0 评论