added text and hard mode to boot script

This commit is contained in:
Josh d'Entremont 2015-05-31 18:54:43 -03:00
parent 897faec917
commit 84d382cfef
5 changed files with 102 additions and 12 deletions

View file

@ -12,7 +12,14 @@ Usage
python fallout.py python fallout.py
``` ```
To use the login in another program: or for hard mode where the user must manually enter the correct input in the
boot script,
```
python fallout.py hard
```
To only use the login in another program:
``` ```
import fallout_login import fallout_login
@ -20,3 +27,15 @@ import fallout_login
# returns true if the correct password is entered, false otherwise # returns true if the correct password is entered, false otherwise
fallout_login.beginLogin() fallout_login.beginLogin()
``` ```
Passwords
================
To add your own lists of passwords, check out the passwords.txt file
Notes
================
Check out cool-retro-term
(https://github.com/Swordfish90/cool-retro-term) to make your terminal
look like a fallout terminal

View file

@ -2,8 +2,13 @@
import fallout_login as login import fallout_login as login
import fallout_boot as boot import fallout_boot as boot
import fallout_locked as locked import fallout_locked as locked
import sys
if boot.beginBoot(False): hard = False
if len(sys.argv) == 2 and sys.argv[1].lower() == 'hard':
hard = True
if boot.beginBoot(hard):
if login.beginLogin(): if login.beginLogin():
print 'Login successful' print 'Login successful'
else: else:

View file

@ -1,9 +1,19 @@
import curses
from fallout_functions import slowWrite from fallout_functions import slowWrite
import curses
######################## global 'constants' ############## ######################## global 'constants' ##############
ENTRY_1 = 'set terminal/inquire' ENTRY_1 = 'SET TERMINAL/INQUIRE'
ENTRY_2 = 'SET FILE/PROTECTION=OWNER:RWED ACCOUNTS.F'
ENTRY_3 = 'SET HALT RESTART/MAINT'
ENTRY_4 = 'RUN DEBUG/ACCOUNTS.F'
INPUT_PAUSE = 500 # ms
TYPE_DELAY = 25
######################## text strings #################### ######################## text strings ####################
@ -11,21 +21,72 @@ MESSAGE_1 = 'WELCOME TO ROBCO INDUSTRIES (TM) TERMLINK'
MESSAGE_2 = 'RIT-V300' MESSAGE_2 = 'RIT-V300'
MESSAGE_3 = 'Initializing Robco Industries(TM) MF Boot Agent v2.3.0\n' \
'RETROS BIOS\n' \
'RBIOS-4.02.08.00 52EE5.E7.E8\n' \
'Copyright 2201-2203 Robco Ind.\n' \
'Uppermem: 64 KB\n' \
'Root (5A8)\n' \
'Maintenance Mode'
######################## functions ####################### ######################## functions #######################
def runBoot(scr): def runBoot(scr, hardMode):
""" """
Start the boot portion of the terminal Start the boot portion of the terminal
""" """
curses.use_default_colors() curses.use_default_colors()
# set screen to initial position
scr.erase() scr.erase()
scr.move(0, 0) scr.move(0, 0)
curses.echo()
slowWrite(scr, MESSAGE_1 + '\n\n>') slowWrite(scr, MESSAGE_1 + '\n\n')
curses.napms(500) if hardMode:
# use must enter the correct text to proceed
entry = ''
while entry.upper() != ENTRY_1.upper():
slowWrite(scr, '>')
entry = scr.getstr()
else:
# input is entered for them
slowWrite(scr, '>')
curses.napms(INPUT_PAUSE)
slowWrite(scr, ENTRY_1 + '\n', TYPE_DELAY)
slowWrite(scr, '\n' + MESSAGE_2 + '\n\n')
if hardMode:
entry = ''
while entry.upper() != ENTRY_2.upper():
slowWrite(scr, '>')
entry = scr.getstr()
while entry.upper() != ENTRY_3.upper():
slowWrite(scr, '>')
entry = scr.getstr()
else:
slowWrite(scr, '>')
curses.napms(INPUT_PAUSE)
slowWrite(scr, ENTRY_2 + '\n', TYPE_DELAY)
slowWrite(scr, '>')
curses.napms(INPUT_PAUSE)
slowWrite(scr, ENTRY_3 + '\n', TYPE_DELAY)
slowWrite(scr, '\n' + MESSAGE_3 + '\n\n')
if hardMode:
entry = ''
while entry.upper() != ENTRY_4.upper():
slowWrite(scr, '>')
entry = scr.getstr()
else:
slowWrite(scr, '>')
curses.napms(INPUT_PAUSE)
slowWrite(scr, ENTRY_4 + '\n', TYPE_DELAY)
curses.napms(INPUT_PAUSE)
return True return True
def beginBoot(hardMode): def beginBoot(hardMode):
@ -36,5 +97,5 @@ def beginBoot(hardMode):
constants, or if they are entered automatically constants, or if they are entered automatically
Returns true if hardMode == false or if the user entered the correct string Returns true if hardMode == false or if the user entered the correct string
""" """
res = curses.wrapper(runBoot) res = curses.wrapper(runBoot, hardMode)
return res return res

View file

@ -1,4 +1,6 @@
import curses import curses
import time
import sys
LETTER_PAUSE = 5 LETTER_PAUSE = 5

View file

@ -1,5 +1,3 @@
#! /usr/bin/env python
import curses import curses
import random import random
import os import os
@ -61,8 +59,13 @@ def getPasswords():
Returns an array of strings to be used as the password and the decoys Returns an array of strings to be used as the password and the decoys
""" """
groups = [] groups = []
# script file / password file location
__location__ = os.path.realpath(os.path.join(os.getcwd(),
os.path.dirname(__file__)))
# read from passwords.txt # read from passwords.txt
with open("passwords.txt") as pwfile: with open(os.path.join(__location__, "passwords.txt")) as pwfile:
for line in pwfile: for line in pwfile:
if not line.strip(): if not line.strip():
groups.append([]) groups.append([])