• Sábado 21 de Diciembre de 2024, 16:12

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - RadicalEd

Páginas: [1] 2 3 ... 26
1
GNU/Linux / Script para creación de archivos de conexión y PPK
« en: Lunes 27 de Marzo de 2017, 19:02 »
Un script shell para crear un PPK desde Linux, sin necesidad de usar el puttygen de Windows

Código: C
  1. #!/bin/bash
  2. # RadicalEd
  3. # Genera clave de conexión ssh y archivo ppk
  4.  
  5. RED='\033[0;31m'
  6. GREEN='\033[1;32m'
  7. BLUE='\033[1;34m'
  8. NC='\033[0m'
  9. DIRSSH="$HOME/.ssh/"
  10. DIRPPK="$HOME/Documentos/proyectos/ppk/"
  11.  
  12. # Se verifica si existe la carpeta donde se guardarán los ppk
  13. if ! [ -d ${DIRPPK} ]; then
  14.    printf "La carpeta ${BLUE}${DIRPPK}${NC} no existe, será creada!\n\n"
  15.    mkdir -p "${DIRPPK}"
  16. fi
  17.  
  18. # Se comprobará si existen los programas ssh-keygen y puttygen
  19. if ! [ -x "/usr/bin/puttygen" ]; then
  20.     echo "Se debe tener instalado el programa puttygen"
  21.     exit 1;
  22. fi
  23. if ! [ -x "/usr/bin/ssh-keygen" ]; then
  24.     echo "Se debe tener instalado el programa ssh-keygen"
  25.     exit 1;
  26. fi
  27.  
  28. # En caso de que no pasen el usuario en los parametros se captura
  29. usuario=$1
  30. if [ -z ${usuario} ]; then
  31.     echo -n "Nombre de usuario del servidor ssh: "
  32.     printf "${BLUE}"
  33.     read usuario
  34.     printf "${NC}"
  35. fi
  36. echo "Se creará clave ssh y archivo ppk para el usuario ${GREEN} $usuario ${NC}"
  37.  
  38. # Generación de la clave pública y ppk
  39. ssh-keygen -t dsa -C $usuario -f ${DIRSSH}$usuario -q -N ""
  40. puttygen ${DIRSSH}$usuario -o ${DIRSSH}$usuario.ppk
  41.  
  42. # Se guarda en el path de los ppk
  43. mv ${DIRSSH}$usuario.ppk $DIRPPK
  44.  
  45. # Si desea entrar por ssh, se creará un alias en el bashrc
  46. echo -n "Desea crear un alias-ssh para entrar por consola (si/no)?: "
  47. printf "${BLUE}"
  48. read aliassh
  49. printf "${NC}"
  50. if [ "$aliassh" = "si" ]; then
  51.     echo -n "IP o nombre de servidor: "
  52.     printf "${BLUE}"
  53.     read servidor
  54.     printf "${NC}"
  55.  
  56.     echo "alias ssh$usuario='ssh -i $HOME/.ssh/$usuario $usuario@$servidor'" >> $HOME/.bashrc
  57.     #source $HOME/.bashrc
  58.     #exec bash
  59.  
  60.     printf "\nSe creó un nuevo alias, lo puedes usar con el comando ${GREEN}ssh$usuario${NC}\n\nRecuerda que antes de poder usar el alias, "
  61. fi
  62. # Copiar contenido de la llave pública para copiar al servidor
  63. printf "debes copiar la siguiente llave en tu servidor $servidor\n\n$usuario:"
  64. cat ${DIRSSH}$usuario.pub
  65. printf "\n"
  66.  
  67. # Se elimina la clave pública creada
  68. rm -f ${DIRSSH}$usuario.pub
  69. exec bash

2
MySQL / Auditoria tablas en MySQL y PostgreSQL
« en: Jueves 23 de Marzo de 2017, 15:04 »
Hace rato no posteo nada en mi amado SoloCodigo, les adjunto auditorias para bases de datos PostgreSQL y MySQL, la segunda es una mamera.

Si se puede mejorar, sobre todo la parte del MySQL, seré feliz

PostgreSQL

Tabla
Código: SQL
  1. CREATE TABLE auditoria
  2. (
  3.   fecha_cambio TIMESTAMP WITH TIME zone DEFAULT now(),
  4.   nombre_disparador text,
  5.   tipo_disparador text,
  6.   nivel_disparador text,
  7.   comando text,
  8.   tabla text,
  9.   old_info text,
  10.   new_info text
  11. )
  12. WITH (
  13.   OIDS=FALSE
  14. );
  15. ALTER TABLE auditoria
  16.   OWNER TO postgres;
  17.  

Función (Stored Procedure)
Código: SQL
  1. CREATE OR REPLACE FUNCTION sp_auditoria_log()
  2.   RETURNS TRIGGER AS
  3. $BODY$
  4.   DECLARE
  5.   BEGIN
  6.  
  7.       IF (TG_OP = 'DELETE') THEN
  8.           INSERT INTO auditoria (nombre_disparador,tipo_disparador,nivel_disparador,comando,tabla,old_info,new_info)
  9.           VALUES (TG_NAME,TG_WHEN,TG_LEVEL,TG_OP,TG_TABLE_NAME,OLD,NULL);
  10.           RETURN OLD;
  11.       ELSIF (TG_OP = 'UPDATE') THEN
  12.           INSERT INTO auditoria (nombre_disparador,tipo_disparador,nivel_disparador,comando,tabla,old_info,new_info)
  13.           VALUES (TG_NAME,TG_WHEN,TG_LEVEL,TG_OP,TG_TABLE_NAME,OLD,NEW);
  14.           RETURN NEW;
  15.       ELSIF (TG_OP = 'INSERT') THEN
  16.           INSERT INTO auditoria (nombre_disparador,tipo_disparador,nivel_disparador,comando,tabla,old_info,new_info)
  17.           VALUES (TG_NAME,TG_WHEN,TG_LEVEL,TG_OP,TG_TABLE_NAME,NULL,NEW);
  18.           RETURN NEW;
  19.       END IF;
  20.       RETURN NULL;
  21.  
  22.   END;
  23. $BODY$
  24.   LANGUAGE plpgsql VOLATILE
  25.   COST 100;
  26. ALTER FUNCTION tg_auditoria_log()
  27.   OWNER TO postgres;

Trigger
Código: SQL
  1. CREATE TRIGGER tg_disparador_nombre_tabla
  2.   AFTER INSERT OR UPDATE OR DELETE
  3.   ON nombre_tabla
  4.   FOR EACH ROW
  5.   EXECUTE PROCEDURE sp_auditoria_log();

MySQL

Tabla
Código: SQL
  1. CREATE TABLE auditoria (
  2.   fecha_cambio DATETIME NOT NULL DEFAULT NOW() ,
  3.   nombre_disparador VARCHAR(30) NOT NULL,
  4.   tipo_disparador VARCHAR(15) NOT NULL,
  5.   nivel_disparador VARCHAR(15) NOT NULL,
  6.   comando VARCHAR(45) NOT NULL,
  7.   tabla VARCHAR(45) NOT NULL,
  8.   old_info LONGTEXT NOT NULL,
  9.   new_info LONGTEXT NOT NULL
  10. );

Stored Procedure
Código: SQL
  1. DROP PROCEDURE IF EXISTS sp_auditoria_log;
  2. DELIMITER $$
  3. CREATE PROCEDURE sp_auditoria_log (
  4.                                    IN disparador VARCHAR(30),
  5.                                    IN tipo VARCHAR(15),
  6.                                    IN nivel VARCHAR(15),
  7.                                    IN comando VARCHAR(45),
  8.                                    IN tabla VARCHAR(45),
  9.                                    IN oldInfo LONGTEXT,
  10.                                    IN newInfo LONGTEXT)
  11. BEGIN
  12.       INSERT INTO auditoria (nombre_disparador,tipo_disparador,
  13.                                     nivel_disparador,comando,tabla,old_info,new_info)
  14.       VALUES (disparador, tipo, nivel, comando, tabla, oldInfo, newInfo);
  15. END $$
  16.  
Trigger
A diferencia de postgres, se necesita crear disparador por cada DML, además se debe colocar cada campo, tanto nuevo como viejo, en los 2 últimos campos del SP.

Código: SQL
  1. DROP TRIGGER IF EXISTS tg_disparador_nombre_tabla;
  2. DELIMITER $$
  3. CREATE TRIGGER tg_disparador_nombre_tabla
  4.    AFTER INSERT ON nombre_tabla
  5.    FOR EACH ROW
  6. BEGIN
  7.      CALL sp_auditoria_log('tg_disparador_nombre_tabla',
  8.                            'AFTER', 'ROW', 'INSERT',
  9.                            'nombre_tabla',
  10.                            NULL,
  11.                            CONCAT(NEW.campo1, ',', NEW.campo2, ',', NEW.campo3, ',', NEW.campo4, ',', NEW.campoN));
  12. END
  13. $$
  14. DELIMITER ;
  15.  
  16. DROP TRIGGER IF EXISTS tg_disparador_nombre_tabla;
  17. DELIMITER $$
  18. CREATE TRIGGER tg_disparador_nombre_tabla
  19.    AFTER UPDATE ON nombre_tabla
  20.    FOR EACH ROW
  21. BEGIN
  22.      CALL sp_auditoria_log('tg_disparador_nombre_tabla',
  23.                            'AFTER', 'ROW', 'UPDATE',
  24.                            'nombre_tabla',
  25.                            CONCAT(OLD.campo1, ',', OLD.campo2, ',', OLD.campo3, ',', OLD.campo4, ',', OLD.campoN),
  26.                            CONCAT(NEW.campo1, ',', NEW.campo2, ',', NEW.campo3, ',', NEW.campo4, ',', NEW.campoN));
  27. END;
  28. $$
  29. DELIMITER ;
  30.  
  31. DROP TRIGGER IF EXISTS tg_disparador_nombre_tabla;
  32. DELIMITER $$
  33. CREATE TRIGGER tg_disparador_nombre_tabla
  34.    AFTER DELETE ON nombre_tabla
  35.    FOR EACH ROW
  36. BEGIN
  37.      CALL sp_auditoria_log('tg_disparador_nombre_tabla',
  38.                            'AFTER', 'ROW', 'DELETE',
  39.                            'nombre_tabla',
  40.                            CONCAT(OLD.campo1, ',', OLD.campo2, ',', OLD.campo3, ',', OLD.campo4, ',', OLD.campoN),
  41.                            NULL);
  42. END;
  43. $$
  44. DELIMITER ;

Adjunto SP que genera los triggers de las tablas que se le pasen como parametro, las imprime en un select, si conocen una forma de ejecutarlos directamente, con PREPARE-EXECUTE y no me funcionó.
Código: SQL
  1. DROP PROCEDURE IF EXISTS sp_genera_triggers;
  2. DELIMITER $$
  3. CREATE PROCEDURE sp_genera_triggers (IN schema_auditar VARCHAR(50),
  4.                                      IN tablasNo LONGTEXT CHARSET utf8)
  5. BEGIN
  6.     DECLARE tg_insert, tg_update, tg_delete LONGTEXT;
  7.     DECLARE stmt, tablasTrigger LONGTEXT;
  8.     DECLARE nombreTabla VARCHAR(50);
  9.     DECLARE completo INT DEFAULT FALSE;
  10.  
  11.     -- --------------------------------------------------------
  12.     -- [ Se escogen las tablas que están por fuera de la lista]
  13.     -- --------------------------------------------------------
  14.     DECLARE tablas_lista CURSOR
  15.     FOR SELECT TABLE_NAME
  16.         FROM INFORMATION_SCHEMA.TABLES  
  17.         WHERE TABLE_SCHEMA=schema_auditar AND
  18.               !FIND_IN_SET(TABLE_NAME, tablasNo);
  19.              
  20.     DECLARE CONTINUE HANDLER
  21.         FOR NOT FOUND SET completo = TRUE;
  22.        
  23.     OPEN tablas_lista;
  24.  
  25.     cursor_loop: LOOP
  26.         FETCH tablas_lista INTO nombreTabla;
  27.  
  28.         IF completo THEN
  29.             LEAVE cursor_loop;
  30.         END IF;
  31.  
  32.         -- -------------------------------------------------------------------
  33.         -- [ Crea los triggers INSERT/UPDATE/DELETE de las tablas permitidas ]
  34.         -- -------------------------------------------------------------------
  35.         SET tg_update := CONCAT('DROP TRIGGER IF EXISTS ',
  36.                                  schema_auditar,
  37.                                  REPLACE(nombreTabla, 'tn_', '.tg_upd_'), ';\n',
  38.                                  'DELIMITER $$\n',
  39.                                  'CREATE TRIGGER ',
  40.                                  schema_auditar,
  41.                                  REPLACE(nombreTabla, 'tn_', '.tg_upd_'), '\n',
  42.                                  '   AFTER UPDATE ON ', nombreTabla,'\n',
  43.                                  '   FOR EACH ROW\n',
  44.                                  'BEGIN\n',
  45.                                  '     CALL sp_auditoria_log(\'', nombreTabla, '\',\n',
  46.                                  '                           \'AFTER\', \'ROW\', \'UPDATE\', \n',
  47.                                  '                           \'', nombreTabla, '\', \n');
  48.                                  
  49.         SET tg_delete := REPLACE(tg_update, 'tg_upd_', 'tg_del_');
  50.         SET tg_delete := REPLACE(tg_delete, 'UPDATE', 'DELETE');
  51.         SET tg_insert := REPLACE(tg_update, 'tg_upd_', 'tg_ins_');
  52.         SET tg_insert := REPLACE(tg_insert, 'UPDATE', 'INSERT');
  53.        
  54.         SET stmt := (SELECT CONCAT('                           CONCAT(',
  55.                                    GROUP_CONCAT(CONCAT('OLD.', COLUMN_NAME) SEPARATOR ', \',\', '),
  56.                                    '),\n')
  57.                      FROM information_schema.COLUMNS
  58.                      WHERE TABLE_SCHEMA=BINARY schema_auditar AND
  59.                            TABLE_NAME=BINARY nombreTabla);
  60.         SET tg_update := CONCAT(tg_update, stmt);
  61.         SET tg_delete := CONCAT(tg_delete, stmt,
  62.                                 '                           NULL',
  63.                                 ');\nEND;\n$$\nDELIMITER ;\n\n');
  64.        
  65.         SET stmt := (SELECT CONCAT('                           CONCAT(',
  66.                                    GROUP_CONCAT(CONCAT('NEW.', COLUMN_NAME) SEPARATOR ', \',\', '),
  67.                                    ')')
  68.                      FROM information_schema.COLUMNS
  69.                      WHERE TABLE_SCHEMA=BINARY schema_auditar AND
  70.                            TABLE_NAME=BINARY nombreTabla);
  71.         SET tg_update := CONCAT(tg_update, stmt, ');\nEND;\n$$\nDELIMITER ;\n\n');
  72.         SET tg_insert := CONCAT(tg_insert,
  73.                                 '                           NULL,\n',
  74.                                 stmt, ');\nEND\n$$\nDELIMITER ;\n\n');
  75.  
  76.  
  77.         SET tablasTrigger := CONCAT(tg_insert, tg_update, tg_delete);
  78.        
  79.         SELECT tablasTrigger;
  80.        
  81.     END LOOP;
  82.     CLOSE tablas_lista;
  83.    
  84.     SET script := tablasTrigger;
  85. END $$
  86.  

Código: SQL
  1. SET @tablasNo:='tabla1,tabla2,tabla3,tabla4,tablaN';
  2.  
  3. CALL sp_genera_triggers('nombre_schema', @tablasNo, @scriopt);

3
PHP / Error extraño
« en: Domingo 25 de Septiembre de 2011, 21:10 »
Hola chicos de SoloCodigo, vengo teniendo un error extraño al ejecutar un query y usar las funciones mysql_fetch_array y mysql_num_rows de PHP, el query es este:
Código: SQL
  1. SELECT ADDDATE( wf.fecha_inicio, DATEDIFF( plpr.tiempo_limite, "2000-01-01 08:00:00" ) ) AS tiempo FROM ct_plantilla_workflow AS wf, ct_plantilla AS pl, ct_plantilla_protocolo AS plpr WHERE wf.usu_asigna = "ECASTANO" AND wf.plantilla_id = pl.id AND plpr.plantilla_id = pl.id AND wf.proceso = plpr.orden
si lo ejecuto directamente en el mysql me salen los datos que deben salir, de hecho el query en PHP se ejecuta bien con el mysql_query, pero las funciones arriba puestas me muetran los siguientes errores
Citar
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\AppServ\www\aplicaciones\gestion\include\clases\clases.php on line 58

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\AppServ\www\aplicaciones\gestion\include\clases\clases.php on line 59
e imprimo el Resource y me muestra esto: Resource id #681 y he mirado bien el resource y el 1 sobra, ósea, en realidad el dato es Resource id #68 y el 1 se agrega, acá está el código que ejecuta eso:
Código: PHP
  1.   /*
  2.    * Este método mostrará datos de una consulta de varias tablas
  3.    * @param string $query    sql query
  4.    * @param integer $tipo    El tipo de query que se ejecutará
  5.    * @param string $error    Para mostrar un error diferente al default de MySQL
  6.    * @return $arrayRetorno   Tiene el resultado, la cantidad de registros, un array con los registros y el último indexado
  7.    */
  8.   //function query($query, $tipo=0, $trace=0, $error='<br /><b>Query ejecutado incorrectamente<br />')
  9.   function query($query, $tipo=0, $trace=0, $error='<br /><b>Query ejecutado incorrectamente<br />') {
  10.     $this->result = mysql_query($query) or die(mysql_error().$error.$query.'</b>');
  11. echo $this->result;
  12.  
  13.     if ($this->result==0){
  14.       echo "Consulta ejecutada sin exito";
  15.     }
  16.  
  17.     /*
  18.      * Dependiendo del tipo de consulta SQL escojida extraemos las variables
  19.      */
  20.     switch($tipo)
  21.     {
  22.       case 'SELECT':
  23.       case 0:
  24.            $this->numrows = mysql_num_rows($this->result);
  25.            $this->arrayRegistros = mysql_fetch_array($this->result);
  26.            $this->ultimo = '';
  27.            break;
  28.       case 'INSERT':
  29.       case 1:
  30.            $this->ultimo = mysql_insert_id();
  31.            $this->numrows = '';
  32.            $this->arrayRegistros = '';
  33.            break;
  34.       case 'UPDATE':
  35.       case 'DELETE':
  36.       case 'ALTER':
  37.       case 2:
  38.       case 3:
  39.       case 4:
  40.            $this->numrows = '';
  41.            $this->arrayRegistros = '';
  42.            $this->ultimo = '';
  43.            break;
  44.       case 'SHOW TABLES':
  45.       case 'OPTIMIZE TABLE':
  46.       case 'TRUNCATE TABLE':
  47.       case 5:
  48.       case 6:
  49.       case 7:
  50.            $this->numrows = '';
  51.            break;
  52.     }
  53.  
  54.     /*
  55.      * Estos son todos los datos que se pueden extraer de un query
  56.      * Ac&aacute; lo que se hace es devolverlo todo en un array
  57.      */
  58.     $arrayRetorno = array($this->result, $this->numrows, $this->arrayRegistros, $this->ultimo);
  59.  
  60.     if ($trace==1)
  61.     {
  62.       debug_print_backtrace();
  63.     }
  64.  
  65.     return $arrayRetorno;
  66.   }
  67.  
  68.  

Esto me pasa en Windows con el AppServ o Wamp instalado, en Linux no me muestra ningun error, alguna información al respecto

4
La taberna del BIT / Feliz Cumpleaños
« en: Viernes 20 de Agosto de 2010, 15:26 »
Pues ya quedamos muy pocos de los que conocí por allá en el 2004 cuando me metí en este super foro; hoy uno de esos personajes está de cumpleaños.

FELIZ CUMPLEAÑOS juez Y QUE CUMPLAS MÁS HASTA EL AÑO 800000

5
VBA / Consultas MySQL
« en: Miércoles 17 de Febrero de 2010, 18:31 »
Hola chicos de SoloCodigo ( :P ) hace rato no empezaba un post así, y mucho menos acá en Visual Basic jejeje; bueno dejo tanta chachara y voy a lo mio, estoy haciendo un complemento para Excel que consulta una DB MySQL y genera una tabla dinámica, en cierta forma funciona, pero cuando hago consultas del estilo.
Código: SQL
  1. SELECT mid(ped1.detalle,61,30) AS PO_CGUNO, ped2.fechaentrega AS fechaCancelacion,mid(ped2.bodega,4,2) AS Localizacion,ped1.documento AS Documento,
  2. FROM ped1,ped2
  3. WHERE ped1.pedido=ped2.pedido
  4.  
  5.  
Si se fijan hay unas funciones mid para delimitar los valores que quiero que me devuelvan y es aquí donde no me funciona el complemento, ya que me arroja este error.
Citar
se ha producido el error '1004' en tiempo de ejecución
y me marca esta línea en el código
Código: Visual Basic
  1. Set objMyPivotTable = ActiveWorkbook.Worksheets("Hoja_" + cmbCampos.Value).PivotTables.Add(objMyPivotCache, Cells(2, 1))
  2.  
Pero si hago una consulta de este estilo:
Código: SQL
  1. SELECT Pedido_Despacho.codcliente AS codcliente,casos.problema AS problema,casos.codtipocaso AS codtipocaso,detalle_caso.reclamo AS reclamo,casos.calificacion AS calificacion,detalle_caso.solucion AS solucion,Pedido_Despacho.estado AS estado,casos.fecha AS fecha FROM detalle_caso,casos,Pedido_Despacho WHERE casos.codcaso = detalle_caso.codcaso AND casos.codpedidodespa = Pedido_Despacho.codpedidodespa  
  2.  
Sin el mid si me funciona, me podrían explicar qué puede ser el error.


Gracias

6
PHP / AJAX y PHP en campos de formulario
« en: Miércoles 14 de Octubre de 2009, 18:08 »
Hola chicos de SoloCodigo, tengo una consulta como siempre, la vaina es que tengo un código que genera unos campos en forma dinámica por medio de AJAX, pero estos son datos que se guardarán por medio de un <form>, ósea, estoy generando con AJAX datos que contienen un campo de texto para introducir cantidades; la vaina es que como esto es en si dinámico al introducir la cantidad y darle al boton guardar no lo toma, y es que de por si ese código generado no existe dentro del código de la página.

Alguna idea???

7
PHP / Matar sesiones y que se pierda la cookie
« en: Martes 8 de Septiembre de 2009, 15:33 »
Hola chicos del foro, he estado empezando a manejar esto de las sesiones y me ha funcionado todo bien, he podido abrir y cerrar sesiones y si trato de volver atras me saca el error de que el usuario no está conectado.

Ahora el problema es que cuando vuelvo a ingresar con el login y password el toma el session_id que quedaba del anterior y pues necesitaría saber como borrar esta sesión ya que estoy guardando datos con ese session_id y me trunca por que es como si se conectará el usuario anterior o más bien la sesión anterior.

Me hago entender???, de esta forma estoy matando la sesión.

Código: PHP
  1. <?php
  2. include 'include/configuration.php';
  3.  
  4. //Dejamos en blanco el campo de sesion
  5. $query = 'UPDATE tbdym_users SET sess_actual="" WHERE sess_actual="'.session_id().'"';
  6. $query_ses = $sql->query($query, 2);
  7.  
  8. $_SESSION = array();
  9.  
  10. if(empty($_SESSION['username']) and empty($_SESSION['userpass']) and empty($_SESSION['authuser']))
  11. {
  12.   echo "<script>document.location.href='index.php?msg=Has salido del sistema';</script>";
  13. }
  14. ?>
  15.  

8
PHP / Clase Query Conexión
« en: Miércoles 12 de Agosto de 2009, 20:42 »
Les dejo esta clase que hicé para imprimir datos en tablas sin tener que estar haciendo redundancia.
Código: PHP
  1. <?php
  2. //Desarrollada por RadicalEd
  3.  
  4. class SQL
  5. {
  6. //Constructor
  7. function SQL($host='localhost', $db='ancheteria', $user='usdist', $password='clio1214')
  8. {
  9.   $this->database = mysql_connect($host, $user, $password) or die("No se pudo conectar con el servidor".mysql_error());
  10.   @mysql_select_db($db) or die( "No se pudo conectar a la db: " . mysql_error());
  11. }
  12.  
  13. //Esta función mostrará datos de una consulta simple
  14. public function tabla($query, $camposTabla)
  15. {
  16.   $tabla = '<table border="1" cellpadding="1" cellspacing="1"><tbody><tr>';
  17.  
  18.   //Hay dos formas de recorrer el array, por for y por foreach
  19.   //acá mostraré ambas
  20.   for ($x=0; $x<count($camposTabla); $x++)
  21.   {
  22.     $tabla .= '<td align="center"><strong>'.$camposTabla[$x].'</strong></td>';
  23.   }
  24.  
  25.   $tabla .= '</tr>';
  26.   $result = mysql_query($query) or die(mysql_error());
  27.   while($row=mysql_fetch_array($result))
  28.   {
  29.     $tabla .= '<tr>';
  30.  
  31.     //Recorriendo el array con foreach
  32.     foreach($camposTabla as $campo)
  33.     {
  34.       $tabla .= '<td>'.$row[$campo].'</td>';
  35.     }
  36.     $tabla .= '</tr>';
  37.   }
  38.  
  39.   $tabla .= '</tbody></table>';
  40.  
  41.   return $tabla;
  42. }
  43.  
  44. //Este metodo mostrará datos de una consulta de varias tablas
  45. public function tablaCompuesta($query, $camposTabla, $camposDatos)
  46. {
  47.   $tabla = '<table border="1" cellpadding="1" cellspacing="1"><tbody><tr>';
  48.   for ($x=0; $x<count($camposTabla); $x++)
  49.   {
  50.     $tabla .= '<td align="center"><strong>'.$camposTabla[$x].'</strong></td>';
  51.   }
  52.  
  53.   $tabla .= '</tr>';
  54.   $result = mysql_query($query) or die(mysql_error());
  55.   $numrows = mysql_num_rows($result);
  56.   $n = 0;
  57.   while($n<$numrows)
  58.   {
  59.     $tabla .= '<tr>';
  60.     foreach($camposDatos as $campo)
  61.     {
  62.       $tabla .= '<td>'.mysql_result($result,$n,$campo).'</td>';
  63.     }
  64.     $tabla .= '</tr>';
  65.  
  66.     $n++;
  67.   }
  68.  
  69.   $tabla .= '</tbody></table>';
  70.  
  71.   return $tabla;
  72.  
  73. }
  74. }
  75.  
  76. //EJEMPLOS DE UTILIZACION
  77.  
  78. //Arrays de los datos a mostrar
  79. $arrayTabla = array('TIPO', 'NUMERO', 'RUTERO');
  80. $arrayDatos = array('TIPO', 'NRO', 'RUTE');
  81.  
  82. //Consulta compuesta de varias tablas
  83. $query = 'SELECT con.tipo_dcto AS '.$arrayDatos[0].', con.nro_dcto AS '.$arrayDatos[1].', con.fk_rutero AS '.$arrayDatos[2].'
  84.  
  85. FROM tbsdpel_rutero AS rut, tbsdpel_content AS con
  86.  
  87. WHERE con.nro_dcto LIKE "19329" AND con.tipo_dcto LIKE "RO" AND con.fk_rutero=rut.id_rutero';
  88. $datos = new SQL($host='localhost', $db='paginafiles', $user='usdist', $password='clio1214');
  89. $tabla = $datos->tablaCompuesta($query, $arrayTabla, $arrayDatos);
  90. echo $tabla;
  91.  
  92. $nuevo = array('id', 'codigo', 'nombre');
  93. $datos = new SQL();
  94. $tabla = $datos->tabla('SELECT * FROM tbancheteria_proveedores', $nuevo);
  95. echo $tabla;
  96.  
  97. ?>
  98.  

9
Python / Eliminar archivos duplicados del sistema
« en: Sábado 16 de Mayo de 2009, 20:09 »
Código: Python
  1. import hashlib, sys, os
  2.  
  3. #Esta funcion detectara el hash MD5 del archivo
  4. def sabersiya(archivo):
  5. ....archi = open(archivo)
  6. ....cabeceramd5 = hashlib.md5(archi.read()).hexdigest()
  7. ....archi.close()
  8. ....return cabeceramd5
  9.  
  10. todo = os.walk(sys.argv[1])
  11. #Diccionario para guardar los datos
  12. dic = {}
  13. #Esta variable sera el nombre de los indices
  14. x = 0
  15. #Recorremos el arbol de directorios
  16. #todo = os.walk('.')
  17. for path, dirname, filename in todo:
  18. ....for x in filename:
  19. ........var = '%s/%s' % (path, x)
  20. ........dic[var] = sabersiya(var)
  21. ........
  22. #Verificamos que sea el mismo hash, pero diferente clave
  23. for h in dic:
  24. ....for hh in dic:
  25. ........if dic.get(h) == dic.get(hh) and h != hh:
  26. ............#print '%s/%s --> %s/%s' % (h, dic.get(h),hh, dic.get(hh))
  27. ............try:
  28. ................#Eliminamos el archivo
  29. ................os.remove('%s' % (hh))
  30. ................print 'El archivo eliminado fue %s' % (hh)
  31. ............except:
  32. ................pass
  33.  

10
Virus / Sality
« en: Lunes 20 de Abril de 2009, 18:43 »
Información extraida de Alerta Antivirus

Peligrosidad: 3 - Media
Difusión: Baja
Fecha de Alta:20-04-2009
Última Actualización:20-04-2009
Daño: Alto
[Explicación de los criterios]
Dispersibilidad: Alto
Nombre completo: Worm.W32/Sality.AM@US    
Tipo: [Worm] - Programa que se replica copiándose entero (sin infectar otros ficheros) en la máquina infectada, y a través de redes de ordenadores
Plataforma: [W32] - Ejecutable PE (.EXE, .SCR, .DLL) que corre en Windows de 32 bits: 95, 98, Me, NT, 2000, XP, 2003 y Vista
Mecanismo principal de difusión: [US] - Unidades del sistema (locales, mapeadas, extraíbles).
Tamaño (bytes): 69632
Alias:W32.Sality.AM (Symantec), W32.Sality.AM (PerAntivirus)
Detalles

Método de Infección

Al infectar el sistema, el gusano se copia a:

    * %System%drivers[Nombre_aleatorio].sys

Nota: %System% es una variable que hace referencia al directorio del sistema de Windows.
Por defecto es C:WindowsSystem (Windows 95/98/Me), C:WinntSystem32 (Windows NT/2000), o C:WindowsSystem32 (Windows XP).

El archivo .SYS es ejecutado como un servicio con el siguiente nombre e inmediatamente despues es borrado:

    * abp470n5

El servicio recién iniciado actúa como un filtro en el servicio IPFILTERDRIVER (Firewall de Windows Vista) y monitoriza la red en busca de paquetes con cualquiera de las siguientes cadenas:

    * upload_virus
    * sality-remov
    * virusinfo.
    * cureit.
    * drweb.
    * onlinescan.
    * spywareinfo.
    * ewido.
    * virusscan.
    * windowsecurity.
    * spywareguide.
    * bitdefender.
    * pandasoftware.
    * agnmitum.
    * virustotal.
    * sophos.
    * trendmicro.
    * etrust.com
    * symantec.
    * mcafee.
    * f-secure.
    * eset.com
    * kaspersky
    * aPvo

Luego crea las siguientes entradas de registro:

Clave:HKEY_CURRENT_USERSoftware[Caracteres_aleatorios]

Valor:"V[Número]_[3_números_aleatorios]" = [Valor _aleatorio]

Clave:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionInternet Settings

Valor:"GlobalUserOffline" = "0"

Clave:HKEY_LOCAL_MACHINESOFTWAREMicrosoftTracingFWCFG

Valor:"ConsoleTracingMask" = "4294901760"

Valor:"EnableConsoleTracing" = "0"

Valor:"EnableFileTracing" = "0"

Valor:"FileDirectory" = "%Windir%tracing"

Valor:"FileTracingMask" = "4294901760"

Valor:"MaxFileSize" = "1048576"

Nota: %Windir% es una variable que hace referencia al directorio de instalación de Windows.
Por defecto es C:Windows (Windows 95/98/Me/XP) o C:Winnt (Windows NT/2000).

Para cambiar las configuraciones de seguridad del sistema altera las entradas en las llaves:

Clave:HKEY_LOCAL_MACHINESOFTWAREMicrosoftSecurity CenterSvc

Valor:"FirewallDisableNotify" = "1"

Valor:"FirewallOverride" = "1"

Valor:"UacDisableNotify" = "1"

Clave:HKEY_LOCAL_MACHINESOFTWAREMicrosoftSecurity Center

Valor:"UacDisableNotify" = "1"

Clave:HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesSharedAccessParametersFirewallPolicyStandardProfile

Valor:"DoNotAllowExceptions" = "0"

Clave:HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesSharedAccessParametersFirewallPolicyStandardProfile
AuthorizedApplicationsList

Valor:"%SystemDrive%[Nombre_original_de_archivo].exe" = "%SystemDrive%[Nombre_original_de_archivo].exe:*:Enabled:ipsec"

Nota: %SystemDrive% es una variable que hace referencia a la unidad en la que Windows está instalado.
Por defecto es C:.

Clave:HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesSharedAccessParametersFirewallPolicyStandardProfile
AuthorizedApplicationsList

Valor:"%Windir%Explorer.EXE" = "%Windir%Explorer.EXE:*:Enabled:ipsec"

Borra las entradas de registro en las subclaves:

Clave:HKEY_CURRENT_USERSystemCurrentControlSetControlSafeBoot



Clave:HKEY_CURRENT_USER\SoftwareMicrosoftWindowsCurrentVersionExtStats

Clave:HKEY_LOCAL_MACHINE\SoftwareMicrosoftWindowsCurrentVersionExtStats

Clave:HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionExplorerBrowser Helper Objects

Clave:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerBrowser Helper Objects

Seguidamente busca las siguientes subclaves e infecta todos los archivos vinculados:

Clave:HKEY_CURRENT_USERSoftwareMicrosoftWindowsShellNoRoamMUICache

Clave:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun

Clave:HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun


Efectos

El gusano detiene los servicios que tengan alguna de las siguientes cadenas:

    * aswMon2
    * Agnitum Client Security Service
    * ALG
    * Amon monitor
    * aswUpdSv
    * aswRdr
    * aswSP
    * aswTdi
    * aswFsBlk
    * acssrv
    * AV Engine
    * avast! iAVS4 Control Service
    * avast! Antivirus
    * avast! Mail Scanner
    * avast! Web Scanner
    * avast! Asynchronous Virus Monitor
    * avast! Self Protection
    * AVG E-mail Scanner
    * Avira AntiVir Premium Guard
    * Avira AntiVir Premium WebGuard
    * Avira AntiVir Premium MailGuard
    * avp1
    * BackWeb Plug-in - 4476822
    * bdss
    * BGLiveSvc
    * BlackICE
    * CAISafe
    * ccEvtMgr
    * ccProxy
    * ccSetMgr
    * COMODO Firewall Pro Sandbox Driver
    * cmdGuard
    * cmdAgent
    * Eset Service
    * Eset HTTP Server
    * Eset Personal Firewall
    * F-Prot Antivirus Update Monitor
    * fsbwsys
    * FSDFWD
    * F-Secure Gatekeeper Handler Starter
    * FSMA
    * Google Online Services
    * InoRPC
    * InoRT
    * InoTask
    * ISSVC
    * KPF4
    * KLIF
    * LavasoftFirewall
    * LIVESRV
    * McAfeeFramework
    * McShield
    * McTaskManager
    * navapsvc
    * NOD32krn
    * NPFMntor
    * NSCService
    * Outpost Firewall main module
    * OutpostFirewall
    * PAVFIRES
    * PAVFNSVR
    * PavProt
    * PavPrSrv
    * PAVSRV
    * PcCtlCom
    * PersonalFirewal
    * PREVSRV
    * ProtoPort Firewall service
    * PSIMSVC
    * RapApp
    * SmcService
    * SNDSrvc
    * SPBBCSvc
    * SpIDer FS Monitor for Windows NT
    * SpIDer Guard File System Monitor
    * SPIDERNT
    * Symantec Core LC
    * Symantec Password Validation
    * Symantec AntiVirus Definition Watcher
    * SavRoam
    * Symantec AntiVirus
    * Tmntsrv
    * TmPfw
    * tmproxy
    * tcpsr
    * UmxAgent
    * UmxCfg
    * UmxLU
    * UmxPol
    * vsmon
    * VSSERV
    * WebrootDesktopFirewallDataService
    * WebrootFirewall
    * XCOMM
    * AVP

Y detiene los procesos con las siguientes cadenas:

    * _AVPM.
    * A2GUARD.
    * AAVSHIELD.
    * AVAST
    * ADVCHK.
    * AHNSD.
    * AIRDEFENSE
    * ALERTSVC
    * ALOGSERV
    * ALSVC.
    * AMON.
    * ANTI-TROJAN.
    * AVZ.
    * ANTIVIR
    * APVXDWIN.
    * ARMOR2NET.
    * ASHAVAST.
    * ASHDISP.
    * ASHENHCD.
    * ASHMAISV.
    * ASHPOPWZ.
    * ASHSERV.
    * ASHSIMPL.
    * ASHSKPCK.
    * ASHWEBSV.
    * ASWUPDSV.
    * ATCON.
    * ATUPDATER.
    * ATWATCH.
    * AVCIMAN.
    * AVCONSOL.
    * AVENGINE.
    * AVESVC.
    * AVGAMSVR.
    * AVGCC.
    * AVGCC32.
    * AVGCTRL.
    * AVGEMC.
    * AVGFWSRV.
    * AVGNT.
    * AVGNTDD
    * AVGNTMGR
    * AVGSERV.
    * AVGUARD.
    * AVGUPSVC.
    * AVINITNT.
    * AVKSERV.
    * AVKSERVICE.
    * AVKWCTL.
    * AVP.
    * AVP32.
    * AVPCC.
    * AVPM.
    * AVAST
    * AVSERVER.
    * AVSCHED32.
    * AVSYNMGR.
    * AVWUPD32.
    * AVWUPSRV.
    * AVXMONITOR9X.
    * AVXMONITORNT.
    * AVXQUAR.
    * BDMCON.
    * BDNEWS.
    * BDSUBMIT.
    * BDSWITCH.
    * BLACKD.
    * BLACKICE.
    * CAFIX.
    * CCAPP.
    * CCEVTMGR.
    * CCPROXY.
    * CCSETMGR.
    * CFIAUDIT.
    * CLAMTRAY.
    * CLAMWIN.
    * CLAW95.
    * CUREIT
    * DEFWATCH.
    * DRVIRUS.
    * DRWADINS.
    * DRWEB32W.
    * DRWEBSCD.
    * DRWEBUPW.
    * DWEBLLIO
    * DWEBIO
    * ESCANH95.
    * ESCANHNT.
    * EWIDOCTRL.
    * EZANTIVIRUSREGISTRATIONCHECK.
    * F-AGNT95.
    * FAMEH32.
    * FILEMON
    * FIRESVC.
    * FIRETRAY.
    * FIREWALL.
    * FPAVUPDM.
    * F-PROT95.
    * FRESHCLAM.
    * EKRN.
    * FSAV32.
    * FSAVGUI.
    * FSBWSYS.
    * F-SCHED.
    * FSDFWD.
    * FSGK32.
    * FSGK32ST.
    * FSGUIEXE.
    * FSMA32.
    * FSMB32.
    * FSPEX.
    * FSSM32.
    * F-STOPW.
    * GCASDTSERV.
    * GCASSERV.
    * GIANTANTISPYWAREMAIN.
    * GIANTANTISPYWAREUPDATER.
    * GUARDGUI.
    * GUARDNT.
    * HREGMON.
    * HRRES.
    * HSOCKPE.
    * HUPDATE.
    * IAMAPP.
    * IAMSERV.
    * ICLOAD95.
    * ICLOADNT.
    * ICMON.
    * ICSSUPPNT.
    * ICSUPP95.
    * ICSUPPNT.
    * IFACE.
    * INETUPD.
    * INOCIT.
    * INORPC.
    * INORT.
    * INOTASK.
    * INOUPTNG.
    * IOMON98.
    * ISAFE.
    * ISATRAY.
    * ISRV95.
    * ISSVC.
    * KAV.
    * KAVMM.
    * KAVPF.
    * KAVPFW.
    * KAVSTART.
    * KAVSVC.
    * KAVSVCUI.
    * KMAILMON.
    * KPFWSVC.
    * MCAGENT.
    * MCMNHDLR.
    * MCREGWIZ.
    * MCUPDATE.
    * MCVSSHLD.
    * MINILOG.
    * MYAGTSVC.
    * MYAGTTRY.
    * NAVAPSVC.
    * NAVAPW32.
    * NAVLU32.
    * NAVW32.
    * NEOWATCHLOG.
    * NEOWATCHTRAY.
    * NISSERV
    * NISUM.
    * NMAIN.
    * NOD32
    * NORMIST.
    * NOTSTART.
    * NPAVTRAY.
    * NPFMNTOR.
    * NPFMSG.
    * NPROTECT.
    * NSCHED32.
    * NSMDTR.
    * NSSSERV.
    * NSSTRAY.
    * NTRTSCAN.
    * NTOS.
    * NTXCONFIG.
    * NUPGRADE.
    * NVCOD.
    * NVCTE.
    * NVCUT.
    * NWSERVICE.
    * OFCPFWSVC.
    * OUTPOST
    * OP_MON.
    * PAVFIRES.
    * PAVFNSVR.
    * PAVKRE.
    * PAVPROT.
    * PAVPROXY.
    * PAVPRSRV.
    * PAVSRV51.
    * PAVSS.
    * PCCGUIDE.
    * PCCIOMON.
    * PCCNTMON.
    * PCCPFW.
    * PCCTLCOM.
    * PCTAV.
    * PERSFW.
    * PERTSK.
    * PERVAC.
    * PNMSRV.
    * POP3TRAP.
    * POPROXY.
    * PREVSRV.
    * PSIMSVC.
    * QHM32.
    * QHONLINE.
    * QHONSVC.
    * QHPF.
    * QHWSCSVC.
    * RAVMON.
    * RAVTIMER.
    * AVGNT
    * AVCENTER.
    * RFWMAIN.
    * RTVSCAN.
    * RTVSCN95.
    * RULAUNCH.
    * SALITY
    * SAVADMINSERVICE.
    * SAVMAIN.
    * SAVPROGRESS.
    * SAVSCAN.
    * SCANNINGPROCESS.
    * CUREIT
    * SDHELP.
    * SHSTAT.
    * SITECLI.
    * SPBBCSVC.
    * SPHINX.
    * SPIDERCPL.
    * SPIDERML.
    * SPIDERNT.
    * SPIDERUI.
    * SPYBOTSD.
    * SPYXX.
    * SS3EDIT.
    * STOPSIGNAV.
    * SWAGENT.
    * SWDOCTOR.
    * SWNETSUP.
    * SYMLCSVC.
    * SYMPROXYSVC.
    * SYMSPORT.
    * SYMWSC.
    * SYNMGR.
    * TAUMON.
    * TBMON.
    * AVAST
    * TFAK.
    * THAV.
    * THSM.
    * TMAS.
    * TMLISTEN.
    * TMNTSRV.
    * TMPFW.
    * TMPROXY.
    * TNBUTIL.
    * TRJSCAN.
    * UP2DATE.
    * VBA32ECM.
    * VBA32IFS.
    * VBA32LDR.
    * VBA32PP3.
    * VBSNTW.
    * VCHK.
    * VCRMON.
    * VETTRAY.
    * VIRUSKEEPER.
    * VPTRAY.
    * VRFWSVC.
    * VRMONNT.
    * VRMONSVC.
    * VRRW32.
    * VSECOMR.
    * VSHWIN32.
    * VSMON.
    * VSSERV.
    * VSSTAT.
    * WATCHDOG.
    * WEBPROXY.
    * WEBSCANX.
    * WEBTRAP.
    * WGFE95.
    * WINAW32.
    * WINROUTE.
    * WINSS.
    * WINSSNOTIFY.
    * WRCTRL.
    * XCOMMSVR.
    * ZAUINST
    * ZLCLIENT
    * ZONEALARM

El gusano también termina determinados procesos que cargan los siguientes módulos en memoria:

    * DWEBLLIO
    * DWEBIO

... y borra los archivos que tengas las cadenas:

    * VDB
    * AVC
    * KEY

Finalmente, para poder descargar instrucciones o malwares en los sistemas infectados el gusano verifica los siguientes dominios:

    * http://www.hotelkalingaindore.com/logo[XXXXX] --> ubicado en la India
    * http://www.lasercareindia.com/main[XXXXXX] --> ubicado en la India

Estos sitios han sido comprometidos y el autor o autores de este gusano les han insertado archivos arbitrarios.

Método de Propagación

El gusano enumera los recursos de la red local (LAN) usando el API WNetOpenEnumA. En caso de hallarlos busca los archivos ejecutables y los infecta.

Verifica las unidades de almacenamiento removibles y les copia un archivo infectado notepad.exe o winmime.exe con uno de los siguientes nombres:

    * [Nombre_aleatorio].exe
    * [Nombre_aleatorio].cmd
    * [Nombre_aleatorio].pif

Crea un archivo autorun.inf para ejecutar el gusano cada vez que se inserte una unidad de almacenamiento extraíble en otro equipo.

El gusano evita infectar archivos que contengan las siguientes cadenas:

    * _AVPM.
    * A2GUARD.
    * AAVSHIELD.
    * AVAST
    * ADVCHK.
    * AHNSD.
    * AIRDEFENSE
    * ALERTSVC
    * ALOGSERV
    * ALSVC.
    * AMON.
    * ANTI-TROJAN.
    * AVZ.
    * ANTIVIR
    * APVXDWIN.
    * ARMOR2NET.
    * ASHAVAST.
    * ASHDISP.
    * ASHENHCD.
    * ASHMAISV.
    * ASHPOPWZ.
    * ASHSERV.
    * ASHSIMPL.
    * ASHSKPCK.
    * ASHWEBSV.
    * ASWUPDSV.
    * ATCON.
    * ATUPDATER.
    * ATWATCH.
    * AVCIMAN.
    * AVCONSOL.
    * AVENGINE.
    * AVESVC.
    * AVGAMSVR.
    * AVGCC.
    * AVGCC32.
    * AVGCTRL.
    * AVGEMC.
    * AVGFWSRV.
    * AVGNT.
    * AVGNTDD
    * AVGNTMGR
    * AVGSERV.
    * AVGUARD.
    * AVGUPSVC.
    * AVINITNT.
    * AVKSERV.
    * AVKSERVICE.
    * AVKWCTL.
    * AVP.
    * AVP32.
    * AVPCC.
    * AVPM.
    * AVAST
    * AVSERVER.
    * AVSCHED32.
    * AVSYNMGR.
    * AVWUPD32.
    * AVWUPSRV.
    * AVXMONITOR9X.
    * AVXMONITORNT.
    * AVXQUAR.
    * BDMCON.
    * BDNEWS.
    * BDSUBMIT.
    * BDSWITCH.
    * BLACKD.
    * BLACKICE.
    * CAFIX.
    * CCAPP.
    * CCEVTMGR.
    * CCPROXY.
    * CCSETMGR.
    * CFIAUDIT.
    * CLAMTRAY.
    * CLAMWIN.
    * CLAW95.
    * CUREIT
    * DEFWATCH.
    * DRVIRUS.
    * DRWADINS.
    * DRWEB32W.
    * DRWEBSCD.
    * DRWEBUPW.
    * DWEBLLIO
    * DWEBIO
    * ESCANH95.
    * ESCANHNT.
    * EWIDOCTRL.
    * EZANTIVIRUSREGISTRATIONCHECK.
    * F-AGNT95.
    * FAMEH32.
    * FILEMON
    * FIRESVC.
    * FIRETRAY.
    * FIREWALL.
    * FPAVUPDM.
    * F-PROT95.
    * FRESHCLAM.
    * EKRN.
    * FSAV32.
    * FSAVGUI.
    * FSBWSYS.
    * F-SCHED.
    * FSDFWD.
    * FSGK32.
    * FSGK32ST.
    * FSGUIEXE.
    * FSMA32.
    * FSMB32.
    * FSPEX.
    * FSSM32.
    * F-STOPW.
    * GCASDTSERV.
    * GCASSERV.
    * GIANTANTISPYWAREMAIN.
    * GIANTANTISPYWAREUPDATER.
    * GUARDGUI.
    * GUARDNT.
    * HREGMON.
    * HRRES.
    * HSOCKPE.
    * HUPDATE.
    * IAMAPP.
    * IAMSERV.
    * ICLOAD95.
    * ICLOADNT.
    * ICMON.
    * ICSSUPPNT.
    * ICSUPP95.
    * ICSUPPNT.
    * IFACE.
    * INETUPD.
    * INOCIT.
    * INORPC.
    * INORT.
    * INOTASK.
    * INOUPTNG.
    * IOMON98.
    * ISAFE.
    * ISATRAY.
    * ISRV95.
    * ISSVC.
    * KAV.
    * KAVMM.
    * KAVPF.
    * KAVPFW.
    * KAVSTART.
    * KAVSVC.
    * KAVSVCUI.
    * KMAILMON.
    * KPFWSVC.
    * MCAGENT.
    * MCMNHDLR.
    * MCREGWIZ.
    * MCUPDATE.
    * MCVSSHLD.
    * MINILOG.
    * MYAGTSVC.
    * MYAGTTRY.
    * NAVAPSVC.
    * NAVAPW32.
    * NAVLU32.
    * NAVW32.
    * NEOWATCHLOG.
    * NEOWATCHTRAY.
    * NISSERV
    * NISUM.
    * NMAIN.
    * NOD32
    * NORMIST.
    * NOTSTART.
    * NPAVTRAY.
    * NPFMNTOR.
    * NPFMSG.
    * NPROTECT.
    * NSCHED32.
    * NSMDTR.
    * NSSSERV.
    * NSSTRAY.
    * NTRTSCAN.
    * NTOS.
    * NTXCONFIG.
    * NUPGRADE.
    * NVCOD.
    * NVCTE.
    * NVCUT.
    * NWSERVICE.
    * OFCPFWSVC.
    * OUTPOST
    * OP_MON.
    * PAVFIRES.
    * PAVFNSVR.
    * PAVKRE.
    * PAVPROT.
    * PAVPROXY.
    * PAVPRSRV.
    * PAVSRV51.
    * PAVSS.
    * PCCGUIDE.
    * PCCIOMON.
    * PCCNTMON.
    * PCCPFW.
    * PCCTLCOM.
    * PCTAV.
    * PERSFW.
    * PERTSK.
    * PERVAC.
    * PNMSRV.
    * POP3TRAP.
    * POPROXY.
    * PREVSRV.
    * PSIMSVC.
    * QHM32.
    * QHONLINE.
    * QHONSVC.
    * QHPF.
    * QHWSCSVC.
    * RAVMON.
    * RAVTIMER.
    * AVGNT
    * AVCENTER.
    * RFWMAIN.
    * RTVSCAN.
    * RTVSCN95.
    * RULAUNCH.
    * SALITY
    * SAVADMINSERVICE.
    * SAVMAIN.
    * SAVPROGRESS.
    * SAVSCAN.
    * SCANNINGPROCESS.
    * CUREIT
    * SDHELP.
    * SHSTAT.
    * SITECLI.
    * SPBBCSVC.
    * SPHINX.
    * SPIDERCPL.
    * SPIDERML.
    * SPIDERNT.
    * SPIDERUI.
    * SPYBOTSD.
    * SPYXX.
    * SS3EDIT.
    * STOPSIGNAV.
    * SWAGENT.
    * SWDOCTOR.
    * SWNETSUP.
    * SYMLCSVC.
    * SYMPROXYSVC.
    * SYMSPORT.
    * SYMWSC.
    * SYNMGR.
    * TAUMON.
    * TBMON.
    * AVAST
    * TFAK.
    * THAV.
    * THSM.
    * TMAS.
    * TMLISTEN.
    * TMNTSRV.
    * TMPFW.
    * TMPROXY.
    * TNBUTIL.
    * TRJSCAN.
    * UP2DATE.
    * VBA32ECM.
    * VBA32IFS.
    * VBA32LDR.
    * VBA32PP3.
    * VBSNTW.
    * VCHK.
    * VCRMON.
    * VETTRAY.
    * VIRUSKEEPER.
    * VPTRAY.
    * VRFWSVC.
    * VRMONNT.
    * VRMONSVC.
    * VRRW32.
    * VSECOMR.
    * VSHWIN32.
    * VSMON.
    * VSSERV.
    * VSSTAT.
    * WATCHDOG.
    * WEBPROXY.
    * WEBSCANX.
    * WEBTRAP.
    * WGFE95.
    * WINAW32.
    * WINROUTE.
    * WINSS.
    * WINSSNOTIFY.
    * WRCTRL.
    * XCOMMSVR.
    * ZAUINST
    * ZLCLIENT
    * ZONEALARM

Y agrega la siguiente entrada al archivo %Windir%system.ini:

[MCIDRV_VER]

Otros Detalles

El gusano infecta Windows 98/Me/NT/2000/XP/Vista y Server 2003 desarrollado en ensamblador con una extensión de 69,632 bytes y esta cifrado con rutinas propias.

11
La taberna del BIT / Desconectado
« en: Viernes 20 de Febrero de 2009, 20:19 »
El día martes 17 de febrero sufrí un accidente en mi moto y me fracturé la muñeca derecha, por tal caso estaré incapacitado por 1 mes, de tal modo no podré entrar mucho a internet y al foro, aunque de la empresa piensan conseguirme un huawey en tal caso podré trabajar a gusto.

Muchas gracias.

12
Python / Un Feed RSS
« en: Martes 17 de Febrero de 2009, 00:08 »
Pues ando jugando últimamente con el pynotify y pues acá dejo este pequeño lector de feeds Atom.
Código: Python
  1. #!/usr/bin/env python
  2. # -*- coding: cp1252 -*-
  3. #Desarrollado por RadicalEd
  4. import feedparser
  5. import pynotify
  6. import urllib2, urllib
  7. import time
  8. import re
  9.  
  10. class FeedRSS():
  11.  #Inicializamos valores
  12.  def __init__ (self, rss, blog):
  13.      self.blog = blog
  14.      #Nos conectamos al feed del blog
  15.      self.rss = feedparser.parse(rss)
  16.      #Extraemos lo que necesitamos
  17.      self.title = self.rss.entries[0].title
  18.      self.link = self.rss.entries[0].link
  19.  
  20.  #Vamos a convertir los links grandes en pequeños
  21.  def mostrar (self, tinyurl = 'http://tinyurl.com/create.php', nuevo=''):
  22.      #Los datos a envíar en el campo url del formulario
  23.      data = urllib.urlencode([('url', self.link)])
  24.      #Envíamos los datos
  25.      req = urllib2.Request(tinyurl)
  26.      pagina = urllib2.urlopen(req, data)
  27.      #Al recibir los datos los empezamos a leer
  28.      while True:
  29.          data = pagina.read(1024)
  30.          if not len(data):
  31.              break
  32.          nuevo += data
  33.  
  34.      #Con expresiones regulares buscamos cada dato que tenga la linea <b>http://tinyurl.com/
  35.      r = re.compile('<b>http://tinyurl.com/([a-zA-Z0-9]+)</b>',re.S)
  36.  
  37.      #Buscamos en todo el source de la pagina
  38.      x = r.findall(nuevo)
  39.  
  40.      #Este sera el mensaje a mostrar en el notificador
  41.      msg = "%sn<a href='http://tinyurl.com/%s'>http://tinyurl.com/%s</a>" % (self.title, x[0], x[0])
  42.  
  43.      if not pynotify.init('Al no iniciarse'):
  44.          sys.exit(1)
  45.  
  46.      #Mostramos la Notificación
  47.      n = pynotify.Notification(self.blog,msg)
  48.      n.set_timeout(15000) #Que se muestre el mensaje durante 15 segundos
  49.      n.show()
  50.  
  51.      #Sino se muestra
  52.      if not n.show():
  53.          print "Fallo al mostrar la info"
  54.          sys.exit(1)
  55.  
  56. #Blogs de ejemplo
  57. rp = FeedRSS('http://radicalpython.blogspot.com/feeds/posts/default', 'RadicalPython')
  58. rp.mostrar()
  59. wb = FeedRSS('http://willy-n-billy.blogspot.com/feeds/posts/default', 'Willy-n-Billy')
  60. wb.mostrar()
  61. mb = FeedRSS('http://mbrenes.blogspot.com/feeds/posts/default', '{ Blog de Shakka }')
  62. mb.mostrar()
  63. lm = FeedRSS('http://elladodelmal.blogspot.com/feeds/posts/default', 'El lado del mal')
  64. lm.mostrar()
  65.  

13
Python / Un script para vehículos
« en: Viernes 13 de Febrero de 2009, 20:03 »
Lo copio tal cual de mi blog =D.
Este script lo desarrollé por que hace algún tiempo tenía en mente como controlar las finanzas con mi bebé (moto honda eco deluxe), al principio lo hicé con una DB e insertando los datos a mano, pero con el tiempo quería saber cuanto me quedaba de gasolina y aceite y más o menos cuando debía cargar, diaríamente estoy gastando alrededor de 100km.
Código: SQL
  1. CREATE TABLE IF NOT EXISTS `gasto` (
  2. `id int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. fecha date NOT NULL,
  4. precio varchar(6) NOT NULL,
  5. kilometraje varchar(5) NOT NULL,
  6. gasto varchar(25) NOT NULL,
  7. PRIMARY KEY  (`id`)
  8. );
  9.  
  10.  
Código: Python
  1. #!/usr/bin/env python
  2. #Desarrollado por RadicalEd
  3.  
  4. import sys, os
  5. import pynotify, MySQLdb
  6.  
  7. #Tomado nuevamente del blog de Daniel Garcia Moreno
  8. comando = 'zenity --text "Kilometraje actual" --entry'
  9. entrada, salida = os.popen2(comando)
  10. kmact = salida.read()
  11. kmact = int(kmact.strip())#Lo convertimos a entero
  12.  
  13. #Nos conectamos a la DB
  14. conn = MySQLdb.connect(host="localhost", user="usdist", passwd="clio1214", db="paginafiles")
  15. #Creamos un cursor para ejecutar las sentencias SQL
  16. cursor = conn.cursor()
  17. #El script a ejecutar
  18. cursor.execute('SELECT * FROM gasto')
  19. registros = int(cursor.rowcount)
  20.  
  21. #Instanciamos variables
  22. #Se que dieciocho mil pesos en mi moto son 450km de gasolina (100%)
  23. dinerogas, kmgasolina = 18000, 450.0
  24. #Se que trece mil cuatrocientos en mi moto son 1500km de aceite (100%)
  25. dineroace, kmaceite = 13400, 1500.0
  26. gasolina = 0
  27. aceite = 0
  28. mostrar = '' #Mensaje a mostrar
  29.  
  30. #Campos de la DB
  31. for x in range(registros):
  32.   row = cursor.fetchone()
  33.   gasto = row[4]  #Tipo de gasto
  34.   #Para hacer la suma de cuanto llevamos en GASOLINA y en ACEITE
  35.   if gasto == 'GASOLINA':
  36.       gasolina += int(row[2])
  37.       ultkmgas = int(row[3])  #Ultimo kilometraje gasolina
  38.       ultfechagas = row[1] #Ultima fecha gasolina
  39.   elif gasto == 'ACEITE':
  40.       aceite += int(row[2])
  41.       ultkmace = int(row[3])  #Ultimo kilometraje aceite
  42.       ultfechaace = row[1] #Ultima fecha aceite
  43.  
  44. #Calculos
  45. gastogas = kmact - ultkmgas  #Gasto gasolina
  46. kmrestgas = kmgasolina - gastogas  #Kilometros restantes gasolina
  47. porcentgas = (kmrestgas / kmgasolina) * 100  #Porcentaje restante gasolina
  48. gastoace = kmact - ultkmace  #Gasto aceite
  49. kmrestace = kmaceite - gastoace  #Kilometros restantes aceite
  50. porcentace = (kmrestace / kmaceite) * 100  #Porcentaje restante gasolina
  51.  
  52. #Alertas para gasolina y aceite
  53. if kmrestgas <= 20:
  54.   mostrar += 'Favor tanquear a tiempo, solo queda el %d%s restante de gasolina' % (porcentgas, chr(37))
  55.  
  56. if kmrestace <= 100:
  57.   mostrar += 'nnFavor cambiar aceite a tiempo, solo queda el %d%s restante de este' % (porcentace, chr(37))
  58.  
  59. mostrar += "nnHas gastado %dkm en Aceite, te queda un %d%s osea %dkm" % (gastoace, porcentace, chr(37), kmrestace)
  60. mostrar += "nnHas gastado %dkm en Gasolina, te queda un %d%s osea %dkm" % (gastogas, porcentgas, chr(37), kmrestgas)
  61.  
  62. if __name__ == '__main__':
  63.   if not pynotify.init("Al no iniciarse"):
  64.       #Nos salimos
  65.       sys.exit(1)
  66.  
  67. n = pynotify.Notification(mostrar)
  68. n.set_timeout(15000) #Que se muestre el mensaje durante 15 segundos
  69.  
  70. #Sino se muestra
  71. if not n.show():
  72.   print "Fallo al mostrar la info"
  73.   sys.exit(1)
  74.  

La insercción de los datos no tiene nada que ver con el script, por eso no la pusé, ese paso siempre lo hago por phpMyAdmin :P
Para que el programa funcione cuando inicia sesión por lo menos en Linux Ubuntu van a Sistema --> Preferencias --> Sesiones --> Programas de inicio; en esta parte colocan el script. Acá un videito de como funciona la vaina.

Ojala les sirva de algo, en mi blog deje un video para ver el funcionamiento.
http://radicalpython.blogspot.com/2009/ ... otify.html

PD. No funciona en Windows :P jejeje

14
Virus / Virux
« en: Viernes 13 de Febrero de 2009, 15:01 »
Información extraida de Alerta Antivirus

Datos Técnicos
Peligrosidad: 3 - Media
Difusión: Baja
Fecha de Alta:13-02-2009
Última Actualización:13-02-2009
Daño: Alto
[Explicación de los criterios]
Dispersibilidad:   Alto
Nombre completo: Virus.W32/Virux
Tipo: [Virus] - Virus Genérico, normalmente se propaga infectando archivos ejecutables.
Plataforma: [W32] - Ejecutable PE (.EXE, .SCR, .DLL) que corre en Windows de 32 bits: 95, 98, Me, NT, 2000, XP, 2003
Alias:PE_VIRUX.A (Trend Micro), Win32/Virut.E (AhnLab), Win32/Virut.17408.A virus (Computer Associates), Win32.Virut.56 (Doctor Web), W32/Virut.AI (FRISK Software), Virus:Win32/Virut.BM (Microsoft), W32/Scribble-A (Sophos)
Detalles
Método de Infección/Efectos

El virus crea el evento Vx_5. Ajustando los privilegios del sistema para darse a sí mismo privilegios de depuración (debug).

Se inyecta en el proceso WINLOGON.EXE. Creando un hilo de ejecución para ejecutar su rutina de puerta trasera y deshabilitar la protección de archivos de Windows.

Crea la siguiente entrada de registro:

Clave: HKEY_USERS.DEFAULTSOFTWAREMicrosoftWindowsCurrentVersionExplorer
Valor: "UpdateHost = "{valor binario aleatorio}""

También crea la siguiente entrada de registro para evitar el cortafuegos de Windows:

Clave: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSharedAccess

ParametersFirewallPolicyDomainProfileAuthorizedApplicationsList

Valor: "??%System%winlogon.exe = "??%System%winlogon.exe:*:enabled:@shell32.dll,-1""

Nota: %System% es una variable que hace referencia al directorio del sistema de Windows.
Por defecto es C:WindowsSystem (Windows 95/98/Me), C:WinntSystem32 (Windows NT/2000), o C:WindowsSystem32 (Windows XP).

Esta rutina permite hacer descargas desde el servidor IRC al que se conecte.

Puede deshabilitar el System File Checker(SFC) del sistema. SFC es una característica de seguridad para Windows, para revertir modificaciones no autorizadas realizadas en archivos críticos del sistema. Deshabilitar este servicio SFC permite a este virus infectar archivos críticos del sistema y/o aplicaciones.

El virus infecta los archivos del sistema añadiendo su código. Mapea NTOSKRNL.EXE en memoria para permitirse a sí mismo enganchar los procesos de creación de APIs.

Infecta archivos del siguiente tipo:

    * .EXE
    * .SRC

No infecta archivos que contengan las siguientes cadenas de carácteres en su nombre:

    * OTSP
    * WC32
    * WCUN
    * WINC

No infecta archivos con las siguientes características:

    * archivos .DLL
    * archivos PE con una sección llamada "_win"
    * archivos ejecutables MZ con una marca de infección en el offset 0x20 o 0x1c

Infecta archivos de secuencias de comandos si la extensión es:

    * .ASP
    * .HTM
    * .PHP

Una vez que encuentra un archivo de sencuencia de comandos crea una marca para infectarlo con un iFrame. Abre los archivos marcados y comprueba que exista una cierta cadena de caracteres. Si encuentra la cadena infecta el archivo.

Busca la cadena </BODY> en un archivo de secuencia de comandos. Si la encuentra, infecta el achivo insertando código iFrame malicioso con el siguiente códgigo:

 <iframe src="http://[eliminado].pl/rc" with=1 height=2 style="border:0"></iframelt>

Los archivos infectados son localizados como copias del virus y los archivos de secuencia de comandos como HTML_IFRAME.NV.

Monitoriza la siguientes APIs para conectar todas las instancias de NTDLL.DLL

    * CreateFile
    * CreateProcess
    * CreateProcessEx
    * OpenFile
    * QueryInformationProcess

Esta API es utilizada para ejecutar o acceder al archivo, así un fichero será infectado si es ejecutado o leído.

Infecta los archivos ejecutables de varias formas: Anexándose al principio del fichero ejecutable, anexándose al final, introduciendo sus tipos de código en las partes sin contenido del fichero (conocido por infección de cavidad) o por ocultación del punto de entrada (del inglés, Entry Point Ofuscation, EPO). También usa una rutina de encriptación multicapa.

Se conecta a uno de los siguientes servidores IRC usanco el puerto 80:

    * [eliminado]f.pl
    * [eliminado].ircgalaxy.pl

Esta rutina se ejecuta cada 30 segundos, generando un NICK y USER aleatorio por cada intento.

Una vez conectado, se une a un canal que recibe y ejectua comandos en el sistema afectado, por lo que el ordenador infectado puede llegar a funcionar como una BotNet.

El atacante remoto ejecuta comandos en el sistema infectado para descargar y ejecutar código maliciosos de las siguietes URL:

    * http://[eliminado].cn/ex/0032.exe - detectado como TROJ_INJECTOR.AR

Esta rutina efectivamente compromete el sistema de seguridad del sistema afectado. La URL a la que se conecta, y el malware descargado puede cambiar dependiendo de las solicitudes del usuario remoto.

El virus modifica el archivo HOST, insertando la siguiente entrada al principo del fichero

    * 127.0.0.1 [eliminado]F.pl

NOTA: El fichero "Hosts" normalmente se encuentra ubicado en "%System%driversetc".
Método de Propagación

El virus se propaga dejando copias de sí mismo en varios ficheros ejecutables .EXE y .SCR.

Puede llegar al sistema al ejecutar un fichero infectado, o desde Internet al visitar una página Web que contiene un iframe que enlaza a una página maliciosa.

15
Virus / IVP
« en: Lunes 9 de Febrero de 2009, 15:29 »
Información extraida de Alerta Antivirus

Peligrosidad: 3 - Media
Difusión: Baja
Fecha de Alta:09-02-2009
Última Actualización:09-02-2009
Daño: Alto
[Explicación de los criterios]
Dispersibilidad: Alto
Nombre completo: Worm-Backdoor.W32/Agent.IVP@MM+IRC    
Tipo: [Worm-Backdoor] - 'Malware' con capacidades de gusano y de puerta trasera
Plataforma: [W32] - Ejecutable PE (.EXE, .SCR, .DLL) que corre en Windows de 32 bits: 95, 98, Me, NT, 2000, XP, 2003 y Vista
Mecanismo principal de difusión: [MM+IRC] - Se difunde por envío masivo de correo a las direcciones recolectadas en la máquina y a través de canales IRC.
Tamaño (bytes): 29658
Alias:Troj/Agent.IVP (PerAntivirus), Troj/Agent-IVP (Sophos)
Detalles
Método de Infección/Efectos

El equipo se infecta con este gusano al ejecutar el usuario el fichero que lo contiene que recibe a través de canales IRC o en correos de SPAM.

Cuando se ejecuta se copia a si mismo a la siguiente ubicación:

    * %UserProfile%Application Dataeehleehl.exe

Nota: %UserProfile% es una variable que hace referencia al directorio del perfil del usuario actual.
Por defecto es C:Documents and Settings{- usuario_actual -} (Windows NT/2000/XP).

A continuación copia los siguientes archivos al equipo infectado:

    * %UserProfile%Application Dataeehlaoob.dll
    * %UserProfile%Application Dataeehleehl.dll

Crea a continuación la siguiente entrada del registro de Windows para ejecutarse de nuevo con cada reinicio del sistema:

Clave: HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun

Valor: eehl = "%UserProfile%Application Dataeehleehl.exe"

Al estar activado en segundo plano el sistema infectado, su componente Backdoor, a través de puertos TCP abiertos, permite que intrusos puedan ingresar al sistema desde canales del IRC (Internet Chat Relay) y poder ejecutar, entre otras, las siguientes acciones:

    * Capturar información crítica del sistema.
    * Descargar y ejecutar archivos con códigos arbitrarios.
    * Iniciar y terminar procesos en ejecución.
    * Controlar el sistema en forma remota.

Método de Propagación

Al siguiente inicio del equipo después de su infección, el gusano captura los buzones de correo de la Libreta de Direcciones de Windows (WAB) y asuntos de mensajes contenidos de los sistemas infectados a los cuales le adjunta el archivo eehl.exe e inicia su rutina de envio MultiSPAM.
Otros detalles

    * Está desarrollado en Assembler.
    * El código malicoso tiene un tamaño de 29658 bytes.

16
PHP / [Código Fuente] Software para inventarios
« en: Miércoles 4 de Febrero de 2009, 16:31 »
Tal cual como lo hicé con el Software de control de acceso de personal les dejo otro programa hechó para la compaía en la que trabajo que les facilitará el trabajo a la hora de hacer inventarios de bodega.

Está probado recientemente hasta el 31 de enero y quedó funcionando al full se puede mejorar en un 1000% ya que yo no manejo POO en PHP.

Autor: RadicalEd

http://radicalpython.blogspot.com

17
Virus / Sadra
« en: Martes 20 de Enero de 2009, 16:35 »
Información extraida de Alerta Antivirus
Datos Técnicos
Peligrosidad: 3 - Media
Difusión: Baja
Fecha de Alta:19-01-2009
Última Actualización:20-01-2009
Daño: Alto
[Explicación de los criterios]
Dispersibilidad:   Alto
Nombre completo: Worm.W32/Sadra@US    
Tipo: [Worm] - Programa que se replica copiándose entero (sin infectar otros ficheros) en la máquina infectada, y a través de redes de ordenadores
Plataforma: [W32] - Ejecutable PE (.EXE, .SCR, .DLL) que corre en Windows de 32 bits: 95, 98, Me, NT, 2000, XP, 2003
Mecanismo principal de difusión: [US] - Unidades del sistema (locales, mapeadas, extraíbles).
Alias:Win32/Sadra.A (Computer Associates), Trojan.Win32.Agent.avqc (Kaspersky)
Detalles

Método de Infección/Efectos

Cuando es ejecutado por primera vez, Win32/Sadra crea las siguientes entradas en el registro de Windows para permitir ser ejecutado en cada inicio del sistema:

Clave:HKLMSoftwareMicrosoftWindowsCurrentVersionRun

Valor:Sandra Dewi Bugil = "C:WindowsSandra Dewi Bugil.exe"

El gusano se copia a sí mismo en las siguientes rutas:

    * C:Sandra Dewi Bugil.exe
    * C:WindowsSandra Dewi Bugil.exe
    * C:WindowsSystem32Sandra Dewi Bugil.exe
    * C:Documents and Settings%usuario%Start MenuProgramsStartupSandra Dewi Bugil.exe

Nota: Si en el sistema no existieran los directorios C:WindowsSystem32 o C:Documents and Settings%usuario%Start MenuProgramsStartup el copiado de ficheros fallaría.

El gusano realiza las siguientes modificaciones al sistema:

Clave:HKLMSoftwareMicrosoftWindowsNTCurrentVersionWinlogon

Valor:LegalNoticeCaption = "Cinta Ditolak VIRUS Bertindak.::CREATION BUDI DARMA::."

Clave:HKLMSoftwareMicrosoftWindowsNTCurrentVersionWinlogon

Valor:LegalNoticeText = "Sangat sakit rasanya apabila cinta kita ditolak oleh

seseorang, pada zaman dahulu orang menggunakan fasilitas dukun sebagai media untuk

mendapatkan cintanya. Seiring dengan berkembangnya Teknokogi Informasi media yang  

digunakan untuk mendapatkan cintanya adalah VIRUS"

El gusano cambia el texto de Internet Explorer:

Imagen del Internet Explorer tras la ejecución del gusano

...con la siguiente entrada del registro:

Clave:HKCUSoftwareMicrosoftInternet ExplorerMain
Valor:Window Title = "::CREATION::BUDI::DARMA::"

Cambia el dueño del sistema a "Dewi Bugil" y la organización a "Sandra" con las siguiente entradas del registro:

Clave:HKLMSOFTWAREMicrosoftWindows NTCurrentVersion

Valor:RegisteredOwner = "Dewi Bugil"

Valor:RegisteredOrganization = "Sandra"

Deshabilita el intérprete de comandos, el editor del registro, el administrador de tareas y la utilidad de configuración del sistema de Microsoft:

Clave:HKCUSoftwarePoliciesMicrosoftWindowssystem

Valor:DisableCMD = 1

Clave:HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesSystem

Valor:DisableRegistryTools = 1

Valor:DisableTaskMgr = 1

Valor:DisableMsConfig = 1

Elimina los iconos "Ejecutar", "Buscar", "Panel de control", "Programas" y "Cerrar Sesion" como se muestra a continuación:

Imagen de como queda el menu de inicio

Clave:HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer

Valor:NoRun = 1

Clave:HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer

Valor:NoFind = 1

Clave:HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer

Valor:NoControlPanel = 1

Clave:HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer

Valor:NoStartMenuMorePrograms = 1

Clave:HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer

Valor:StartMenuLogoff = 1

Clave:HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer

Valor:NoClose = 1

Elimina las opciones de carpeta de los menús del explorador de Windows y el panel de control:

Clave:HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer

Valor:NoFolderOptions = 1

Deshabilita la posibilidad de ver los contenidos de las unidades de Mi PC:

Clave:HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer

Valor:NoViewOnDrive = 1

Elimina el acceso a los enlaces simbólicos en el explorador de Windows y el escritorio:

Clave:HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer

Valor:NoViewContextMenu = 1

Muestra los ficheros y carpetas ocultos:

Clave:HKCUSoftwareMicrosoftWindowsCurrentVersionAdvanced

Valor:Hidden = 1

Efectos

Win32/Sadra muestra una serie de cuadros de diálogo por pantalla, comenzando por el siguiente:

Imagen inicial

Si el usuario pulsa los botones "Keluar" o "Exit" , el gusano muestra un aviso que pide al usuario que se envien comentarios a la dirección de correo: ???9989@yahoo.com

Si, en esta ventana, el usuario pulsa el boton "Ok" el gusano comienza un reinicio del sistema en 60 segundos y muestra un mensaje como el siguiente, que básicamente dice "Pobre de ti.".

Ventana de dialogo

Tras el reinicio del sistema Win32/Sadra muestra un nuevo mensaje en indonesio.

Método de Propagación

Win32/Sadra se copia a sí mismo en todas las unidades tanto fijas como extraíbles disponibles en el sistema. De esta manera, intenta dejar una copia de ejecutable del gusano en cada unidad que encuentra, junto con un fichero "autorun.inf" que automáticamente ejecuta el gusano cuando esa unidad es accedida.

18
Virus / Samal
« en: Miércoles 14 de Enero de 2009, 18:04 »
Información extraida de Alerta Antivirus

Peligrosidad: 3 - Media
Difusión: Baja
Fecha de Alta:14-01-2009
Última Actualización:14-01-2009
Daño: Alto
[Explicación de los criterios]
Dispersibilidad:   Alto
Nombre completo: Worm.W32/Samal@DE    
Tipo: [Worm] - Programa que se replica copiándose entero (sin infectar otros ficheros) en la máquina infectada, y a través de redes de ordenadores
Plataforma: [W32] - Ejecutable PE (.EXE, .SCR, .DLL) que corre en Windows de 32 bits: 95, 98, Me, NT, 2000, XP, 2003
Mecanismo principal de difusión: [DE] - Se propaga a dispositivos extraíbles insertados o conectados en/al equipo afectado.
Alias:Salma.A (Panda Security)
Detalles
Método de Infección/Efectos

El gusano se copia a sí mismo creando los siguiente ficheros:

    * %System%SMMS.EXE
    * %System%infCSRSS.EXE
    * %System%infDISKINI.XP

Nota: %System% es una variable que hace referencia al directorio del sistema de Windows.
Por defecto es C:WindowsSystem (Windows 95/98/Me), C:WinntSystem32 (Windows NT/2000), o C:WindowsSystem32 (Windows XP).

Crea los siguiente archivos:

    * %System%SMMS.BAT
    * %ProgramFiles%emuleincoming[TRAFFIK]CRACK FOR WINDOWS.SIK

Nota: %ProgramFiles% es una variable que hace referencia al directorio de instalación por defecto de aplicaciones en sistemas Windows.
Por defecto es C:Archivos de Programa (Windows98/Me/2000/XP). También puede ser C:Program Files (Windows NT) y en instalaciones de Windows en inglés.

El segundo archivo, es el que atestigua que el ordenador está infectado por el gusano, y tiene el siguiente contenido:

Samael 3.0
%hora del sistema%
%fecha del sistema%
EN  

Crea el archivo AUTORUN.INF en todas las unidades del sistema para conseguir ejecutar automáticamente las copias del gusano cada vez que se acceda a alguna de ellas.

Samal modifica el archivo NTLDR del directorio raíz de la unidad C:. De esta manera, consigue que se muestren los mensajes mencionados previamente cuando se inicia el ordenador.

Crean las siguiente entrada de registro para ejecutarse automáticamente en cada reinicio del sistema:

Clave: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
Valor: Proyecto1 = %windir%smms.exe

Crea las siguientes entradas del registro como parte de su rutina de instalación

Clave: HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorer
UserAssist{75048700-EF1F-11D0-9888-006097DEACF9}Count
Valor: HRZR_EHACNGU
Valor: HRZR_EHACNGU:CRGbbyf.yax
Valor: HRZR_EHACNGU:P:Cebtenz SvyrfVaPgey5VaPgey5.rkr
Valor: HRZR_EHACNGU:VaPgey5.yax
Valor: HRZR_HVFPHG

En el siguiente reinicio del ordenador, antes de que el equipo se inicie aparecerá el siguiente mensaje:
"AH AH YOU DIN'T SAY THE MAGIC WORD:"

Traducido al castellano esta frase significa: "Ah ah no has dicho la palabra mágica"

Esta es una imagen del texto mostrado en pantalla:

Después de intentar introducir cualquier palabra 3 veces, mostrará el siguiente mensaje en inglés:
"Samael has come. This is the end."

Que traducido al castella significa: "Samael ha llegado. Es el fin"

Esta es una imagen del mensaje que se muestra

Después de los mensajes el ordenador no podrá reiniciarse. Y si se inicia de nuevo el ordenador, volverá a salir el primer mensaje.

Si la fecha de ordenador es distinta a 2009, no se mostrará ningún mensaje, pero el ordenador estará reiniciándose continuamente.
Método de Propagación

Se propaga realizando copias de sí mismo en todas las unidades del sistema. El nombre con el que se copia es INFO.EXE, y crea también un archivo AUTORUN.INF en todas las unidades para que la copia del gusano se ejecute automáticamente cada vez que se acceda a alguna de ellas.

19
La taberna del BIT / Feliz año a todos
« en: Martes 30 de Diciembre de 2008, 15:13 »
Pues como desde mañana me desconectaré del Internet, 'tons desde hoy les deseo un FELIZ AÑO NUEVO 2009 que la pasen super con sus familias y que se les cumpla todo en este nuevo año, los quiero un resto.

20
PHP / Nuevas variables no funcionan
« en: Martes 23 de Diciembre de 2008, 16:54 »
Hola chicos de SoloCodigo, tengo un problema bastante extraño, nunca me había pasado y pues no entiendo por qué es???
Tengo este código
Código: PHP
  1. $query_ro = "SELECT * FROM tbsolicitud_db WHERE con=".$soli;
  2. $result_ro = mysql_query($query_ro) or die(mysql_error());
  3.  
  4. if ($row_ro=mysql_fetch_array($result_ro))
  5. {
  6.   $con = $row_ro[0];
  7.   $ses = $row_ro[1];
  8.   $hg = $row_co[3];
  9.   $valor = $row_ro[6];
  10.   $con_usuario = $row_ro[2];
  11.   $concli = $row_ro[4];
  12.   $depi = $row_co[11];
  13.  
  14.  
Si doy un echo de esas variables me arroja los datos, pero si quiero crear una nueva variable:
Código: PHP
  1. $query_ro = "SELECT * FROM tbsolicitud_db WHERE con=".$soli;
  2. $result_ro = mysql_query($query_ro) or die(mysql_error());
  3.  
  4. if ($row_ro=mysql_fetch_array($result_ro))
  5. {
  6.   $con = $row_ro[0];
  7.   $ses = $row_ro[1];
  8.   $hg = $row_co[3];
  9.   $valor = $row_ro[6];
  10.   $con_usuario = $row_ro[2];
  11.   $concli = $row_ro[4];
  12.   $depi = $row_co[11];
  13.   $occ = $row_co[5]; //Nueva variable
  14.   $connew = $row_ro[0]; //Nueva variable con el mismo dato de la primera
  15.  
  16.  

Las dos últimas no toman los datos, no imprimen nada, alguién sabe porqué pasa esto???

21
PHP / No existe el directorio
« en: Lunes 15 de Diciembre de 2008, 22:00 »
Hola chicos de SoloCodigo, tengo un problema con una aplicación para recorrer un directorio, el .php lo tengo en /var/www/app/index.php y quiero recorrer el directorio /home/miuser/, lo hago con este código:
Código: PHP
  1. //index.php
  2. $p_directorio_det = '/home/usuario/';
  3. if (is_dir($p_directorio_det))
  4. {
  5.   echo "Si es un directorio";
  6.   if ($dh = opendir($p_directorio_det))
  7.   {
  8.     while (($archivo = readdir($dh)) !== false)
  9.     {
  10.       if ($archivo != "." && $archivo != "..")
  11.       {
  12.         $archivo_movimiento_fuente = $p_directorio_det.$archivo;
  13.        }
  14.      }
  15.    }
  16.  }
  17. }
  18. else
  19. {
  20.   echo "No es un directorio";
  21. }
  22.  
  23.  
Y me está imprimiendo diciendo que no es un directorio, alguien sabe por qué pasa esto???

Gracias Chao.

22
Python / Descarga Videos de YouTube
« en: Miércoles 3 de Diciembre de 2008, 19:23 »
Un pequeño script para descargar Videos del YouTube
Código: Python
  1. #!/usr/bin/env python
  2. #Probado con un video de Dragon Ball Z
  3. #http://es.youtube.com/watch?v=MJoAZPTiWBA
  4. #Desarrollado por RadicalEd
  5. import re, sys, urllib2
  6. #se toman los datos ingresados por la linea de comandos
  7. arg = sys.argv
  8. #obtenemos el fuente de la pagina
  9. s = urllib2.urlopen(arg[1]).read()
  10. #Con expresiones regulares se obtiene todo lo que venga despues del 'video_id='
  11. m = re.search('(?<=video_id=).*', s)
  12. video = m.group(0)
  13. #Quitamos la comilla simple o doble que haya al final
  14. video = video.replace("';", '')
  15. video = video.replace('";', '')
  16. flv = urllib2.urlopen('http://www.youtube.com/get_video?video_id='+video)
  17. #Guardamos el archivo
  18. archiflv = open('video.flv', 'w')
  19. archiflv.write(flv.read())
  20. archiflv.close()
  21. #La siguiente línea se puede descomentar si tienes un linux instalado con el paquete ffmpeg
  22. #os.system('ffmpeg -i video.flv video.avi')
  23.  

23
Virus / Nakhatar
« en: Viernes 28 de Noviembre de 2008, 22:06 »
Información extraida de: Alerta Antivirus

Datos Técnicos
Peligrosidad: 3 - Media
Difusión:   Baja
Fecha de Alta:28-11-2008
Última Actualización:28-11-2008
Daño: Alto
[Explicación de los criterios]
Dispersibilidad: Alto
Nombre completo: Worm.W32/Nakhatar@US    
Tipo: [Worm] - Programa que se replica copiándose entero (sin infectar otros ficheros) en la máquina infectada, y a través de redes de ordenadores

Plataforma: [W32] - Ejecutable PE (.EXE, .SCR, .DLL) que corre en Windows de 32 bits: 95, 98, Me, NT, 2000, XP, 2003
Mecanismo principal de difusión: [US] - Unidades del sistema (locales, mapeadas, extraíbles).
Tamaño (bytes): 289507
Alias: Nakhatar.A (Panda Security)
Detalles
Método de Infección/Efectos

Realiza las siguientes acciones:

    * Deshabilita los siguientes elementos:
          o Editor del Registro de Windows.
          o Administrador de Tareas, lo que impediría al usuario visualizar los procesos que están en ejecución.
          o Opciones de carpeta del Explorador de Windows, que impide acceder al menú de configuración de las carpetas.
    * Cuando el usuario intenta acceder al Editor del Registro de Windows, muestra un mensaje notificando al usuario que esta aplicación ha sido deshabilitada por el administrador y que se ponga en contacto con él. Cuando se acepta este mensaje, muestra un nuevo mensaje:
     
    * Por otra parte, si el usuario intenta ejecutar el Administrador de Tareas, muestra el siguiente mensaje:
     
    * Crea el archivo KHATARNAK.EXE en el directorio de sistema de Windows. Este archivo es una copia del gusano.
    * Crea las siguientes entradas en el Registro de Windows:

      Clave: HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun
      Valor: KHATARNAK Loader = %sysdir%KHATARNAK.EXE

      Mediante esta entrada, consigue ejecutarse cada vez que Windows se inicia.

      Clave: HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPolicies
      System
      Valor: DisableRegistryTools = 01, 00, 00, 00

      Deshabilita el Editor del Registro de Windows.

      Clave: HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPolicies
      System
      Valor: DisableTaskMgr = 01, 00, 00, 00

      Deshabilita el Administrador de Tareas.

      Clave: HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPolicies
      Explorer
      Valor: NoFolderOptions = 1

      No muestra la opción Opciones de Carpeta en el Explorador de Windows.
    * Modifica la siguiente entrada del Registro de Windows, para ejecutarse cada vez que Windows se inicia:

      Clave: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon
      Valor: Shell = Explorer.exe

      Cambia esta entrada por:

      Clave: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NT CurrentVersionWinlogon
      Valor: Shell = Explorer.exe KHATARNAK.exe

Método de Propagación

Este gusano se propaga creando copias de sí mismo en el directorio raíz de todas las unidades del sistema disponibles. Además, las copias de sí mismo tendrán el mismo nombre que las carpetas creadas en esos directorios.

Si en el directorio raíz de la unidad C: el usuario tiene una carpeta con el nombre DOCUMENTOS, creará una copia de sí mismo con el nombre DOCUMENTOS.EXE.
Otros detalles

Tiene un tamaño de 289507 bytes y está comprimido mediante Autoit.

24
La taberna del BIT / Feliz Cumpleaños Kev
« en: Miércoles 26 de Noviembre de 2008, 14:37 »
FELIZ CUMPLEAÑOS Kev, QUE LOS CUMPLAS HASTA EL AÑO 800000

25
Python / [Utilidad] DansGuardian Configurator
« en: Martes 25 de Noviembre de 2008, 23:05 »
DansGuardian Configurator es una aplicacion hecha en WXPython para dar un manejo sencillo al Web Filter Content DansGuardian el cual es un intermediario del proxy Squid.


Autor: Edo

http://radicalpython.blogspot.com

Páginas: [1] 2 3 ... 26