Processing math: 100%

Kennico

Keep studying C++.

ARP spoofing

通过 ARP 欺骗劫持 HTTP 流量

主机上线到一个网络之后会获得至少一个 IP 地址(比如 DHCP 或静态地址)。IP 地址能反映网络的拓扑结构,但 IP 地址并不能唯一地标识一个网络接口;能够唯一标识一个网卡的是在制造出厂时写入的 6 字节的 MAC 地址。一个 IP 数据包在到达另一个接口之前,需要知道目的地 IP 地址的 MAC 地址。ARP 就是一个将 IP 地址解析为 MAC 地址的协议,而一个基于以太网之上的 A...

Structured Exception Handling

Windows 异常处理机制

Content 微软靠 OS 和编译器提供了一套异常处理机制(Structured Exception Handling, SEH)。和标准 C++ 的中的 try/catch 不同, SEH 能够处理的异常类型有限而且更贴近硬件(比如整数除 0 异常和非法访问内存,考虑到Windows 是由 C 写成的也就不足为奇了)。使用了 SEH 的代码包含三个要素:try 代码块、filter 表达...

Stack buffer overflow

在栈缓冲区溢出的边缘跃跃欲试

Content 缓冲区指的是一块连续的内存,通常情况下就是一个数组。对于 C/C++ 编译器来说不存在“缓冲区”这个概念,因为它只能看见一个指针;因此在访问数组的时候不会有C/C++的内建手段来防止越界。这就导致了容易被攻击者利用的 缓冲区溢出 风险,而且攻击者往往通过精心构造的输入(malformed inputs, aka shellcode)来达到改变程序执行流程的目的。此外,如果缓...

Segment registers

段寄存器的前世今生

Contents 一如其名,段寄存器是若干个存储与数据段相关信息的寄存器。特别地,段寄存器长度为 16 bits。段寄存器的作用是存储对应数据段的起始位置。比如,为了获取程序启动时的命令行参数个数,调用 CRT 函数 __p___argc() 可能会产生以下指令(用助记符表示,Windows 10, VS2017): call dword ptr ds:[<&__p___a...

String searching

定位字符串的方法有几何?

Question 给定两个字符串 M,N,|M||N| ,找出子串 N (又叫模式串,pattern)出现在 M 中的位置。 Solution Enumeration 枚举所有来自 M 的长度为 |N| 的子串和 N 逐一比对。 具体方法为把 M 的每一个字符 M[i] ...

A Friendly Introduction to Number Theory Chapter 12~15

素数,梅森素数,完全数和费马素数

Content Euclid’s theorem There are infinitely many prime numbers. Euclid’s proof 假设一个有限的素数集合 令 A=p1p2p3pn+1,由算术基本定理可知存在素数集合 使得 假如 A 是素数那么证明完毕;假如 A 是合数,可以断言至少存在一个素因子 $q...

A Friendly Introduction to Number Theory Chapter 10~11

欧拉函数(Euler's phi function)

Content Euler’s phi function 先引入记号 ϕ(m), ϕ(m) 表示在 [1,m] 之间和 m 互质的整数的数量,即模 m 缩系的大小。 Parity 除了 ϕ(2)=1 是奇数以外,ϕ(m) 总是偶数。这是因为当 $m\gt2\text{, }\gcd{(a,m)}=1\implies \gcd{...

A Friendly Introduction to Number Theory Chapter 5~6

欧几里德算法(Euclidean algorithm)

Content Divisibility Suppose m and n are integers with m0. We say that m divides n if n is a multiple of m, that is, if there is an integer k such that n=mk Euclidean ...

A Friendly Introduction to Number Theory Chapter 8~9

同余(Congruences),快速幂取模和费马小定理(Fermat's little theorem)

Content Congruence 两个整数之间的模 m 同余关系通过整除来定义: 即如果 m 整除 ab,称 abm 同余。 Properties 整数之间的同余关系””和实数上的相等关系”=”存在众多相似之处。除了作为一个等价关系所具备的自反性(reflexive)、对称性(symmetric)和传递性(t...

A Friendly Introduction to Number Theory Chapter 7

因式分解和算术基本定理

Content Euclid’s Lemma 假如素数 pab ,那么 papb (或 pa and pb)。 Prime Divisibility Property 假如素数 p 整除 a1a2ar ,那么 p 至少整除 a1a2ar 的...