Ram*_*esh 15
这不是什么新鲜事。它的历史可以追溯到 1970 年代,当时它被引入。
从这里引用,
最早对叉形炸弹的描述之一是 1969 年在华盛顿大学的 Burroughs 5500 上。它被描述为一个名为 RABITS 的“黑客”,它在运行时会复制自己的两个副本,这两个副本会生成两个每个副本更多,副本将继续制作更多副本,直到内存已满,从而导致系统崩溃。问 The Misanthrope 于 1972 年 7 年级时使用 BASIC 编写了一个类似兔子的程序。耶鲁大学的 Jerry Leichter 描述了在他的普林斯顿母校听到类似于兔子或叉形炸弹的程序,并说考虑到他的毕业日期,它们必须来自1973 年或更早。一个可追溯到 1974 年的帐户描述了一个实际名为“rabbit”的程序,该程序在一家大公司的 IBM 360 系统上运行,一名年轻员工因运行该程序而被解雇。
所以这:(){ :|:& };:
只是在shell中实现fork炸弹的一种方式。如果你使用其他编程语言,你也可以用这些语言来实现。例如,在 python 中,你可以实现 fork 炸弹,
import os
while True:
os.fork()
Run Code Online (Sandbox Code Playgroud)
可以从维基百科链接中找到以不同语言实现分叉炸弹的更多方法。
如果您想了解语法,它非常简单。shell 中的正常函数看起来像,
foo(){
arg1=$1
arg2=$2
echo 'Bar..'
#do_something on $arg argument
}
Run Code Online (Sandbox Code Playgroud)
fork()
炸弹定义如下:
:(){
:|:&
};:
:|:
Run Code Online (Sandbox Code Playgroud)
:|:
- 接下来,它将使用称为递归的编程技术调用自身,并将输出通过管道传递给函数的另一个调用:
。最糟糕的部分是函数被调用两次来轰炸你的系统。
&
- 将函数调用置于后台,因此孩子根本不会死亡并开始吃系统资源。
;
- 终止函数定义
:
- 调用(运行)该函数,也就是设置 fork() 炸弹。
这是更多人类可读的代码:
bomb() {
bomb | bomb &
}; bomb
Run Code Online (Sandbox Code Playgroud)
参考
http://www.cyberciti.biz/faq/understanding-bash-fork-bomb/
归档时间: |
|
查看次数: |
1055 次 |
最近记录: |