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

自己按摩头部为何没有别人按摩舒服-还有syn-cookie

因为手的感觉分担了一部分本该属于头的感觉,找个东西代替手就会好些。
__u32 secure_tcp_syn_cookie(__u32 saddr, __u32 daddr, __u16 sport,
__u16 dport, __u32 sseq, __u32 count, __u32 data)
{
__u32 tmp[16 + HASH_BUFFER_SIZE + HASH_EXTRA_SIZE];
__u32 seq;
...//懒惰初始化
memcpy(tmp+3, syncookie_secret[0], sizeof(syncookie_secret[0]));
tmp[0]=saddr;
tmp[1]=daddr;
tmp[2]=(sport << 16) + dport;
HASH_TRANSFORM(tmp+16, tmp);
seq = tmp[17] + sseq + (count << COOKIEBITS); //根据4元素计算出的摘要值加上syn序列号再在高8位加上当前jiffies,seq设为S,sseq设为SS
memcpy(tmp+3, syncookie_secret[1], sizeof(syncookie_secret[1]));
tmp[0]=saddr;
tmp[1]=daddr;
tmp[2]=(sport << 16) + dport;
tmp[3] = count;
HASH_TRANSFORM(tmp+16, tmp); //又算出一个tmp[17]
return seq + ((tmp[17] + data) & COOKIEMASK); //不影响高八位的情况下计算出最终的syn-cookie,设为K
}
__u32 check_tcp_syn_cookie(__u32 cookie, __u32 saddr, __u32 daddr, __u16 sport,
__u16 dport, __u32 sseq, __u32 count, __u32 maxdiff)
{
__u32 tmp[16 + HASH_BUFFER_SIZE + HASH_EXTRA_SIZE];
__u32 diff;
...//和懒惰初始化相左
memcpy(tmp+3, syncookie_secret[0], sizeof(syncookie_secret[0]));
tmp[0]=saddr;
tmp[1]=daddr;
tmp[2]=(sport << 16) + dport;
HASH_TRANSFORM(tmp+16, tmp);
cookie -= tmp[17] + sseq; //cookie即是K,减掉了SS和4元素计算出的摘要
diff = (count - (cookie >> COOKIEBITS)) & ((__u32)-1 >> COOKIEBITS);
if (diff >= maxdiff) //从高8位得到syn包到达的时间,如果时间太久了ack才到,那么就视为非正常现象,丢弃
return (__u32)-1;
memcpy(tmp+3, syncookie_secret[1], sizeof(syncookie_secret[1]));
tmp[0] = saddr;
tmp[1] = daddr;
tmp[2] = (sport << 16) + dport;
tmp[3] = count - diff; 得到原始syn包的jiffies
HASH_TRANSFORM(tmp+16, tmp);
return (cookie - tmp[17]) & COOKIEMASK; //最终得到data
}

相关文章:

  • 在VC中创建并调用DLL
  • BPF(BSD Packet Filter)--应用和理念扩展
  • 基于visual Studio2013解决C语言竞赛题之0611素数排序
  • PHP邮件注入攻击技术
  • snort和scapy以及hping
  • 超详细的2440中断机制分析!
  • PowerDesigner使用教程
  • 读《后汉演义》之王莽:是古非今
  • JSON、闭包和原型----透视Javascript语言核心
  • javascript小小技巧
  • opensuse安装记录
  • 编程之美 2.12 快速寻找满足条件的两个数 解法三证明 (算法导论 第二版 2.3-7 在n个元素的集合S中找到两个和为x的元素)...
  • 几本好书,地铁上打发的收获--之二(还有其它)
  • 打鸡蛋和工作习惯
  • 几本好书,地铁上打发的收获
  • 【391天】每日项目总结系列128(2018.03.03)
  • centos安装java运行环境jdk+tomcat
  • cookie和session
  • Cumulo 的 ClojureScript 模块已经成型
  • EOS是什么
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JS题目及答案整理
  • JS字符串转数字方法总结
  • learning koa2.x
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • mongo索引构建
  • Netty源码解析1-Buffer
  • OSS Web直传 (文件图片)
  • python学习笔记 - ThreadLocal
  • React组件设计模式(一)
  • Shell编程
  • unity如何实现一个固定宽度的orthagraphic相机
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 安卓应用性能调试和优化经验分享
  • 分布式任务队列Celery
  • 高度不固定时垂直居中
  • 关于extract.autodesk.io的一些说明
  • 简单基于spring的redis配置(单机和集群模式)
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 事件委托的小应用
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #if 1...#endif
  • $jQuery 重写Alert样式方法
  • (javascript)再说document.body.scrollTop的使用问题
  • (笔试题)合法字符串
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (强烈推荐)移动端音视频从零到上手(下)
  • (数据结构)顺序表的定义
  • (未解决)macOS matplotlib 中文是方框
  • ***测试-HTTP方法
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .NET(C#) Internals: as a developer, .net framework in my eyes