自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (7)
  • 收藏
  • 关注

原创 suricata 3.1 源码分析25 (数据包以太层解码)

int DecodeEthernet(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, uint8_t *pkt, uint16_t len, PacketQueue *pq){ StatsIncr(tv, dtv->counter_eth); if (unlikely(len < ETHERNE

2016-09-30 13:55:48 1902

原创 suricata 3.1 源码分析24 (数据包解码模块执行)

/** * \brief This function passes off to link type decoders. * * DecodePcap reads packets from the PacketQueue and passes * them off to the proper link type decoder. * * \param t pointer to Threa

2016-09-29 10:40:14 1965

原创 suricata 3.1 源码分析23 (数据包解码模块注册及初始化)

简介 Suricata的解码模块与数据包获取模块是一一对应的,例如DecodePcap对应ReceivePcap,DecodeAFP对应ReceiveAFP。 然而,我们知道数据包格式都是协议规定的,因此核心的数据包解码流程一定会是固定的。例如,对于常规的以太网包IPV4包TCP包,无非是DecodeEthernet->DecodeIPV4->DecodeTCP->… 那么,这里为什么需要设置

2016-09-28 09:37:16 1870 2

原创 suricata 3.1 源码分析22 (数据包处理2)

对数据包进行进一步处理的TmThreadsSlotVarRun函数原型如下: TmEcode TmThreadsSlotVarRun(ThreadVars *tv, Packet *p,TmSlot *slot) 按照函数头的注释说明,这个函数被从母函数中拉出来独立存在的原因是,为了能够对其进行递归调用。函数主流程是一个遍历所有slot的for循环,/** * \brief S

2016-09-27 09:22:20 2040

原创 suricata 3.1 源码分析21 (数据包处理1)

进一步的数据包处理是在TmThreadsSlotProcessPkt中完成,其原型为: static inline TmEcode TmThreadsSlotProcessPkt(ThreadVars *tv, TmSlot *s, Packet *p) 其中,s就是前面一路传下来的slot,而p为当前要处理的Packet。/** * \brief Process the r

2016-09-26 17:20:32 2050

原创 suricata 3.1 源码分析20 (数据包封装)

在Suricata中,用来封装数据包的结构体为Packet,核心字段如下: 字段 含义 src/dst、sp/dp、proto 五元组信息:源/目的地址,源/目的端口号,传输层协议(TCP/UDP/…)。 flow 数据包所属的流指针(类型为Flow_ *)。 ip4h、ip6h 网络层数据指针。 tcph、udph、sctph、icmpv4/6h 传输层数据指

2016-09-23 09:47:51 3172

原创 suricata 3.1 源码分析19 (数据包获取)

初始化完成后,TmThreadsSlotPktAcqLoop函数将进入一个while循环,调用slot的PktAcqLoop函数获取并处理数据包。对应的模块函数原型为: TmEcode ReceivePcapLoop(ThreadVars *tv, void *data, void *slot) 其中,data即为初始化阶段生成的PcapThreadVars结构体,而slot就是

2016-09-22 09:02:56 2776

原创 suricata 3.1 源码分析18 (模块注册及初始化)

Suricata支持多种数据包源:pcap(实时/文件)、nfq、ipfw、mpipe、af-packet、pfring、dag(实时/文件)、napatech。 每种数据包源的支持都对应于一个线程模块(Thread Module),得益于这种其模块化的架构,增加一个新的数据源支持只需要添加一个新的线程模块即可。 这里,我将主要记录最常见的pcap实时数据源的实现细节,包括相关数据结构、运行流程

2016-09-21 09:16:37 2355

原创 suricata 3.1 源码分析17 (流管理2)

TmThreadsManagementstatic void *TmThreadsManagement(void *td){ /* block usr2. usr2 to be handled by the main thread only */ UtilSignalBlock(SIGUSR2); ThreadVars *tv = (ThreadVars *)td;//流

2016-09-20 10:50:10 1640

原创 suricata 3.1 源码分析16 (流管理1)

在suricata.c的main函数执行完RunModeDispatch之后会在判断是否使用UNIX_SOCKET中调用FlowManagerThreadSpawn创建流管理线程。/** \brief spawn the flow manager thread */void FlowManagerThreadSpawn(){#ifdef AFLFUZZ_DISABLE_MGTTHREADS

2016-09-19 14:38:42 2057

原创 suricata 3.1 源码分析15 (流更新)

流更新通过FlowWorker线程函数中调用FlowUpdate,FlowUpdate中又调用了FlowHandlePacketUpdate来更新流。 在获取到包所属的流后,接下来将根据这个包对流进行更新。/** \brief Update Packet and Flow * * Updates packet and flow based on the new packet. * *

2016-09-18 11:36:26 1625 2

原创 suricata 3.1 源码分析14 (流查找分配)

流查找/分配通过FlowWorker线程函数中调用FlowHandlePacket来找到流。 下面将按照FlowHandlePacket的流程,分析flow engine对于新送入的解码后的数据包是如何处理的。 对于一个Packet,首先在流表中查找其所属的流是否已经存在,若存在,则直接返回该流的引用即可,否则就需要分配一个新流。 该过程的实现由FlowGetFlowFromHash完成,函数

2016-09-14 10:47:53 1846

原创 suricata 3.1 源码分析13 (流初始化)

简介Suricata中用于管理和维护流的模块称为Flow Engine,主要由两部分实现,第一部分的入口点是FlowHandlePacket函数,用于为新数据包进行流查找/分配,另一部分是FlowManagerThread线程,用于对超时的流进行删除。初始化 初始化在FlowInitConfig中完成,与之相关的配置结构体为FlowConfig,其字段含义如下: 字段含义hash_rand用于随

2016-09-13 14:08:43 2300

原创 Shell实现判断进程是否存在并重新启动脚本

简洁版: #! /bin/bash # author caoxin # time 2012-10-10 # program : 判断进行是否存在,并重新启动 function check(){ count=`ps -ef |grep $1 |grep -v "grep" |wc -l` #echo $count if [ 0

2016-09-12 15:12:24 50859

原创 suricata 3.1 源码分析12

int engine_retval = EXIT_SUCCESS; while(1) { if (sigterm_count) { suricata_ctl_flags |= SURICATA_KILL; } else if (sigint_count) { suricat

2016-09-12 15:03:49 1944

原创 suricata 3.1 源码分析11

/* Wait till all the threads have been initialized */ if (TmThreadWaitOnThreadInit() == TM_ECODE_FAILED) { SCLogError(SC_ERR_INITIALIZATION, "Engine initialization failed, "

2016-09-09 08:58:04 1501

原创 suricata 3.1 源码分析10

/* In Unix socket runmode, Flow manager is started on demand */ if (suri.run_mode != RUNMODE_UNIX_SOCKET) { /* Spawn the unix socket manager thread */ int unix_socket =

2016-09-08 17:21:36 2125

转载 tcpdump抓包并保存成cap文件

首选介绍一下tcpdump的常用参数tcpdump采用命令行方式,它的命令格式为:   tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]           [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]           [ -T 类型 ] [ -w 文件名 ] [表达式 ]tcpdump的选项介绍    -a

2016-09-07 15:48:10 21892

原创 suricata 3.1 源码分析9

RunModeDispatch(suri.run_mode, suri.runmode_custom_mode)初始化运行模式。首先,根据配置文件和程序中的默认值来配置运行模式(single、auto这些),而运行模式类 型(PCAP_DEV、PCAPFILE这些)也在之前已经确定了,因此运行模式已经固定下来,可以从runmodes表中获取到特定的RunMode 了,接着就调用RunMode中的Ru

2016-09-07 08:52:12 1862

转载 shell变量算术运算

((i=j+j+k)) 等价于 i=expr $j + $k ((i=j−j-k)) 等价于 i=expr $j -$k ((i=j∗j*k)) 等价于 i=expr $j \*$k ((i=j/j/k)) 等价于 i=expr $j /$kLet expressions 执行一个或多个表达式。表达式中的变量前不必有$.如果表达式中包含了空格或其他特殊字符,则必须引起来。例:let “I =

2016-09-06 20:58:40 13786

转载 linux awk命令详解

简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。awk其名称得自于它的创始人 Alfred Aho 、Peter

2016-09-06 20:44:18 642

转载 Shell脚本获取格式化日期与时间总结

!/bin/shupload logs to hdfssource /etc/profile获取昨天日期 yyyyMMdd 格式yesterday=date --date='1 days ago' +%Y%m%d获取昨天日期 yyyy-MM-dd 格式yesterday2=date --date='1 days ago' +%Y-%m-%d获取今天日期 yyyyMMdd 格式today=date -

2016-09-06 20:40:17 23997

原创 suricata 3.1 源码分析8

CSetStartTime(&suri);设置记录开始时间 SCDropMainThreadCaps(suri.userid, suri.groupid);去除主线程的权限。这个是通过libcap-ng实现的,首先调用capng_clear清空所有权限,然后根据运行模式添加一些必要权限(主要是为了抓包),最后调用capng_change_id设置新的uid和gid。主线程的权限应该会被新建

2016-09-06 13:24:15 1540

转载 TSO、UFO、GSO、LRO、GRO和RSS介绍(ethtool命令)

http://blog.chinaunix.net/uid-20639775-id-3529535.htmlethtool -k < 网络接口>,ethtool –show-offload < 网络接口>,或者可以看到很多网络接口的offload特性,例如:$ sudo ethtool -k eth0 Offload parameters for eth0: rx-checksumming: o

2016-09-05 17:36:12 9602

原创 suricata 3.1 源码分析7

DetectEngineCtx *de_ctx = NULL; if (!suri.disabled_detect) { //detect设为启用 SCClassConfInit();解析Class相关正则 SCReferenceConfInit();解析Refference相关正则 SetupDelayedDetect(&suri);

2016-09-05 14:17:28 2228

原创 suricata 3.1 源码分析6

if (suri.run_mode != RUNMODE_UNIX_SOCKET) { FlowInitConfig(FLOW_VERBOSE);初始化Flow engine。用来表示一条TCP/UDP/ICMP/SCTP流的,程序当前所记录的所有流便组成了流表,在flow引擎中,流表为flow_hash这个全局变量,其类型为FlowBucket *,而FlowBucket

2016-09-02 08:45:04 1767

原创 suricata 3.1 源码分析5

if (PostConfLoadedSetup(&suri) != TM_ECODE_OK) { exit(EXIT_FAILURE);}执行PostConfLoadedSetup,即运行那些需要在配置载入完成后就立马执行的函数。这里面涉及的流程和函数非常多 /** * This function is meant to contain code that

2016-09-01 08:57:07 4085

jdk-1.8.0_211-linux-x64.tar.gz

国外网站下载太慢,留一份自己用

2021-04-16

vsftpInstall.zip

通过vsftp快速在centos7系统上搭建ftp服务,省去配置过程,一步到位。

2021-02-02

linux-4.19.155.tar.gz

linux 4.19.155版本内核源码

2021-01-18

librdkafka-master

针对c语言封装的kafka接口

2019-10-22

mysql-connector-odbc-noinstall-5.1.13-winx64.zip

64位myodbc。使用方法见本人博客:http://blog.csdn.net/superbfly/article/details/51273808

2016-04-28

mysql-connector-odbc-noinstall-5.1.13-winx64

64位安装包,使用步骤见本人博客。

2016-04-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除