0%

Scapy 是一个强大的数据包处理工具,可以轻松的按照层次构建网络包, 比如这样

1
packet = Ether()/IP(dst="192.168.0.1")/TCP(dport=80)/b'data'
阅读全文 »

理解网络层次

OSI 五层协议

  • 物理层:一般是基于电信号进行 bit 流传输

  • 数据链路层: 定义 bit 信号分组方式,常见的协议是 以太网协议 (Ethernet)

    Ethernet 数据帧 [帧头,数据,帧尾]

  • 网络层: 划分广播域 / 子网, 一般网络层都是 IP 协议

    IP 数据帧 [报头,数据]

  • 传输层: 建立端口到端口的通信, 常见传输层协议有 TCP/UDP

    TCP 基于连接,提供可靠传输,面向字节流,三次握手 / 四次挥手 (创建 / 断开连接), 粘包 / 拆包,timewait, 报文头长,总体传输慢,窗口, 拥塞控制

    UDP 无连接,尽可能快,不可靠传输,面向报文,过长报文会被分片

  • 应用层

使用 Wireshark 分析数据包时,一般关注的是后面三层, 每层的报文头中都包含了特定信息,在数据层存放更上层的数据

阅读全文 »

函数调用约定分类

函数调用约定(Calling Convention)是规定函数在栈上的参数传递和清理方式的约定。不同的编程语言和编译器可能使用不同的调用约定,主要有以下几种常见的函数调用约定:

阅读全文 »

extern C 作用

1
2
3
4
5
6
7
8
9
#ifdef __cplusplus
extern "C" {
#endif
// 函数声明
// 或者函数定义
// 或者#include <C语言Header.h>
#ifdef __cplusplus
}
#endif

extern "C"修饰的变量和函数按照 C 语言方式编译和连接

阅读全文 »

位运算是计算机中最常用的操作之一, 运用好位运算可以在特定情况下大幅提高计算效率

原反补码

正数的原反补码都是自身 负数的补码为原码取反,符号位不变; 补码为反码加 1, 符号位需要进位时丢弃进位符号位变 0 (进位溢出) 计算机中的数字都是以补码表示

有符号整型的二进制位

以 char (signed char, 1 字节) 为例

1
2
0 = 0000 0000 b
-1 = 1111 1111 b
阅读全文 »

Arch 是众多 Linux 发行版中的其中一个,但是它比较纯净, 同时安装也相比于其它的 Linux 发行版复杂一些, 从头安装一个 ArchLinux 可以学习不少 Linux 知识

推荐按照官方的安装教程一步步执行: https://wiki.archlinux.org/title/Installation_guide

最好阅读英文版,更新日期比较新

以下是折腾 Arch 的记录

阅读全文 »

手头上的旧手机为小米 6, 本文可能部分内容只在小米 6 上适用 [xiaomi 6 sagit]

且本文主要讨论 LinuxDeploy (需要 root) 的方式, 非 root 用户可使用 Termux 方式

阅读全文 »

现在多少年轻人都莫名其妙的大病或猝死, 不好的生活习惯会让我们的身体一直处于亚健康状态, 后面可能任何一个小的触发点都能是压垮骆驼的最后一根稻草, 比如生个气喝个酒甚至猛然的剧烈运动一下都可能直接人没了

阅读全文 »

让人上瘾,又伤心、伤脑…… 这味调料家家都有,但劝你别多吃!

2022-03-01 14:00 来源: CCTV 回家吃饭

  糖果、冰激凌、蛋糕、饼干、巧克力…… 甜食让不少人欲罢不能, 情绪不好时来一口,感觉整个世界都明媚了;时下的网红饮品奶茶, 更是被戏称为 “肥宅快乐水”, 深受年轻人的喜爱~

  殊不知,大快朵颐的同时,甜食更像是一位隐形的 “甜蜜杀手”, 不仅会让人慢慢 “上瘾”, 还会悄悄摧毁着你的身体!

阅读全文 »