随笔分类 -  1.首页原创精华区

摘要:由于traceroute只能诊断UDP通信的包路由,不能确定TCP通信的实际路由(可能变换),因此编写了本文。为方便描述,下面的IP、MAC和端口均为示例,实际诊断中可更换为具体的值 1. 如何判断客户端到服务器的TCP包,是否经过了网关 在客户端执行 tcpdump -i eno16777728 阅读全文
posted @ 2017-12-29 17:24 cq12yue 阅读(29) 评论(0) 推荐(0)
摘要:前言 近期有机会,深入了SSL/TLS协议原理与细节,并分析了相关密码学内容,心得颇多,历经半月,终于写成了这份文档。 本人水平尚有限,错误难免,欢迎指正,不胜感激。 目录 部分章节预览 第3章 第5章第4节 第11章第3节 全文 下载地址:深入理解SSL/TLS技术内幕 阅读全文
posted @ 2016-12-15 17:16 cq12yue 阅读(15) 评论(0) 推荐(0)
摘要:算法描述 【公开密钥】 p是512到1024位的素数 q是160位长,并与p-1互素的因子 g = h^((p-1)/q) mod p,其中h<p-1且g>1 y = g^x mod p 【私有密钥】 x < q,长160位 【签名】 k为小于q的随机数,k^-1为k模q的逆元,m为消息,H为单向散 阅读全文
posted @ 2016-11-24 19:39 cq12yue 阅读(38) 评论(0) 推荐(0)
摘要:var code = "208b338a-b815-4f7e-acde-90056476e66e" 算法描述 随机选择两个大的素数 p、q ,且p ≠ q,计算n = pq、r = (p-1)(q-1),依欧拉定理,r即为与n互质的素数个数;选择一个小于r的整数e(即加密指数),求得e关于模r的逆元 阅读全文
posted @ 2016-11-18 17:05 cq12yue 阅读(16) 评论(0) 推荐(0)
摘要:脚本源码 由于很多应用项目依赖诸多第三方开源库,这些开源库各有不同的核心目录、库目标和输出位置,这里的核心目录是指仅产生so库的工程目录,库目标是指仅产生so库的make目标,输出位置是相对于核心目录的,但不必是子目录,可用..来回溯到父目录的某位置,更高层目录的位置,依次类推。为了统一支持它们,使 阅读全文
posted @ 2016-10-19 15:11 cq12yue 阅读(11) 评论(0) 推荐(0)
摘要:脚本概述 当需要在很多(比如几十至几百)台机器上编译同一程序时,如果一个个地手工拷贝源码、再编译,那么效率就很低,为了能大量节省手工、并行地编译,因此写了一个脚本,该脚本基于自动化脚本语言expect(expect基于tcl)实现,基本原理是针对每个远程主机,创建一个子进程,在该子进程内先调用scp 阅读全文
posted @ 2016-09-28 11:04 cq12yue 阅读(20) 评论(0) 推荐(0)
摘要:描述 拦截Linux动态库API的常规方法,是基于动态符号链接覆盖技术实现的,基本步骤是 1. 重命名要拦截的目标动态库。 2. 创建新的同名动态库,定义要拦截的同名API,在API内部调用原动态库对应的API。这里的同名是指与重命名前动态库前的名称相同。 显而易见,如果要拦截多个不同动态库中的AP 阅读全文
posted @ 2016-08-25 11:10 cq12yue 阅读(50) 评论(0) 推荐(0)
摘要:描述 云查杀平台以nginx作为反向代理服务器,作为安全终端与云查询服务的桥梁。当安全终端需要查询黑文件时,HTTP请求及其响应都会经过nginx,为了获取并统计一天24小时查询的黑文件数量,就得先截获经过nginx的HTTP响应,再做数据分析。截获HTTP数据流有多种方法,为了简单高效,这里使用了 阅读全文
posted @ 2016-08-25 11:10 cq12yue 阅读(17) 评论(0) 推荐(0)
摘要:本方法适用于linux 2.6.x内核。 1. 先获取dentry所属文件系统对应的挂载点,基本原理是遍历文件系统vfsmount树,找到与dentry有相同超级块的vfsmount,实现如下 Code highlighting produced by Actipro CodeHighlighter 阅读全文
posted @ 2016-08-24 19:22 cq12yue 阅读(49) 评论(0) 推荐(0)
摘要:描述 原始套接字具有广泛的用途,特别是用于自定义协议(标准协议TCP、UDP和ICMP等外)的数据收发。在Linux下拦截套接字IO的一般方法是拦截对应的套接字系统调用,对于发送为sendmsg和sendto,对于接收为recvmsg和recvfrom。这种方法虽然也能拦截原始套接字IO,但要先判断 阅读全文
posted @ 2016-07-14 10:27 cq12yue 阅读(26) 评论(0) 推荐(0)
摘要:描述 TCP连接跟踪是网络流控和防火墙中的一项重要的基础技术,当运用于主机时,连接必与进程相关联,要么是主动发出的,要么是被动接受的,当后代进程被动态创建时,由于文件描述符的继承,一个连接就会被这个进程树中的所有进程共享;当一个进程发出或接受多个连接时,就拥有了多个连接。本方法可用于网络安全产品中, 阅读全文
posted @ 2016-07-13 11:24 cq12yue 阅读(12) 评论(0) 推荐(0)
摘要:描述 在P2P应用系统中,当需要与处于不同私网的对方可靠通信时,先尝试TCP打洞穿透,若穿透失败,再通过处于公网上的代理服务器(下文简称proxy)转发与对方通信,如下图所示 终端A先连接并发消息msg1到proxy(连接为c1);proxy再发消息msg2给P2P服务器,P2P服务器收到消息后通过 阅读全文
posted @ 2016-07-12 16:59 cq12yue 阅读(11) 评论(0) 推荐(0)
摘要:为了使nginx支持windows服务,本文阐述以下主要的改进实现。ngx_main函数 为了在SCM服务中复用main函数的逻辑,将其重命名为ngx_main,并添加第3个参数is_scm以兼容控制台运行方式,声明在core/nginx.h中。 Code highlighting produced 阅读全文
posted @ 2016-07-12 15:31 cq12yue 阅读(30) 评论(0) 推荐(0)
摘要:结构定义 Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 1 struct state_machine { 2 int state; 3 4 }; 阅读全文
posted @ 2016-05-05 09:46 cq12yue 阅读(35) 评论(0) 推荐(0)
摘要:脚本概述 由于使用objdump反汇编linux内核的输出太多(2.6.32-220.el6.x86_64统计结果为1457706行),而很多时候只是想查看特定部分的机器码与汇编指令,例如函数的入口、堆栈、调用了哪个函数等,为了高效和通用,因此编写了一个简单的awk脚本,其命令行参数说明如下: ● 阅读全文
posted @ 2015-10-27 15:36 cq12yue 阅读(19) 评论(0) 推荐(0)
摘要:本文根据RFC793协议规范和BSD 4.4的实现,总结了TCP分组丢失时的状态变迁,如下图所示:实线箭头表示客户端的状态变迁,线段虚线箭头表示服务端的状态变迁,圆点虚线箭头表示客户端或服务端的状态变迁;黑色文字表示正常时的行为,红色文字表示分组丢失时的行为。 这里假设重传时分组依然会丢失,当在不同 阅读全文
posted @ 2015-10-05 00:44 cq12yue 阅读(26) 评论(0) 推荐(0)
摘要:由于linux内核中的struct list_head已经定义了指向前驱的prev指针和指向后继的next指针,并且提供了相关的链表操作方法,因此为方便复用,本文在它的基础上封装实现了一种使用开链法解决冲突的通用内核Hash表glib_htable,提供了初始化、增加、查找、删除、清空和销毁6种操作 阅读全文
posted @ 2015-09-15 17:18 cq12yue 阅读(23) 评论(0) 推荐(0)
摘要:nginx的域名解析器使用已连接udp(收发前先调用ngx_udp_connect)发送dns查询、接收dns响应,如上篇tcp异步连接所讲,iocp需要先投递udp的接收操作,才能引发接收完成的事件,因此要对域名解析器和udp异步接收作些改进。 发送后投递 dns查询由ngx_resolver_s 阅读全文
posted @ 2015-06-25 17:01 cq12yue 阅读(22) 评论(0) 推荐(0)
摘要:iocp是Windows NT操作系统的一种高效IO模型,对应于Linux中的epoll和FreeBSD中的kqueue,nginx对ske(select、kqueue和epoll的首写字母组合)的支持很好,但截止到1.6.2版本,还不支持iocp。由于ske都是反应器模式,即先注册IO事件,当IO 阅读全文
posted @ 2015-06-24 17:02 cq12yue 阅读(73) 评论(0) 推荐(0)
摘要:ICMP在IP系统间传递差错和管理报文,是任何IP系统必须实现的组成部分。Linux 2.6.34中ICMP模块的实现在linux/icmp.h,net/icmp.h和ipv4/icmp.c中,导出了icmp_err_convert数组和icmp_send函数,供其它网络子系统使用。在其它网络子系统 阅读全文
posted @ 2015-05-18 19:52 cq12yue 阅读(43) 评论(0) 推荐(0)