elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Tools Python CGI + Source | JaAViEr::0x5d
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Tools Python CGI + Source | JaAViEr::0x5d  (Leído 2,525 veces)
0x5d

Desconectado Desconectado

Mensajes: 241



Ver Perfil WWW
Tools Python CGI + Source | JaAViEr::0x5d
« en: 24 Abril 2013, 15:55 pm »

Hola, buen día damas y caballeros :P.

En esta ocasión vengo a mostrar el código de fuente de unas aplicaciones que pasé a Python CGI , para poder ejecutarlas en el servidor y no depender de una maquina con Python instalado...

Sin más preámbulos, los enlaces son los siguientes:
   Sus respectivos códigos de fuente...
De/Codificador Base64:
Código
  1. #!/usr/bin/python
  2. #Autor: 0x5d::JaAViEr
  3. #Twitter: @0x5d
  4. import cgi, os, base64
  5.  
  6. def form_inicial():
  7. form_html = '''
  8. <form action="" method="POST">
  9. <textarea name="content"></textarea><br />
  10. <select name="option">
  11. <option value="encode">Codificar</option>
  12. <option value="decode">Decodificar</option>
  13. </select><br />
  14. <input type="Submit" value="Enviar"><br />
  15. Creado bajo Python CGI.<br />
  16. Autor : JaAViEr (0x5d)
  17. </form>'''
  18. return base("De/Codificar Base64", form_html)
  19.  
  20. def base(title, content):
  21. code = '''
  22. <div class="ui-widget-content">
  23. <div class="ui-widget-header">%s</div>
  24. %s
  25. </div>
  26. '''%(title, content)
  27. return code
  28.  
  29. print "content-type:text/html\r\n\r\n"
  30.  
  31. print '''
  32. <title>De/Codificador Base64</title>
  33. <script src="http://code.jquery.com/jquery-latest.js"></script>
  34. <link rel="stylesheet" href="http://code.jquery.com/ui/1.9.1/themes/cupertino/jquery-ui.css" />
  35. <script src="http://code.jquery.com/ui/1.9.1/jquery-ui.js"></script>
  36. <link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css" />
  37. <style>
  38. div {
  39. text-align:center;
  40. font-size:0.5cm;
  41. }
  42. input, select {
  43. height:0.7cm;
  44. font-size:0.4cm;
  45. }
  46. </style>
  47. '''
  48.  
  49. form = cgi.FieldStorage()
  50. opcion = form.getvalue("option")
  51. texto = form.getvalue("content")
  52. method = os.environ['REQUEST_METHOD']
  53. if method == "POST":
  54. if opcion:
  55. if opcion == "encode":
  56. print form_inicial()
  57. print base("Salida", "<textarea>"+cgi.escape(base64.b64encode(texto))+"</textarea>")
  58. elif opcion == "decode":
  59. print form_inicial()
  60. print base("Salida", "<textarea>"+cgi.escape(base64.b64decode(texto))+"</textarea>")
  61. else:
  62. print form_inicial()
  63. print base("Error", "Opción incorrecta")
  64. else:
  65. print form_inicial()
  66. print base("Error", "Por favor selecciona una opción")
  67. else:
  68. print form_inicial()
  69.  
  70.  
Cifrar Rot13 / Atbash:
Código
  1. #!/usr/bin/python
  2. #Autor: 11Sep
  3. #To CGI: 0x5d::JaAViEr
  4. #Twitter: @0x5d
  5. import cgi, os
  6.  
  7. def  formulario_inicial():
  8. form_html = '''
  9. <form action="" method="POST">
  10. Data: <br/>
  11. <textarea name="contenido"></textarea><br />
  12. <select name="opcion">
  13. <option value="rot13">ROT13</option>
  14. <option value="atbash">Atbash</option>
  15. </select><br />
  16. <input type="Submit"><br/>
  17. Programado por <b>11Sep</b><br />
  18. Programado en CGI por <b>JaAViEr::0x5d</b>
  19. </form>
  20. '''
  21. return base("Cifrar Rot13/Atbash", form_html)
  22.  
  23. def base(title, content):
  24. code = '''
  25. <div class="ui-widget-content">
  26. <div class="ui-widget-header">%s</div>
  27. %s
  28. </div>
  29. '''%(title, content)
  30. return code
  31.  
  32. def rot13(palabra):
  33.    Cifrado = ''
  34.    for i in palabra:
  35.        buff = ord(i)
  36.        if (buff >= 65 and buff <= 90) or (buff >= 97 and buff <= 122):
  37.            if ((buff + 13 > 90 and buff + 13 <= 103) or (buff + 13 > 122 and buff + 13 <= 135)):
  38.                Cifrado += chr(buff -13)
  39.            else:
  40.                Cifrado += chr(buff + 13)
  41.    return Cifrado
  42.  
  43. def atbash(palabra):
  44.    V1 = "abcdefghijklm"
  45.    V2 = "zyxwvutsrqpon"
  46.  
  47.    Buff = ""
  48.  
  49.    for i in range(len(palabra)):
  50.        for a in range(len(V1)):
  51.            if V1[a] == palabra[i]:
  52.                Buff += V2[a]
  53.            elif V2[a] == palabra[i]:
  54.                Buff += V1[a]
  55.    return Buff
  56.  
  57. print "content-type:text/html\r\n\r\n"
  58. print '''
  59. <title>Cifrar Rot13/Atbash 11Sep::JaAViEr</title>
  60. <script src="http://code.jquery.com/jquery-latest.js"></script>
  61. <link rel="stylesheet" href="http://code.jquery.com/ui/1.9.1/themes/blitzer/jquery-ui.css" />
  62. <script src="http://code.jquery.com/ui/1.9.1/jquery-ui.js"></script>
  63. <link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css" />
  64. <style>
  65. div {
  66. text-align:center;
  67. font-size:0.5cm;
  68. }
  69. input, select {
  70. height:0.7cm;
  71. font-size:0.4cm;
  72. }
  73. </style>
  74. '''
  75. form = cgi.FieldStorage()
  76. method = os.environ['REQUEST_METHOD']
  77. contenido = form.getvalue("contenido")
  78. opcion = form.getvalue("opcion")
  79. if method == "POST":
  80. if opcion:
  81. if opcion == "rot13":
  82. print formulario_inicial()
  83. print base("Salida", "<textarea>"+rot13(contenido)+"</textarea>")
  84. elif opcion == "atbash":
  85. print formulario_inicial()
  86. print base("Salida", "<textarea>"+atbash(contenido)+"</textarea>")
  87. else:
  88. print formulario_inicial()
  89. print base("ERROR","Opción inválida")
  90. else:
  91. print formulario_inicial()
Enviar peticiones POST:
Código
  1. #!/usr/bin/python
  2. #Autor: 0x5d::JaAViEr
  3. #Twitter: @0x5d
  4. import cgi, os, urllib, sys
  5.  
  6. def base(title, content):
  7. code = '''
  8. <div class="ui-widget-content">
  9. <div class="ui-widget-header">%s</div>
  10. %s
  11. </div>
  12. '''%(title, content)
  13. return code
  14.  
  15. print "content-type:text/html\r\n\r\n"
  16. print '''
  17. <title>Enviar datos POST online :: JaAViEr(0x5d)</title>
  18. <script src="http://code.jquery.com/jquery-latest.js"></script>
  19. <link rel="stylesheet" href="http://code.jquery.com/ui/1.9.1/themes/cupertino/jquery-ui.css" />
  20. <script src="http://code.jquery.com/ui/1.9.1/jquery-ui.js"></script>
  21. <link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css" />
  22. <style>
  23. div {
  24. text-align:center;
  25. font-size:0.5cm;
  26. }
  27. input, select {
  28. height:0.7cm;
  29. font-size:0.4cm;
  30. }
  31. </style>
  32. '''
  33. form = cgi.FieldStorage()
  34. method = os.environ['REQUEST_METHOD']
  35. campos = form.getvalue("campos")
  36. valores = form.getvalue("valores")
  37. url = form.getvalue("url")
  38. if method == "POST":
  39. dic = {}
  40. if not "http://" in url:
  41.  print base("ERROR!","No se puede conectar a %s<br/><a href='send_post.py'>Volver</a>"%cgi.escape(url))
  42.  sys.exit(1)
  43. if len(campos)>0 and len(valores)>0:
  44. for d,i in zip(campos.split(),valores.split(":-:")):
  45. dic['%s'%d] = i
  46. try:
  47. print urllib.urlopen(url, urllib.urlencode(dic)).read()
  48. except:
  49. print "No se puede conectar a", cgi.escape(url)
  50. else:
  51. form_html = '''
  52. <form action="" method="POST">
  53. URL: <input type="Text" name="url" value="http://"><br />
  54. Campos (separados por un espacio): <input type="Text" name="campos"><br />
  55. Campos (separados por ":-:"): <input type="Text" name="valores"><br />
  56. <input type="Submit"><br/>
  57. Funcionando bajo Python CGI<br />
  58. Author: <u>JaAViEr::0x5d</u>
  59. </form>
  60. '''
  61. print base("ENVIAR DATOS POR POST", form_html)
  62. form_example = '''
  63. URL: <input type="Text" name="url" value="http://web.com/login.php" disabled><br />
  64. Campos (separados por un espacio): <input type="Text" name="campos" value="user password" disabled><br />
  65. Campos (separados por ":-:"): <input type="Text" name="valores" value="0x5d:-:miclave123" disabled><br />
  66. <input type="Submit" onclick=alert("TEST");><br/>
  67. '''
  68. print base("Ejemplo de uso", form_example)

Fuente: http://www.vodale.com/blog/tools-python-cgi-source-jaavier0x5d/
   
Saludos , Javier.


En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: Tools Python CGI + Source | JaAViEr::0x5d
« Respuesta #1 en: 24 Abril 2013, 22:12 pm »

Que tiene de diferente esto mismo en php, lo digo por el "servidor"!  :silbar:


En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
0x5d

Desconectado Desconectado

Mensajes: 241



Ver Perfil WWW
Re: Tools Python CGI + Source | JaAViEr::0x5d
« Respuesta #2 en: 25 Abril 2013, 20:00 pm »

Que tiene de diferente esto mismo en php, lo digo por el "servidor"!  :silbar:
La verdad no sé si sea mejor o peor, he visto tablas comparativas en la red.

Lo que me impulsa a programar a mi en Python CGI, es que es mi lenguaje favorito, llevo tiempo con él, por ende, se me es mucho más fácil programar una aplicación web con Python, que con PHP.

Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python]Localizador IP - JaAViEr(0x5d)
Scripting
0x5d 2 3,378 Último mensaje 30 Diciembre 2011, 15:11 pm
por Novlucker
[Python]Técnicas para reducir código JaAViEr|0x5d
Scripting
0x5d 0 2,106 Último mensaje 26 Abril 2012, 23:01 pm
por 0x5d
[Código-Python]Cliente FTP V2 - JaAViEr | 0x5d
Scripting
0x5d 5 3,364 Último mensaje 4 Mayo 2012, 17:25 pm
por 0x5d
[Código-Python]Gestor de pago de cuentas - JaAViEr|0x5d
Scripting
0x5d 5 3,146 Último mensaje 21 Mayo 2012, 01:18 am
por 0x5d
[Proyecto]PyDB - "Bases de Datos" fáciles en Python :: JaAViEr | 0x5d
Scripting
0x5d 0 1,858 Último mensaje 23 Julio 2013, 14:35 pm
por 0x5d
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines