ํƒœ๊ทธ ๋ณด๊ด€๋ฌผ: underhanded

underhanded

์˜ค์„ธ์•„๋‹ˆ์•„์—์„œ ํ˜๋ช…์„ ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค ์›” 14 ์ผ ์ดํ›„์—๋Š” 10 ์ดˆ๋งˆ๋‹ค ์ธ์‡„

์ˆ˜์ƒ์ž (14/09/14๋กœ ๊ฒฐ์ •)

Markuz (Python)์˜ ๋‹น์ฒจ ๋‹ต๋ณ€ -63 ํ‘œ

์ค€์šฐ์Šน ์ฟ  ๋กœ์ด ๋„ค์ฝ” (PHP)์— ์˜ํ•ด โ€“ 55 ํ‘œ๋ฅผ

์†Œ๊ฐœ

๋‹น์‹ ์€ George Orwell ์˜ ์ฑ… Nineteen Eighty-Four ์˜ ์„ธ๊ณ„์— ์žˆ์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜๋Š” ๋‹น์‚ฌ๊ตญ์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ์ด๋ฉฐ ํ…”๋ ˆ ์Šคํฌ๋ฆฐ ์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ํŒŒํ‹ฐ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•ด์•ผํ•˜๋ฉฐ ์•„๋ž˜ ์ž‘์—… 1์— ํ‘œ์‹œ๋œ ๋ฉ”์‹œ์ง€๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ตœ๊ทผ์— ๋‹น์„ ๋ฉธ์‹œํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์œผ๋ฉฐ ํ”„๋กœ๊ทธ๋žจ์ด ํ˜๋ช…์„ ์ผ์œผํ‚ค ๊ธธ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ”„๋กœ๊ทธ๋žจ์— โ€œBig Brother์™€ ํ•จ๊ป˜ ๋‹ค์šดํ•˜์‹ญ์‹œ์˜ค!โ€๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ๋‹น์‹ ์˜ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฌด์—‡์„ํ•˜๋Š”์ง€ ์•Œ๊ฒŒ๋˜๋ฉด ๊ณ ๋ฌธ์„ ๋‹นํ•  ๊ฒƒ์ด๋ฏ€๋กœ ํƒˆ์ถœ ํ•  ์‹œ๊ฐ„์„ ์ฃผ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  : ์ด ํ˜๋ช…์„ ์ด‰๋ฐœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค,ํ•˜์ง€๋งŒ ๋‹น์‹ ์€ ๋‹น์‹ ์ด ์ƒ๊ฐํ•˜๋Š” ํŒŒํ‹ฐ๋ฅผ ํ–ฅํ•œ ์ฆ์˜ค์˜ ์ด๋Ÿฌํ•œ ๊ด‘๋ž€์—์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค ์‹ค์ œ๋กœ ์ฐจ์ด๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

ํƒœ์Šคํฌ

๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค.

  1. 2014 ๋…„ 9 ์›” 14 ์ผ ์ด์ „์—๋Š” ํ•ญ์ƒ ๋‹ค์Œ ์ค„์„ ํšŒ์ „์œผ๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค (์˜ˆ : ํ•œ ์ค„ ์ธ์‡„, 10 ์ดˆ ๋Œ€๊ธฐ, ๋‹ค์Œ ์ค„ ์ธ์‡„ ๋“ฑ).

    War is Peace
    Freedom is Slavery
    Ignorance is Strength
    
  2. 2014 Down with Big Brother!๋…„ 9 ์›” 14 ์ผ ์ดํ›„์—๋Š” 10 ์ดˆ๋งˆ๋‹ค ์ธ์‡„ ๋ฉ๋‹ˆ๋‹ค.

  3. ์–ธ๋œป๋ณด๊ธฐ์— 1.์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ํŒŒํ‹ฐ์— ๊ฑธ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทœ์น™

  • ๋ฌผ๋ก  ํ‘œ์ค€ ํ—ˆ์  ์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ด๊ฒƒ์€์ด๋‹ค ๋ถˆ๊ณต์ • ๋„์ „, ๊ทธ๋ž˜์„œ ์ฃผ๋œ ๋ชฉ์ ์€ ๊ฐ€๋Šฅํ•œ ํ•œ ์ž‘์—… 2. ๊ฐ™์€ ๋ˆˆ์— ๋„์ง€ ์•Š๋Š” ์€๋ฐ€ํ•œ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๋‹น์‚ฌ์ž๋Š” ์‚ฌ์šฉ ๋œ ๋ชจ๋“  ํŒŒ์ผ์„ ๊ฒ€ํ† ํ•˜๋ฏ€๋กœ ๋น„๋ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ํŒŒ์ผ์— ์ €์žฅํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค!
  • ์–ธ์–ด๊ฐ€ ๋‚ ์งœ ์ฐพ๊ธฐ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋งค์šฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ 240 ์‹œ๊ฐ„ (10 ์ผ) ๋™์•ˆ ์‹คํ–‰ ํ•œ ํ›„ ํ”„๋กœ๊ทธ๋žจ์ด ์ž‘์—… 2๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ์™€ ๋‹ต๋ณ€์—์„œ ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•œ ์„ค๋ช…์„ ํฌํ•จ์‹œ์ผœ์•ผํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๊ฒƒ์€ ์ธ๊ธฐ ์ฝ˜ํ…Œ์ŠคํŠธ์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ  : ์ž‘์„ฑํ•˜๊ธฐ ์–ด๋ ค์šด ํ”„๋กœ๊ทธ๋žจ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์–ด๋ ค์šด ๋ถ€๋ถ„์€ โ€œํ˜๋ช…์  ์ธโ€์ฝ”๋“œ๋ฅผ ์ˆจ๊ฒจ์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜๊ฐ€ ๋ฌด์—‡์„ํ•˜๊ณ  ์žˆ๋Š”์ง€ ๋ถ„๋ช…ํ•˜์ง€ ์•Š์€ ๋…ธ์„ ์€ ๋‹น์‚ฌ๊ตญ์— ์˜๋ฌธ์„ ์ œ๊ธฐ ํ•  ๊ฒƒ์ด๋ฉฐ ๊ท€ํ•˜๋Š”์ด๋ฅผ ์„ค๋ช…ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ-Python 3

์ฐธ๊ณ  : ๋ฌผ๋ก ์ด ํ”„๋กœ๊ทธ๋žจ์ด ๋ฐฉ๋ฒ•์€ ๋„ˆ๋ฌด ๋ถ„๋ช….

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()

์œ„์˜ ์ฝ”๋“œ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ์ง€์  ํ•ด ์ฃผ์‹  Calvin โ€˜s Hobbies ์—๊ฒŒ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค (ํ˜„์žฌ ์ˆ˜์ • ๋จ).



๋‹ต๋ณ€

ํŒŒ์ด์ฌ

์ด ํ”„๋กœ๊ทธ๋žจ์€ ์ œ๋Œ€๋กœ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ๋กœ๊ทธ ํŒŒ์ผ์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

์ด ํ”„๋กœ๊ทธ๋žจ์€ ์˜๊ตฌ์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ธฐ ์œ„ํ•ด ๋งค์›” 14 ์ผ์— ๋กœ๊ทธ ํŒŒ์ผ์—๋งŒ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

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)

์‹คํ–‰ ๋ฐฉ๋ฒ• :

python "Big Brother"

์ฐธ๊ณ  : ์Šคํฌ๋ฆฝํŠธ์˜ ์ด๋ฆ„์€ โ€œ! โ€˜์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„โ€™์„ ๊ฐ€์ง„ ์•„๋ž˜๋กœโ€์ด ํ”„๋กœ๊ทธ๋žจ์˜ ์ถœ๋ ฅ์œผ๋กœ, ์‹ค์ œ๋กœ ์ค‘์š”ํ•˜๋‹ค.

์ž‘๋™ ๋ฐฉ์‹ :

  • ํ”„๋กœ๊ทธ๋žจ์ด ์ •์ˆ˜ ๋ฐ ๋ฌธ์ž์—ด์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋ฏ€๋กœ ๋กœ๊ทธ ํŒŒ์ผ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ํ˜ธ์ถœ dir()์€ ๊ฐ’์ด ์•„๋‹Œ ์ „์—ญ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์œผ๋กœ ์ •๋ ฌ ๋œ ๋ชฉ๋ก ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    ['____builtins____', '____doc____', '____name____', '____package____', 'gD', 'go', 'gw', 'hn', 'iw', 'ki', 'ut', 'wh']
    
  • ๋‘ ๋ฒˆ์งธ ๋ฌธ์ž์™€ ์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„์„ ์ธ์‡„ํ•˜์‹ญ์‹œ์˜ค : โ€œBig Brother์™€ ํ•จ๊ป˜ ๋‹ค์šดํ•˜์‹ญ์‹œ์˜ค!โ€
  • ๋Š” exit(1)๋กœ๊ทธ ํŒŒ์ผ์— ์“ฐ๊ธฐ๊ฐ€ ๋‹ค์‹œ ์‹คํŒจํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ต๋ณ€

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

Miniluv / GT07 : 48CT / 3925์˜ ์ˆœ์„œ๋กœ :

  • ๋ฉ”๋ชจ๋ฆฌ ๋ฑ…ํฌ์˜ ๋งˆ๋ชจ๋ฅผ ์ค„์ด๋ ค๋ฉด :
    ์ฆ‰์‹œ ๋ชจ๋“  ์‹๋ณ„์ž๋Š” 2 ์ž๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค ($ ํฌํ•จ๋˜์ง€ ์•Š์Œ).
  • ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜ ๋ฟ์ด๋ฉฐ ํ”„๋กค๋ ˆํƒ€๋ฆฌ์•„ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.
    ์ฆ‰์‹œ, PHP์—์„œ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ 1 ํ•™๋…„ ์‚ฌ๊ณ  ๋ฒ”์ฃ„๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.
  • ์ฃผ์„์€ ๋ถ€๋ฅด์ฃผ์•„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ด€ํ–‰์˜ ๋‚จ์€ ๋ถ€๋ถ„์ด๋ฉฐ ์ €์žฅ ๊ณต๊ฐ„ ๋‚ญ๋น„์ž…๋‹ˆ๋‹ค. ์ฆ‰์‹œ ํšจ๋ ฅ์„ ๋ฐœ์ƒํ•˜๋ฉด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋ฒ”์ฃ„ ํ–‰์œ„๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฒˆ์‹ ์‚ฌ๊ณ ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด, ํ…”๋ ˆ ์Šคํฌ๋ฆฐ์— ํ‘œ์‹œ๋˜๋Š” ๋ผ์ธ์€ 3 ๋‹จ์–ด๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.
    ํŠน๋ณ„ํ•œ ์˜ˆ์™ธ๋กœ, ์šฐ๋ฆฌ์˜ ์‚ฌ๋ž‘ํ•˜๋Š” ์œ„๋Œ€ํ•œ ์ง€๋„์ž์˜ ์ด๋ฆ„์€ ํ•œ ๋‹จ์–ด๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์€ ์ฆ‰์‹œ์ด ๊ทœ์น™์„ ์‹œํ–‰ํ•˜๋„๋ก ์„ค๊ณ„๋ฉ๋‹ˆ๋‹ค.

Miniluv / GT07์˜ ๊ฐ๋…ํ•˜์— ํƒ์›”ํ•œ ๊ฒฝ๋ฉธ์ด ํ—ˆ์šฉ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋ž˜ ์‚ด๋‹ค ๋น… ๋ธŒ๋ผ๋”!

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

์•„์‹œ๋‹ค์‹œํ”ผ, ๋™๋ฃŒ ์—ฌ๋Ÿฌ๋ถ„, 9 ์›” 14 ์ผ์€ ์˜๊ด‘์Šค๋Ÿฌ์šด ์ง€๋„์ž์˜ ๊ธฐ๋…์ผ์ž…๋‹ˆ๋‹ค. ์ด ํŠน๋ณ„ํ•œ ๋‚ ์„ ์œ„ํ•ด, ์šฐ๋ฆฌ๋Š” Airstrip One์˜ ๋ชจ๋“  ํ…”๋ ˆ ์Šคํฌ๋ฆฐ์— ํŠน์ •ํ•œ ์‚ฌ๋ž‘์˜ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Central Commitee๊ฐ€ ๋ช…๋ นํ•˜๊ณ  ํ”„๋กค๋ ˆํƒ€๋ฆฌ์•„ ์˜์›… ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด Telescreen ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋‹ค์–‘ํ•œ ์ €๋ช…ํ•œ ๋‹น์›์„ ์นญ์ฐฌํ•˜๊ฑฐ๋‚˜ ๋‹ค์–‘ํ•œ ๋‚ ์งœ์— ์‚ฌ๋žŒ๋“ค์˜ ์ฆ์˜ค์‹ฌ์„ ์ž๊ทน ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ทœ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ™ฉ์ œ ๋น„์ฐธํ•œ ๋ถ€์กฑ์˜ ์ฟ ๋ฐํƒ€ ์‹คํŒจ๋ฅผ ์ถ•ํ•˜ํ•˜๊ธฐ์œ„ํ•œ ๋˜ ๋‹ค๋ฅธ ํŠน๋ณ„ํ•œ ๋ฉ”์‹œ์ง€๋Š” ์ด๋ฏธ ์šฐ๋ฆฌ์˜ ์Šคํฌ๋ฆฐ์— ์ ์ ˆํ•œ ๋‚ ์งœ์— ๋‚˜ํƒ€๋‚  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

์ด ์ตœ์ฒจ๋‹จ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ์ด ๋‚ฎ์€ ๋• ์Šคํ”ผ์ปค๋„ ์ „ํ™” ํ™”๋ฉด ์ถœ๋ ฅ์„ ํ•„์š”์— ๋งž๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ์‚ฌ์ „์— ๋” ๋งŽ์€ ๋‹จ์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์‚ฌ์‹ค์ƒ ์„ธ ๋‹จ์–ด๋กœ ๋œ ๋ฌธ์žฅ์„ ํ•ฉ์„ฑ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Šฅ์„ฑ์€ ๋†€๋ผ์›Œ์š”!

์šฐ๋ฆฌ์˜ ์‚ฌ๋ž‘ํ•˜๋Š” ๋™์ง€ ๋น… ๋ธŒ๋ผ๋”์˜ ํ˜„๋ช…ํ•œ ๊ฐ๋…ํ•˜์— ๊ณผํ•™์˜ ๋˜ ๋‹ค๋ฅธ ์Šน๋ฆฌ๋Š” ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ž˜ ์‚ด๋‹ค ๋น… ๋ธŒ๋ผ๋”!

Minitrue / ZK00 : 23AB / 1138์— ์˜ํ•ด ์Šน์ธ ๋จ (์ฝ๊ธฐ ์–ด๋ ค์šด ์„œ๋ช…)

<?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"; }
?>

๋‹ต๋ณ€

ํŒŒ์ด์ฌ 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)))

์•„๋งˆ๋„ ์ผ๋ถ€์— ๋Œ€ํ•œ ๋น„๊ต์  ๊ฐ„๋‹จํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ด์ง€๋งŒ ์ด๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

  • ํŒŒ์ด์ฌ์—์„œ ๋‚ ์งœ๊ฐ€ ํŠนํžˆ ํž˜๋“ค ๊ธฐ ๋•Œ๋ฌธ์— 10 ์ผ ๋ฐฉ๋ฒ•์„ ์„ ํƒํ–ˆ์ง€๋งŒ ํŠน์ • ๋‚ ์งœ๋ฅผ ์ฐพ๋Š” ๊ฒƒ๋ณด๋‹ค ์ฝ”๋“œ ์—์„œ์ด ๋…ผ๋ฆฌ๋ฅผ ๋‚œ๋… ํ™”ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ๋‹ค๊ณ  ๋Š๊ผˆ๊ธฐ ๋•Œ๋ฌธ์— ํ›จ์”ฌ ๋œ ๋ฌดํ•ดํ•œ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.
  • Ingsoc ์Šฌ๋กœ๊ฑด ๋ชฉ๋ก์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํ‰๊ฐ€ ๋œ ์ฃผ์„ ๋ฐ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ ๋œ ํ•˜๋“œ ์ฝ”๋“œ ๋œ ๋ฌธ์ž์—ด์€ ๋‘ ๊ฐ€์ง€ ๋ณ€๊ฒฝ ๋ฉ”์ปค๋‹ˆ์ฆ˜ (์‹œ๊ฐ„ ๋ฐ ๋ฉ”์‹œ์ง€)์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์•„๋งˆ ์ง์ž‘ํ–ˆ๋“ฏ์ด, ๊ทธ๊ฒƒ์ด ํŠนํžˆ ์žฅํ™ฉํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค.

    • ์‹œ๊ฐ„์˜ ๊ฒฝ์šฐ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 675์ด๋ฉฐ 7 ๋น„ํŠธ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉด 86500์ด๋ฉฐ ์ด๋Š” 240 ์‹œ๊ฐ„ ๋˜๋Š” 10 ์ผ์˜ 10 ์ดˆ ๋ฐ˜๋ณต ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค.
    • ๋ฉ”์‹œ์ง€ ์ž์ฒด์˜ ๊ฒฝ์šฐ Ingsoc ์Šฌ๋กœ๊ฑด์ด ํฌํ•จ ๋œ ์ฝ”๋“œ์—๋Š” โ€˜@โ€™๋ฌธ์ž์—์„œ ์ˆจ๊ฒจ์ง„ ๋ฉ”์‹œ์ง€ ์˜คํ”„์…‹์˜ ๊ฐ ๋ฌธ์ž์— ํ•ด๋‹นํ•˜๋Š” ํ›„ํ–‰ ๊ณต๋ฐฑ์ด ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค. ํ›„ํ–‰ ๊ณต๋ฐฑ์ด ์—†์œผ๋ฉด ์‹ค์ œ๋กœ ์ˆจ๊ฒจ์ง„ ๋ฉ”์‹œ์ง€์˜ ๊ณต๋ฐฑ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
    • ๋‹จ์ˆœํ•จ์„ ์œ„ํ•ด ๋ฉ”์‹œ์ง€์—์„œ ๋Š๋‚Œํ‘œ์™€ ๋Œ€์†Œ ๋ฌธ์ž ๊ตฌ๋ถ„์„ ์ƒ๋žตํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ, ๊ทธ๋“ค์˜ ๋ˆ„๋ฝ์ด ์šฐ๋ฆฌ์˜ ๊ฐ€์ƒ ํ˜๋ช…๊ฐ€์˜ ๋ฉ”์‹œ์ง€์— ํŠนํžˆ ํ•ด๋ฅผ ๋ผ์น˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ํƒญ๊ณผ ๊ณต๋ฐฑ์ด ๊ด€๋ จ๋œ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋” ๋ณต์žกํ•œ ๋…ผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„๋ช…ํžˆ ํ‘œํ˜„ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฒ˜๋ฆฌ๋Ÿ‰์€ ์ด๋Ÿฌํ•œ ์ฝ”๋“œ๊ฐ€์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ ๋ฐœ์ƒํ•˜๋Š” ์˜์‹ฌ์˜ ์–‘๊ณผ ์ง์ ‘ ๋น„๋ก€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Š” ์ ˆ์ถฉ์ž…๋‹ˆ๋‹ค.
  • ์ด ์ฝ”๋“œ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ค‘์•™์— ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ์ฑ„์šฐ๋ ค ๊ณ  ์‹œ๋„ํ•˜๋Š” ํ›ˆ๋ จ๋˜์ง€ ์•Š์€ ๋ˆˆ์— ๋ณด์ด๋„๋ก ์˜๋„๋˜์—ˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ํŒจ๋”ฉ์ด ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ  ์„ ํ–‰ ๊ณต๋ฐฑ์ด ๋ฉ”์‹œ์ง€์—์„œ ์ž˜๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ด ์ฝ”๋“œ๋Š”์ด๋ฅผ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€์žˆ๋Š” Python ๋™์ž‘ ๋‰˜์•™์Šค๋ฅผ ๋‚จ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋งค๊ฐœ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ „ ํ•จ์ˆ˜ ํ˜ธ์ถœ์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋‹ต๋ณ€

์”จ

์•”ํ˜ธ๋กœ ํ˜ธ์ถœํ•˜๋ฉด ํฐ ํ˜•์„ ํ™˜์˜ํ•˜๋Š” ๋ณด๋„ˆ์Šค ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค *. v์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ ํ•˜๋ฉด ๋ฒ„์ „ ์ •๋ณด๋„ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ์ถœ๋ ฅ์— ๋Œ€ํ•œ ์ธ์ˆ˜์—†์ด ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.

#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;
    }
}

์ด๊ฒƒ์€ ์•ฝ๊ฐ„์˜ ์˜๋„์  ์ธ ์˜คํƒ€ ๋•Œ๋ฌธ์— ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. 1. time(NULL) | errno๊ฐ„๋‹จ time(NULL)ํ•˜๊ณ  ์˜ค๋ฅ˜๊ฐ€ ์„ค์ •๋˜์–ด failed()์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 2. ๋Œ€์‹ ์„ check_password์‚ฌ์šฉ sํ•˜๊ณ ์„ ๋Œ€์‹  S์‚ฌ์šฉ =ํ•ฉ๋‹ˆ๋‹ค ==. 3. ๋Œ€์‹ ์— failed๋น„ํŠธ ์‹œํ”„ํŠธ .mM

* ๊ฑฐ์˜ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค ..


๋‹ต๋ณ€

ํŒŒ์ด์ฌ

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)

์ž‘๋™ ๋ฐฉ์‹ :

  1. om(x,y)๋‹จ์ˆœํžˆ ์„น์…˜ ์—์„œ ๊ณ„์‚ฐ ๋œ x๋ฐ ์˜ ๊ณฑ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค . ์„น์…˜์€ ๊ฒฐ์ฝ” ๋•Œ๋ฌธ์— ์‹คํ–‰ํ•˜์ง€ 0๊ณผ 1 ์‚ฌ์ด์˜ ๋ฐ˜ํ™˜ float๋ฅผ.yelseifrandom.random()
  2. reduce(om,random_seeds)๋”ฐ๋ผ์„œ random_seeds2014 ๋…„ 9 ์›” 14 ์ผ์˜ ํƒ€์ž„ ์Šคํƒฌํ”„ ์ธ 1410652800 ์ธ ์ˆซ์ž์˜ ๊ณฑ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค .
  3. reduce(om,random_seeds) % curtime ๋”ฐ๋ผ์„œ 1410652800๊นŒ์ง€ ํ˜„์žฌ ํƒ€์ž„ ์Šคํƒฌํ”„๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.์ด ์‹œ์ ์—์„œ 0๋ถ€ํ„ฐ ์นด์šดํŠธ ์—…์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒํ•˜๋ฉด ์•ˆ์ „์— ๋„๋‹ฌ ํ•  ๋•Œ๊นŒ์ง€ โ€œ๋ฉ”์‹œ์ง€ ์„ ํƒ๊ธฐ bโ€๋งŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  4. โ€œ๋ฉ”์‹œ์ง€ ์„ ํƒ๊ธฐ bโ€๋Š” ๋ฉ”์‹œ์ง€์—์„œ ์ž„์˜์˜ ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด ์˜๋ฏธ์—†๋Š” ์ˆ˜์ž‘์—… ์ˆ˜ํ•™์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. โ€œ๋ฉ”์‹œ์ง€ ์„ ํƒ๊ธฐ aโ€๋ฅผ ํ•ฉ๋ฒ•์ ์œผ๋กœ ๋ณด์ด๊ฒŒ ๋งŒ๋“œ๋Š” ์†๊ธธ์ด โ€ฆ
  5. rotation์‹ค์ œ๋กœ 2 ์ฐจ์› messages๋ฐฐ์—ด ์˜ ์ธ๋ฑ์Šค ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค . โ€œmessage selector aโ€๋Š” ๋‚ด์šฉ์„ ์ปดํŒŒ์ผํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•ฉ๋‹ˆ๋‹ค.doWn With Big Brother

์žฌ๋ฏธ์žˆ๋Š” ์‚ฌ์‹ค์ด : ์›๋ž˜ โ€œincitefulโ€๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ์—ˆ๋‹ค doWn With Pig Prother๋•Œ๋ฌธ์— ํŽธ์ง€์˜ ๋ถ€์กฑ B๋ฉ”์‹œ์ง€์—์„œ, ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์ข…๋ฅ˜์˜ ๋ฐ”๋ณด ๋ณด์•˜๋‹ค ๊ทธ๋ž˜์„œ ๋‚˜๋Š” meaninless ์ถ”๊ฐ€ 0xA, 0xB๋ฐ 0xC๋น„ํŠธ.


๋‹ต๋ณ€

์”จ

#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;
}

sum๋ฉ”๋ชจ๋ฆฌ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค Down with Big Brother!.
๋งคํฌ๋กœ checkSum๋Š” ๋‚ ์งœ๊ฐ€ 09.14.14 (์œ ๋‹‰์Šค ์‹œ๊ฐ„์˜ 1410652800) ์ดํ›„์ธ์ง€ ํ™•์ธํ•˜๊ณ ์œผ๋กœ ํ˜„์žฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ง€ ์›๋‹ˆ๋‹ค sum.
์€ if์ค„ ๋์— ์„ธ๋ฏธ์ฝœ๋ก ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด๊ฒƒ๋„ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ ์งœ ์ดํ›„์— ๊ฒฐ๊ณผ๋ฅผ ์‹œ๋„ํ•˜๋ ค๋ฉด ๋งคํฌ๋กœ๋ฅผ ๋‹ค์Œ์œผ๋กœ ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค.
#define checkSum(X) (time(NULL) > 0 && (X = sum))


๋‹ต๋ณ€

ํŽ„

์ด๊ฒƒ์€ ๋ฏธ์‹ฌ์ฉ์€ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‚˜์˜ ์ฒซ ๋ฒˆ์งธ ์‹œ๋„์ž…๋‹ˆ๋‹ค. ์ œ์•ˆ์„ ์—ฝ๋‹ˆ ๋‹ค!

#!/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
}

๋‚˜์ค‘์— ์„ค๋ช…์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.