自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 Linux下C语言时间函数使用及UTC时间转换本地时间

#include <stdio.h>#include <time.h>//gcc time_test.c -o time_testint main(){ time_t now; struct tm* tm_now; time(&now); tm_now = localtime(&now); printf("The number of seconds since January 1, 1970 is %d\n", now

2021-08-10 10:26:53 1892

原创 CentOS7.5下编译wireshark-3.4.7源码及测试tshark

CentOS7.5下编译wireshark-3.4.7源码及测试tshark一、源码编译二、测试tshark   在分析网络协议时离不开Wireshark,为了方便后续深入源码学习协议解析细节,所以编译源码,过程如下:一、源码编译wireshark-3.4.7源码下载: https://1.as.dl.wireshark.org/src/wireshark-3.4.7.tar.xz.编译环境依赖库参考文档:https://www.wireshark.org/docs/wsdg_html_chun

2021-07-24 17:24:04 1161 1

原创 CentOS7.5下使用Docker安装MongoDB及C使用mongo-c-driver-1.18.0操作MongoDB

CentOS7.5下使用Docker安装MongoDB及C使用API操作MongoDB1 Docker安装MongoDB及简单使用2 C使用API操作MongoDB2.1mongo-c-driver-1.18.0驱动安装2.2C语言操作MongoDB简单示例1 Docker安装MongoDB及简单使用安装镜像参考:https://www.runoob.com/docker/docker-install-mongodb.html.1、docker下载MongoDB镜像:docker pull mongo

2021-07-17 14:09:12 487

原创 Linux下信号函数signal使用

  在Linux后台开发过程中,经常会处理中断信号来决定是否关闭后台程序,所以简单整理了一下signal函数,代码如下:#include <signal.h>#include <unistd.h>#include <stdio.h>//gcc signal.c -o signal//信号处理函数,其中signum为信号值void SignalProc(int signum){ FILE *out = fopen("./signal.log","a..

2021-07-10 12:55:37 745

原创 CentOS7.5下SNMP安装及简单使用

CentOS7.5下SNMP安装及简单使用1 SNMP安装2 SNMP测试2.1 启动服务2.2 V1、V2版本查询OID2.3 V3版本查询OID2.4 常用MIB文件2.5 OID扩展1 SNMP安装1、安装snmp:yum install -y net-snmp net-snmp-utils2、查看安装包:rpm -qa | grep net-snmp*3、查看snmp版本:snmpd -v4、snmp服务启停:systemctl start snmpdsystemctl stop s

2021-07-09 23:06:07 1887 1

原创 Linux C语言实现TCP/IP的checksum校验和计算

Linux C语言实现IP/TCP的checksum校验和计算一、sendip的IP/TCP的checksum计算二、checksum的计算测试   在使用原始套接字发送/接收报文时,需要计算IP/TCP的checksum来验证报文的准确性,网上看了很多开源软件的实现(如SendIP、libdnet、Suricata),感觉SendIP的代码最简单,所以整理如下方便后面使用。一、sendip的IP/TCP的checksum计算1、sendip: https://github.com/rickett

2021-06-28 15:54:06 2719

原创 Git下载代码到Windows再拷贝到Linux下编译时要关闭换行符自动转换

Git下载代码到Windows再拷贝到Linux下编译时要关闭换行符自动转换一、各操作系统下文件换行符二、TortoiseGit下载Github代码关闭文件换行符三、示例说明1、开启换行符自动转换2、关闭换行符自动转换后   在开发过程中,经常从Github上通过TortoiseGit客户端下载代码到Windows上来学习源码,再通过共享目录拷贝到Linux下编译,因为Windows与Linux下的文件换行符不一样,所以需要注意关闭换行符转换,否则执行configure会出错。一、各操作系统下文件换

2021-06-25 15:04:06 1330

原创 CentOS7.4下C++开源YAML配置解析库yaml-cpp-0.6.0的使用

yaml-cpp-yaml-cpp-0.6.0// a sketch of what the new API might look like#include "yaml-cpp/yaml.h"#include <iostream>using namespace std;//g++ -std=c++11 api_test.cpp -o api_test -lyaml-cppint main() { YAML::Node config = YAML::LoadFile("conf

2021-06-23 17:54:16 616 1

原创 CentOS7.4下C++开源日志库easyloggingpp的使用

开源库位置:https://github.com/amrayn/easyloggingpplog_test.cc#include "easylogging++.h"INITIALIZE_EASYLOGGINGPP//g++ log_test.cc easylogging++.cc -o log_test -std=c++11int main(int argc, const char** argv) { // Load configuration from file el::Configura

2021-06-23 17:16:56 581

原创 CentOS7.5下使用Boost.Program_options解析命令行参数

CentOS7.5下使用Boost.Program_options解析命令行参数一、安装Boost依赖环境二、简单示例   之前在Linux下使用getopt函数解析命令行参数,Boost也提供了Program_options解析命令行参数,现整理如下:一、安装Boost依赖环境yum -y install boost-devel boost-staticLinux下源码编译安装参考官方文档:https://www.boost.org/doc/libs/1_76_0/more/getting_

2021-06-23 15:02:12 255

原创 CentOS7.5下通过systemctl添加服务

CentOS7.5下通过systemctl添加服务一、服务文件二、安装服务三、测试服务   在部署后台应用中,经常会以服务方式运行,当后台程序挂掉后会自动拉起,所以简单整理一下服务部署过程。一、服务文件1、测试脚本service-test.sh,脚本功能每秒钟打印时间戳到日志文件#!/bin/bashBASEPATH="/home/test/service/"LOGFILE=${BASEPATH}"service-test.log"echo `date +"%Y-%m-%d %H:%M:

2021-06-19 18:10:20 566

原创 CentOS7.4下编译libpcap-1.9.1及简单抓包使用

CentOS7.4下编译libpcap-1.9.1及简单抓包使用一、源码编译二、测试示例三、补充说明   在学习nmap源码过程中,发现端口扫描底层是使用libpcap设置过滤表达式来接收响应包,从而判断主机是否在线。官网发现tcpdump底层也是libpcap,加上之前的suricata中也有使用libpcap,所以整理了一下libpcap的使用。一、源码编译官方网站:https://www.tcpdump.org/1、源码解压与编译安装:(1)tar -xvf libpcap-1.9.1.

2021-06-10 17:31:06 1088

原创 VMvare虚拟机下CentOS7.4通过samba共享目录

  在Linux后台开发过程中经常是Windows下编写代码,然后将代码拷贝到需要Linux虚拟机下进行编译,为了避免拷贝操作,通过samba共享目录方式,步骤如下:1、安装sambayum install samba samba-client2、添加共享目录vi /etc/samba/smb.confworkgroup = WORKGROUP[share] path = /root/home/code writable=yes browseable = yes public..

2021-06-08 10:22:39 132

原创 VMvare虚拟机下CentOS7.4编译dpdk-18.08.1遇到问题解决与测试

VMvare虚拟机下CentOS7.4编译dpdk-18.08.1遇到问题解决与测试一、编译二、DPDK绑定网卡三、测试helloworld一、编译1、tar -xvf dpdk-18.08.1.tar.xz后进入dpdk-stable-18.08.1,执行 ./usertools/dpdk-setup.sh,选择15 [15] x86_64-native-linuxapp-gcc后出现如下错误2、安装yum install numactl-devel*x86_64 -y后继续执行./usertoo

2021-06-08 10:08:16 465

原创 Linux下getopt函数使用

  在学习nmap源码时,发现代码中使用getopt_long_only解析命令行参数很方便,所以先整理一下getopt_long_only的简化版本getopt的使用,后续再整理getopt_long与getopt_long_only,代码如下:#include <ctype.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>//相关API及示例说明//getopt说明:h..

2021-06-03 16:18:26 221 1

原创 Linux下fork函数使用及僵尸进程处理

很多的开源代码都是基于C的,涉及很多全局变量,没法使用多线程处理,所以会使用fork进行多进程处理,简单整理了一下fork函数的使用及僵尸进程处理,代码如下:#include <unistd.h> #include <stdio.h>#include <stdlib.h>#include <signal.h>//gcc fork_test.c -o fork_testint g_child_process_count = 2;voi...

2021-05-20 15:22:57 282

原创 网络IP地址转换小工具-网络字节序/主机字节序

netaddr_convert.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <errno.h> #include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/i

2021-04-15 09:54:21 1037

原创 CentOS7.5下nmap-7.91测试主机在线原理与wireshark抓包验证

CentOS7.5下nmap-7.91测试主机在线原理与wireshark抓包验证一、ICMP方式(只选择PING方式,其他类型原理相同)二、TCP方式(只选择SYN报文测试,其他类型原理相同)2.1 端口关闭2.2 端口开放三、UDP方式(windows10测试并未收到ICMP端口不可达报文)四、ARP方式(局域网内测试主机是否在线)在不考虑防火墙的情况下进行测试,否则防火墙会过滤报文影响测试,关闭windows防火墙与CentOS防火墙nmap官方参考资料:https://nmap.org/bo

2021-03-13 20:07:38 199

原创 CentOS7.5下编译nmap-7.91及简单使用与wireshark抓包验证

CentOS7.5下编译nmap-7.91及简单使用一、编译及简单测试二、主机发现三、端口扫描四、操作系统识别一、编译及简单测试1、源码解压与编译:(1)tar -xvf nmap-7.91.tar.bz2(2)进入nmap目录:cd nmap-7.91/(3)./configure(4)make2、测试主机发现:./nmap -ddd -vvv -sn 110.242.68.43、抓包结果对比:tcpdump -i ens33 -e -XX -s0 host 110.242.68.4

2021-03-06 12:16:22 914

原创 CentOS7.5下使用Docker安装Kafka及C使用librdkafka调用Kafka

一、安装Kafka1、安装docker:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun2、安装docker-compose:yum install docker-compose3、使用docker-compose.yml安装启动Kafka:(1)先启动docker服务:systemctl start docker(2)安装Kafka及后台启动docker:docker-compose -f docker-co

2021-02-27 17:47:52 823

原创 suricata-5.0.3源码学习之StreamTcpPacket

suricata-5.0.3源码学习之StreamTcpPacket一、测试报文二、TCP通讯流程图三、断点调试一、测试报文二、TCP通讯流程图三、断点调试

2020-12-15 21:51:43 397

原创 GDB调试C/C++代码-命令帮助与打印内存及设置打印字符串长度

GDB调试C/C++代码-命令帮助与打印内存及设置打印字符串长度一、命令帮助二、打印内存三、设置打印字符串长度一、命令帮助1、进入gdb后输入help会显示命令类列表2、按照提示可以help+命令类名,会显示该类下的所有命令,如help data3、再进一步输入help+具体命令,会显示该命令的详细使用说明,如打印内存命令help x二、打印内存在网络开发时经常会打印报文内存1、命令格式,按照上面的说明翻译:x/FMT ADDRESS(1)ADDRESS:内存地址(2)FMT:打印的

2020-11-09 22:51:31 950

原创 获取网卡的MAC地址、IP地址、子网掩码以及ARP缓存中的主机IP及MAC地址

获取网卡的MAC地址、IP地址、子网掩码以及ARP缓存中的主机IP及MAC地址一、代码实现eth_test.c#include <stdio.h> #include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/ioctl.h>

2020-10-19 22:37:41 388 1

原创 Redis发布订阅功能的C客户端代码-使用hiredis库实现订阅功能

Redis发布订阅功能的C客户端代码-使用hiredis库实现订阅功能一、代码实现redis_test_sub.c#include <hiredis/hiredis.h>#include <stdio.h>int main(int argc, char** argv){ const char* pServerAddr = "127.0.0.1"; uint16_t nPort = 6379; const char* pSubChannel = "ChannelTe

2020-09-29 14:08:16 1035

原创 CentOS7.5下使用NodeJS+Express搭建web测试服务器

CentoOS7.5下使用NodeJS+Express搭建web测试服务器一、NodeJS安装二、Express安装三、测试一、NodeJS安装使用node-v12.13.0-linux-x64.tar.xz1、解压node-v12.13.0-linux-x64.tar.xz到/home目录:tar -xvf node-v12.13.0-linux-x64.tar.xz2、创建软连接:ln -s /home/node-v12.13.0-linux-x64/bin/npm /usr/local/

2020-09-19 13:23:38 191

原创 GDB调试C++代码-条件断点与断点读写

GDB调试C++代码-条件断点与断点读写一、条件断点二、断点读写三、调试运行的进程一、条件断点学习开源软件调试源码时,尤其是服务端程序,面对不同的客户端消息,经常需要消息过滤,此时就会用到条件断点。条件断点格式:b 断点位置 if 条件表达式以之前的TCP服务端代码为例,当客户端发送"hello"时,在服务端打印客户端发送内容前的代码处增加断点1、开始调试并且添加断点:gdb --args ./Server 6000添加断点:b TcpServer.cpp:98 if 0==strcmp(rec

2020-08-30 13:49:50 2178

原创 GDB调试C++代码-设置启动参数与断点及打印变量

GDB调试C++代码一、编译时加上 -g调试信息并且去掉优化信息二、设置启动参数三、设置断点四、开始调试五、打印变量六、退出七、其他常用命令一、编译时加上 -g调试信息并且去掉优化信息在Makefile中增加-g调试信息并且去掉优化信息将之前的Makefile中的文件内容CC = g++ -std=c++11OPT_LEVEL := -O2改为CC = g++ -std=c++11 -gOPT_LEVEL :=代码示例使用之前的TCP Client与Server通用的Makefile编写

2020-08-23 11:38:45 1734

原创 使用suricata-5.0.3离线分析pcap包

使用suricata-5.0.3离线分析pcap包一、编写规则文件二、抓取PCAP包三、分析四、运行结果一、编写规则文件/var/lib/suricata/rules/test.rulesalert http any any -> any any (http_response_line; content:"200 OK"; sid:1;)二、抓取PCAP包1、/etc/suricata/suricata.yaml添加新编写的规则文件2、实时分析:/usr/bin/suricata -c

2020-08-12 22:43:31 3051 2

原创 CentOS7.5下编译suricata-5.0.3及简单使用

CentoOS7.5下编译suricata-5.0.3及简单使用一、安装二、测试一、安装参考官方文档:https://redmine.openinfosecfoundation.org/projects/suricata/wiki/CentOS_Installation1、安装依赖库:yum -y install gcc libpcap-devel pcre-devel libyaml-devel file-devel zlib-devel jansson-devel nss-devel libca

2020-08-11 23:23:04 1044

原创 CentOS7.5下iptables同一服务器内与不同服务器之间端口转发

CentOS7.5下iptables本地端口转发1、配置规则:iptables -t nat -A OUTPUT -p tcp --dport 6000 -j REDIRECT --to-ports 6666规则说明:将本机6000端口的TCP包转发到6666端口上2、测试:开启两个TCP Server服务(使用之前的TCP服务器)./Server 6000./Server 66663、发送数据(使用之前的客户端):./Client 127.0.0.1 6000 “hello this is

2020-08-08 12:11:51 497

原创 通用的Makefile编写与简单的TCP Client

通用的Makefile编写与简单的TCP Client一、TCP Client二、Makefile三、编译与运行结果一、TCP ClientClient.cpp#include<stdlib.h>#include<string.h>#include<errno.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<a

2020-08-07 13:01:27 335

原创 Python生成可设置单元格背景色的表格图片

网上看到很多都是使用prettytable库绘制的表格,但是很不美观,所以自己使用pillow库绘制一个。Python生成可设置单元格背景色的表格图片一、安装pillow二、代码实现三、测试结果一、安装pillowPython版本使用Python3.8pip3 install pillow二、代码实现为了简化功能,代码中很多参数固定写死,可以根据需要自己来调整。#!/bin/python3# -*- coding:UTF-8 -*-from PIL import Image, Imag

2020-08-04 15:32:41 2183

原创 MySQL数据库安装及数据导入导出脚本

MySQL数据库安装及数据导入导出一、数据库安装二、数据库及表创建三、表数据导入导出一、数据库安装1、官网下载mysql80-community-release-el7-3.noarch.rpm后yum -y install mysql80-community-release-el7-3.noarch.rpmyum -y install mysql-community-server2、查看安装包:rpm -qa|grep mysql3、MySQL服务启动:service mysqld star

2020-08-04 08:09:06 1122

原创 FTP服务器搭建及自动下载文件脚本

FTP服务器搭建及自动下载文件脚本一、FTP服务器搭建二、浏览器与命令行测试三、自动下载文件脚本一、FTP服务器搭建在虚拟机192.168.109.135上搭建FTP服务器1、安装vsftpd:yum install vsftpd,安装成功后如下:2、添加test用户,不能登录系统(-s /sbin/nologin),FTP文件夹在(-d /home/ftp):adduser -d /home/ftp -s /sbin/nologin test设置test用户密码为test:passwd

2020-08-03 13:30:56 1501

原创 进程查找后强制结束与进程状态监控脚本

查找某一进程后强制结束进程killserver.sh#!/bin/bashps -ef|grep 'LinuxTcpServer'|grep -v 'grep' | awk '{print $2}' |xargs kill -s 9以后台进程LinuxTcpServer为例,后台进行运行情况如下:1、查看进程’LinuxTcpServer’:ps -ef|grep ‘LinuxTcpServer’2、过滤掉第二个grep --color=auto LinuxTcpServer:ps -ef

2020-08-02 11:51:48 218

原创 工作中经常用到的MySQL功能整理

粗体字段说明TABLENAME数据库表名,真正使用时替换真实即可DBNAME数据库名称,真正使用时替换真实即可COLUMNNAME字段名称,真正使用时替换真实即可INDEXNAME索引名称,真正使用时替换真实即可增加1、复制表结构:CREATE TABLE NEW_TABLENAME LIKE TABLENAME;添加旧表记录到新创建的表INSERT INTO NEW_TABLENAME SELECT * FROMTABLENAME WHERE...

2020-08-01 17:52:38 277

原创 通用的Makefile编写与简单的TCP Server

TCP Server示例TcpServer.h#pragma once#include <mutex>#include <queue>using namespace std;class TcpServer{public: void Run(uint16_t nPort);private: void Init(uint16_t nPort); void AddTask(int nSocket); void Consume();private: mutex

2020-08-01 16:09:15 224

原创 工作中经常用到的Linux命令整理

文件相关进程相关网络相关

2020-07-31 15:28:33 208

原创 C++11的简单学习及生产者消费者示例

lambda格式[捕获列表](参数列表) -> 返回类型 {// 函数体}值捕获void TestLambda(){ //1.值捕获,可以写成[=],被捕获的变量在lambda表达式创建时拷贝,而非调用时才拷贝 int nVal = 1; //auto copyValue = [nVal] //方式1 auto copyValue = [=] //方式2 { return nVal; }; nV

2020-07-30 22:10:28 178

原创 C++ STL的基本使用及注意事项

string头文件:#include <string>当string对象和字符串字面值混合连接操作时,+操作符的左右操作数至少有一个是string类型的,如 std::string strValue = "abc"; std::string strValue2 = strValue + "def"; //正确 std::string strValue3 = "abc" + "def"; //错误vector头文件:#include <vector>

2020-07-28 23:04:13 262

空空如也

空空如也

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

TA关注的人

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