自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 资源 (3)
  • 收藏
  • 关注

原创 wazuh 日志收集原理分析

wazuh 默认安装到 /var/ossec目录下。我基于manager端进行分析,和agent一样。默认启动ossec-logcollector进程去搜集日志:比如 snort日志、auditd日志、syslog日志等。入口函数代码在src/logcollector/main.c中。int main(int argc, char **argv){ /* 初始化处理: 命...

2019-11-05 18:25:42 4845

原创 Collectl 监控进程 和 产生plot格式文件

Collectl 也是一款性能监控工具。工作需求,需要监控一些进程的cpu信息。上网搜资料发现可以使用Collectl来监控。collectl -sZ 即可监控进程信息,会在终端输出,数据类似top命令的格式,默认60秒刷新一次。如果不想在终端输出,想保存在文件中可以使用-f/tmp ,保存在/tmp目录下 raw格式的文件ls /tmp/localhost-2...

2019-08-26 19:46:05 233 2

原创 linux 审计(auditd)原理分析

前面几篇博客说过可以使用auditctl 添加和删除规则等。现在谈谈auditd的相关实现。基于 Linux2.6.11.12这些代码主要在下面的文件中kernel/audit.c 提供了核心的审计机制。kernel/auditsc.c 实现了系统调用审计、过滤审计事件的机制。用户可以使用应用程序auditctl向内核添加规则,内核检测到这些变动之后,会在进程创...

2019-08-18 23:25:59 2481

原创 snort 源码分析之模式匹配引擎

snort是一款著名的开源IPS,其主页地址:点击打开链接。更详细的介绍网上很多,可自行搜索了解。本博客主要介绍snort-2.9.5版本的模式匹配引擎的加载和匹配。 模式匹配引擎主要使用多模式匹配算法和单模式匹配算法。先由多模式匹配算法大概确定有哪些规则可能匹配成功,然后再通过单模式匹配算法去精确匹配。其配置格式如下:config detection: search-me...

2017-03-20 16:06:05 3884 3

原创 windows7 Ubuntu 16.04.6 smb共享 (遇到的问题)

今天打算编译内核,然后调试理解协议栈的原理和代码,通过source insight 阅读代码,如果在Windows下创建工程,代码linux目录下,这个时候需要共享目录来使用ubuntu下的代码建立工程。这样就不要将代码再拷贝到ubuntu的/usr/src/linux下面编译了。可以直接编译。共享方式采用smb服务。参照网上smb的搭建方式来操作。系统起来,在Windows文件夹下面访问smb服务,发现访问不到,原来是新加的用户没有启用,执行sudo smbpasswd -e username 就

2020-11-28 22:36:44 19

原创 Linux c 程序打印堆栈方法及注意事项

通过调用backtrace和backtrace_symbols可以打印出当前的调用堆栈.以下是代码例子,参照gnu Backtraces 文档#include <execinfo.h>#include <stdio.h>#include <stdlib.h>/* Obtain a backtrace and print it to stdout. */voidprint_trace (void){ void *array[10]; char

2020-11-23 21:26:15 45

原创 cpu cache valgrind cachegrind测试

#include <stdio.h>#include <unistd.h>#include <sys/time.h>#include <stdlib.h>int MAX_SIZE = 10240;int main(){ float time_use=0; struct timeval start; struct timeval end; int **array = NULL; int i,j, num = 0; .

2020-11-02 12:08:25 67

原创 strftime时间格式化与逆操作strptime

#include<stdio.h>#include<string.h>#include<time.h>int main(){ time_t rawtime, rt2; struct tm *timeinfo, tm2; char timE[80]; time(&rawtime); timeinfo=localtime(&rawtime); long len = 0; len = strftime(timE,80,"%Y%m%d:%.

2020-09-12 15:23:37 28

原创 curl 命令行创建目录和检查目录是否存在 (ftp/ftps)

创建目录curl -u -u admin:123456 --ftp-ssl -k ftp://10.121.215.220 -Q "MKD this_is_a_test"curl -u admin:123456 ftp://10.121.215.218 -Q "MKD FTP"curl --ftp-ssl -u admin:123456 -k ftp://10.121.215.220 -Q "MKD this_is_a_test"检查目录是否存在curl -u admin:123..

2020-09-02 20:57:16 220

原创 libcurl 在ftp/ftps服务器上面创建目录

#include <iostream>#include <string.h>#include <curl/curl.h>int main(){ char temp[2000]; struct curl_slist *headerlist=NULL; CURL *curl = curl_easy_init(); curl_easy_setopt(curl, CURLOPT_URL, "ftp://admin:123456@192.168.1.150");.

2020-09-02 19:12:51 192

原创 libcurl检测FTP/FTPS服务器是否存在某个目录

#include <iostream>#include <curl/curl.h>int main(){ CURL *curl = curl_easy_init(); /* FTP_DIR 为对应的目录 */ curl_easy_setopt(curl, CURLOPT_URL, "ftp://admin:123456@192.168.0.150/FTP_DIR"); curl_easy_setopt(curl, CURLOPT_NOBODY, 1L); c.

2020-09-02 18:59:11 21

原创 gdb 查看全局变量字符数组 (编译时不带-g)

#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>char g_file_name[100] = "this is a test";char * g_str_ptr = "this is a test"; int main(){ char file_name[100] = "stat_test.c"; struct stat s.

2020-08-18 09:55:38 169

原创 ubsan gcc -fsanitize=undefined 检测栈溢出

The Undefined Behavior Sanitizer - UBSANUBSAN is a runtime undefined behaviour checker.UBSAN uses compile-time instrumentation to catch undefined behavior (UB). Compiler inserts code that perform certain kinds of checks before operations that may cause

2020-06-23 20:46:12 379

原创 dmesg 使用

在‘dmesg’命令后跟随‘tail’命令(‘ dmesg | tail -100’)来输出‘dmesg’命令的最后100行日志dmesg | tail -100

2020-05-22 11:02:49 28

原创 snprintf printf %02d 是假的

#include <stdio.h>int main(){ int ret = 0; char c[10] ={}; ret = snprintf(c, 10, "wwwwwwwwwwwwww"); printf("%s, %d\n", c, ret); int id = 0; sscanf("4444", "%d", &id); printf("id :%2d\n", id); return 0;}结...

2020-05-21 14:25:06 118

原创 字节序转换异常问题

在定位产品问题的过程中,发现对数据包IPV6包长度不对,定位发现,在进行计算时先将主机序转成网络序,然后两个网络序数值相加导致数据异常。下面以一段代码事例说明问题 :#include <stdio.h>#include <arpa/inet.h>int main(){ unsigned short i = 248, j = 40; unsigned short test = 0, test2= 0; test = htons(i)

2020-05-13 20:54:21 109

原创 tcpreplay 回放报文

sudo tcpreplay --loop=0 --mbps=10.0 --intf1=enp4s0 Downloads/test.pcap表示 以10M/s的速度无限循环回放此报文。--loop=0 :无限回放--intf1=enp4s0 : 使用哪个网卡...

2020-04-10 09:25:51 382

原创 wireshark 导出指定tcp流的数据包

数据包回放时,如果我们只想将pcap包中的部分数据进行回放,怎么办呢,首先使用wireshark打开文件, 在过滤器中进行过滤,比如我只想要tcp.stream eq 0的数据,可以如下操作:过滤好数据,然后依次操作 文件=>导出特定分组=>文件名称。写好就行了,比如test.pcap最后到指定的目录下打开相应文件,检查是否与预期一致;...

2020-03-31 20:12:22 1635

原创 串口连设备 Incorrect username or password!

最近在通过串口连设备的时候,需要用户名密码,然后登陆一直报错Username:Username:Username:admbsp_pci_scan_slot[16] not find dev 0xb746inPassword:static rule recover endIncorrect username or password!Username:Username:Usern...

2020-03-26 18:25:44 112

原创 samba Error NT_STATUS_CONNECTION_REFUSED Failed to connect with SMB1 -- no workgroup available

连接同事的共享服务时报错:smbclient -L ip-U userWARNING: The "syslog" option is deprecatedEnter WORKGROUP\administrator's password: Sharename Type Comment --------- ---- ----...

2020-03-12 11:18:21 3249

原创 c语言实现收集Linux的syslog

以只读的方式打开syslog文件,定时收集,并将日志输出到终端#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <time.h>#include <sys/stat.h>#define OS...

2019-11-28 10:35:15 193

原创 wazuh与clamav 联动

第一步安装 clamav本次测试使用的是Ubuntu 14.04.6 LTS 系统,直接使用二进制包安装apt-get install clamavapt-get install clamav-daemonapt-get install libclamunrar6注意:wazuh支持收集很多日志,比如syslog,clamav自己会写日志到/var/log/cla...

2019-11-21 14:39:09 604

原创 wazuh 收集 suricata eve.json日志

安装suricata和规则 (源码或者安装包),本博客提供安装包操作方式:切换成超级用户进行操作yum -y install epel-release wget jqcurl -O https://copr.fedorainfracloud.org/coprs/jasonish/suricata-stable/repo/epel-7/jasonish-suricata-stable-e...

2019-11-19 17:03:24 1346

原创 osquery 源码分析之processes

osquery的代码风格很好, processes的基本实现原理可以通过以下链接查看https://github.com/osquery/osquery/blob/master/specs/processes.table里面有表名、schema (表结构)、实现方式、使用方式 (sql语句)。我们通过上面提供的实现方式来看代码:implementation("system/proc...

2019-11-13 17:12:18 235

原创 procps 获取进程信息

最近在使用wazuh时,发现在收集agent端的进程信息的时候,使用了一个第三方库 procps来处理/proc下面的信息的。使用方式1:调用openproc进行初始化,设置需要收集的信息标志;创建PROCTAB对象;2:调用readproc循环读取数据,每次遍历需要调用freeproc释放资源;3:最后调用closeproc,也是释放资源比如关闭打开的目录;看一下 w...

2019-11-13 12:39:08 342

原创 wazuh 原理分析之Syscollector 系统信息收集工作流程

wazuh是从ossec-hids衍生过来的,部分架构设计有所不同, 多进程多线程模式。本机的进程之间通过Unix domain socket 进行通信的。今天简单介绍一下数据搜集的相关功能的实现(Linux系统)。注意由于篇幅所限, 在函数中我们只列出相关代码。可以先看一下官网的架构设计https://documentation.wazuh.com/3.9/getting-...

2019-11-07 17:20:31 923

原创 Linux 线程私有数据 测试用例

线程私有数据可以用来存储线程本地的信息,tcmalloc就是用了该机制来减少锁的开销,加快内存分配。下面给出了一个测试用例通过pthread_key_create创建一个线程私有数据的key,并设置这个key对应私有数据的释放函数;调用pthread_setspecific将key和私有数据进行关联;可以调用pthread_getspecific进行获取私有数据。#include ...

2019-11-01 19:12:35 56

原创 wazuh agent 认证

wazuh 是一款hids, c/s架构, agent 要连上manager,需要进行认证。认证的方式有多种,下面提供一种比较简单的方式来处理:在agent端使用agent-auth来进行认证获取agent key查看帮助信息/var/ossec/bin/agent-auth -h使用方式/var/ossec/bin/agent-auth -m manager_ip...

2019-10-31 15:03:07 501

原创 Makefile 定义函数 foreach

Makefile 自定义函数 和 foreach的使用。最近在做项目时,用到了一些开源的组件,这些组件中需要第三方库,每个版本对应的第三方库可能不一样,所以使用源码编译安装时,第一次需要去下载这些包,但是下载比较慢,需要改造Makefile。Makefile 定义函数来实现这个改造函数格式define EXTERNAL_TAR ...endef调用deps...

2019-10-30 17:15:04 61

原创 chdir 切换工作目录

chdir 执行成功后,程序就可以切换工作目录,可以与chroot结合起来用,进行隔离。上代码:#include <unistd.h>#include <pwd.h>#include <stdio.h>int main(int argc, char *argv[]) { char * path = "/home/jack"; i...

2019-10-24 13:47:12 110

原创 关于 /proc/pid/net/unix

进程的/proc/$pid/fd 目录下存放了此进程所有打开的fd。如果想查看某个进程打开的socket的详细信息,可以通过inode进行关联。网络连接的关联可以参考https://blog.csdn.net/lkkey80/article/details/16856063本文讲解的是Unix的关联,也是通过inode。inode :34249, pid 3080上图...

2019-10-11 18:11:43 592

原创 sqlite 查询和导出表结构

查询指定表结构:PRAGMA TABLE_INFO (process_open_sockets)所有表结构:.schema

2019-10-10 17:55:26 49

原创 cat: /proc/22657/ns/net: Invalid argument

这个错误是读取文件的方式不对使用 ls -alth 查看详情是一个链接,可以使用readlink 命令读取之;类似的还有也可以使用readlink函数进行读取man 2 readlink 查看使用方式下面给个例子#include<unistd.h>#include<stdio.h>#include<stdlib.h...

2019-10-09 17:37:27 238

原创 Linux 遍历读取/proc目录下的pid文件夹

#include <dirent.h>#include <string.h>#include <stdio.h>#include <stdlib.h>int main() { DIR *dp; struct dirent *entry; dp = opendir("/proc"); if (dp) { ...

2019-10-08 19:58:00 238 2

原创 gdb 断点调试 设置条件

在阅读osquery代码时,通过source insight寻找调用流程时(processes),找不到它的上一级调用函数。打算用gdb来查看调用堆栈。在调试的过程中。启动的方式是gdb /usr/bin/osqueryi在genProcesses打断点还是没有头绪。在初始化的时候进行设置断点发现并没有在设置的条件下面断点。后面改用以下方式设置断点...

2019-09-19 15:26:25 202

原创 Diamorphine rootkit的特性与原理分析

仅作LKM rootkit研究之用,滥用后果自负。Diamorphine 是一个Linux内核模块, 支持内核版本 2.6.x/3.x/4.x。可通过 uname -r 查看内核版本。特性:当加载的时候, 模块是不可见的(lsmod 看不到); 通过发送31信号,可以达到隐藏和不隐藏进程的目的; 通过发送63信号,可以隐藏和不隐藏该内核模块; 通过发送64信号(给任何进程),可以...

2019-09-12 15:34:38 366

原创 strace 对auditd监控的系统调用syscall性能分析

编写测试程序,内部调用系统调用,或者比较简单的方式,对sshd进程进行性能分析。采用第二种方式进行分析:找到要监控性能的进程的pid;不开启auditd监控规则, 使用strace开始测试启动检测sudo strace -c -p 7344上传文件linux_kernel_2-6-11-12_comment.tar.bz2上传完毕, ctrl +c 终止。...

2019-08-26 18:30:47 258

原创 centos7.6 安装java之后,还是无法使用javac命令。报错提示:

sudo yum-yinstalljava-1.8.0-openjdk执行configure还是报错, javac 没有sudoyum install java-devel./configure成功

2019-08-14 18:16:21 637

原创 linux pgrep命令获取shell终端PID

pgrep 获取进程的pid功能类似于 ps -ef|grep process_name例如:pgrep bash 与ps -ef|grep bash下面给出另一种方式把所有shell的euid 获取到pgrep "^(echo $(cat /etc/shells | tr '/' ' ' | awk 'NF{print $NF}' | tr '\n' '|'))$...

2019-08-12 19:03:32 520

原创 linux rename使用

最近要对rename (系统调用号 82) 系统调用进行审计,使用mv 没有对应的信息产生,最后选择rename来实现。man rename使用方式是:例如需要把test100 改成test1rename test100 test1 test100上面就会执行 rename 系统调用如果开启了 auditd 审计,就会有如下信息:type=SYSCA...

2019-08-09 16:10:57 5427 1

可行性研究与需求分析

可行性研究与需求分析 需求分析掌握软件需求分析的任务与目标及Warnier图的使用,熟悉需求规格说明书的基本结构

2011-09-15

userspace-rcu.rar

liburcu是一个LGPLv2.1用户空间RCU(读取 - 复制 - 更新)库。 此数据同步库提供读取端访问,该访问可随CPU核数量线性扩展。 liburcu-cds提供基于RCU和无锁算法的高效数据结构。 这些结构包括哈希表,队列,堆栈和双向链表。

2019-08-08

tokyo cabinet 源码

2017-01-20

空空如也

空空如也

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

TA关注的人 TA的粉丝

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