社会工程学之黑客七宗罪——贪婪(死亡之PING)

前言

        我为什么要将“死亡之PING”归结到《贪婪》?

        其实如果你知道“死亡之PING”的里含义就很好理解了。

        我始终相信双刃剑理论,其实个人主观臆断是“死亡之PING”最一开始并不是恶意攻击方法,而是为了达成目的而做成的一劳永逸的工具。

        为什么我会这么认为?首先我们要知道PING的含义。

         ping (Packet Internet Groper)是一种因特网包探索器,用于测试网络连接量的程序 [1]  。Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP(Internet Control Message Protocol 因特网报文控制协议)Echo 请求报文,测试目的站是否可达及了解其有关状态。

                                                                                                                        ——百度百科

        由上述一段介绍得知,PING可以做到连接服务器,那也就意味着,我用PING去连接一个网站,相当于访问了这个网站。而通过猜测,如果你想让一个网站达到一定的访问量,就可以这样做。

        那么也就意味着,那些很贪婪的想一直刷访问量的人,肯定想用这种办法的吧~

       不过,仅仅是访问网站而已呀 ?和黑客攻击有什么关系?

        咱们日常访问普通网站或服务器时,有没有一种现象叫做500、502或504?

500错误:

        500 Internal Server Error 内部服务错误:顾名思义500错误一般是服务器遇到意外情况,而无法完成请求。

502、504错误:

        502 Bad Gateway错误、504 Bad Gateway timeout 网关超时

                                                                                                                         ——幽幽靖

        上述错误造成的原因有一个交点:当我的访问数据超载,资源被吃到不足。

        那么资源吃到不足是一个什么概念呢?

                举个栗子~

                比如你的电脑只有一个内存条是8G,假设系统进程用了1G,各种后台软件以及正在打开的软件用了4G,而在没有任何保护机制以及调度方案的情况下,你想直接点开一个游戏,需要占用你的内存4G。

                那么现在,你需要9G的内存资源,而你计算机能提供的内存资源为8G,在没有任何保护机制以及调度方案的情况下,点开,运行,蓝屏~

        那么,PING其实就可以达到这一点。

        但是我PING一次好像也消耗不了多少资源吧……

        好的,欲知后事如何,请往下看~

一、问题所在:一次PING所消耗的资源量

        不难发现,我们在PING的时候所发送和接受的数据(以“字节”为单位)着实很小:

        很明显,这里的字节为32,想想就很小了吧——无论是对于服务器来讲还是PC来说。

        但是,如果我增大它的字节数呢?

        

        首先,我们从第一行命令的结果得知,最高的字节数只能是65500。

        其次,我把字节数换成65500,由于给服务器的安全设定阻止了过量字节的数据访问,导致了请求超时现象。

        可能有的人会想:既然说过量字节的数据访问会被服务器驳回,那样不就没办法用PING攻击了嘛?~

        其实最一开始我也想到了这个事,但是后来我想了想,如果有2047台电脑同时访问这个服务器,每一次都是32字节,是不是就能达到65500了?

        (手动计算:)

二、衍生问题:怎么可能同时拥有2047台可用的电脑嘛~

         确实,就算你家大业大,根据正常思维来讲,谁也不想败家对吧~

         不过,我们不能同时拥有2047台可用电脑,但是我们可以同时PING它个2047次呀~

         这里要用到的知识点呢,叫做《并行程序设计基础》。

三、什么叫“并行”?

         问个问题~:

                如果烧水需要5分钟,洗衣服(机器)20分钟,做饭15分钟,问:不算外来时间因素及水放置降温影响,把这些事情全干完最短需要用多长时间?

                答案肯定是20分钟对吧。

                想想看:用机器洗衣服放了衣服和洗液它会自己洗,烧水的话加了水点了火它会自己烧,那么在他们工作的时候我去做饭,做晚饭,水早就烧好了,再等5分钟,洗衣机也好了,一共用时20分钟。

                那么,在洗衣机洗衣服的同时,我去烧水,水烧着的时候我去做饭,三个事件同时进行,省心省力,我们把这种处理事件的模式叫做“并行”。

                这里呢,我们可以把每个事件都看作一个线程:

                        1.洗衣机线程包括:放入衣服,放入洗液,按洗衣按钮……

                        2.烧水线程包括:装水,点火……

                        3.做饭线程包括:切菜,调料,做菜,盛盘……

                那么,线程里包括的每一个动作,我们都可以看作一个进程。

                诸如此类,现在我们把目光看向我们的PING。

                那么我是不是可以建立多个PING进程或PING线程,让它们同时运行?

                也就意味着,我是不是可以建立2047个PING进程或PING线程同时运行,来达到65500字节的目的?

        那么具体我们应该怎么做?

四、准备前置

1、一只活了很久的蟒蛇~(Python2.7)

        众所周知,蟒蛇(Python)作为程序界的一大利器,它拥有很大的便捷性以及广泛性。

        不过为什么要挑一只活了很久的蛇?

        毕竟蛇还是老的辣呀~老蛇对于很多旧模块的兼容性很强的,尤其是……

                一只老蛇:嘶~嘶……(钻洞~侵入~)

2、Ping语法

        (1)如果你用的是Windows系统:

                你将要用到cmd(命令提示符)窗口,在里面输入Ping语法。

        (2)如果你用的是Linux系统:

                你将要用到Terminal(终端)窗口,在里面输入Ping语法。

        而需要用到的Ping的语法如下(Windows与Linux通用):

1    ping <ip/url>
2    ping <ip/url> -l <字节数>
3    ping <ip/url> -t

        第一行的PING是普通的PING,单纯就是图个能不能连通。

        第二行的PING,上面咱们说到了,设置字节数的PING。

        第三行的PING,无限PING,直到你在cmd或Terminal中键入停止指令。

五、实战

        首先需要了解我们所需要的模块包:

      (注意:下列模块与在python3中的相同作用模块的使用方法有出入!!!)

        1.subprocess 模块:允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。

                这也就意味着,我们可以通过此模块来创建一个进程并使用它~

        2.thread 模块:提供对线程的支持。

                顾名思义,这是我们创建新线程的必要条件~

        除此之外,我们还需要用到一个模块叫做time,至于用它干什么,下面我们会介绍到。

        模块包了解完了,现在我们就需要说思路的事了:

        1.导入subprocess、thread和time这三个模块。

        2.声明一个用来执行PING动作的函数,此函数当中PING用进程来运行。

        3.利用第2条所声明的函数来循环创建线程并让它们并行,每创建一个线程,休息0.8秒

       那么具体代码如下所示:

1    import subprocess
2    import thread
3    import time
4
5
6    def POD(id):
7        ret = subprocess.call("<Ping语法>", shell=True)
8        print "%d," % id
9
10
11   for i in range(<你要创建的线程数>):
12       thread.start_new_thread(POD, (i,))
13       time.sleep(0.8)

这里说重点:

        一、第6行所定义的POD函数是用来执行PING命令的。在第12行,由线程调用此POD函数。

        二、第12行中的 ‘(i,)’的意思是传入了第11行‘i’的数字,用来标注是第几个被创建的线程

        三、第13行为什么要睡觉休息?毕竟创建线程的同时你的电脑也是会消耗资源的,为了减轻负荷就休息了0.8秒

后序

        最后我想说,无论我说的够不够明白,够不够清晰,这篇文章只供参考和学习,如果拿了这个东西干了什么坏事的话……违法我不追究,毕竟该审判你的不是我,是法律哦!!!~

                                                                                                                  ——Redice(Yatogami)

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
成为一名超级黑客需要广泛的知识和技能,以下是零基础自学成为黑客的一般路径: 1. 计算机基础知识:了解计算机的基本原理、操作系统和网络基础知识。学习计算机科学的基础概念、术语和操作系统的工作原理。 2. 编程语言:学习编程语言,如 Python、C++ 或 Java。掌握基本的编程语法和控制结构,并逐渐深入学习高级特性和数据结构。 3. 网络和网络安全:深入了解网络协议、网络拓扑、IP 地址和端口等基本概念。学习网络安全的基础知识,如常见的攻击类型、漏洞利用和防御技术。 4. 渗透测试:学习渗透测试技术,掌握常见的漏洞扫描和渗透测试工具,如Metasploit、Nmap 和 Wireshark。了解常见的漏洞类型和渗透测试方法。 5. 密码学:学习密码学的基础知识,包括对称加密、非对称加密、哈希函数等。了解常见的密码算法和攻击手段。 6. 社会工程学:研究社会工程学的原理和技巧,了解如何利用人类心理和社交工具进行攻击和欺骗。 7. 安全工具和技术:学习使用安全工具,如网络扫描器、漏洞利用工具、数据包分析工具等。了解防火墙、入侵检测系统和反病毒软件等常见安全技术。 8. 法律和道德:了解相关的法律和道德准则,明确合法和道德的边界,遵守法律规定并保护个人隐私。 请注意,黑客行为是非法的,违法使用这些技术可能会导致严重的法律后果。在学习过程中,请始终遵守法律和道德,将技术用于合法和道德的目的,例如网络安全职业或白帽黑客
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Redice.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值