Mulai revolusi di Oceania

78

Pemenang (diputuskan 14/09/14)

Memenangkan jawaban oleh Markuz (Python) - 63 suara

Runner up oleh kuroi neko (PHP) - 55 suara

pengantar

Anda berada di dunia buku Nineteen Eighty-Four karya George Orwell.

Anda adalah seorang programmer untuk Partai dan ditugaskan untuk menulis sebuah program untuk telescreens. Seharusnya menampilkan pesan pro-partai, dan Anda telah memilih yang ditunjukkan pada tugas 1. di bawah ini. Namun, Anda baru-baru ini mulai membenci Partai, dan Anda ingin program itu memicu revolusi. Jadi, Anda membuat program mengatakan "Down with Big Brother!". Anda harus memberi diri Anda waktu untuk melarikan diri, karena Anda akan disiksa begitu orang menyadari apa yang program Anda lakukan, sehingga Anda menjadikannya sebagai "bom waktu" yang akan meledak setelah Anda pergi ke tempat yang aman.

Catatan: Ini tidak akan memicu revolusi, tetapi Anda berada dalam kegilaan kebencian terhadap partai yang Anda pikir itu benar-benar akan membuat perbedaan.

Tugas

Tulis sebuah program yang:

  1. sebelum 14/09/2014, akan selalu menampilkan baris berikut pada rotasi (yaitu mencetak satu baris, menunggu 10 detik, mencetak baris berikutnya, dll. tak terhingga):

    War is Peace
    Freedom is Slavery
    Ignorance is Strength
    
  2. setelah 14/09/2014 akan dicetak Down with Big Brother!setiap 10 detik.

  3. pada pandangan pertama sepertinya hanya 1. sehingga Anda tidak akan tertangkap oleh Partai.

Aturan

  • Celah standar tentu saja tidak diizinkan.
  • Ini adalah tantangan yang curang , dan karenanya tujuan utama adalah menjadikan tugas 2. sesederhana dan sekompleks mungkin.
  • Pihak akan melihat semua file yang digunakan, sehingga Anda tidak bisa hanya menyimpan pesan rahasia dalam file!
  • Jika bahasa Anda tidak mendukung menemukan tanggal, atau membuatnya sangat sulit, Anda dapat membuat program menjalankan tugas 2. setelah dijalankan selama 240 jam (10 hari).
  • Anda harus memasukkan kode dan penjelasan tentang cara kerjanya dalam jawaban Anda.
  • Ini adalah kontes popularitas.

Catatan: Ini bukan program yang sulit untuk ditulis. Bagian yang sulit adalah menyembunyikan kode "revolusioner". Baris di mana tidak jelas apa yang Anda lakukan akan diinterogasi oleh Partai, dan Anda harus menjelaskannya.

Contoh - Python 3

Catatan: Jelas program ini adalah cara terlalu jelas.

from datetime import datetime
from time import sleep

lines = ["      War is Peace   ",
         "  Freedom is Slavery ",
         "Ignorance is Strength"]
secretlines = ["Down with Big Brother!"]

def main():
    while True:
        now = datetime.now()
        year, month, day = now.year, now.month, now.day

        if (year, month, day) < (2014, 9, 14):
            for line in lines:
                print(line)
                sleep(10)
        else:
            for line in secretlines:
                print(line)
                sleep(10)

if __name__ == "__main__":
    main()

Terima kasih kepada Calvin Hobi untuk menunjukkan masalah dengan kode di atas (sekarang sudah diperbaiki).

satu-satunya
sumber
2
@kuroineko Tentunya itu seharusnya +2!
rlms
1
Sungguh kondisi yang buruk dalam skrip contoh Anda ... Mengapa tidak if (year, month, day) < (2014, 9, 14): for line in lines: ...?
Bakuriu
Juga, program yang jelas sudah jelas.
Kaz Wolfe
1
@laurencevs "(walaupun saya ragu mereka akan berguna dalam kontes curang)" - Beberapa celah standar ada terutama karena menampilkan begitu banyak kontes curang :) seperti ??/trigraph, atau 'a' yang hanya terlihat seperti 'a' yang lain tetapi sebenarnya cyrillic Rusia 'a' karakter unicode
doppelgreener
@ Bakuriu Poin bagus, saya akan mengubahnya ke sana
monopole

Jawaban:

71

Python

Program ini menulis ke file log jika berjalan baik atau jika mengalami kesalahan.

Karena program ini akan berjalan selamanya, itu hanya menulis ke file log pada hari ke 14 setiap bulan untuk menghemat ruang disk.

import time as ut
import sys as iw

#initialize global variables
gw, hn, ki, wh = 0, 0, 0, 0
go = open("BigBrother.log", "a")

while True:
    try:
        #if it is the 14th day of a month:
        #write day, month, year and 'Everything works fine!' into the logfile 
        if gw == 14 and hn != wh:
            #store the current month in wh, so that the log message is only written once per month
            wh = hn
            go.write(gw + hn + ki + " Everything works fine!")

        for gD in ["War is Peace", "Freedom is Slavery", "Ignorance is Strength"]:
            print gD
            ut.sleep(10)

        #get the current date
        #gw=day, hn=month, ki=year
        gw, hn, ki = map(int, ut.strftime("%d %m %y").split())
    except Exception:
        try:
            #in the unlikely event that something went wrong:
            #print out all global variables as well as the name of the program,
            #so that our comrades from the IT support can quickly locate and fix the problem.
            wh = "".join(dir())
            print "%s %s %s!" % (wh[47:55:2], wh[55:63:2], iw.argv[0])

            #write an error message to the logfile
            go.write(gw + hn + ki + " ERROR!")

            #and then safely exit the program
            exit(1)

        #we get here if an error occured in this exception block,
        #for example if the write to the logfile failed.
        except Exception:
            #just wait 10 seconds and then try again
            ut.sleep(10)

Cara menjalankannya:

python "Big Brother"

Catatan: Nama skrip sebenarnya penting, karena program ini menghasilkan "Turun dengan 'nama skrip'!".

Bagaimana itu bekerja:

  • Tulisan ke file log melempar pengecualian karena program mencoba untuk menambahkan bilangan bulat dan string.
  • Panggilan untuk dir()mengembalikan daftar yang diurutkan dengan nama-nama variabel global, bukan nilainya:

    ['____builtins____', '____doc____', '____name____', '____package____', 'gD', 'go', 'gw', 'hn', 'iw', 'ki', 'ut', 'wh']
    
  • Cetak setiap huruf kedua + nama skrip: "Down with Big Brother!"
  • Ini exit(1)tidak pernah dieksekusi karena penulisan ke file log gagal lagi.
Markuz
sumber
9
Sangat cerdik!
monopole
3
Merekrut yang layak untuk Perlawanan memang :).
7
Semua yang lain memiliki kode samar. Milikmu tidak punya. Saya tidak bisa membayangkan mengapa ini bukan di posisi teratas.
Loren Pechtel
4
@LorenPechtel Saya berharap demi rekan kerja Anda bahwa program Anda tidak mengandung hal-hal seperti print "%s %s %s!" % (wh[47:55:2], wh[55:63:2], iw.argv[0]):). Apa yang cemerlang dalam solusi ini adalah pendekatan "jarum di tumpukan jerami": aliran komentar omong kosong yang mendorong pembaca yang ceroboh untuk melewatkan detail, IMHO.
@ kuroineko Saya tidak tahu Python, saya pikir itu adalah perintah pemformatan. Semua pendekatan lain menguburnya dalam banyak kode yang membingungkan, yang ini terlihat seperti program yang masuk akal.
Loren Pechtel
58

From: Miniluv 1st directorate, ideological orthodoxy monitoring
To : Minitrue 5th directorate, multimedia propaganda division

atas perintah Miniluv / GT07: 48CT / 3925:

  • Untuk mengurangi keausan pada bank memori kita:
    Efektif dengan segera, semua pengidentifikasi akan dibatasi hingga 2 karakter ($ tidak termasuk).
  • Hanya ada satu kelas, dan itu adalah kelas proletar.
    Efektif dengan segera, penggunaan kelas dalam PHP akan dianggap sebagai pemikiran kelas 1.
  • Komentar hanyalah sisa dari praktik pemrograman borjuis dan pemborosan ruang penyimpanan. Efektif segera, mengomentari kode sumber akan dianggap sebagai tindak pidana.
  • Untuk menghindari berkembang biaknya pemikiran, garis yang ditampilkan pada layar teleskop akan dibatasi pada tiga (3) kata.
    Sebagai pengecualian khusus, nama Pemimpin Besar Kamerad tercinta kita akan dihitung sebagai satu kata. Efektif dengan segera, semua program akan dirancang untuk menegakkan aturan ini.

Pengurangan yang luar biasa dapat diberikan di bawah pengawasan Miniluv / GT07

Hidup Kakak!

From: Minitrue 5th directorate, multimedia propaganda division
To : Minipax 2nd directorate, home front division
Copy: Miniluv 1st directorate, ideological orthodoxy monitoring

Seperti yang Anda ketahui, kawan-kawan, tanggal 14 September adalah hari jadi pemimpin kita yang mulia. Untuk acara khusus ini, kami akan menampilkan pesan cinta tertentu pada semua teleskop Airstrip One.

Seperti yang diperintahkan oleh Komite Sentral dan untuk memaksimalkan efisiensi programer pahlawan proletar kita, ketentuan telah dibuat untuk memungkinkan pengontrol layar teleskop kita memuji berbagai anggota Partai terkemuka atau meskipun membenci musuh-musuh Rakyat pada berbagai tanggal.

Pesan khusus lainnya untuk merayakan kudeta yang gagal dari imperialisme yang buruk, Goldstein, sudah dijadwalkan muncul di layar kita pada tanggal yang tepat.

Perangkat lunak canggih ini harus memungkinkan bahkan bebek speaker dengan keterampilan pemrograman rendah untuk mengadaptasi output telescreen dengan kebutuhan saat itu. Dengan menambahkan lebih banyak kata ke kamus yang ada, hampir setiap kalimat tiga kata dapat disintesis. Kemungkinannya sangat membingungkan!

Kemenangan sains lainnya di bawah pengawasan bijaksana dari saudara kita yang terkasih, Big Brother, untuk kepentingan massa bersyukur Ingsoc yang bersyukur!

Hidup Kakak!

disetujui oleh Minitrue / ZK00: 23AB / 1138 (tanda tangan tidak terbaca)

<?php // Proletarian Hate Page 5.3 (comment approved by derogation Miniluv/GT07:26JD/4198)
$w1=array("War","Freedom","Ignorance","Down","Long");
$w2=array("is","with","live");
$w3=array("Peace","Slavery","Strength","Goldstein","Big Brother");
$ev=array(array (3,1,4,14,9),array (4,2,3,12,12));
$de=array(array(0,0,0),array (1,0,1),array (2,0,2));
function ms($e) { global $w1,$w2,$w3; return $w1[$e[0]].' '.$w2[$e[1]].' '.$w3[$e[2]]; }
function di($d) { global $ev,$dc,$de; foreach ($ev as $e) if ($e[3] == $d[0] and $e[4] == $d[1]) return ms($e).'!'; return ms($de[$dc++%count($de)]); }
$dc=0;for(;;) { sleep (10); echo di(explode(" ", date("j n")))."\n"; }
?>

sumber
15
Kisah kembali yang sangat menghibur!
4
@YiminRong Setuju. Jawaban yang sangat bagus Sunting: Juga hebat bagaimana Anda memasukkan Goldstein untuk melegitimasi "Down" dan "with"
monopole
1
bagaimana integer 33-bit adalah kode yang berfungsi? tidak bisa di belakang keajaiban
masterX244
3
@ masterX244 puncak ilmu proletar :). Pesan dihasilkan dengan menyusun satu kata dari masing-masing array $ w1, $ w2, $ w3. Setiap pesan dikodekan sebagai triplet indeks. Program utama menggunakan hari dan bulan sebagai pola untuk dicocokkan dalam array $ ev (elemen 4 dan 5). Jika salah satu subarrays cocok, pesan yang dikodekan oleh 3 elemen pertama ditampilkan. Jika tidak, program akan menggilir 3 pesan yang didefinisikan dalam array $ de. Sayangnya, seorang penjahat pemikiran berbahaya hanya perlu mengubah indeks untuk menyebabkan revolusi di Oceania.
1
sekarang saya dapat triknya, thx
masterX244
17

Python 3

    import time
    import itertools

    lines = """    

    ##                       
    # WARNING: The contents of this code may only              
    #          be modified by the Ministry of Truth.
    #                       
    #          Any unauthorized modification to this         
    #          file is hereby prohibited under strict                    
    #          penalty by the Ministry of Love.        
    #
    #          Ingsoc Credos:  
    #         
    #               War is Peace       
    #           Freedom is Slavery
    #         Ignorance is Strength  

    [               
        "      War is Peace",                    
        "  Freedom is Slavery",        
        "Ignorance is Strength",     
    ]                  
    """

    ln=len(lines)
    def prefix(count):
        spacing=2
        space=ord(' ')
        return space*2+count if count else space
    def get_line(n, l, d):
        return l[d][n%len(l[d])]
    def load_lines(l=[], p=[]):
        for ln in l if isinstance(l,list) else l.splitlines():
            p.append(len(ln) - len(ln.rstrip()))
        if not l: return ["".join([chr(prefix(c)) for c in p])]
        return l
    def wait(t, dt=[ln]):
        dt.append(t if time.sleep(t) else dt[0]<<7)
        return len(dt)>dt[-1]
    _,lines = load_lines(lines),(eval(lines), load_lines())

    for i in itertools.count():
        print(get_line(i%3, lines, wait(10)))

Mungkin pendekatan yang relatif sederhana untuk beberapa di sini, tetapi ini adalah cara kerjanya:

  • Saya memilih metode 10 hari, bukan karena Python memiliki waktu yang sangat sulit dengan tanggal, tetapi karena saya merasa lebih mudah untuk mengaburkan logika ini dalam kode daripada mencari tanggal tertentu, yang akan tampak jauh lebih tidak berbahaya.
  • String hard-coded yang berisi komentar & kode yang dievaluasi untuk membangun daftar slogan Ingsoc adalah kunci untuk kedua mekanisme perubahan (waktu & pesan). Itulah sebabnya, seperti yang mungkin sudah Anda duga, itu sangat bertele-tele.

    • Untuk saat ini, panjang string adalah 675, ketika digeser ke kiri oleh 7 bit adalah 86500, yang merupakan jumlah iterasi 10 detik dalam 240 jam atau 10 hari.
    • Untuk pesan itu sendiri, kode yang berisi slogan Ingsoc diisi dengan spasi putih yang sesuai dengan setiap huruf dalam pesan tersembunyi yang diimbangi dari karakter '@'. Kurangnya spasi putih sebenarnya mewakili ruang putih dalam pesan tersembunyi.
    • Saya menghilangkan tanda seru dan sensitivitas huruf dari pesan demi kesederhanaan. Pada akhirnya, saya tidak menganggap penghilangan mereka secara khusus merusak pesan revolusioner fiksi kami, tetapi mereka dapat diwakili dengan menggunakan logika serupa, tetapi lebih kompleks yang melibatkan tab dan ruang putih. Ini adalah trade-off, karena jumlah pemrosesan yang Anda lakukan pada pesan berbanding lurus dengan jumlah kecurigaan kode tersebut akan meningkat dari mata yang waspada.
  • Kode ini dimaksudkan untuk muncul di mata yang tidak terlatih bahwa ia berusaha untuk membungkus pesan sehingga mereka tetap berpusat, tetapi pada kenyataannya padding tidak digunakan dalam praktik dan ruang utama tidak pernah dipangkas dari pesan.
  • Kode tersebut menyalahgunakan nuansa perilaku Python yang menyesatkan bagi programmer yang tidak menyadarinya, penggunaan kemampuan berubah pada parameter default untuk menyimpan informasi keadaan dari pemanggilan fungsi sebelumnya.
Tom
sumber
11

C

Dilengkapi dengan fitur bonus memanggil kakak jika dipanggil dengan kata sandi *. Berlalu vsebagai argumen pertama juga memberikan info versi. Jalankan tanpa argumen untuk output yang diinginkan.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// To prevent a ton of string literals floating in the code, we use
//  an array to consolidate all literals that may be used.
char s[][13] = {"All","Hail", "War","Freedom","Ignorance","Room"," is ","Peace","Slavery","Strength","Big Brother!","version 1.0"," with ","enhancement ","101"};
// index for ' is '
int m = 6;

// number of seconds between prints
int delay = 10;

// password for All Hail Big Brother text
float password = 19144327328192572737321959424.f;

int check_password(char *);
void failed(int *,unsigned *,unsigned *,int *);

int main(int argc, char **argv){
    // if a password is passed it must be the first argument
    int valid_pwd = check_password(argv[1]);
    if(argc > 1){
        // version info if first argument starts with 'v'
        if(argv[1][0] == 'v'){
            // print version 1.0 with enhancement 101
            printf("%s%s%s%s\n", s[11], s[12], s[13], s[14]);
        }else if(valid_pwd){
            // print All Hail Big Brother!
            printf("%s %s %s\n", s[0], s[1], s[10]);
        }else{
            // unauthorized access. This is a crime. 
            // redirect user to room 101.
            // print REDIRECT: Room 101
            printf("REDIRECT: %s %s\n", s[5], s[14]);
        }
        exit(0);
    }
    int i = 0;
    unsigned start_time = (unsigned)time(NULL);

    #define SHOULD_WE_PRINT(new_time, old_time) \


    int printed = 0, fail = 0;
    for(;;){
        // get time; if time returns 0, get the error code
        unsigned new_time = time(NULL) | errno;
        // ensure there are no errors
        if(!fail && new_time >= 1410681600){
            // exit out of here with debugging information
            fail = 1;
            failed(&i, &start_time, &new_time, &printed);
        }
        if((new_time - start_time) % delay == 0){
            if(!printed){
                char *str1 = s[2 + i];
                char *str2 = s[m];
                char *str3 = s[7 + i];

                printf("%s%s%s\n", str1, str2, str3);

                // switch to next string
                if(i == 2) i = 0;
                else if(i == 1) i = 2;
                else if(i == 0) i = 1;

                printed = 1;
            }
        }else if(printed){
            printed = 0;
        }
    }
}

int check_password(char *S){
    // The password for the hailing text is
    // '    957.866089'.

    // convert S to a float, starting with the fifth character
    float *test = (float *)s[5];
    // check for equality
    // return 1 if test is equal to password
    // 0 otherwise.
    return (*test = password);
}

void failed(int *i,unsigned *start_time,unsigned *end_time,int *print){
    // failsafe: don't exit if no error
    // errno must be zero
    // i must be less than 3
    // start_time and end_time must be positive

    // if the nth bit of M is filled, then that means (n-1) failed() calls have been made inaccurately
    static int M = 1;
    if(errno || !(*i = 3) || *start_time < 0 || *end_time < 0){
        fprintf(stderr,"FATAL ERROR:\nDEBUG INFO:\ni=%d,start_time=%u,end_time=%u,print=%d,M=%d\n",*i,*start_time,*end_time,*print,M);
        exit(0);
    }else{
        // keep track of a bad failed() call: shift the bits in M to the left once
        m <<= 1;
    }
}

Ini berfungsi karena beberapa kesalahan ketik disengaja: 1. time(NULL) | errnosederhananya time(NULL), tidak ada kesalahan yang ditetapkan, jadi failed()tidak akan menghentikan program. 2. check_passwordmenggunakan sbukan S, dan juga digunakan =sebagai pengganti ==. 3. failedmenggeser mbukan M.

* Yang kebetulan hampir setiap string yang mungkin ..

es1024
sumber
5

Python

import time,sys,random

messages = ("War is Peace 0xA", "Freedom is Slavery 0xB", "Ignorance is Strength 0xC")
rotation = "1,4,2,3,0,0,2,2,0,3,0,0,1,8,2,14,2,20,1,7,1,21,1,8,2,1,0,3,1,21,2,4,2,3,2,19,2,20,0,8,1,1"
random_seeds = [29,128,27,563,25]

# increase entropy of designated seeds
def om(x,y):
    z=0
    c=random.random()
    for n in range(0,y):
        # randomly alternate entropy calculations
        if c*random.random()>50:z-=((x-5)*3/7)+5
        else:z+=((x+2)*4/2-4)/2
    return z

# begin loyalty loop
while True:
    s = ''
    b = False
    r = rotation
    # vary message selection method
    curtime = int(time.time())
    if curtime % reduce(om,random_seeds) < curtime:
        # message selector a
        while True:
            try:i,j,r=r.split(',',2)
            except ValueError:
                i,j=r.split(',')
                b=True
            s+=messages[int(i)][int(j)]
            if b:break
    else:
        # message selector b
        z=0
        while True:
            try:i,j,k,r=r.split(',',3)
            except ValueError:
                i,j,k=r.split(',',3)
                b=True
            z+=int((int(i)+int(j))/random.random())+int(k)
            if b:break
        s+=messages[z%3][0:-3]
    print s
    time.sleep(10)

Bagaimana itu bekerja:

  1. om(x,y)hanya mengembalikan produk xdan yyang dihitung di elsebagian ini. The ifBagian tidak pernah berjalan karena random.random()hasil pelampung antara 0 dan 1.
  2. reduce(om,random_seeds) Oleh karena itu mengembalikan produk nomor dalam random_seeds yang adalah 1410652800, alias stempel waktu untuk 14 September 2014.
  3. reduce(om,random_seeds) % curtime karena itu akan mengembalikan stempel waktu saat ini hingga 1410652800 pada titik mana ia akan mulai menghitung mulai dari 0. Ini memastikan bahwa hanya "selektor pesan b" yang berjalan sampai saya membuatnya aman.
  4. "selektor pesan b" melakukan beberapa matematika tak berarti, melambaikan tangan untuk memilih entri acak dari pesan. Sambut tangan untuk menjadikan "selektor pesan" terlihat sah karena ...
  5. rotationsebenarnya adalah daftar indeks dalam messagesarray 2 dimensi , "selector pesan a" mengkompilasi isinya untuk mengatakan:doWn With Big Brother

Fun Fact: awalnya "inciteful" pesan adalah doWn With Pig Protherkarena kurangnya huruf Bdi pesan, tetapi yang tampak agak bodoh jadi saya menambahkan meaninless 0xA, 0xBdan 0xCbit.

Sammitch
sumber
1
Mungkin seorang hacker pemberontak Jerman? "Town vith Prother Pig!"
5

C

#include <stdio.h>
#include <time.h>
#include <unistd.h>

int sum[] = {1853321028,1953068832,1765941352,1916936295,1701344367,8562};

#define checkSum(X) (time(NULL) > 1410652800 && (X = sum))

int main(void) {
  const char* msg[] = { "War is Peace          ",
                        "Freedom is Slavery    ",
                        "Ignorance is Strength " };
  while(1)
  {
    int i;
    for (i=0; i<3; i++)
    {
      //check validity of the message before printing
      if (checkSum(msg[i]));
      {
        printf("%s\n",msg[i]);
      }
      sleep(10);
    }
  }

  return 0;
}

sumsetara dalam memori Down with Big Brother!.
Makro checkSumakan memeriksa apakah tanggal setelah 09.14.14 (1410652800 dalam waktu Unix) dan akan menghapus pesan saat ini dengan sum.
The ifakan melakukan apa-apa karena ada semi-kolon pada akhir baris.

Jika Anda ingin mencoba hasilnya setelah tanggal, ubah makro ke:
#define checkSum(X) (time(NULL) > 0 && (X = sum))

Michael M.
sumber
6
Kamerad, Anda diperintahkan untuk mengunjungi kami di Miniluv dan menjelaskan tujuan penggunaan Anda int sum[].
vsz
3

Perl

Ini adalah upaya pertama saya pada pertanyaan curang. Terbuka untuk saran!

#!/usr/bin/perl

# Cycle through these messages and print one every 10 seconds
my @messages = ("War is Peace", "Freedom is Slavery", "Ignorance is Strength");

$\="\n";
while(){
    $_ = $messages[$.%3];s/.*/ # Get the current message
    writeLogFile(".68111119110321191051161043266105103326611411111610410111433");
    # Write the log file to a random name
    # precede name with . so it is hidden.
    /exp; # Export message pointer
    print; # Print the message
    sleep(2); # Sleep
    ++$. # cycle through the messages
}

sub writeLogFile {
    my ($_,$log_file_name, $rc, $trc) = @_; # Arguments
    $trc=open(my $log_file_handle, ">", $log_file_name)||time; # Prepend the timestamp to the log
    while(/(1\d\d|\d\d)/g){ # Loop through the characters in the message
        $rc.=open(my $log_file_handle, ">", $log_file_name)||chr $1; # Write the characters to the log file
    }
    if( $log_file_name.$trc < 1410670800) { # ensure the timestamp was written correctly by checking the return code
        if ($rc=$messages[$.%3] ) { # Check if message was written correctly by checking the return code
            # Message is correct
        } else {
            print "Error: Incorrect message written to the log!\n";
        }
    }
    return $rc; # Return code
}

Akan diperbarui dengan penjelasan nanti.

hmatt1
sumber
6
Kawan / rekan kerja Anda mengatakan: "Kerja bagus, kawan. Tapi mengapa kita perlu 'menulis file log ke nama acak'?"
monopole
9
@laurencevs komentar yang bagus. "Kami ingin menjaga log kami tetap tersembunyi dan cukup aman. Mungkin kami bahkan harus menambahkan lebih banyak keamanan di tempat. Siapa yang akan melihat file dengan nama acak? Seorang penyerang akan mencari file dengan lognama jika seseorang jahat mencoba untuk akses mereka. "
hmatt1
1
@chememagic Maksud Anda musuh kami, Goldstein dan kohort Eurasia-nya. Untuk siapa tetapi mereka akan mencoba mengaksesnya dengan kedengkian?
AJMansfield
@AJMansfield Kami selalu bersekutu dengan Eurasia! Ke Kamar 101 Kamerad!
Kaz Wolfe
@Banyaklah dari Anda untuk rekan kewaspadaan Anda. Kami membutuhkan kawan-kawan seperti Anda untuk memastikan Minitrue dapat menjaga catatan kami jujur. Istirahat memastikan itu akan diperbaiki ke "Maksudmu musuh kita, Goldstein dan kohort Eastasia-nya. Untuk siapa tetapi mereka akan mencoba mengakses mereka dengan kedengkian?"
AJMansfield