当前位置: 首页 > news >正文

tcpdump抓取无效TCP标志数据包表达式

没啥可说的, 直接代码.. :)

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <stdint.h> // TCP 标志 #define TH_FIN 0x01 #define TH_SYN 0x02 #define TH_RST 0x04 #define TH_PUSH 0x08 #define TH_ACK 0x10 #define TH_URG 0x20 #define TH_ECE 0x40 #define TH_CWR 0x80 // TCP 合法标志组合, 标志PUSH, ECE, CWR为一直有效合法标志 static u8 tcp_valid_flags[(TH_FIN|TH_SYN|TH_RST|TH_ACK|TH_URG) + 1] = { [TH_SYN] = 1, [TH_SYN|TH_URG] = 1, [TH_SYN|TH_ACK] = 1, [TH_RST] = 1, [TH_RST|TH_ACK] = 1, [TH_FIN|TH_ACK] = 1, [TH_FIN|TH_ACK|TH_URG] = 1, [TH_ACK] = 1, [TH_ACK|TH_URG] = 1, }; int main(int argc, char **argv) { uint8_t flags_max = 0xff; uint8_t i; uint8_t flags = 0; uint8_t mask = (uint8_t)~(TH_ECE | TH_CWR | TH_PUSH); for( i = 0; i < flags_max; i++ ){ flags = i & mask; if ( tcp_valid_flags[flags] == 0 ) { // 标记已非法标志 tcp_valid_flags[flags] = 0x2; printf("'tcp[13] & 0x%x = 0x%x' or ", mask, flags ); } } printf("\n"); return 0; }

# gcc tcp_flags.c -o tcp_flags

# ./tcp_flags

输出

'tcp[13] & 0x37 = 0x0' or 'tcp[13] & 0x37 = 0x1' or 'tcp[13] & 0x37 = 0x3' or 'tcp[13] & 0x37 = 0x5' or 'tcp[13] & 0x37 = 0x6' or 'tcp[13] & 0x37 = 0x7' or 'tcp[13] & 0x37 = 0x13' or 'tcp[13] & 0x37 = 0x15' or 'tcp[13] & 0x37 = 0x16' or 'tcp[13] & 0x37 = 0x17' or 'tcp[13] & 0x37 = 0x15' or 'tcp[13] & 0x37 = 0x16' or 'tcp[13] & 0x37 = 0x17' or 'tcp[13] & 0x37 = 0x20' or 'tcp[13] & 0x37 = 0x21' or 'tcp[13] & 0x37 = 0x23' or 'tcp[13] & 0x37 = 0x24' or 'tcp[13] & 0x37 = 0x25' or 'tcp[13] & 0x37 = 0x26' or 'tcp[13] & 0x37 = 0x27' or 'tcp[13] & 0x37 = 0x20' or 'tcp[13] & 0x37 = 0x21' or 'tcp[13] & 0x37 = 0x23' or 'tcp[13] & 0x37 = 0x24' or 'tcp[13] & 0x37 = 0x25' or 'tcp[13] & 0x37 = 0x26' or 'tcp[13] & 0x37 = 0x27' or 'tcp[13] & 0x37 = 0x32' or 'tcp[13] & 0x37 = 0x33' or 'tcp[13] & 0x37 = 0x34' or 'tcp[13] & 0x37 = 0x35' or 'tcp[13] & 0x37 = 0x36' or 'tcp[13] & 0x37 = 0x37' or

去掉最后一个or 即是非法TCP标志组合 :)

相关文章:

  • 失败乃是成功之始
  • jquery mmgrid使用
  • S3C2440-按键
  • 内存分类
  • java第二天(关键字、常量、进制等问题)
  • S3C2440-SDRAM
  • css布局模型
  • 延长笔记本电脑寿命的四个简单方法
  • 用 PHP 读取文件的正确方法
  • 如何开启Centos6.4系统的SSH服务
  • myEclipse和eclipse修改或复制项目名称后-更新部署名称
  • 编译静态expect现undefined reference to `openpty' 错误解决方法
  • css布局
  • [分类整理I]微软等100题系列V0.1版:c/c++基础面试题集锦
  • iOS项目开发中的知识点与问题收集整理②(Part 二)
  • “大数据应用场景”之隔壁老王(连载四)
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • axios 和 cookie 的那些事
  • bearychat的java client
  • DOM的那些事
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • React Native移动开发实战-3-实现页面间的数据传递
  • tensorflow学习笔记3——MNIST应用篇
  • uva 10370 Above Average
  • Vue学习第二天
  • zookeeper系列(七)实战分布式命名服务
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 记一次删除Git记录中的大文件的过程
  • 全栈开发——Linux
  • 如何在 Tornado 中实现 Middleware
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 突破自己的技术思维
  • 微信支付JSAPI,实测!终极方案
  • 用简单代码看卷积组块发展
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​插件化DPI在商用WIFI中的价值
  • #stm32整理(一)flash读写
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (二)linux使用docker容器运行mysql
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (四)c52学习之旅-流水LED灯
  • (算法)求1到1亿间的质数或素数
  • (正则)提取页面里的img标签
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • ****Linux下Mysql的安装和配置
  • .Net 路由处理厉害了
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NET的微型Web框架 Nancy
  • .NET关于 跳过SSL中遇到的问题