- 博客(121)
- 收藏
- 关注
原创 pcre -- 使用案例1
源文件test.c#include <stdio.h>#include <pcre.h>static char *content = "Mozilla/5.0 (iPhone; CPU iPhone OS 14_5 like Mac OS X) AppleWebKit/605.1.1";int main(){ char *pcre_reg = "(iPhone)([^A-Z])"; const char *eb = NULL; const char *Matc.
2022-04-24 11:36:14
580
转载 hyperscan --- 1
介绍Hyperscan 是一个正则表达式引擎,旨在提供高性能、同时匹配多个表达式的能力以及扫描操作的灵活性。hyperscan的工作步骤包含编译模式和扫描模式。hyperscan基本资料官网:Home Page - Hyperscan.io用户手册:Preface — Hyperscan 5.4.0 documentation编译模式串被编译生成不可变模式数据库的, 然后可以使用扫描接口扫描给定模式的目标数据缓冲区,从该数据缓冲区返回任何匹配的结果。...
2022-04-20 18:08:23
3955
原创 ARP协议 (1)
协议解决什么问题路由器可以沿逻辑路径传送数据包,其中逻辑路径包括多个数据链路, 沿数据链路传送数据包时,需要把数据包封装在帧中,并且使用数据链路标识(如MAC 地址)让帧可以从链路的源点到达目的地。路由器利用何种机制发现并共享链路地址信息。类似的,数据链路上的设备也需要一种方法发现邻居的数据链路标识,以便将数据帧传送到正确的目的地。这种机制就是ARP协议。当一台设备需要发现另一台设备的数据链路标识符时,它将建立一个ARP 请求数据包。这个请求数据包中包括目标设备的IP...
2022-03-30 10:46:45
307
原创 ARP报文目的MAC为什么不是广播地址?
在看ARP地址解析协议的书籍,书中介绍arp请求报文的目的MAC地址是广播地址(ff:ff:ff:ff:ff:ff),如图:自己在PC上用wireshark抓了arp协议报文,发现抓到的包中目的MAC不是广播地址奇怪了,难道是把arp请求直接发给了网关。这个猜想是错的,因为目的地址192.168.1.3是我PC局域网的IP地址,而源地址192.168.1.1是局域网网关IP。调研一下原因:arp缓存表中,每条表项到期后,系统会先...
2022-03-29 22:29:15
5051
原创 cmake练习生成makefile
CMake是一个跨平台的、开源的构建工具。cmake 是 makefile 的上层工具,它们的目的正是为了产生可移植的makefile,并简化自己动手写makefile时的巨大工作量.目前很多开源的项目都可以通过CMake工具来轻松构建工程. cmake和makefile的关系,CMake 和makefile_水杯爱喝水的博客-优快云博客少量源文件的CMakeLists.txt一个源文件 main.c#include <stdio.h>int mai...
2022-03-28 20:54:52
3807
1
原创 CMake 和makefile
1. gcc它是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等等)。我们的程序只有一个源文件时,直接就可以用gcc命令编译它。可是,如果我们的程序包含很多个源文件时,怎么办,用gcc命令逐个去编译时,就发现很容易混乱而且工作量大,所以出现了下面make工具。2. makemake工具可以看成是一个智能的批处理工具,它本...
2022-03-28 20:27:28
3528
3
原创 网络协议--SSL/TLS
一、简介SSL(Secure Socket Layer 安全套接层)最初是由网景公司(Netscape)研发,在SSL更新到3.0时,被IETF(互联网工程任务组)标准化后写入RFC, IETF对SSL3.0进行了标准化为TLS1.0,并添加了少数机制,两者差别极小,TLS可以理解为SSL3.1。二、SSL和TLS的区别2.1 SSLSSL(Secure Socket Layer,安全套接字层),位于TCP/IP协议和应用层协议之间的一种协议层。SSL通过...
2022-03-13 14:46:47
6340
转载 IP数据包校验过程
1、算法思路:IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,算法如下: 在发送数据时,为了计算IP数据包的校验和。应该按如下步骤: (1)把IP数据包的校验和字段置为0; (2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和; (3)把得到的结果存入校验和字段中。 在接收数据时,计算数据包的校验和相对简单,按如下步骤: (1)把首部看成以16位为单位的数字组成,依次进行二进制反码求和,包括校验和字段; (2)检查计算出的校验...
2021-06-19 19:10:21
2123
原创 likely与unlikely
# define likely(x) __builtin_expect(!!(x), 1)# define unlikely(x) __builtin_expect(!!(x), 0)
2021-06-19 18:19:39
356
原创 linux 终端操作快捷键
对我来说经常使用的几个:回到行尾 ctrl + e回到行首 ctrl + a删除到尾 ctrl + k删除到首 ctrl + u删除单词 ctrl + w粘贴 ctrl + y向前移动 ctrl + b向后移动 ctrl + f搜索历史 ctrl + r移动词头 Esc + b移动词尾 Esc + f...
2021-06-15 11:24:13
216
原创 protobuf-c
https://www.cnblogs.com/Anker/p/3416541.htmlhttps://blog.youkuaiyun.com/u014308482/article/details/52958148 proto写法指南https://blog.youkuaiyun.com/zb313982521/article/details/110341454https://www.cnblogs.com/Anker/p/3416541.html
2021-06-14 21:12:07
1854
1
转载 scapy
Scapy是一个强大的,用Python编写的交互式数据包处理程序,它能让用户发送、嗅探、解析,以及伪造网络报文,从而用来侦测、扫描和向网络发动攻击。Scapy可以轻松地处理扫描(scanning)、路由跟踪(tracerouting)、探测(probing)、单元测试(unit tests)、攻击(attacks)和发现网络(network discorvery)之类的传统任务。它可以代替hping,arpspoof,arp-sk,arping,p0f甚至是部分的Nmap,tcpdump和tshark的..
2021-06-14 17:49:44
256
原创 supervisord学习
https://www.cnblogs.com/wlbl/p/9953587.html#3%E3%80%81supervisor%E7%9A%84%E7%BB%84%E5%BB%BA%E6%9E%84%E6%88%90
2021-05-31 18:46:32
158
原创 zmq--概述-1
一、zmq概念 zmq(zeroMQ, zero-message-queue)看起来像一个可嵌入的网络库,但是却像一个并发框架,可重用的消息传递系统。 跨过程,IPC,TCP,TIPC,多播传送消息。 智能模式,例如pub-sub,push-pull和router-dealer。 小型库中的高速异步I / O引擎。 支持每种现代语言和平台。 构建任何架构:集中式,分布式,小型或大型二、为什么需要zmq 如今,许多应用程序由跨某种网络(局域网或Internet)延伸的...
2021-05-02 21:53:06
8632
原创 2021-04-27
临时记录,待以后研究:1.libnet/libnids库函数介绍https://www.cnblogs.com/hnrainll/archive/2011/09/01/2162153.html2. 缓存,传输Memcached 是一套高性能的、分布式内存对象缓存系统。https://cnbin.github.io/blog/2015/06/28/memcached-jian-jie/CDN-内容分发网络redis: 它的数据模型非常独特,用的是单线程。重要:redis既然是用于..
2021-04-27 10:58:53
163
原创 source insight 快捷键,提高编程效率
退出程序: A1t+F4重画屏幕: Ctr1 +A1 t +Space完成语法: Ctr1+E复制一行: ...
2021-01-22 11:07:05
438
原创 GB2312与UNICODE码互转
static int code_convert(char *from_charset, char *to_charset, char *inbuf, int inlen, char *outbuf, int outlen){ iconv_t cd; char **pin = &inbuf; char **pout = &outbuf; cd = iconv_open(to_charset, from_charset); if (cd == 0) { return ...
2021-01-15 16:21:16
1422
原创 GB2312内容转UTF-8
int get_message_encoding(char *message, int message_len, char *encoding_type){ int len = 0; uchardet_t ud = NULL; ud = uchardet_new(); if (uchardet_handle_data(ud, message, message_len) != 0) { uchardet_delete(ud); re.
2021-01-15 16:16:13
457
原创 获取网卡IP
int get_devip(char *devip){ int sock; struct sockaddr_in sin; struct ifreq ifr; sock = socket(AF_INET, SOCK_DGRAM, 0); if (sock == -1){ perror("socket"); return -1; } strncpy(ifr.ifr_name, ETH_NAME, IFNAMSIZ).
2021-01-06 11:42:25
241
转载 tcpdump 抓包命令(转)
TCPdump抓包命令tcpdump是一个用于截取网络分组,并输出分组内容的工具。tcpdump凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具。用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉...
2020-12-25 11:17:58
508
原创 面试-数据结构-trie树
一、定义及使用场景 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高特点:1、根节点不包含字符,除根节点意外每个节点只包含一个字符。2、从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。3、每个节点的所有子节点包含的字符串不相同。4、...
2020-12-23 11:03:57
150
原创 面试-数据结构-判断链表中是否有环
答案:可设定两个指针,一个快指针pFast,每次走两步,一个慢指针pslow,每次走一步,然后让这两个指针从头开始遍历整个单向链表,如果链表中有环pFast与pSlow一定会相遇(因为链表没有结尾,没有NULL),否则不会相遇(都遍历到尾结点NULL)int IsExistLoop(Linklist *head){ LinkList *pSlow = NULL; LinkList *pFast = NULL; while(pFast != NULL &&am
2020-12-20 21:35:24
91
原创 面试-算法-找出两个链表中第一个相交点
方法一:求len1, len2, 让比较长的链表先走|len1 - len2|,然后让两个指针齐步走,第一次相等的位置即为第一个相交的起点。方法二:
2020-12-20 21:25:13
132
原创 面试-算法-判断两个单链表是否相交(转)
一、链表中无环1.hash值法:如 果 两个链表相交,则两个链表就会有共同的结点;而结点地址又是结点唯一标识。因而判断两个链表中是否存在地址一致的节点,就可以知道是否相交了。可以对第一 个链表的节点地址进行hash排序,建立hash表,然后针对第二个链表的每个节点的地址查询hash表,如果它在hash表中出现,则说明两个链表有共 同的结点。这个方法的时间复杂度为:O(max(len1+len2);但同时还得增加O(len1)的存储空间存储哈希表。这样减少了时间复杂度,增加 了存储空间。以链表
2020-12-20 21:07:35
383
原创 面试-算法-单链表结点的删除
给定单链表的一个结点的指针,且该结点不是尾结点,此外没有指向其他任何结点的指针,请在O(1)时间内删除该结点。答案:假如给定的指针为p,将p->next的value拷贝给p的value, 然后让p->next = p->next->next, 最后释放p之前的next结点int freeNode(N *node){ int value = 0; N *p = NULL; if (!node) return -1; if
2020-12-20 20:18:38
182
原创 面试-算法-找到单链表的倒数第N个元素(转)
一、几种方法1. 遍历法,第一次遍历确定链表总长度,第二次遍历找到倒数第N个元素。需要遍历两次2. N长度队列,遍历链表每个元素入队,队列满时出队,当链表遍历完毕时,队列中队首元素为倒数第N个元素。需要借助额外队列3. 两个距离N个元素的指针。遍历一次,空间复杂度为O(1)接下来,我们让指针P1和P2同时循环右移,每次右移一步,直到指针P2移动到链表的末尾:此时,由于P2指向链表的尾结点,且P1和P2的距离是n-1,因此P1所指的结点就是我们要寻找的链表倒数第n个结点:.
2020-12-20 19:50:32
835
原创 面试-算法-单链表逆序输出法
一、有几种方法数组法,遍历链表每个元素存数组,然后逆序遍历数组输出 头插法,遍历链表将遍历到的元素插入链表头,然后重新遍历链表输出 栈输出,遍历链表将每个元素存入栈中,然后将栈元素全部出栈输出 递归法,遍历链表,非未节点则继续递归二、实现 数组法实现核心代码:int array_rever(N *head){ int i = 0; N *p = NULL; N **parray = NULL; int len = 0; ...
2020-12-20 16:55:30
351
1
原创 GBD--条件断点、多线程调试
一、条件断点#b functionName if sid > 1720121101 && sid < 1720121130 //在函数上设置断点#btest.c:55if asset != 0x00 //在文件内设置断点二、多线程调试(转)nfo threads 显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID。 前面有*的是当前调试的线程。thread ID 切换当前调试的线程为指定ID的线程。br...
2020-12-17 16:19:37
478
转载 fread “rb“与“r“,“wb“,“w“的区别
在fread时,"rb"与"r"对某些字符作用,是不同的;文本模式和二进制模式读取不一样的文本:读: 遇到回车-换行(0D 0A),就会转换为换行符0A 写:遇到换行符0A,就会转换为回车-换行(0D 0A) 比二进制相差一个字节而二进制则读写保持原样 为什么这样呢?答案: 为了与linux,nuix兼容, 本来换行原来就是0A('\n'), 微软把\n 改为了\r\n,即从0A改为0D 0A....
2020-12-08 16:58:13
1026
原创 Elasticsearch Index Template(索引模板)
https://www.jianshu.com/p/1f67e4436c37
2020-12-06 17:48:59
299
原创 popen获取命令执行结果分析
C工作者经常遇到需要在C程序中执行shell命令并获取返回结果的情况,一般我们用popen函数来完成,程序如下#include <stdio.h>#include <stdlib.h>#include <unistd.h>int get_pipeStr(char* cmd, char *res){ int len = 0; if(strlen(cmd) <= 0) return len; FILE *fp = NULL; ch...
2020-07-19 15:16:23
2360
原创 一些笔记
针对性、系统性的学习完美的做完一些事情先汇报结果,精简过程不要依赖领导自己成长一定要实践能力越大,社交范围越大,所以先提高自己的能力做事情分轻重缓急,紧急且重要,重要不紧急,紧急不重要,不重要不紧急真正得罪领导的是辜负领导对你的期望利益才是主线找到兴趣点,问题点,超预期完成服务器端:要有大局观死磕项目,一件事做到极致学习要搞懂原理,方法,才能融会贯通较劲就是为了让自己变得脸皮厚我的问题:学习东西不求原理,不去实践,执行力不强,嫉妒心强,没有目标,没有计划,没有动力,自
2020-07-05 20:08:20
150
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人