포크 폭탄 뒤에 숨겨진 역사는 무엇입니까?

포크 폭탄 뒤에 숨겨진 역사는 무엇입니까?

기능에 대한 다른 질문을 읽었습니다.포크 폭탄이는 포크 프로세스 중에 CPU 시간을 소비하고 운영 체제의 프로세스 테이블을 포화시키는 방식으로 작동합니다.

포크밤의 기본 구현은 동일한 프로세스를 반복적으로 시작하는 무한 루프입니다.

하지만 저는 정말로 알고 싶습니다. 이 명령의 유래는 무엇입니까? 왜 이것 :(){ :|:& };:이고 다른 것은 아닌가?

답변1

이것은 새로운 것이 아닙니다. 그 역사는 1970년대 출시로 거슬러 올라간다.

에서 인용여기,

포크 폭탄에 대한 최초의 설명 중 하나는 1969년 워싱턴 대학의 Burroughs 5500에서였습니다. 이는 실행 시 자신의 복사본 두 개를 만들고, 다시 두 개의 복사본을 생성하는 RABBITS라는 "해킹"으로 설명됩니다. 각 복사본은 더 많은 복사본을 만들고, 복제본은 메모리가 가득 찰 때까지 계속 더 많은 복사본을 만들어 시스템 충돌을 일으킵니다. Q: Misanthrope는 7학년이었던 1972년에 BASIC에서 Rabbit과 같은 프로그램을 작성했습니다. 예일 대학의 Jerry Leichter는 자신의 모교인 프린스턴에서 토끼 폭탄이나 포크 폭탄과 유사한 청각 프로그램을 설명했으며 졸업 날짜를 고려하면 1973년 또는 그 이전에 시행된 프로그램임에 틀림없다고 말했습니다. 1974년 보고서에는 실제로 "Rabbit"이라는 프로그램이 대기업의 IBM 360 시스템에서 실행되고 있었고 젊은 직원이 이 프로그램을 실행했다는 이유로 해고되었다고 설명되어 있습니다.

따라서 이것은 :(){ :|:& };:셸에서 포크 폭탄을 구현하는 한 가지 방법일 뿐입니다. 다른 프로그래밍 언어를 채택하는 경우 해당 언어를 사용하여 구현할 수도 있습니다. 예를 들어 Python에서는 다음과 같이 포크 폭탄을 구현할 수 있습니다.

 import os
 while True: 
     os.fork()

다양한 언어로 포크 폭탄을 구현하는 더 많은 방법은 다음에서 찾을 수 있습니다.위키피디아협회.

구문을 알고 싶다면 매우 간단합니다. 셸의 일반 함수는 다음과 같습니다.

foo(){
    # function code goes here
}

폭탄 의 정의 fork()는 다음과 같습니다.

:(){
 :|:&
};:

:|:- 다음으로 재귀라는 프로그래밍 기술을 사용하여 자신을 호출하고 출력을 함수의 다른 호출로 연결합니다 :. 최악의 부분은 함수가 두 번 호출되어 시스템에 충격을 주는 것입니다.

&- 하위 프로세스가 종료되지 않고 시스템 리소스를 소비하기 시작하지 않도록 함수 호출을 백그라운드에 배치합니다.

;- 종료 기능 정의

:- 포크() 폭탄 설정이라고도 알려진 함수를 호출(실행)합니다.

사람이 더 읽기 쉬운 코드는 다음과 같습니다.

bomb() {
 bomb | bomb &
}; bomb

인용하다

http://www.cyberciti.biz/faq/understanding-bash-fork-bomb/

답변2

이탈리아의 한 해커 아티스트는 이를 일련의 미소 같은 캐릭터로 공식화하여 인기를 얻었습니다.https://jaromil.dyne.org/journal/forkbomb.html

결국 동일한 포크 폭탄을 더 이해하기 쉬운 방식으로 작성할 수 있습니다.

bomb() {
 bomb | bomb &
}
bomb

그러나 Jaromil은 바이러스를 시적인 방식으로 암호화하기를 원했으며 다음과 같이 말했습니다.

소스 코드를 문학으로 생각하면서 나는 바이러스를 Verlaine, Rimbaud 등이 인터넷을 이성애 규범 사회의 안전 지대로 판매하는 사람들에 대해 쓴 일종의 시라고 설명합니다. [...] 바이러스는 여전히 매우 큰 사회의 정치적 증상이며, 바이러스를 금지한다고 해서 발생하는 문제가 해결되지는 않습니다. 익명성과 해킹도 마찬가지다.

Jaromil은 폭탄을 발명한 것이 아니라 익명의 예술 작품으로 제시했다는 점에 유의해야 합니다.

관련 정보