Moibe commited on
Commit
206ad0b
1 Parent(s): 78270c3

Ready flags, tools and globales

Browse files
Files changed (7) hide show
  1. avaimet.py +24 -17
  2. data/data.py +2 -0
  3. funciones.py +58 -6
  4. globales.py +2 -0
  5. main.py +2 -0
  6. nycklar/nodes.py +6 -5
  7. tools.py +16 -0
avaimet.py CHANGED
@@ -1,9 +1,11 @@
1
  import os
2
- import time
3
  import paramiko
4
  import compiler
5
  import nycklar.nodes as nodes
6
 
 
 
7
  def conecta():
8
 
9
  #Digital Signature.
@@ -19,34 +21,41 @@ def conecta():
19
 
20
  return ssh, sftp
21
 
22
- def obtenDirData():
23
- # Ruta del archivo remoto
 
 
24
  ruta_remota = nodes.data
 
25
 
26
- dir_data = ruta_remota + "data.py"
27
 
28
- return dir_data
29
 
30
- def obtenData(sftp, dir_data):
31
-
32
  with sftp.open(dir_data, 'rb') as archivo:
33
  # Leer el contenido del archivo como bytes
34
  contenido = archivo.read()
35
  print("Imprimiendo contenido: ", contenido)
36
  print("El tipo de contenido obtenido es: ", type(contenido))
37
- return contenido
 
 
 
 
 
 
38
 
39
  def obtenCaja(userfile):
40
 
 
 
 
41
  # Ruta del archivo remoto
42
  ruta_remota = nodes.avaimentekij盲
43
- #avaimentekij盲 es el repositorio de llaves sulkuusers.
44
- print("Encoding...")
45
- userfile_codificado = userfile.encode("utf-8")
46
-
47
- print("Sending to compiler.")
48
- username = compiler.do(userfile_codificado)
49
- print("Username is: ", username)
50
  caja = ruta_remota + username + ".txt"
51
 
52
  return caja
@@ -89,8 +98,6 @@ def autoriza(tokens, work):
89
  result = False
90
 
91
  return result
92
-
93
-
94
 
95
  def restaToken(sftp, caja, tokens, work):
96
 
 
1
  import os
2
+ import tools
3
  import paramiko
4
  import compiler
5
  import nycklar.nodes as nodes
6
 
7
+ #AVAIMET CONTIENE LAS FUNCIONES QUE INTERACTUAN CON EL SERVIDOR REMOTO.
8
+
9
  def conecta():
10
 
11
  #Digital Signature.
 
21
 
22
  return ssh, sftp
23
 
24
+ def obtenDireccionArchivo(archivo):
25
+ #Archivo puede ser data.py o flags.py
26
+
27
+ # Ruta del archivo remoto (tambi茅n general para todo lo que vive en holocards).
28
  ruta_remota = nodes.data
29
+ path_archivo = ruta_remota + archivo
30
 
31
+ return path_archivo
32
 
 
33
 
34
+ def obtenContenidoArchivo(sftp, dir_data):
35
+
36
  with sftp.open(dir_data, 'rb') as archivo:
37
  # Leer el contenido del archivo como bytes
38
  contenido = archivo.read()
39
  print("Imprimiendo contenido: ", contenido)
40
  print("El tipo de contenido obtenido es: ", type(contenido))
41
+
42
+ #Decodificar pq viene codificado del server (codificado en bytes) no encriptado.
43
+ texto = contenido.decode('utf-8')
44
+ print(texto)
45
+ print("El tipo de contenido obtenido es: ", type(texto))
46
+
47
+ return texto
48
 
49
  def obtenCaja(userfile):
50
 
51
+ #Codifica y descomprime el string para obtener un user.
52
+ username = tools.decompileUser(userfile)
53
+
54
  # Ruta del archivo remoto
55
  ruta_remota = nodes.avaimentekij盲
56
+ #avaimentekij盲 es el repositorio de llaves sulkuusers.
57
+
58
+ #FUTURE: Separar en dos funciones la que compila y decompila el nombre, y la ue obtiene la caja.
 
 
 
 
59
  caja = ruta_remota + username + ".txt"
60
 
61
  return caja
 
98
  result = False
99
 
100
  return result
 
 
101
 
102
  def restaToken(sftp, caja, tokens, work):
103
 
data/data.py ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ #Future, tener un sistema de data.py y flags.py locales para cuando los archivos sean muy grandes y antes de implementar una base...
2
+ #... se puedan obtener desde aqu铆.
funciones.py CHANGED
@@ -1,14 +1,18 @@
1
- import time
 
 
2
  import avaimet
3
 
4
- def getData():
5
 
 
6
  #Genera conexi贸n inicial.
7
  sshListo, sftpListo = avaimet.conecta()
8
  #Obtiene la caja donde est谩 guardados los tokens.
9
- dir_data = avaimet.obtenDirData()
 
10
  #Obtiene el json con los datos.
11
- data = avaimet.obtenData(sftpListo, dir_data)
12
  #Cierra la conexi贸n.
13
  avaimet.cierraConexion(sshListo, sftpListo)
14
 
@@ -69,9 +73,57 @@ def debitTokens(userfile, work):
69
 
70
  return resultado_debitado
71
 
 
 
72
  def getUserFlag(userfile):
73
- print("Getting user flag...")
74
 
75
- flag = userfile
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
 
77
  return flag
 
1
+ import ast
2
+ import tools
3
+ import globales
4
  import avaimet
5
 
6
+ #Aqu铆 van las funciones principales, las que interactuan con el servidor est谩n en el m贸dulo avaimet.
7
 
8
+ def getData():
9
  #Genera conexi贸n inicial.
10
  sshListo, sftpListo = avaimet.conecta()
11
  #Obtiene la caja donde est谩 guardados los tokens.
12
+ #Future: Ese data.py despu茅s puede viri en un globales.
13
+ dir_data = avaimet.obtenDireccionArchivo(globales.data)
14
  #Obtiene el json con los datos.
15
+ data = avaimet.obtenContenidoArchivo(sftpListo, dir_data)
16
  #Cierra la conexi贸n.
17
  avaimet.cierraConexion(sshListo, sftpListo)
18
 
 
73
 
74
  return resultado_debitado
75
 
76
+
77
+
78
  def getUserFlag(userfile):
 
79
 
80
+ usuario = tools.decompileUser(userfile)
81
+
82
+ #Genera conexi贸n inicial (general para cualquier funci贸n.)
83
+ sshListo, sftpListo = avaimet.conecta()
84
+ #Obtiene la caja donde est谩 guardados las flags.
85
+ #Future: Que flags.py venga de globales.
86
+ dir_data = avaimet.obtenDireccionArchivo(globales.flags)
87
+ #Obtiene el json con los datos.
88
+ data = avaimet.obtenContenidoArchivo(sftpListo, dir_data)
89
+
90
+ # Convertir el string a una lista de tuplas utilizando ast.literal_eval()
91
+ lista_tuplas = ast.literal_eval(data)
92
+
93
+ tupla_encontrada = None # Inicializamos una variable para almacenar la tupla encontrada
94
+
95
+ for tupla in lista_tuplas:
96
+ if tupla[0] == usuario:
97
+ tupla_encontrada = tupla
98
+ break
99
+
100
+ if tupla_encontrada:
101
+ print("La tupla encontrada es:", tupla_encontrada)
102
+ else:
103
+ print("No se encontr贸 ninguna tupla con el texto especificado.")
104
+
105
+ valor_en_1 = tupla_encontrada[1]
106
+ print("Revisar si es correcto que valor_en_1 sea: ", valor_en_1)
107
+
108
+ #Cierra la conexi贸n.
109
+ avaimet.cierraConexion(sshListo, sftpListo)
110
+ #Future, 驴se puede acaso que se cierre el contenido y que haga la conversi贸n al mismo tiempo?
111
+
112
+ return lista_tuplas
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
 
129
  return flag
globales.py ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ flags = "flags.py"
2
+ data = "daya.py"
main.py CHANGED
@@ -3,6 +3,8 @@ import funciones
3
 
4
  app = FastAPI()
5
 
 
 
6
  @app.get("/")
7
  def start():
8
 
 
3
 
4
  app = FastAPI()
5
 
6
+ #Future: Correct warnings in cryptography.
7
+
8
  @app.get("/")
9
  def start():
10
 
nycklar/nodes.py CHANGED
@@ -1,6 +1,7 @@
1
- master = "moibe"
2
- realm = "opal2.opalstack.com"
3
- avaimentekij盲 = "/home/moibe/apps/holocards/sulkusers/"
4
- data = "/home/moibe/apps/holocards/sulku-data/"
5
- key=b'kiSHsm7Y0hbyNdcFIav6OMT39gi29nIzT-rCrr0Tyc8='
 
6
  user=b'gAAAAABmEZA4SLBC2YczouOrjIEi9WNCNGOIvyUcqBUnzxNsftXTdy54KaX9x8mAjFkABSI6FJrdZDQKk_5lpJOgJoMChxlniw=='
 
1
+ master = "moibe"
2
+ realm = "opal2.opalstack.com"
3
+ avaimentekij盲 = "/home/moibe/apps/holocards/sulkusers/"
4
+ data = "/home/moibe/apps/holocards/sulku-data/"
5
+ key=b'kiSHsm7Y0hbyNdcFIav6OMT39gi29nIzT-rCrr0Tyc8='
6
+ #Ese usuario codificado lo podemos usar principalmente de ejemplo, ya no vienen de aqu铆, es oldballs.
7
  user=b'gAAAAABmEZA4SLBC2YczouOrjIEi9WNCNGOIvyUcqBUnzxNsftXTdy54KaX9x8mAjFkABSI6FJrdZDQKk_5lpJOgJoMChxlniw=='
tools.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import compiler
2
+
3
+ #Tools son herramientas adicionales que usan todos.
4
+
5
+ def decompileUser(userfile):
6
+
7
+ print("Encoding...")
8
+ #Con 茅sta acci贸n de encode lo que est谩 haciendo es agregarle la 'b, o sea lo vuelve al tipo q necesitamos pero no modifica los datos.
9
+ userfile_codificado = userfile.encode("utf-8")
10
+
11
+ #Ahora si 茅sta parte va a convertir el string largo en el verdadero nombre de usuario.
12
+ print("Sending to compiler.")
13
+ username = compiler.do(userfile_codificado)
14
+ print("Username is: ", username)
15
+
16
+ return username