端口扫描软件有哪些 手机扫描软件排行榜( 三 )
怎么设计的代码布局文件main.c包含该main()函数 。它还包含transmit_thread()和receive_thread()功能 。这些函数已被故意扁平化并进行了大量注释,以便您可以通过逐行逐行浏览每个函数来阅读程序的设计 。
异步这是一个异步设计 。它具有独立的发送和接收线程,这些线程在很大程度上彼此独立 。
因为它是异步的,所以它的运行速度与底层数据包传输允许的一样快 。
随机化Masscan 与其他扫描仪的主要区别在于它随机化目标的方式 。
基本原则是有一个从零开始的单个索引变量,每次探测都增加 1 。在 C 代码中,这表示为:
for (i = 0; i < range; i++) {scan(i);}
我们必须将索引转换为 IP 地址 。假设您要扫描所有“私有”IP 地址 。那将是范围表,例如:
192.168.0.0/1610.0.0.0/8172.16.0.0/12
在此示例中,前 64k 索引附加到 192.168.xx 以形成目标地址 。然后,将接下来的 1600 万附加到 10.xxx 范围内的其余索引应用到 172.16.xx
在这个例子中,我们只有三个范围 。在扫描整个 Internet 时,我们实际上有 100 多个范围 。那是因为您必须将许多子范围列入黑名单或排除在外 。这将所需的范围切成数百个较小的范围 。
这是代码中最慢的部分之一 。我们每秒传输 1000 万个数据包,并且必须为每个探测将索引变量转换为 IP 地址 。我们通过在少量内存中进行“二分搜索”来解决这个问题 。在此数据包速率下,缓存效率开始超过算法效率 。理论上有很多更有效的技术,但它们都需要太多的内存,以至于在实践中会变慢 。
我们将把索引转换成 IP 地址的pick()函数 。在使用中,它看起来像:
for (i = 0; i < range; i++) {ip = pick(addresses, i);scan(ip);}
Masscan 不仅支持 IP 地址范围,还支持端口范围 。这意味着我们需要从索引变量中选择 IP 地址和端口 。这是相当简单的:
range = ip_count * port_count;for (i = 0; i < range; i++) {ip= pick(addresses, i / port_count);port = pick(ports,i % port_count);scan(ip, port);}
这导致代码的另一个昂贵部分 。在 x86 CPU 上,除法/模数指令大约为 90 个时钟周期或 30 纳秒 。当以 1000 万个数据包/秒的速率传输时,我们每个数据包只有 100 纳秒 。我认为没有办法更好地优化它 。幸运的是,两个这样的操作可以同时执行,因此执行其中两个操作(如上所示)并不比执行一个更昂贵 。
对于上面的性能问题其实有一些简单的优化,但是都依赖于i++索引变量增加 。实际上,我们需要随机化这个变量 。我们需要随机化我们扫描的 IP 地址的顺序 。我们需要将流量均匀地分布在目标上 。
随机化的方式是简单地加密索引变量 。根据定义,加密是随机的,并在原始索引变量和输出之间创建一对一的映射 。这意味着当我们线性地遍历范围时,输出的 IP 地址是完全随机的 。在代码中,这看起来像:
range = ip_count * port_count;for (i = 0; i < range; i++) {x = encrypt(i);ip= pick(addresses, x / port_count);port = pick(ports,x % port_count);scan(ip, port);}
这也有很大的成本 。由于范围是不可预测的大小,而不是很好的 2 的偶次幂,因此我们不能使用廉价的二进制技术,如 AND (&) 和 XOR (^) 。相反,我们必须使用昂贵的操作,例如 MODULUS (%) 。在我当前的基准测试中,加密变量需要 40 纳秒 。
这种架构允许许多很酷的功能 。例如,它支持“分片” 。您可以设置 5 台机器,每台机器执行五分之一的扫描或 range / shard_count. 分片可以是多台机器,也可以是同一台机器上的多个网络适配器,甚至(如果需要)同一网络适配器上的多个 IP 源地址 。
推荐阅读
- 平板绘画软件哪个好用 最好用的绘画软件大推荐
- excel表格软件下载 excel表格制作软件
- 免费记账系统有哪些 免费公司财务记账软件
- 哪款驱动软件最好用 最好的驱动软件推荐
- 软件管理器怎么打开 软件管理器打开的方法
- 键盘记录器软件 查看电脑键盘输入记录
- 电脑锁屏软件哪个好用 好用的电脑锁屏软件
- seo优化点击软件 最彻底的手机优化软件
- 摄像头监控软件app有哪些 远程监控摄像头软件大全
- fc游戏模拟器下载 可以玩fc游戏的软件