Как мне прочитать код, состоящий полностью из пунктуации? - PullRequest
0 голосов
/ 24 января 2020

Более чем на https://security.stackexchange.com/questions/224673/can-malicious-code-fit-in-14-bytes, в одном из комментариев упоминается следующий 14-символьный пример кода в настройке вредоносных логи c:

:(){ :|:& };:\n

Никакой другой контекст не был предоставлен. Естественно, это невозможно гуглить. Я не являюсь участником этого сайта, и поэтому не могу попросить разъяснения у исходного комментатора.

Итак,

  • Что делает этот код? Если он неочевиден, то почему он злонамеренный?
  • Какой это язык?
  • В будущем, когда я столкнусь со стеной пунктуации, как я смогу обнаружить два вышеупомянутых? Есть ли веб-сайт / инструмент для этого или какой-то другой разумный метод?

1 Ответ

1 голос
/ 24 января 2020

Что делает этот код? Если он неочевиден, то почему он вредоносный?

Код, который вы упомянули, имеет вид Linux fork bomb . Fork bomb - это функция, которая используется для проведения атаки типа «отказ в обслуживании».

Давайте разберем код:

Базовая c структура Linux bash функция имеет вид:

function(){
 arg1=$1
 arg2=$2
 echo 'Hello'
 #perform_something on $arg
}

Сравнивая функцию вилочной бомбы с приведенным выше синтаксисом функции bash, она будет выглядеть следующим образом:

:(){
:|:&
};:\n

Где :

: ()

Определяет функцию с именем ":".

: |:

Функция ":" вызывает себя рекурсивно и направляет вывод другому вызову функции ":" (что делает бомбу-вилку неостановимой, пока вы не перезагрузите систему).

&

Это переводит выполнение функции в фоновый режим.

;

; завершает функцию.

:

Вызывает функцию (бомба-вилка) без аргументов, потому что функция бомбы-вилки не требует аргументов для запуска.

Какой это язык?

Язык Bash.

В будущем, когда я столкнусь со стеной пунктуации, как я могу узнать выше двух? Есть ли веб-сайт / инструмент для этого или какой-то другой разумный метод?

Вам потребуется использовать Google и выполнить поиск, разбив строку знаков препинания по частям.

Предупреждение: Не запускайте этот код в вашей Linux системе, так как он сделает вашу систему с sh и не отвечает, пока вы не перезагрузите его.

...