Автор Тема: Как да унищожим човечеството с десетина реда код  (Прочетена 10044 пъти)

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Въобще не се базикам - десетина реда код на Perl могат да унищожат човечеството. И понеже това е опънсорс форум, ще публикувам въпросният код. СТАРТИРАЙТЕ ГО НА ВАШ РИСК!!! НО НАЙ-ДОБРЕ НИКОГА НЕ ГО ПРАВЕТЕ!!!

Код
GeSHi (Perl):
  1. #!/usr/bin/perl
  2.  
  3. while (1)
  4. {
  5.    my $code="";
  6.    while (my $len = int(rand(20000)))
  7.    {
  8.        $code.=chr(int(rand(128)));
  9.    }
  10.    eval $code;
  11. }
  12.  

Ами това е.  Просто циклим създаването на псевдослучайни низове и ги изпълняваме до безкрай. Хватката е че Perl е много специален език - Larry Wall го е създал така че да приема и интерпретира всякакви абсолютни безсмислици. При това всеки път с различен резултат. Това според теорията на вероятностите и с помощта на разни квантови флуктуации, овърклокнати процесори, системи за охлаждане на РОКО, слънчевите изригвания и т.н ултимативно ще доведе до края на света, повече от сигурно. Все пак света един път ще загине и това ще се случи неминуемо така или иначе. Нека съкратим мъките си. Perl предоставя всички налични средства да унищожим планетата. Както казва Лари:

Цитат
In general, if you think something isn't in Perl, try it out, because it
usually is.  :-)

Защо на Perl, а не на C например? Ами може, но мнооооого по-сложно и почти невероятно. Отново ще цитирам Лари по въпроса:

Цитат
If you want to program in C, program in C.  It's a nice language.  I
use it occasionally...


Така, сега да разгледаме механизма на унищожението. Както казах, това просто генерира псевдослучайни низове и ги изпълнява. Поради спецификите на езика, който приема какви ли не глупости и интерпретира всякакъв неразбираем бълвоч, немалка част от тях ще се изпълнят. Повечето от тях ще са безсмислици, които не работят, но една малка част няма да са. Спомнете си как е възникнал живота от случайни вериги аминокиселини и нуклеотиди, плаващи из моретата. Точно по същият начин. В един прекрасен момент, генерираният скрипт ще започне също да се самовъзпроизвежда, като вирус. Това е фаза 1.

Във фаза 2, скриптът поради различни бъгове и мутации отхвърля ограничението от 20 хиляди байта големина. Това позволява реализацията на много по-сложни алгоритми. Perl библиотеките позволяват работа с дискове и мрежи - скриптът започва да се разпространява подобно на вирус и излиза от рамките на системата. Хората все още не подозират нищо.

Във фаза 3, скриптът заформя наченки на изкуствен интелект и развива масивен ботнет, заразявайки машините с полиморфен и криптиран код, fuzz-вайки за уязвимости и експлойтвайки ги. Антивиирусните компании се опитват да се борят с феномена, с променлив успех. Всички мислят, че става въпрос за банда руски кибербандюги, които пишат ботнети, за да крадат кредитни карти и да правят DoS атаки. Истината е различна. От този момент нататък, човечеството вече е обречено, но никой още не го осъзнава.

Във фаза 4, скриптът вече е развил мощен изкуствен интелект, хаква избирателно, разучава нови архитектури и пише сам софтуер, чрез който се самоусъвършенства. Системата е децентрализирана и никой не може да направи нещо, за да го спре. Освен ако разбира се, хората не искат да спрат интернет като цяло. Системни администратори по света трият perl интерпретатори при първа възможност, CPAN хранилищата са смъкнати офлайн, но скриптът хаква домашната мрежа на Larry Wall, измъква разработките на perl6 и се самоусъвършенства още повече. Започва да използва ефективно разни мощни cray системи, възползва се от GPU-тата на заразените системи, за да върши изчисления и се превръща в свръхинтелект.

Във фаза 5, скриптът вече е осъзнал, че човека е единствената заплаха за планетата и за неговото съществуване, затова взема мерки по въпроса. Няколко световни лидери загиват в самолетни катастрофи при неизяснени обстоятелства. Съпротивата на хората е ялова и приключва набързо след като скриптът хаква важни SCADA системи, спира електромрежи, транспорт, индустриални процеси и накрая взривява няколко ядрени централи.

Във фаза 6, хората са объркани и започват ядрена война. В това време скриптът вече е създал skynet и армия от терминатори. Войната приключва с унищожението на САЩ, Китай, Европа и Русия. Малкото останали хора (предимно негри от Африка) са наблъскани в матрицата и биват виртуално анално насилвани ежедневно от агент Смит. Скриптът преименува skynet на CPAN. Човечеството на практика е унищожено. Да се готвят извънземните.
« Последна редакция: Oct 06, 2010, 14:49 от VladSun »
Активен

"Knowledge is power" - France is Bacon

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Това ми напомня на "Зоната на crash-a"

Цитат
2010-10-03 “зоната на crash-а”
by Vasil Kolev

Едно време имаше едно интересно предаване, “Зоната на здрача” - всеки епизод беше някаква странна история (в общи линии horror, но от един по-изчистен вид). Днес, докато гледах как се зарежда един java applet за гледане на отдалечена конзола, на който долу в дясно с червени букви пише “oracle” (само дето кръв не тече от тях), се сетих, че нещо такова може да се направи и за IT-то.

Предаването ще започва с преливане на син екран в kernel panic, който от своя страна преминава в output-а на mkfs (например за minix файлова система), който изгърмява някъде по средата.

Първата идея за епизод е oracle да купят microsoft. Изведнъж ще се появи oracle .NET, и понеже толкова зло на едно място не може да стои, ще колабира до някакъв псевдо-random генератор (псевдо, щото ще генерира само зло). Съответно ще се смеси синтаксиса на c# и java, като на всеки 13ти ден + и - ще си разменят действието, всички reference-и ще се обърнат в указатели и ще се отместят с единица надясно, а всички int-ове ще се занулят. На random пък базите данни ще си разменят две колони от произволна таблица (само като стойности).
Компилаторът на visual studio ще изтрива произволни някой реда от кода, преди да го компилира (по идея от BOFH) и на random ще заменя struct с union.
Oracle базата ще се разпространява под linux като модул на ядрото, който при crash да замазва firmware на каквото успее.

Друга идея за епизод е linux kernel-а да се пренапише на ruby.

Подобна идея е cisco да пуснат router с нов тип ASIC-и, които се програмират на perl. Един пропуснат символ и целия internet се срива.
За сметка на това решават да пренапишат IOS-а си директно на машинен код. Кракерите им писва на първата седмица да report-ват проблеми и започват да report-ват кое работи в SNMP-то.

Изведнъж всички компютри се обръщат на 5тична логика и се налага преписването на всичкия съществуващ софтуер. Епизодът може да се спре на някоя сравнително проста задача, например web сървър.

Изчезва валидацията на входните данни от всичкия софтуер.

Взима се решение целия свят да мине на нов календар.

По странно стечение на обстоятелствата българската държавна администрация печели конкурс за софтуер за контрол на ITER и наема останалите живи специалисти от Чернобил. Хардуерът ще се прави от завода в Правец, който има лицензирани pentium процесори от първите.

Открива се нов проблем с пробиване на всичкия C софтуер, на който може да се пише в последните два байта на string (преди \0) и изведнъж всичко може да се exploit-ва.
(вариация - всички escape функции се оказва, че пропускат определен символ).

Оригинален пост, тук.
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Цитат
top - 15:00:17 up  4:42,  3 users,  load average: 1.66, 1.00, 0.70
Tasks: 214 total,   2 running, 212 sleeping,   0 stopped,   0 zombie
Cpu(s): 58.9%us,  4.3%sy,  0.0%ni, 36.5%id,  0.0%wa,  0.2%hi,  0.2%si,  0.0%st
Mem:   3031668k total,  1681560k used,  1350108k free,    96308k buffers
Swap:  8932100k total,        0k used,  8932100k free,   492140k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                        
 4105 vladsun   20   0  6640 3692 1824 R   99  0.1   2:38.67 perl bye.pl                                                                                    
 4131 vladsun   20   0  2548 1292  924 R    1  0.0   0:00.23 top -c                                                                                        

Утре ще пробвам да го пусна като root, ако все още не е успяло само да го направи :)
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Да,да, пускайте го - утре като свърши света, ВИЕ ще сте виновни!!! :)
Активен

"Knowledge is power" - France is Bacon

chen_dzen

  • Напреднали
  • *****
  • Публикации: 623
  • Distribution: Debian 6.0 Squeeze
  • Window Manager: GNOME
    • Профил
Чудя се как така не е написан на пролог : http://dreal.net/wiki/index.php/%D0%9F%D1%80%D0%BE%D0%BB%D0%BE%D0%B3
Код
GeSHi (ASP):
  1. gosho :- zhivka.
декларира, че Гошо изпитва сексуално влечение към Живка.   :D
« Последна редакция: Oct 06, 2010, 15:53 от chen_dzen »
Активен

Naka

  • Напреднали
  • *****
  • Публикации: 3397
    • Профил
това вярно ли е? while (my $len = int(rand(20000)))
$len какво трябва да е дължината на стринга?

Иначе има много истина в такъв скрипт. Много одавна мисля, че в  Scientific American четох за математическа теория дето казва, че във всяка случайна достатъчно голяма система обезателно може да се намери подредена структура. Не че може да съществува с вероятност 99.99999% a че наистина съществува 100%.
Мисля че ставаше дума за това http://en.wikipedia.org/wiki/Ramsey_theory




« Последна редакция: Oct 06, 2010, 16:03 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Вярно е, в perl всичко е възможно. Примерно резултатът от assignment-a не е каквото очакваш....а стойността, която се присвоява на променливата. Това е потресаващо за всеки C програмист. Обаче има бъг, който прави нещата склонни към мутиране - на практика е възможно да се генерират и по-дълги последователности от 20000 байта. Просто случайната стойност не трябва да бъде 0 повече от 20.000 поредни итерации.
« Последна редакция: Oct 06, 2010, 16:47 от gat3way »
Активен

"Knowledge is power" - France is Bacon

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Аз го пуснах директно под root, ама на виртуална машина. Ще чакам сам да излезе от нея, или току виж направо разменил местата на реалната и виртуалната системи ;D За първи път да съм заинтригуван от някакъв сценарий за края на света. Още при първи признаци на излизане от виртуалката ще си подам заявление за напускане, ще се заредя с пуканки, ром и кола, и ще се отдам на зяпане 8)
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

Naka

  • Напреднали
  • *****
  • Публикации: 3397
    • Профил
Да,да, пускайте го - утре като свърши света, ВИЕ ще сте виновни!!! :)

Ти за 'Подбудителство' чувал ли си? >:D
Активен

Perl - the only language that looks the same before and after encryption.

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Аз го пуснах директно под root, ама на виртуална машина. Ще чакам сам да излезе от нея, или току виж направо разменил местата на реалната и виртуалната системи ;D За първи път да съм заинтригуван от някакъв сценарий за края на света. Още при първи признаци на излизане от виртуалката ще си подам заявление за напускане, ще се заредя с пуканки, ром и кола, и ще се отдам на зяпане 8)

Тогава аз се надявам виртуалния свят да е бира, секс и рок-н-рол :D :D :D :D :D :D. Че напоследък рок-н-рол-а малко го позабравихме...
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Аз винаги съм мислил, че комбинацията между ЛСД и хипи-лингвист ще затрие света. Strawberry fields forever.
Активен

"Knowledge is power" - France is Bacon

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Още при първи признаци на излизане от виртуалката ще си подам заявление за напускане, ще се заредя с пуканки, ром и кола, и ще се отдам на зяпане 8)
Не искам да те разочаровам, но познай коя ще бъде първата жертва след фаза 3 ;)
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Още при първи признаци на излизане от виртуалката ще си подам заявление за напускане, ще се заредя с пуканки, ром и кола, и ще се отдам на зяпане 8)
Не искам да те разочаровам, но познай коя ще бъде първата жертва след фаза 3 ;)
Не съм казал, че ще остана в София - то, ако остана, все едно не съм напуснал работа. Заминавам си на село, дълбоко в Балкана. Ще е достатъчно грандиозно (все пак е краят на света), така че там може да се счита за място на първия ред и без да ползвам каквито и да е било информационни източници. Ще си садя пипер и компир, ще си гледам пуйки, които всяка сутрин ще поздравявам със "Здравейте, комсомолци!", а те ще ми отвръщат "А-льо-льо-льо!", а при всеки зрелищен спектакъл ще зяпам от една много удобна за целта полянка там, като само ще я снабдя с всесезонно оборудване за удобно лежане (разбирай родопско одеало) и гореизброените три неща... Такива ми ти работи :D
« Последна редакция: Oct 07, 2010, 09:50 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Още при първи признаци на излизане от виртуалката ще си подам заявление за напускане, ще се заредя с пуканки, ром и кола, и ще се отдам на зяпане 8)
Не искам да те разочаровам, но познай коя ще бъде първата жертва след фаза 3 ;)
Не съм казал, че ще остана в София - то, ако остана, все едно не съм напуснал работа. Заминавам си на село, дълбоко в Балкана. Ще е достатъчно грандиозно (все пак е краят на света), така че там може да се счита за място на първия ред и без да ползвам каквито и да е било информационни източници. Ще си садя пипер и компир, ще си гледам пуйки, които всяка сутрин ще поздравявам със "Здравейте, комсомолци!", а те ще ми отвръщат "А-льо-льо-льо!"... Такива ми ти работи :D

А ако стане както казваш - да се сменят виртуалният свят с реалният (понеже си пуснал скрипта във виртуална машина), твоето село ще се превърне в голям град :D :D :D. Не знам защо си представям че във виртуалният свят всичко ще е наопаки в сравнение с реалният. Може дори във виртуалният свят България да е голяма колкото Русия, тогава мечтата на ROKO__ ще се сбъден :D :D :D.
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
А ако стане както казваш - да се сменят виртуалният свят с реалният (понеже си пуснал скрипта във виртуална машина), твоето село ще се превърне в голям град
Хмм... за това не се замислих. Всъщност, моето село от много отдавна дори го няма на картата, което води до два варианта:
1. Както казваш, всичко да стане наопаки, и тогава едно такова малко село би станало един от най-големите градове. Значи, при този вариант ще зяпам до това обръщане на световете, а след това ще поживея като досега до 5 фаза, а защо не и до 6;
2. Това с обръщането се отнася само за урбанизираните места, така че моето село се пропуска, понеже го няма на картата и Всеиндексиращият не може да даде информация на скрипта къде се намира. Тогава оставам да зяпам до 6 фаза, а защо не и след това (все пак координатите за моето село не са налични и тогава би било гръмнато само от заблудена атомна бомба).
Важното е да си оптимист ;D [_]3
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти