comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Python-CGI] PC Control Remoto - JaAViEr

  • 12 Respuestas
  • 3360 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado JaAViEr

  • *
  • Underc0der
  • Mensajes: 163
  • Actividad:
    0%
  • Reputación 0
  • http://codigo.ga
    • Ver Perfil
    • Blog de Programación :: Python
« en: Octubre 30, 2014, 04:55:20 am »
¿ Qué es PC Control Remoto ?

PC Control Remoto es un programa/web desarrollado bajo el lenguaje de programación Python en conjunto con su librería CGI, la cuál nos permitirá montar un servidor CGI y poder llevar acabo nuestro cometido.

Este programa nos permitirá acceder a nuestro computador forma remota, con tu Navegador favorito, conectado vía LAN o a Internet (configuración aparte), desde cualquier navegador. Las funciones que nos brinda son las siguiente:
  • Consola - Terminal remota: Puedes ejecutar cualquier comando y obtener su salida desde tu navegador.
  • Comándos rápidos: Entre estos comándos rápidos tenemos las posibilidad de:
    • Apagar PC. (60 segundos).
    • Reiniciar PC. (60 segundos).
    • Cancelar Apagado/Reinicio.
    • Matar un proceso.
    • Iniciar un proceso.

El programa en general se compone de:
  • Server.py - Programa encargado de crear el servidor bajo el puerto que queramos.
  • Index.py - Login e inicio del Panel de Control.
  • Terminal.py - Consola remota.
  • Comando_rapido.py - Comandos rápidos.
  • Logout.py - Cerrar sesión
Además de otros componentes como Topcoat (CSS), jQuery (JS).


You are not allowed to view links. Register or Login

Solo extraer en una carpeta y ejecutar server.py PUERTO

Adjunto el código de cada archivo Python mencionado anteriormente

server.py

Código: Python
  1. '''
  2. Autor: JaAViEr
  3. Twitter: @javieresteban__
  4. Website: http://codigo.ga
  5. '''
  6. from CGIHTTPServer import CGIHTTPRequestHandler
  7. from BaseHTTPServer import HTTPServer
  8. import socket
  9. import sys
  10.  
  11. try:
  12.        
  13.         port = int(sys.argv[1])
  14.  
  15.         if port:
  16.  
  17.                 ip_interna = socket.gethostbyname(socket.gethostname())
  18.                 print "Panel de control: http://%s:%s/cgi-bin/index.py" % (ip_interna, port)
  19.                 server_address=('', port)
  20.                 httpd = HTTPServer(server_address, CGIHTTPRequestHandler)
  21.                 httpd.serve_forever()
  22.  
  23. except:
  24.        
  25.         print "-"*40
  26.         print "Uso:"
  27.         print sys.argv[0], "PUERTO"
  28.         print "-"*40
  29.         print "Ejemplo de uso:"
  30.         print sys.argv[0], "5050"
  31.         print "-"*40
  32.  
Luego de server.py, deben pasar como parámatro el puerto al cual estará asociado el servidor.



index.py

Código: Python
  1. #-*- encoding:utf-8 -*-
  2. '''
  3. Autor: JaAViEr
  4. Twitter: @javieresteban__
  5. Website: http://codigo.ga
  6. '''
  7. import cgi
  8. import os
  9. import Cookie
  10. import md5
  11.  
  12. lista_usuarios = ["admin", "JaAViEr"] #Usuarios
  13. lista_passwords = ["root", "toor"] # Contraseñas
  14. method = os.environ.get("REQUEST_METHOD")
  15. logueado = False
  16. contenido_cookies = os.environ.get('HTTP_COOKIE')
  17.  
  18. tag_head = '''          <meta charset="UTF-8">
  19. <link rel="stylesheet" type="text/css" href="/topcoat/css/topcoat-mobile-dark.min.css" class="uib-framework-theme">
  20. <link rel="stylesheet" type="text/css" href="/css/index_main.less.css" class="main-less">
  21. <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  22. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
  23. <style type="text/css">
  24.         /* Prevent copy paste for all elements except text fields */
  25.         *  { -webkit-user-select:none; -webkit-tap-highlight-color:rgba(255, 255, 255, 0); }
  26.         input, textarea  { -webkit-user-select:text; }
  27. </style>
  28. <script type="application/javascript" src="/js/jquery.min.js"></script>
  29. <script type="application/javascript" src="/js/index_user_scripts.js"></script>'''
  30.  
  31. def code_login(accion=False):
  32.  
  33.         if accion == 'error':
  34.                
  35.                 mensaje_error = '''
  36.                   <div class="topcoat-navigation-bar widget uib_w_1 d-margins" data-uib="topcoat/nav" data-ver="0">
  37.                         <div class="topcoat-navigation-bar__item center full">
  38.                                 <h1 class="topcoat-navigation-bar__title">Verifica tus credenciales por favor[/size][/center]
  39.                         </div>
  40.                   </div>
  41.                 '''
  42.        
  43.         else:
  44.        
  45.                 mensaje_error = ''
  46.        
  47.         return '''
  48. <!DOCTYPE html>
  49. <html>
  50.  
  51.  <head>
  52.         ''' + tag_head + '''
  53.         <title>Indetifícate en el sistema</title>
  54.  </head>
  55.  
  56.  <body>
  57.    <div class="uwrap">
  58.      <div class="upage" id="mainpage">
  59.        <div class="upage-outer">
  60.          <div class="upage-content" id="mainsub">
  61.  
  62.            <div class="grid grid-pad urow uib_row_2 row-height-2" data-uib="layout/row" data-ver="0">
  63.              <div class="col uib_col_2 col-0_12-12" data-uib="layout/col" data-ver="0">
  64.                <div class="widget-container content-area vertical-col">
  65.  
  66.                  <div class="topcoat-navigation-bar widget uib_w_1 d-margins" data-uib="topcoat/nav" data-ver="0">
  67.                    <div class="topcoat-navigation-bar__item center full">
  68.                      <h1 class="topcoat-navigation-bar__title">Indentifícate[/size][/center]
  69.                    </div>
  70.                  </div>
  71.                  <span class="uib_shim"></span>
  72.                </div>
  73.              </div>
  74.              <span class="uib_shim"></span>
  75.            </div>
  76.  
  77.            <div class="grid grid-pad urow uib_row_3 row-height-3" data-uib="layout/row" data-ver="0">
  78.                                
  79.                                 <form action="" method="POST">
  80.                                         <div class="col uib_col_3 col-0_12-12" data-uib="layout/col" data-ver="0">
  81.                                         <div class="widget-container content-area vertical-col">
  82.                                         <div class="table-thing widget uib_w_2 d-margins" data-uib="topcoat/input" data-ver="0">
  83.                                         <label class="narrow-control label-top-left">Usuario</label>
  84.                                         <input class="wide-control topcoat-text-input" type="text" placeholder="Usuario" name="usuario">
  85.                                         </div>
  86.                                         <div class="table-thing widget d-margins" data-uib="topcoat/input" data-ver="0">
  87.                                         <label class="narrow-control label-top-left">Contraseña</label>
  88.                                         <input class="wide-control topcoat-text-input" type="password" placeholder="Contraseña" name="password">
  89.                                         </div>
  90.                                         <button class="widget d-margins topcoat-button--cta" data-uib="topcoat/button" data-ver="0">Ingresar</button><span class="uib_shim"></span>
  91.                                         </div>
  92.                                         ''' +mensaje_error+ '''
  93.                                 </form>
  94.              </div>
  95.              <span class="uib_shim"></span>
  96.            </div>
  97.          </div>
  98.          <!-- /upage-content -->
  99.  
  100.        </div>
  101.        <!-- /upage-outer -->
  102.  
  103.      </div>
  104.      <!-- /upage -->
  105.  
  106.    </div>
  107.    <!-- /uwrap -->
  108.  </body>
  109.  
  110. </html>'''
  111.  
  112. code = '''<!DOCTYPE html>
  113. <!--HTML5 doctype-->
  114. <html>
  115.  
  116.         <head>
  117.         ''' + tag_head + '''
  118.                 <title>Control Remoto :: 2014</title>
  119.         </head>
  120.  
  121.         <body>
  122.                 <!-- content goes here-->
  123.                 <div class="uwrap">
  124.                         <div class="upage" id="mainpage">
  125.                                 <div class="upage-outer">
  126.                                         <div class="upage-content" id="mainsub">
  127.  
  128.                                                 <div class="grid grid-pad urow uib_row_1 row-height-1" data-uib="layout/row" data-ver="0">
  129.                                                         <div class="col uib_col_2 col-0_12-12" data-uib="layout/col" data-ver="0">
  130.                                                                 <div class="widget-container content-area vertical-col">
  131.  
  132.                                                                         <div class="topcoat-navigation-bar widget uib_w_2 d-margins" data-uib="/topcoat/nav" data-ver="0">
  133.                                                                                 <div class="topcoat-navigation-bar__item center full">
  134.                                                                                         <h1 class="topcoat-navigation-bar__title">Panel de Control Remoto[/size][/center]
  135.                                                                                 </div>
  136.                                                                         </div>
  137.                                                                         <button class="widget uib_w_4 d-margins topcoat-button--large--cta" data-uib="/topcoat/button" data-ver="0">Consola - Terminal</button>
  138.                                                                         <button class="widget uib_w_3 d-margins topcoat-button--large--cta" data-uib="/topcoat/button" data-ver="0">Enviar comando rápido</button>
  139.                                                                         <button class="widget uib_w_5 d-margins topcoat-button--large" onclick='location.href="logout.py"' data-uib="/topcoat/button" data-ver="0">Salir</button>
  140.                                                                         <span class="uib_shim"></span>
  141.                                                                 </div>
  142.                                                         </div>
  143.                                                         <span class="uib_shim"></span>
  144.                                                 </div>
  145.  
  146.                                         </div>
  147.                                         <!-- /upage-content -->
  148.  
  149.                                 </div>
  150.                                 <!-- /upage-outer -->
  151.  
  152.                         </div>
  153.                         <div class="upage hidden" id="uib_page_3">
  154.                                 <div class="upage-outer">
  155.                                         <div id="uib_page_3sub" class="upage-content ">
  156.                                         </div>
  157.                                 </div>
  158.                                 <!-- /upage-outer -->
  159. te                      </div>
  160.                         <div class="upage hidden" id="uib_page_2">
  161.                                 <div class="upage-outer">
  162.                                         <div id="uib_page_2sub" class="upage-content ">
  163.                                         </div>
  164.                                 </div>
  165.                                 <!-- /upage-outer -->
  166.                         </div>
  167.                         <div class="upage hidden" id="uib_page_1">
  168.                                 <div class="upage-outer">
  169.                                         <div id="uib_page_1sub" class="upage-content ">
  170.                                         </div>
  171.                                 </div>
  172.                                 <!-- /upage-outer -->
  173.                         </div>
  174.  
  175.                         <!-- /upage -->
  176.  
  177.                 </div>
  178.                 <!-- /uwrap -->
  179.         </body>
  180.  
  181. </html>'''
  182.  
  183. def verificar_login(u, p):
  184.        
  185.         if u in lista_usuarios and p in lista_passwords:
  186.                
  187.                 session = u + p
  188.                 session = md5.md5(session).hexdigest()
  189.                 return True
  190.                
  191.         else:
  192.        
  193.                 return False
  194.  
  195. if contenido_cookies: #Si hay cookies...
  196.        
  197.         valores_cookie = Cookie.SimpleCookie(contenido_cookies)
  198.         session_actual = valores_cookie['sess'].value # session_actual = cookie "sess"
  199.        
  200.         if session_actual == "false": # No logueado
  201.                
  202.                 logueado = False
  203.        
  204.         else: # Verifica login
  205.                
  206.                 for a, b in zip(lista_usuarios, lista_passwords):
  207.                
  208.                         session_temporal = a + b
  209.                         session_temporal = md5.md5(session_temporal).hexdigest()
  210.                        
  211.                         if session_actual == session_temporal:
  212.                        
  213.                                 logueado = True # Login coincide
  214.                                 break
  215.                                
  216.                         else:
  217.                        
  218.                                 pass
  219.  
  220. else: #No logueado, sess = false
  221.        
  222.         print "Set-Cookie:sess=false"
  223.        
  224. print "Content-Type: text/html"
  225.  
  226. if method == "POST":
  227.        
  228.         form = cgi.FieldStorage()
  229.         usuario = form.getvalue('usuario')
  230.         password = form.getvalue('password')
  231.        
  232.         if verificar_login(usuario, password):
  233.                
  234.                 session = usuario + password
  235.                 session = md5.md5(session).hexdigest()
  236.                 print "Set-Cookie:sess=%s" % session
  237.                 print
  238.                 print code
  239.                
  240.         else:
  241.                
  242.                 print
  243.                 print code_login('error')
  244.  
  245. elif method == "GET":
  246.        
  247.         if not logueado:
  248.                
  249.                 print code_login()
  250.        
  251.         else:
  252.                
  253.                 print code

terminal.py

Código: Python
  1. #-*- encoding:utf-8 -*-
  2. '''
  3. Autor: JaAViEr
  4. Twitter: @javieresteban__
  5. Website: http://codigo.ga
  6. '''
  7. import cgi
  8. import os
  9. import Cookie
  10. import md5
  11.  
  12. print "Content-Type: text/html"
  13. print
  14.  
  15. code_terminal = '''
  16. <!DOCTYPE html>
  17. <html>
  18.  
  19.  <head>
  20.    <link rel="stylesheet" type="text/css" href="/topcoat/css/topcoat-mobile-dark.min.css" class="uib-framework-theme">
  21.    <link rel="stylesheet" type="text/css" href="/css/terminal_main.less.css" class="main-less">
  22.    <meta charset="UTF-8">
  23.    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
  24.         <title>Terminal</title>
  25.    <script src="/js/jquery.min.js"></script>
  26.  </head>
  27.  
  28.  <body>
  29.    <div class="uwrap">
  30.      <div class="upage" id="mainpage">
  31.        <div class="upage-outer">
  32.          <div class="upage-content" id="mainsub">
  33.  
  34.            <div class="grid grid-pad urow uib_row_1 row-height-1" data-uib="layout/row" data-ver="0">
  35.              <div class="col uib_col_1 col-0_12-12" data-uib="layout/col" data-ver="0">
  36.                <div class="widget-container content-area vertical-col">
  37.  
  38.                  <div class="topcoat-navigation-bar widget uib_w_1 d-margins" data-uib="/topcoat/nav" data-ver="0">
  39.                    <div class="topcoat-navigation-bar__item center full">
  40.                      <h1 class="topcoat-navigation-bar__title">Consola - Terminal[/size][/center]
  41.                    </div>
  42.                  </div>
  43.                  <div class="table-thing widget uib_w_2 d-margins" data-uib="/topcoat/textarea" data-ver="0">
  44.                    <label class="narrow-control label-inline"></label>
  45.                    <textarea class="wide-control topcoat-textarea" type="text" placeholder="Comandos" name="comando"></textarea>
  46.                  </div>
  47.                                         <button class="widget uib_w_2 d-margins topcoat-button--cta" data-uib="topcoat/button" data-ver="0" onclick='execute();'>¡Ejecutar!</button>
  48.                                         <button class="widget uib_w_2 d-margins topcoat-button" data-uib="topcoat/button" data-ver="0" onclick='location.href="index.py"'>Volver</button>
  49.                                         <hr>
  50.                                         Salida:
  51.                                         <span id="loader"></span>
  52.                  <span class="uib_shim"></span>
  53.                </div>
  54.              </div>
  55.              <span class="uib_shim"></span>
  56.            </div>
  57.          </div>
  58.          <!-- /upage-content -->
  59.  
  60.        </div>
  61.        <!-- /upage-outer -->
  62.  
  63.      </div>
  64.      <!-- /upage -->
  65.  
  66.    </div>
  67.    <!-- /uwrap -->
  68.         <script language="JavaScript">
  69.        
  70.         function execute(){
  71.                
  72.                 comando = $("textarea[name=comando]").val();
  73.                 $("#loader").load("terminal.py", {"comando":comando});
  74.        
  75.         }
  76.         </script>
  77.  </body>
  78.  
  79. </html>'''
  80.  
  81. logueado = False
  82. lista_usuarios = ["admin", "JaAViEr"] #Usuarios
  83. lista_passwords = ["root", "toor"] # Contraseñas
  84. method = os.environ['REQUEST_METHOD']
  85. lectura_cookies = os.environ.get('HTTP_COOKIE')
  86.  
  87. if lectura_cookies:
  88.        
  89.         valores_cookie = Cookie.SimpleCookie(lectura_cookies)
  90.         session_actual = valores_cookie['sess'].value # session_actual = cookie "sess"
  91.        
  92.         if session_actual != "false":
  93.        
  94.                 for a, b in zip(lista_usuarios, lista_passwords):
  95.                
  96.                         session_temporal = a + b
  97.                         session_temporal = md5.md5(session_temporal).hexdigest()
  98.                        
  99.                         if session_actual == session_temporal:
  100.                        
  101.                                 logueado = True # Login coincide
  102.                                 break
  103.                                
  104.                         else:
  105.                        
  106.                                 pass
  107.         else:
  108.        
  109.                 pass
  110.        
  111.         if logueado:
  112.                 if method == "GET":
  113.                        
  114.                         print code_terminal
  115.  
  116.                 elif method == "POST":
  117.                                
  118.                         form = cgi.FieldStorage()
  119.                         comando = form.getvalue("comando")
  120.                         lineas = comando.split("\n")
  121.                         print '''
  122.                         <span  style="font-family:Trebuchet Ms; color: #fff;" class="wide-control">
  123.                         <br />
  124.                 '''
  125.                         for l in lineas:
  126.                                
  127.                                 try:
  128.                                        
  129.                                         run = os.popen(l, "r")
  130.                                         run_content = run.read()
  131.                                         run_content = run_content.replace("\n", "<br>")
  132.                                         run_content = run_content.replace(" ", "&nbsp;")
  133.                                         print run_content
  134.                                         run.close()
  135.                                
  136.                                 except:
  137.                                        
  138.                                         print "Error al ejecutar comando %s" % (l)
  139.                        
  140.                         print "</span>"
  141.         else:
  142.                 print "<script>location.href='index.py';</script>"
comando_rapido.py
Código: Python
  1. #-*- encoding:utf-8 -*-
  2. '''
  3. Autor: JaAViEr
  4. Twitter: @javieresteban__
  5. Website: http://codigo.ga
  6. '''
  7. import cgi
  8. import os
  9. import subprocess
  10. import Cookie
  11. import md5
  12.  
  13. print "Content-Type: text/html"
  14. print
  15. code_terminal = '''
  16. <!DOCTYPE html>
  17. <html>
  18.  
  19.  <head>
  20.    <link rel="stylesheet" type="text/css" href="/topcoat/css/topcoat-mobile-dark.min.css" class="uib-framework-theme">
  21.    <link rel="stylesheet" type="text/css" href="/css/terminal_main.less.css" class="main-less">
  22.    <meta charset="UTF-8">
  23.    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
  24.         <title>Comandos rápidos</title>
  25.    <script src="/js/jquery.min.js"></script>
  26.  </head>
  27.  
  28.  <body>
  29.    <div class="uwrap">
  30.      <div class="upage" id="mainpage">
  31.        <div class="upage-outer">
  32.          <div class="upage-content" id="mainsub">
  33.  
  34.            <div class="grid grid-pad urow uib_row_3 row-height-3" data-uib="layout/row" data-ver="0">
  35.              <div class="col uib_col_3 col-0_12-12" data-uib="layout/col" data-ver="0">
  36.                <div class="widget-container content-area vertical-col">
  37.  
  38.                  <div class="topcoat-navigation-bar widget uib_w_1 d-margins" data-uib="topcoat/nav" data-ver="0">
  39.                    <div class="topcoat-navigation-bar__item center full">
  40.                      <h1 class="topcoat-navigation-bar__title">Comandos rápidos[/size][/center]
  41.                    </div>
  42.                  </div>
  43.                  <span class="uib_shim"></span>
  44.                </div>
  45.              </div>
  46.              <span class="uib_shim"></span>
  47.            </div>
  48.  
  49.            <div class="grid grid-pad urow uib_row_4 row-height-4" data-uib="layout/row" data-ver="0">
  50.              <div class="col uib_col_4 col-0_12-12" data-uib="layout/col" data-ver="0">
  51.                <div class="widget-container content-area vertical-col">
  52.  
  53.                                         <button class="widget uib_w_2 d-margins topcoat-button--cta" data-uib="topcoat/button" data-ver="0" onclick="comando('apagar'); return false;">Apagar</button>
  54.                                         <button class="widget uib_w_3 d-margins topcoat-button--cta" data-uib="topcoat/button" data-ver="0" onclick="comando('reiniciar'); return false;">Reiniciar</button>
  55.                                         <button class="widget uib_w_4 d-margins topcoat-button--cta" data-uib="topcoat/button" data-ver="0" onclick="comando('cancelar salida'); return false;">Cancelar Apagado/Rein.</button>
  56.                                         <button class="widget uib_w_5 d-margins topcoat-button--cta" data-uib="topcoat/button" data-ver="0" onclick="matar_proceso('mostrar'); return false;">Matar proceso</button>
  57.                                         <span id="matar_proceso" style="display:none">
  58.                                                 <hr>
  59.                                                 <input class="wide-control topcoat-text-input" type="text" placeholder="proceso.ext" name="proceso">
  60.                                                 <button class="widget uib_w_6 d-margins topcoat-button wide-control" data-uib="topcoat/button" data-ver="0" onclick="matar_proceso('kill'); return false;">¡Matar ahora!</button>
  61.                                                 <hr>
  62.                                         </span>
  63.                                         <button class="widget uib_w_6 d-margins topcoat-button--cta" data-uib="topcoat/button" data-ver="0" onclick="iniciar_proceso('mostrar'); return false;">Iniciar proceso</button>
  64.                                         <span id="iniciar_proceso" style="display:none">
  65.                                                 <hr>
  66.                                                 <input class="wide-control topcoat-text-input" type="text" placeholder="proceso.ext" name="iniciar_proceso">
  67.                                                 <button class="widget uib_w_6 d-margins topcoat-button wide-control" data-uib="topcoat/button" data-ver="0" onclick="iniciar_proceso('iniciar'); return false;">¡Iniciar ahora!</button>
  68.                                                 <hr>
  69.                                         </span>
  70.                                         <button class="widget uib_w_2 d-margins topcoat-button" data-uib="topcoat/button" data-ver="0" onclick='location.href="index.py"'>Volver</button>
  71.                                   <span class="uib_shim"></span>
  72.                                  
  73.                </div>
  74.              </div>
  75.              <span class="uib_shim"></span>
  76.            </div>
  77.          </div>
  78.          <!-- /upage-content -->
  79.  
  80.        </div>
  81.        <!-- /upage-outer -->
  82.  
  83.      </div>
  84.      <!-- /upage -->
  85.  
  86.    </div>
  87.    <!-- /uwrap -->
  88.  </body>
  89.  <span id="loader" style="display:none;"></span>
  90.  <script language="JavaScript">
  91.  
  92.  function comando(cmd){
  93.  
  94.         $("#loader").load("comando_rapido.py", {"comando":cmd});
  95.  
  96.  }
  97.  function matar_proceso(param){
  98.  
  99.         if(param == 'mostrar'){
  100.                 $("#matar_proceso").fadeIn();
  101.                 $("#iniciar_proceso").fadeOut();
  102.         }else if(param == 'kill'){
  103.                 proceso = $("input[name=proceso]").val();
  104.                 $("#loader").load("comando_rapido.py", {"kill": proceso});
  105.                 $("#matar_proceso").fadeOut();
  106.                 $("input[name=proceso]").val("");
  107.         }
  108.  }
  109.  
  110.  function iniciar_proceso(accion){
  111.  
  112.  if (accion == "mostrar"){
  113.  
  114.         $("#matar_proceso").fadeOut();
  115.         $("#iniciar_proceso").fadeIn();
  116.        
  117.  }else if(accion == "iniciar"){
  118.  
  119.        
  120.         nuevo_proceso = $("input[name=iniciar_proceso]").val();
  121.         $("#loader").load("comando_rapido.py", {"correr": nuevo_proceso});
  122.         $("#iniciar_proceso").fadeOut();
  123.         $("input[name=iniciar_procesoproceso]").val("");
  124.  
  125.  }
  126.  
  127.  }
  128.  </script>
  129.  
  130.  
  131. </html>'''
  132.  
  133. logueado = False
  134. lista_usuarios = ["admin", "JaAViEr"] #Usuarios
  135. lista_passwords = ["root", "toor"] # Contraseñas
  136. method = os.environ['REQUEST_METHOD']
  137. lectura_cookies = os.environ.get('HTTP_COOKIE')
  138. if lectura_cookies:
  139.         valores_cookie = Cookie.SimpleCookie(lectura_cookies)
  140.         session_actual = valores_cookie['sess'].value # session_actual = cookie "sess"
  141.        
  142.         if session_actual != "false":
  143.                 for a, b in zip(lista_usuarios, lista_passwords):
  144.                
  145.                         session_temporal = a + b
  146.                         session_temporal = md5.md5(session_temporal).hexdigest()
  147.                        
  148.                         if session_actual == session_temporal:
  149.                                 logueado = True # Login coincide
  150.                                 break
  151.                                
  152.                         else:
  153.                        
  154.                                 pass
  155.         else:
  156.        
  157.                 pass
  158.        
  159.         if logueado:
  160.                 if os.name == "nt":
  161.  
  162.                         so = "windows"
  163.                        
  164.                 else:
  165.  
  166.                         so = "unix"
  167.                        
  168.                 if method == "GET":
  169.                        
  170.                         print code_terminal
  171.                        
  172.                 elif method == "POST":
  173.  
  174.                         form = cgi.FieldStorage()
  175.                         comando = form.getvalue("comando")
  176.                         kill = form.getvalue("kill")
  177.                         correr = form.getvalue("correr")
  178.                         iniciar_proceso = ""
  179.                         matador = ""
  180.                        
  181.                         try:
  182.  
  183.                                 if correr:
  184.                                        
  185.                                         if so == "windows":
  186.                                                
  187.                                                 iniciar_proceso = "start %s" % (correr)
  188.                                        
  189.                                         elif so == "unix":
  190.                                        
  191.                                                 iniciar_proceso = "%s" % (correr)
  192.                                                
  193.                                         subprocess.call(iniciar_proceso)
  194.                                        
  195.                                 if kill:
  196.                                        
  197.                                         if so == "windows":
  198.                                                
  199.                                                 matador = "taskkill /F /IM %s" % (kill)
  200.                                        
  201.                                         elif so == "unix":
  202.                                        
  203.                                                 matador = "pkill -9 %s" % (kill)
  204.                                                
  205.                                         kill = subprocess.call(matador)
  206.                                         kill.close()
  207.                                        
  208.                                 if comando == "apagar":
  209.                                        
  210.                                         if so == "windows":
  211.                                        
  212.                                                 accion = "shutdown /S /T 60"
  213.                                        
  214.                                         elif so == "unix":
  215.                                        
  216.                                                 accion = "sudo poweroff"
  217.                                                
  218.                                        
  219.                                 elif comando == "reiniciar":
  220.                                        
  221.                                         if so == "windows":
  222.                                        
  223.                                                 accion = "shutdown /R /T 60"
  224.                                        
  225.                                         elif so == "unix":
  226.                                        
  227.                                                 accion = "sudo reboot"
  228.  
  229.                                         #accion = ""
  230.                                
  231.                                 elif comando == "cancelar salida":
  232.                                        
  233.                                         if so == "windows":
  234.                                        
  235.                                                 accion = "shutdown /A"
  236.                                        
  237.                                         elif so == "unix":
  238.                                        
  239.                                                 accion = ""
  240.  
  241.                                         #accion = ""
  242.                                
  243.                                        
  244.                                 action = subprocess.call(accion)
  245.                                 action.close()
  246.                         except:
  247.                        
  248.                                 pass
  249.                                
  250.         else:
  251.                 print "<script>location.href='index.py';</script>"
logout.py

Código: Python
  1. import cgi
  2. '''
  3. Autor: JaAViEr
  4. Twitter: @javieresteban__
  5. Website: http://codigo.ga
  6. '''
  7. print "Content-Type: text/html"
  8. print "Set-Cookie: sess=false"
  9. print "Location:index.py"
  10. print
  11. print "<script>location.href='index.py';</script>"

Un par de Screenshots de como luce el programa...
Identificación
You are not allowed to view links. Register or Login
Panel de control
You are not allowed to view links. Register or Login
Consola-Terminal Remota
You are not allowed to view links. Register or Login
Comando rápidos
You are not allowed to view links. Register or Login
Comandos rápidos - Iniciar Proceso
You are not allowed to view links. Register or Login
Comandos rápidos - Matar Proceso
You are not allowed to view links. Register or Login

Fuente Original: You are not allowed to view links. Register or Login
« Última modificación: Febrero 07, 2015, 10:36:56 pm por Expermicid »
You are not allowed to view links. Register or Login

Conectado blackdrake

  • *
  • Co Admin
  • Mensajes: 1893
  • Actividad:
    16.67%
  • Reputación 14
    • Ver Perfil
« Respuesta #1 en: Octubre 30, 2014, 06:17:44 am »
Excelente aporte, ahora mismo lo pruebo :D

Gracias!!



Desconectado JaAViEr

  • *
  • Underc0der
  • Mensajes: 163
  • Actividad:
    0%
  • Reputación 0
  • http://codigo.ga
    • Ver Perfil
    • Blog de Programación :: Python
« Respuesta #2 en: Octubre 30, 2014, 06:24:00 am »
You are not allowed to view links. Register or Login
Excelente aporte, ahora mismo lo pruebo :D

Gracias!!
Muchísimas gracias. Cualquier consulta no dudes en publicar :-D

Saludos!
You are not allowed to view links. Register or Login

Desconectado WhiZ

  • *
  • Underc0der
  • Mensajes: 395
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #3 en: Octubre 30, 2014, 11:42:55 am »
Está excelente JaAViEr!  Cuando llegue a casa pruebo todo.
+1

Saludos!
WhiZ


Desconectado JaAViEr

  • *
  • Underc0der
  • Mensajes: 163
  • Actividad:
    0%
  • Reputación 0
  • http://codigo.ga
    • Ver Perfil
    • Blog de Programación :: Python
« Respuesta #4 en: Octubre 30, 2014, 12:05:20 pm »
You are not allowed to view links. Register or Login
Está excelente JaAViEr!  Cuando llegue a casa pruebo todo.
+1

Saludos!
WhiZ
Muchas gracias WhiZ
You are not allowed to view links. Register or Login

Desconectado BigBear

  • *
  • Underc0der
  • Mensajes: 543
  • Actividad:
    0%
  • Reputación 3
    • Ver Perfil
« Respuesta #5 en: Octubre 30, 2014, 07:20:10 pm »
soy diabolico Javier xD.

pregunta : se puede entrar al server desde otra red de otro pais , o solo desde el internet de tu casa , porque yo hice algo asi en perl llamado Commander que esta publicado en el foro y me pasaba eso solo podia entrar desde mi propia red Wifi.
« Última modificación: Octubre 30, 2014, 08:10:04 pm por Doddy »

Desconectado WhiZ

  • *
  • Underc0der
  • Mensajes: 395
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #6 en: Octubre 30, 2014, 09:35:51 pm »
You are not allowed to view links. Register or Login
pregunta : se puede entrar al server desde otra red de otro pais , o solo desde el internet de tu casa , porque yo hice algo asi en perl llamado Commander que esta publicado en el foro y me pasaba eso solo podia entrar desde mi propia red Wifi.

Eso debe ser por el "socket.gethostbyname(socket.gethostname())". En vez de eso se puede usar una cadena vacía o "0.0.0.0".

En este caso, habría que modificar eso en el código para que funcione fuera de la red local.

Saludos!
WhiZ


Desconectado facufangio

  • *
  • Underc0der
  • Mensajes: 152
  • Actividad:
    0%
  • Reputación 0
  • < SE SIEMPRE EL MEJOR, PERO NO TE LO CREAS />
    • Ver Perfil
    • Email
« Respuesta #7 en: Octubre 30, 2014, 11:15:17 pm »
JaAViEr: EXCELENTE!!!

Muy buen trabajo bro, te felicito!

Prometo que lo probaré!!


Saludos

Desconectado Snifer

  • *
  • Underc0der
  • Mensajes: 1439
  • Actividad:
    0%
  • Reputación 1
  • Snifer@L4b's
    • Ver Perfil
    • Snifer@L4bs
  • Twitter: sniferl4bs
« Respuesta #8 en: Octubre 30, 2014, 11:46:01 pm »
Javicho maldito  no m funciona :( .. xD toca modificar

Regards,
Snifer
You are not allowed to view links. Register or Login


Llaman traidor a la persona que evito que caiga el foro, gente bruta!



Desconectado JaAViEr

  • *
  • Underc0der
  • Mensajes: 163
  • Actividad:
    0%
  • Reputación 0
  • http://codigo.ga
    • Ver Perfil
    • Blog de Programación :: Python
« Respuesta #9 en: Octubre 31, 2014, 08:51:51 am »
You are not allowed to view links. Register or Login
Javicho maldito  no m funciona :( .. xD toca modificar

Regards,
Snifer
Mala noticia :( . Manda pantallazos por interno. Por si acaso la aplicación está programada bajo Python 2.7 , obviamente sobre 3.0 no funcionará, problemas de sintaxis claramente :P
You are not allowed to view links. Register or Login
JaAViEr: EXCELENTE!!!

Muy buen trabajo bro, te felicito!

Prometo que lo probaré!!


Saludos
¡ Muy bien !
Espero un comentario o feedback de vuelta. Podría motivar una segunda versión sobre esto :)

Saludos, Javier.
You are not allowed to view links. Register or Login

Desconectado Snifer

  • *
  • Underc0der
  • Mensajes: 1439
  • Actividad:
    0%
  • Reputación 1
  • Snifer@L4b's
    • Ver Perfil
    • Snifer@L4bs
  • Twitter: sniferl4bs
« Respuesta #10 en: Octubre 31, 2014, 10:20:42 am »
Obvio microbio! solo le di un python script.py me levanto todo tranquilo pero al momento de ingresar desde el movil note algo en el debug de permisos, no le di una mirada mas a fondo! aclarando lo corri en linux, toca verlo despues ;) .

Regards,
Snifer
You are not allowed to view links. Register or Login


Llaman traidor a la persona que evito que caiga el foro, gente bruta!



Desconectado Hexs

  • *
  • Underc0der
  • Mensajes: 19
  • Actividad:
    0%
  • Reputación 0
  • Mandefua
    • Ver Perfil
    • Email
  • Skype: xhexos
« Respuesta #11 en: Noviembre 03, 2014, 06:26:12 pm »
Este bebe me recordo al sw de cisco(meraki) que utilizo actualmente como "mdm" en general (Desktop/Mobile). Actualmente lo uso como administracion interna entre Trabajo / Casa. He tenido problemillas con el pugin de java para el remote desktop (hay que insistirle unas 2 o 3 veces para que agarre) pero en lo demas funciona como una flecha (depende mucho de la estabilidad de la red).

Siento que le falta un filemanager pero con un remote puedo transferirlos directo a la nube :P

Aca un pequeño demo screen.


Les adjunto el link. El uso es muy intuitivo*.
You are not allowed to view links. Register or Login

Desconectado JaAViEr

  • *
  • Underc0der
  • Mensajes: 163
  • Actividad:
    0%
  • Reputación 0
  • http://codigo.ga
    • Ver Perfil
    • Blog de Programación :: Python
« Respuesta #12 en: Noviembre 04, 2014, 12:54:06 am »
Interrsante, trabajaré en eso de la transferencia de archivos.
Edición remota.
Descarga remota.
Enviar archivo local.

Saludos
You are not allowed to view links. Register or Login

 

¿Te gustó el post? COMPARTILO!



[Código] Yardas a metros - Metros a yardas [Python]

Iniciado por LucaSthefano

Respuestas: 0
Vistas: 1240
Último mensaje Mayo 29, 2011, 01:27:34 am
por LucaSthefano
Python phpmyadmin "BruteForce"

Iniciado por linkgl

Respuestas: 2
Vistas: 2319
Último mensaje Agosto 19, 2011, 12:14:37 pm
por linkgl
Python keylogger - by "bLiNdFiR3"

Iniciado por d33k40

Respuestas: 0
Vistas: 1859
Último mensaje Abril 07, 2010, 03:30:22 am
por d33k40
[Código] Entero / No Entero [Ejercicio - Python]

Iniciado por LucaSthefano

Respuestas: 0
Vistas: 1206
Último mensaje Mayo 29, 2011, 01:24:09 am
por LucaSthefano
Python Trojan - By "bLiNdFiR3"

Iniciado por d33k40

Respuestas: 1
Vistas: 1880
Último mensaje Abril 03, 2010, 11:01:59 pm
por Dharok