O código não fornece maneiras de se autenticar através de alguma infraestrutura de rede usando chaves de 256 bits. Apenas fornece um plano para trabalhar. O OP terá que construir o plano para completar seu dever de casa ...
Abaixo está um código Python simples que executa um pequeno jogo de quebra-cabeça representando a maior parte da lógica solicitada. Veja os comentários no código dos recursos online sobre o Python e algumas dicas sobre cada linha de código.
Atualizar
Adicionado código para iniciar o servidor X conforme solicitado pelo OP. O código usa o módulo subprocessado. Eu não testei a função start_x, mas ela deve estar próxima da funcionalidade solicitada.
#!/usr/bin/env python
"""A mini puzzle game using Python 2.7.5 programming language
and the random module from the standard library.
See:
Website http://www.python.org
Python 2.7.5 documentation http://docs.python.org/2/
Online Python books
http://www.diveintopython.net/
http://wiki.python.org/moin/PythonBooks
"""
import random
#import the subprocess module
import subprocess
def do_ask_random_sum_result():
"""Asks for the result of the addition of two random integers"""
# get the two random integers from
# a set of integers {0, 1, 2, 3, 4, 5}
first_random = random.randint(0,5)
second_random = random.randint(0,5)
# perform addition and store the
# result to random_sum
random_sum = first_random + second_random
# print the two random numbers to output
# asking the user for the result of their
# addition
result = input("What is the sum of {0} + {1}? ".format(
first_random, second_random))
# check if the user input matches
# the result
if random_sum == result:
# instead of printing something
# perform the log in to whatever you
# want the user to log in
print("That is correct, the result is: {0}".format(random_sum))
print("Performing log in procedures...")
# Cannot perform the log in since
# the user provided a wrong answer...
else:
print ("Wrong answer!")
def do_login():
"""Performs the login"""
# perform various login actions
#
# and finally try to start X server
try:
# call the start_x function
start_x()
except Exception as e:
print ("Could not start X server")
print ("Error details:\n{err}".format(err=e.message))
def start_x():
"""Starts the x server using the subprocess module
NOT TESTED but it must be something close to this
"""
#declare proc as new process to launch
proc = subprocess.Popen("startx", shell=True, stdout=subprocess.PIPE)
#assign the output of proc to output variable this is optional
#for just to check what x has to say
output = subprocess.stdout.read()
#print the results
print (output)
def main():
"""Application's main entry"""
do_ask_random_sum_result()
if __name__ == '__main__':
main()