Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Temas - overxfl0w13

#1
Buenas a todos, hacía tiempo que no me pasaba por aquí, siempre es un placer :D.

Después de un fin de semana de descanso de exámenes y aprovechando la temática del proyecto de fin de carrera pensé en aplicar la misma técnica que empleo para topic detection a detección de malware.

El proceso muy por encima consiste en extraer la "semántica" (mediante word2vec) de las instrucciones de un conjunto de programas de entrenamiento P (y por tanto de un programa completo, si modelamos por ejemplo la semántica de un programa como una combinación lineal de las semánticas de las instrucciones que lo componen) para construir una representación en un espacio continuo n-dimensional junto con otras características como por ejemplo las DLLS y las funciones de las que hace uso, una medida de empaquetamiento (ponderando la entropía y la aparición de secciones que dejan ciertos packers) entre otras que se pueden tener en cuenta (de momento solo son esas).

Una vez se tienen las representaciones vectoriales de las muestras de entrenamiento (prototipos) se emplea clasificación por vecinos más cercanos (NearestCentroid) para determinar si un determinado programa es malware o no (semántica del programa más cercana a las muestras malware o a las muestras no malware).

El código lo podéis clonar de su propio repo:
https://github.com/overxfl0w/WinMalwareDetect

Instalad primero las dependencias mediante el setup.py . Cuando estén instaladas tendréis que entrenar el sistema con vuestras propias muestras (no paso los ficheros de entrenamiento porque ocupan bastante si lo entrenas con muchas muestras) tenéis que meter muestras malware en ./Train/Malware y muestras no malware en ./Train/NoMalware y después indicarle al sistema que queréis entrenar, en el usage se muestra la forma de hacerlo, pero básicamente tenéis que lanzar lo siguiente:

python WinMalwareDetector.py --train ./Train/Malware ./Train/NoMalware prototypes.trained model_w2v.mm ffunctions.mm

Cuando el sistema esté entrenado, ya podéis clasificar ejecutables indicándole al sistema que queréis predecir la clase de una muestra:

python WinMalwareDetector.py --predict EJECUTABLE.exe 1 prototypes.trained modelw2v.mm ffmodel.mm

Los 3 últimos parámetros son los ficheros generados durante el entrenamiento (si le cambiáis el nombre acordaos de ellos), y el 3º (el de valor 1) es el número de vecinos a tener en cuenta en la clasificación, podéis probar más de 1 valor si sois curiosos y si no dejadlo así.

Esto es lo necesario para poner en marcha la clasificación, podéis comprobar la precisión y otras medidas del sistema sin tener que hacer el entrenamiento, solo poned las muestras malware y no malware donde dije y lanzad lo siguiente:

python WinMalwareDetector.py --statistics -lou 1 ./Train/Malware ./Train/NoMalware

Con ello indicamos al sistema que queremos sacar estadísticas, haciendo leaving one out, comprobando la precisión entrenando con todas las muestras menos 1 y esa usarla como test para ver si acierta o no, para toda muestra, usando para eso 1 vecino más cercano. Todos los resultados que indiquen porcentajes están entre 0 y 1 (multiplicadlo por 100 xD).


Para que veáis las salidas del programa en los casos que os he comentado adjunto un par de imágenes:

Estadísticas:   https://i.gyazo.com/ab564e8c37a18c121215dfe8232aed8d.png
Clasificación:  https://i.gyazo.com/25c564b92a186c5200fc7395efd2f552.png
Predicción:     https://i.gyazo.com/eadb249589f7f663e6eaf1aa41d180cb.png

#2
Seguridad / Problema Sqli
27 Noviembre 2012, 21:19 PM
Buenas compañeros.
*Mensaje Omitido*
#3
Java / Problema Fecha Anterior
25 Noviembre 2012, 21:52 PM
El ejercicio consiste en decir, dadas dos fechas, cual es anterior, haciendo comprobaciones anteriores para saber si son correctas,contando años bisiestos.

Si la primera fecha es incorrecta la salida será: Primera fecha incorrecta.
Si la segunda fecha es incorrecta la salida será: Segunda fecha incorrecta.
Si son iguales: Representan el mismo día.
Si la primera fecha es anterior a la segunda: La primera es anterior.
Si la segunda fecha es anterior a la primera: La segunda es anterior.

Mi solución es la siguiente:

Código (java) [Seleccionar]
import java.util.*;

public class fechaCorrecta
{
    public byte dia = 0,mes = 0;
    public short anyo = 0; 
   
    public fechaCorrecta(byte dia,byte mes,short anyo)
    {
        this.dia = dia;
        this.mes = mes;
        this.anyo = anyo;
    }
   
    public boolean compruebaFecha()
    {
        boolean esBisiesto;
        esBisiesto = (this.anyo % 4 == 0 && this.anyo % 100 != 0) || ( this.anyo % 400 == 0);
        switch(mes)
        {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                if(this.dia < 0 || this.dia > 31) return false;
                else return true;
            case 4:
            case 6:
            case 9:
            case 11:
                if(this.dia < 0 || this.dia > 30) return false;
                else return true;
            case 2:
                if(esBisiesto)
                {
                    if(this.dia < 0 || this.dia > 29) return false;
                    else return true;
                }
                else
                {
                    if(this.dia < 0 || this.dia > 28) return false;
                    else return true;
                }
            }
            return false;
    }
   
    public boolean equals(Object o)
    {
        return (o instanceof fechaCorrecta) && (this.dia == ((fechaCorrecta)o).dia) && (this.mes == ((fechaCorrecta)o).mes) && (this.anyo == ((fechaCorrecta)o).anyo);
    }
   
    public boolean compruebaMenorUno(fechaCorrecta fechaDos)
    {
        return (this.anyo < fechaDos.anyo) || (this.anyo == fechaDos.anyo && this.mes < fechaDos.mes) || (this.anyo == fechaDos.anyo && this.mes == fechaDos.mes && this.dia < fechaDos.dia);
    }
       
    public static void main(String args[])
    {
        Scanner entradaTeclado = new Scanner(System.in).useLocale(Locale.US);
        byte diaUno = 0,mesUno = 0,diaDos = 0,mesDos = 0;
        short anyoUno = 0,anyoDos = 0;
        diaUno = entradaTeclado.nextByte();
        mesUno = entradaTeclado.nextByte();
        anyoUno = entradaTeclado.nextShort();
        diaDos = entradaTeclado.nextByte();
        mesDos = entradaTeclado.nextByte();
        anyoDos = entradaTeclado.nextShort();
        fechaCorrecta fechaUno = new fechaCorrecta(diaUno,mesUno,anyoUno);
        fechaCorrecta fechaDos = new fechaCorrecta(diaDos,mesDos,anyoDos);
       
        if(!fechaUno.compruebaFecha()) System.out.print("Primera fecha incorrecta.");
        else
        {
            if(!fechaDos.compruebaFecha()) System.out.print("Segunda fecha incorrecta.");
            else
            {
                if(fechaUno.equals(fechaDos)) System.out.print("Representan el mismo día");
                else
                {
                     if(fechaUno.compruebaMenorUno(fechaDos)) System.out.print("La primera es anterior.");
                     else System.out.print("La segunda es anterior.");
                }
            }
        }
    }
}


Todos los casos que yo he probado a mano me han dado resultados correctos, sin embargo a la hora de entregarlo en el portal de autocorrección de la universidad me marca errores por codificación ( siendo los resultados numéricos correctos ). Le he enviado un correo al profesor y me ha contestado que ve un fallo gordo en una comparación que falla por haberla puesto como asignación.

No veo ningún fallo así de gordo, de hecho esos los marca el compilador, ¿ a que creéis que hace referencia?

Un saludo ;)

#4
Java / Piedra Papel Tijeras [JAVA]
8 Noviembre 2012, 16:03 PM
No consigo hacer funcionar el programa, siempre me devuelve lo mismo
"El jugador no ha introducido una opcion valida" y "Ganador PC", cuando es mentira.

El código es el siguiente:

Código (java) [Seleccionar]
import java.util.*;
public class juegoInfantil
{
    public final int Piedra = 0,Papel = 1,Tijeras = 2;
    public String eleccionJugador1,eleccionJugador2;
    public int ganadorJuego; // 0 si gana Pc 1 si gana jugador 2 empate
   
    public juegoInfantil(String eleccionJugador1)
    {
        this.eleccionJugador1 = eleccionJugador1;
        this.eleccionJugador1 = this.eleccionJugador1.toUpperCase();
    }
   
    public void setEleccionJugador2()
    {
        Random numeroRandom = new Random();
        int eleccionPc = numeroRandom.nextInt(3);
        switch(eleccionPc)
        {
            case 0: this.eleccionJugador2 = "Piedra";
            break;
            case 1: this.eleccionJugador2 = "Papel";
            break;
            case 2: this.eleccionJugador2 = "Tijeras";
            break;
        }
        this.eleccionJugador2 = this.eleccionJugador2.toUpperCase();
        System.out.println("La eleccion del jugador 2 es: " + this.eleccionJugador2 + " y la del jugador 1: " + this.eleccionJugador1);
    }
   
    public void inicioJuego()
    {
        if(this.eleccionJugador1 == "PIEDRA")
        {
            if(this.eleccionJugador2 == "PAPEL") this.ganadorJuego = 0;
            else if(this.eleccionJugador2 == "TIJERAS") this.ganadorJuego = 1;
            else this.ganadorJuego = 2;
        }
        else if(this.eleccionJugador1 == "PAPEL")
        {
            if(this.eleccionJugador2 == "PAPEL") this.ganadorJuego = 2;
            else if(this.eleccionJugador2 == "TIJERAS") this.ganadorJuego = 0;
            else this.ganadorJuego = 1;
        }
        else if(this.eleccionJugador1 == "TIJERAS")
        {
            if(this.eleccionJugador2 == "TIJERAS") this.ganadorJuego = 2;
            else if(this.eleccionJugador2 == "PIEDRA") this.ganadorJuego = 0;
            else this.ganadorJuego = 1;
        }
        else if(this.eleccionJugador1 != "TIJERAS" && this.eleccionJugador1 != "PAPEL" && this.eleccionJugador1 != "PIEDRA")
        {
            System.out.print("El jugador no ha introducido una opcion valida");
            return;
        }   
    }
   
    public String getGanador()
    {
        if(this.ganadorJuego == 0) return "Ganador Pc";
        else if(this.ganadorJuego == 1) return "Ganador Jugador";
        else if(this.ganadorJuego == 2) return "Empate o Tablas";
        return "Error";
    }
   
    public static void main(String args[])
    {
        Scanner entradaTeclado = new Scanner(System.in);
        System.out.println("Introduce tu opcion: ");
        String entradaJugador = entradaTeclado.next();
        entradaJugador = entradaJugador.toUpperCase();
        juegoInfantil piedraPapelTijera = new juegoInfantil(entradaJugador);
        piedraPapelTijera.setEleccionJugador2();
        piedraPapelTijera.inicioJuego();
        System.out.printf("%n%s",piedraPapelTijera.getGanador());
    }
}


No sé que pasará pero me trae de cabeza xD
#5
Desarrollo Web / Looping Youtube No Funciona
1 Noviembre 2012, 12:55 PM
El problema es ese, en mi web añadí un looper de videos de youtube y en un principio funcionaba perfecto con cualquier video, pero ahora de un día para otro ya no se inicia el loop, el código es el mismo, no lo he tocado os lo dejo para ver si veis algún fallo que yo no haya visto.

Código (php) [Seleccionar]
<?php
if(@strstr($link,"http://www.youtube.com/watch?v="))
{
$codigoVideo str_replace("http://www.youtube.com/watch?v=","",$link);
}
?>

<br><br><iframe width="1" height="1" src="<?php echo "https://www.youtube.com/embed/".$codigoVideo."?autoplay=1&amp;loop=1";?>" frameborder="0" allowfullscreen></iframe>
<?php


Eso es todo, un saludo.
#6
Java / No encuentro el fallo.
19 Octubre 2012, 16:38 PM
Buenas compañeros, el code es el siguiente:

Código (java) [Seleccionar]
import java.util.*;
public class array0301
{
   private double[] alturaAlumnos;
   private double alturaMedia;
   private int indexArray;
   private Scanner entradaTeclado;
   
   public array0301()
   {
       this.alturaMedia = 0;
       this.indexArray = 0;
       this.entradaTeclado = new Scanner(System.in);
   }
   
   public void setAlturas()
   {
       while(entradaTeclado.hasNext())
       {
           if(entradaTeclado.hasNextDouble())
           {
               alturaAlumnos[indexArray] = entradaTeclado.nextDouble();
               indexArray += 1;
           }
       }
   }  
   public void getAlturas()
   {
       indexArray = 0;
       while(indexArray <= alturaAlumnos.length)
       {
           alturaMedia = alturaMedia + alturaAlumnos[indexArray];
           indexArray += 1;
       }
       System.out.format("La altura media de %d alumnos es de %.3f metros",alturaAlumnos.length,(alturaMedia / alturaAlumnos.length));
   }    
   public static void main(String args[])
   {
       array0301 p1 = new array0301();
       p1.setAlturas();
       p1.getAlturas();
   }    
}


El error que lanza es NullPointerException en las lineas 22 y 40 y no consigo saber por qué se produce.

Un saludo
#7
Redes / Búsqueda de redes wireless
27 Agosto 2012, 18:58 PM
Compañeros, tengo un problema con las conexiones wifi en mi pc. Todo iba bien hasta que me dejaron un módem usb movistar en mi pueblo porque allí internet poco. El módem iba bastante bien, bastante lento pero nada fuera de lo normal, el problema es que ahora no me aparece ninguna red wifi a la que conectarme, he probado conectando manualmente introduciendo el nombre de la red, tipo de cifrado, clave pero no conecta.

¿ Alguna idea compis ? :)

Un saludo a todos :D
#8
Programación C/C++ / [Aporte] Deletreador C++
14 Agosto 2012, 02:58 AM
Buenas compañeros, vengo a dejar el code de un deletreador hecho en C++ con Gui en Qt, que aunque estoy de vacaciones, siempre sale tiempo para programar algo :).

La voz es mia (cutre) porque no he podido encontrar nada por google y actualmente solo tiene las letras en español con posible ampliación a letras en inglés (si encuentro alguna).

Screen:

Descarga Exe: http://www.mediafire.com/?u4oa2f857av35kl


Headers:

Deletreador.hpp:

Código (cpp) [Seleccionar]
#include <QtGui>

class deletreador
{
       public:
           deletreador(QString texto,QString idiomasel);

       private:
           QString textRead;
           QSound *letraRead;
};



Window.hpp:

Código (cpp) [Seleccionar]
#include <QObject>
#include <QtGui>
#include <QMessageBox>

class window : public QMainWindow
{
       Q_OBJECT

       public:

             window();
             void compruebaPalindromo();
             void primeLetra();
             void ultimLetra();
             void longiCadena();
             void funcionReves();

       private slots:

             void deletrear();

       public:

             QWidget *myWindow;
             QVBoxLayout *mainLayout,*izqLayout,*derLayout;
             QHBoxLayout *izqderLayout,*buttonLayout;
             QLineEdit *textIn;
             QPushButton *acceptButton;
             QLabel *ultimaLetra,*primeraLetra,*longitudCadena,*palindroma,*mainImage,*mainCongratulations,*mainSpace,*spaceTwo,*spaceThree,*textoReves,*selecIdioma,*labelTexto;
             QString textoDel,ulLetra,priLetra,textPalin,acumPalin,textoRev,idiomasel;
             QPixmap *image;
             QToolBar *languageToolbar;
             QMessageBox *mensaje;
             QComboBox *idiomas;
};



Sources:

Window.cpp:

Código (cpp) [Seleccionar]
#include "window.hpp"
#include "deletreador.hpp"

window::window()
{
   // Definicion

   myWindow = new QWidget;
   mainLayout = new QVBoxLayout;
   izqLayout = new QVBoxLayout;
   derLayout = new QVBoxLayout;
   izqderLayout = new QHBoxLayout;
   textIn = new QLineEdit;
   idiomas = new QComboBox;
   buttonLayout = new QHBoxLayout;
   labelTexto = new QLabel("Inserta el texto");
   labelTexto->setAlignment(Qt::AlignCenter);


   /***********************************/

   idiomas->addItem("Español");
   idiomas->addItem("Inglés");
   acceptButton = new QPushButton("Deletrear");
   mainImage = new QLabel;
   mensaje = new QMessageBox;
   mensaje->setText("Cadena Vacia");
   image = new QPixmap("Resources/Images/libro.png");
   mainImage->setPixmap(*image);
   mainImage->setAlignment(Qt::AlignCenter);
   ultimaLetra = new QLabel("La ultima letra es: ");
   textoReves = new QLabel("La cadena invertida es: ");
   selecIdioma = new QLabel("Idioma seleccionado: " + idiomas->currentText());
   mainSpace = new QLabel(" ");
   spaceTwo = new QLabel(" ");
   spaceThree = new QLabel(" ");
   primeraLetra = new QLabel("La primera letra es: ");
   longitudCadena = new QLabel("La longitud del texto es: ");
   palindroma = new QLabel("La palabra es palindroma: ");
   mainCongratulations = new QLabel("By Overxfl0w");
   mainCongratulations->setAlignment(Qt::AlignCenter);
   mainCongratulations->setText("<font size=3 color=#0000FF>By Overxfl0w to elhacker.net</font>");
   idiomas->setFixedSize(100,20);

   // Conexiones

   QObject::connect(acceptButton,SIGNAL(clicked()),this,SLOT(deletrear()));

   // Construccion

   myWindow->setMinimumSize(420,360);
   myWindow->setMaximumSize(420,360);
   buttonLayout->addWidget(idiomas);
   buttonLayout->addWidget(acceptButton);
   izqLayout->addWidget(primeraLetra);
   izqLayout->addWidget(ultimaLetra);
   izqLayout->addWidget(textoReves);
   derLayout->addWidget(selecIdioma);
   derLayout->addWidget(palindroma);
   derLayout->addWidget(longitudCadena);
   izqderLayout->addLayout(izqLayout);
   izqderLayout->addLayout(derLayout);
   mainLayout->addWidget(mainImage);
   mainLayout->addWidget(spaceThree);
   mainLayout->addWidget(labelTexto);
   mainLayout->addWidget(textIn);
   mainLayout->addLayout(buttonLayout);
   mainLayout->addWidget(mainSpace);
   mainLayout->addLayout(izqderLayout);
   mainLayout->addWidget(spaceTwo);
   mainLayout->addWidget(mainCongratulations);
   myWindow->setLayout(mainLayout);
   myWindow->setWindowTitle("Speller By Overxfl0w");
   myWindow->show();
}

void window::deletrear()
{
   if(textIn->text() != "")
   {
       primeLetra();
       ultimLetra();
       funcionReves();
       compruebaPalindromo();
       longiCadena();
       delete selecIdioma;
       idiomasel = idiomas->currentText();
       selecIdioma = new QLabel("Idioma seleccionado: " + idiomasel);
       derLayout->addWidget(selecIdioma);
       deletreador deletreador(textIn->text(),idiomasel);
   }
   else
   {
       mensaje->exec();
   }

}

void window::primeLetra()
{
   priLetra = textIn->text();
   delete primeraLetra;
   primeraLetra = new QLabel("La primera letra es: " + priLetra[0]);
   izqLayout->addWidget(primeraLetra);

}

void window::ultimLetra()
{
   int longitud = textIn->text().length();
   ulLetra = textIn->text();
   delete ultimaLetra;
   ultimaLetra = new QLabel("La ultima letra es: " +ulLetra[longitud-1]);
   izqLayout->addWidget(ultimaLetra);
}

void window::longiCadena()
{
   int longitud2 = textIn->text().length();
   delete longitudCadena;
   longitudCadena = new QLabel("La longitud del texto es: " + QString::number(longitud2));
   derLayout->addWidget(longitudCadena);
}

void window::compruebaPalindromo()
{
   textPalin = textIn->text();
   acumPalin = "";
   for(int x = textPalin.length()-1;x>=0;x--)
   {
       acumPalin = acumPalin + textPalin[x];
   }
   if(textPalin == acumPalin)
   {
       delete palindroma;
       palindroma = new QLabel("La palabra es palindroma: Si");
       derLayout->addWidget(palindroma);
       acumPalin = "";
   }
   else
   {
       delete palindroma;
       palindroma = new QLabel("La palabra es palindroma: No");
       derLayout->addWidget(palindroma);
       acumPalin = "";
   }

}

void window::funcionReves()
{
   textPalin = textIn->text();
   textoRev = "";
   for(int x = textPalin.length()-1;x>=0;x--)
   {
       textoRev = textoRev + textPalin[x];
   }
   delete textoReves;
   textoReves = new QLabel("La cadena invertida es: " + textoRev);
   izqLayout->addWidget(textoReves);
}


Deletreador.cpp:

Código (cpp) [Seleccionar]
#include "deletreador.hpp"
#include "window.hpp"
#include <windows.h>

deletreador::deletreador(QString texto,QString idiomasel)
{
   textRead = texto;
   if(idiomasel == "Español")
   {
   for(int x=0;x<textRead.length();x++)
   {
       if(textRead[x] != ' ')
       {
       letraRead = new QSound("Resources/Sounds/Spanish/"+textRead[x]+".wav");
       letraRead->play();
       Sleep(1100);
       }
   }
   }
   if(idiomasel == "Inglés")
   {
       for(int x=0;x<textRead.length();x++)
       {
           if(textRead[x] != ' ')
           {
           letraRead = new QSound("Resources/Sounds/English/"+textRead[x]+".wav");
           letraRead->play();
           Sleep(1100);
           }
       }
       }
   }


Main.cpp:

Código (cpp) [Seleccionar]
#include "window.hpp"

int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
   window window;
   return app.exec();
}


PD: Usa windows.h para el Sleep si surge cualquier problema, incluir la libreria stdio.h con la función sleep pasándole un int como valor para los segundos.
Un saludo :)
#9
Dudas Generales / Error Wamp
27 Julio 2012, 16:48 PM
Tengo instalada la última versión de Wamp junto con Visual C++ 2010 SP1 tal como requiere. El problema viene al iniciar httpd.exe me salta el error de "La aplicación no se pudo iniciar correctamente 0x0000007b" por eso no inicia el servicio de apache y no me permite entrar a localhost.

Ese error me lleva a pensar en el Visual C++ pero no se me ocurre como solucionarlo, he probado poniendo en el mismo directorio la dll msvcr100 que suele dar ese tipo de problemas cuando falta pero nada...

Uso windows 7 y he desinstalado skype por problemas con los puertos :)


Un saludo  :)
#10
Ingeniería Inversa / Crackme 01
23 Julio 2012, 22:32 PM
Es la primera vez que hago un crackme, no sé como habrá salido pero creo que bien  :xD.

Está escrito con C++ y la interfaz con Qt, espero que os guste :)

Links:

http://www.mediafire.com/?s0w7l1hik54qmad

Un saludo! :)
#11
EDIT: He actualizado retirando los serials del ejecutable y añadiéndolos a un archivo .db con sqlite tal como recomendó Astaroth. Con esto dejo a los usuarios del foro añadir nuevos serials al archivo database y cuando haya suficientes serials nuevos añadidos se irá modificando el programa, solo hay que comunicarlo :)



Recuerdo que tiene que estar instalado Qt4 a no ser que se descargue el exe. Dejo el code:

Headers

Window.hpp:
Código (cpp) [Seleccionar]
#include <QtGui>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QVariant>

class window : public QObject
{
   Q_OBJECT

   public:
       window();
       ~window();

   private slots:
       void serialOffice();
       void serialNero();
       void serialPhotoshop();
       void serialTuneup();
       void distribuirSlots();

   public:
       QWidget *mainWindow;
       QVBoxLayout *mainLayout;
       QPixmap *imageLabel;
       QLabel *mainImage,*mainSpace,*mainCongratulations;
       QComboBox *mainMenu;
       QListWidget *mostrarSerial;
       QPushButton *pasarSerial;
       QSound *mainSong;
       QString serial;
       QSqlDatabase DataBase;
       QSqlQuery consultaSerial;

};


Sources

Window.cpp:
Código (cpp) [Seleccionar]
#include "window.hpp"


void window::distribuirSlots()
{
   if(mainMenu->currentText() == "Office Professional 2010") serialOffice();
   if(mainMenu->currentText() == "Nero 11 Platinum") serialNero();
   if(mainMenu->currentText() == "Adobe Photoshop CS6") serialPhotoshop();
   if(mainMenu->currentText() == "TuneUp Utilities 2012") serialTuneup();

}

void window::serialOffice()
{
   mostrarSerial->clear();
   QSqlQuery consultaSerial(QString("select serial from office"));
   consultaSerial.exec();
   while(consultaSerial.next())
   {
   serial = QString(consultaSerial.value(0).toString());
   mostrarSerial->addItem(serial);
   }
   mostrarSerial->show();
}

void window::serialNero()
{
   mostrarSerial->clear();
   QSqlQuery consultaSerial(QString("select serial from nero"));
   consultaSerial.exec();
   while(consultaSerial.next())
   {
   serial = QString(consultaSerial.value(0).toString());
   mostrarSerial->addItem(serial);
   }
   mostrarSerial->show();
}

void window::serialPhotoshop()
{
   mostrarSerial->clear();
   QSqlQuery consultaSerial(QString("select serial from photoshop"));
   consultaSerial.exec();
   while(consultaSerial.next())
   {
   serial = QString(consultaSerial.value(0).toString());
   mostrarSerial->addItem(serial);
   }
   mostrarSerial->show();
}

void window::serialTuneup()
{
   mostrarSerial->clear();
   QSqlQuery consultaSerial(QString("select serial from tuneup"));
   consultaSerial.exec();
   while(consultaSerial.next())
   {
   serial = QString(consultaSerial.value(0).toString());
   mostrarSerial->addItem(serial);
   }
   mostrarSerial->show();
}


window::window()
{
   /********** Declaración de atributos **********/

   mainWindow = new QWidget;
   imageLabel = new QPixmap("Resources/Images/Image.png");
   mainSpace = new QLabel(" ");
   mainCongratulations = new QLabel;
   mainLayout = new QVBoxLayout;
   mainImage = new QLabel;
   mainMenu = new QComboBox;
   mostrarSerial = new QListWidget;
   pasarSerial = new QPushButton("Aceptar");
   mainSong = new QSound("Resources/Sound/song.wav");

   /********** Construcción Ventana **********/

   mainSong->setLoops(20);
   mainCongratulations->setAlignment(Qt::AlignRight);
   mainCongratulations->setText("<font size=3 color=#f3ca26>By Overxfl0w to elhacker.net</font>");
   mainWindow->setWindowTitle("Gold Serial Recover");
   mainSong->play();
   mainWindow->setMinimumSize(300,400);
   mainWindow->setMaximumSize(300,400);
   mainImage->setPixmap(*imageLabel);
   mainImage->setAlignment(Qt::AlignHCenter);
   mainImage->setScaledContents(true);
   mainMenu->addItem("Office Professional 2010");
   mainMenu->addItem("Nero 11 Platinum");
   mainMenu->addItem("Adobe Photoshop CS6");
   mainMenu->addItem("TuneUp Utilities 2012");


   /********** Adición de Capas **********/

   mainLayout->addWidget(mainImage);
   mainLayout->addWidget(mainSpace);
   mainLayout->addWidget(mainMenu);
   mainLayout->addWidget(mostrarSerial);
   mainLayout->addWidget(pasarSerial);
   mainLayout->addWidget(mainCongratulations);
   mainWindow->setLayout(mainLayout);
   mainWindow->show();

  /********** Conexión Botones **********/

   QObject::connect(pasarSerial,SIGNAL(clicked()),this,SLOT(distribuirSlots()));

   /********* Conexión DataBase *********/

   QSqlDatabase DataBase = QSqlDatabase::addDatabase("QSQLITE");
   DataBase.setDatabaseName("database.db");
   DataBase.open();
}

window::~window()
{
  DataBase.close();
  delete mainWindow;
  delete imageLabel;
  delete mainLayout;
  delete mainImage;
  delete mainMenu;
  delete mostrarSerial;
  delete mainSpace;
  delete mainCongratulations;
  delete pasarSerial;
  delete mainSong;
}



Main.cpp:
Código (cpp) [Seleccionar]
#include "window.hpp"
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   window window;
   return a.exec();
}


El archivo database.db que contiene los serials es éste:

http://www.mediafire.com/?fq5jxk7bw9552lu

Y el .exe completo con las .dll (debido a esto ocupa un gran tamaño) aquí:

http://www.mediafire.com/?dsy1bygykgxnkcm

Espero que sea de vuestro agrado y podáis colaborar con el proyecto  ;-)
#12
Programación C/C++ / Chat Qt4/SFML
16 Julio 2012, 01:48 AM
Buenas compañeros :D.

Xeracker y yo llevamos un par de días codeando un chat funcional y así de paso aprender un poco de interfaces en C++, el resultado creo que ha sido bastante bueno y a pesar de que aún tiene algunos bugs y falta la implementación de algunas funciones del mismo, está en condiciones de publicarse su code por si algún usuario quiere ayudar o dar opiniones y hacer críticas.

Scan:



De momento falta la función de mostrar los usuarios en el ListBox derecho, de imprimir los emoticonos en el campo de texto entre muchas otras que iremos añadiendo :)

A continuación os dejo el source de todos los archivos:

Headers

App.hpp
Código (cpp) [Seleccionar]
#include "Window.hpp"
#include "Client.hpp"

class App
{
   Window window;
   Client client;
   void Thread();
   sf::Thread thread;
public:
   App() : thread(&App::Thread, this), window("Anonimo") { thread.launch(); }

};


Client.hpp
Código (cpp) [Seleccionar]
#include <SFML/Network.hpp>

class Client
{
   sf::IpAddress ServerAddress;
   sf::TcpSocket Socket;
   sf::Packet Packet;
   void Receiver();
   void Status();
   void Sender();
   bool connected;
   bool updated;
public:
   Client();
   sf::Thread R, S;
   sf::Packet Receive();
   void Send(sf::Packet);
   bool IsConnected();
   bool IsUpToDate();
};


Window.hpp:
Código (cpp) [Seleccionar]
#include <QObject>
#include <QtGui>
#include <QFile>
class Window : public QObject
{
   Q_OBJECT

public:

   Window(QString usu);
   ~Window();
   void Iconos();
   void Write(QString, QString);
   void ModificarEstado(bool estado);
   bool IsTextUpToDate() { return TextUpdated; }
   bool IsNickUpToDate() { return NickUpdated; }
   QString GetText(), GetNick();

private slots:

   void Send();
   void logueoUsuario();
   void configUser();
   void escribirWink();
   void escribirHappy();
   void escribirHeart();
   void escribirLaughter();
   void escribirSad();
   void escribirUuh();
   void escribirWhoa();

private:

   /* Constructores De Ventana*/
   QLineEdit *TextEdit;
   QLineEdit *UserEdit;

   QPushButton *SendButton;
   QPushButton *LogButton;
   QPushButton *CLogButton;

   QTextEdit *TextBox;
   QListWidget *UserBox;

   QVBoxLayout *mainLayout;
   QVBoxLayout *chatLayout;
   QVBoxLayout *usersLayout;

   QHBoxLayout *buttonLayout;
   QHBoxLayout *usutextLayout;
   QHBoxLayout *emoLayout;
   QWidget *window;

   QString usuario, estado;

   QLabel *etiqueta;
   QLabel *imagenChat;
   QLabel *imagenConectados;

   /*Emoticonos y Capa Emoticonos*/
   QPushButton *emoWink, *emoHappy, *emoHeart, *emoLaughter, *emoSad, *emoUuh, *emoWhoa;

   bool TextUpdated, NickUpdated;


};


Sources

App.cpp:
Código (cpp) [Seleccionar]
#include "App.hpp"

void App::Thread()
{
   while(1)
   {
       if(!client.IsUpToDate())
       {
           QString t1, t2;
           sf::String s1, s2;
           client.Receive() >> s1 >> s2;
           t1 = s1.toAnsiString().c_str();
           t2 = s2.toAnsiString().c_str();
           window.Write(t1,t2);
       }

       if(!window.IsTextUpToDate())
       {
           sf::String str=window.GetText().toStdWString();
           sf::Packet Pack;
           Pack << 1 << str;
           client.Send(Pack);
           Pack.clear();
       }

       if(!window.IsNickUpToDate())
       {
           sf::String str=window.GetNick().toStdWString();
           sf::Packet Pack;
           Pack << 0 << str;
           client.Send(Pack);
           Pack.clear();
       }
       if(client.IsConnected())
       {
            window.ModificarEstado(true);
       }

   }
}


Client.cpp:
Código (cpp) [Seleccionar]
#include "Client.hpp"

Client::Client() : R(&Client::Receiver, this), S(&Client::Sender, this), updated(true)
{
   Socket.connect("**************", 25569);
   R.launch();
   S.launch();
}

void Client::Receiver() //Receiver Thread
{
   while(1)
   {
       sf::Packet buffer;
       Socket.receive(buffer);
       Packet = buffer;
       buffer.clear();
       updated=false;
   }

}


void Client::Sender() //Sender Thread
{

}


sf::Packet Client::Receive()
{
   updated=true;
   return Packet;
}

void Client::Send(sf::Packet Pack)
{
   connected = (Socket.send(Pack) == sf::Socket::Done);
}

bool Client::IsUpToDate()
{
   return updated;
}

bool Client::IsConnected()
{
   return connected;
}




Window.cpp:
Código (cpp) [Seleccionar]
#include "Window.hpp"
void Window::ModificarEstado(bool status)
{
   if(status) estado = "Conectado";
   else estado = "Desconectado";
   window->setWindowTitle("Nick: "+usuario+" <---> Estado: "+estado);
}
void Window::escribirWink()
{
   TextEdit->insert(QString(" ;) "));
}

void Window::escribirHappy()
{
   TextEdit->insert(QString(" :) "));
}

void Window::escribirHeart()
{
   TextEdit->insert(QString(" (L) "));
}

void Window::escribirLaughter()
{
   TextEdit->insert(QString(" :D "));
}

void Window::escribirSad()
{
   TextEdit->insert(QString(" :( "));
}

void Window::escribirUuh()
{
   TextEdit->insert(QString(" ¬¬ "));
}

void Window::escribirWhoa()
{
   TextEdit->insert(QString(" :O "));
}

void Window::Iconos()
{
   /* Emoticonos */

   emoWink = new QPushButton;
   emoHappy = new QPushButton;
   emoHeart = new QPushButton;
   emoLaughter = new QPushButton;
   emoSad = new QPushButton;
   emoUuh = new QPushButton;
   emoWhoa = new QPushButton;
   QObject::connect(emoWink,SIGNAL(clicked()),this,SLOT(escribirWink()));
   QObject::connect(emoHappy,SIGNAL(clicked()),this,SLOT(escribirHappy()));
   QObject::connect(emoHeart,SIGNAL(clicked()),this,SLOT(escribirHeart()));
   QObject::connect(emoLaughter,SIGNAL(clicked()),this,SLOT(escribirLaughter()));
   QObject::connect(emoSad,SIGNAL(clicked()),this,SLOT(escribirSad()));
   QObject::connect(emoUuh,SIGNAL(clicked()),this,SLOT(escribirUuh()));
   QObject::connect(emoWhoa,SIGNAL(clicked()),this,SLOT(escribirWhoa()));
   emoWink->setIcon(QIcon("emoticonos/guinyo.png"));
   emoHappy->setIcon(QIcon("emoticonos/happy.png"));
   emoHeart->setIcon(QIcon("emoticonos/heart.png"));
   emoLaughter->setIcon(QIcon("emoticonos/laughter.png"));
   emoSad->setIcon(QIcon("emoticonos/sad.png"));
   emoUuh->setIcon(QIcon("emoticonos/uhh.png"));
   emoWhoa->setIcon(QIcon("emoticonos/whoa.png"));

   /* Capa Horizontal Emoticonos */

   emoLayout = new QHBoxLayout;
   emoLayout->addWidget(emoWink);
   emoLayout->addWidget(emoHappy);
   emoLayout->addWidget(emoHeart);
   emoLayout->addWidget(emoLaughter);
   emoLayout->addWidget(emoSad);
   emoLayout->addWidget(emoUuh);
   emoLayout->addWidget(emoWhoa);

   /* Anidacion capa horizontal en vertical */

   mainLayout->addLayout(emoLayout);

}

void Window::configUser()
{
   usuario = UserEdit->text();
   NickUpdated=false;
   delete etiqueta;
   delete UserEdit;
   delete CLogButton;
   window->setWindowTitle("Nick: "+usuario+" <---> Estado: "+estado);
   SendButton = new QPushButton("Enviar");
   TextEdit = new QLineEdit;
   SendButton->setIcon(QIcon("emoticonos/aceptar.png"));
   QObject::connect(SendButton,SIGNAL(clicked()),this,SLOT(Send()));
   mainLayout->addWidget(TextEdit);
   mainLayout->addWidget(SendButton);
   window->setLayout(mainLayout);
   window->show();
}

void Window::Write(QString user, QString msg)
{
   TextBox->append(user+": "+msg);
}

void Window::Send()
{
   if(TextEdit->text()!= "")
   {
       TextUpdated=false;
       TextEdit->clear();
   }
}

QString Window::GetText()
{
   TextUpdated=true;
   return TextEdit->text();
}

QString Window::GetNick()
{
   NickUpdated=true;
   return usuario;
}


void Window::logueoUsuario()
{
   delete LogButton;
   delete SendButton;
   delete TextEdit;
   CLogButton = new QPushButton("Aceptar");
   CLogButton->setIcon(QIcon("emoticonos/aceptar.png"));
   QObject::connect(CLogButton,SIGNAL(clicked()),this,SLOT(configUser()));
   UserEdit = new QLineEdit;
   etiqueta = new QLabel("Inserta nickname");
   etiqueta->setAlignment(Qt::AlignCenter);
   mainLayout->addWidget(etiqueta);
   mainLayout->addWidget(UserEdit);
   mainLayout->addWidget(CLogButton);
   window->setLayout(mainLayout);
   window->show();

}

Window::Window(QString user) : usuario(user), TextUpdated(true), NickUpdated(false)
{
   window = new QWidget;
   LogButton = new QPushButton("Loguear");
   LogButton->setIcon(QIcon("emoticonos/llave.png"));
   QObject::connect(LogButton,SIGNAL(clicked()),this,SLOT(logueoUsuario()));
   TextBox = new QTextEdit;
   TextBox->setReadOnly(true);
   TextBox->setMinimumSize(QSize(550,0));
   UserBox = new QListWidget;
   imagenChat = new QLabel("Chat");
   QImage imageChat("emoticonos/chat.png");
   imagenChat->setPixmap(QPixmap::fromImage(imageChat));
   imagenChat->setAlignment(Qt::AlignCenter);
   QLabel *etiquetaChat = new QLabel("Chat");
   etiquetaChat->setAlignment(Qt::AlignCenter);
   imagenConectados = new QLabel("Conectados");
   QImage imageUsers("emoticonos/conectados.png");
   imagenConectados->setPixmap(QPixmap::fromImage(imageUsers));
   imagenConectados->setAlignment(Qt::AlignCenter);
   QLabel *etiquetaConectados = new QLabel("Usuarios Conectados");
   etiquetaConectados->setAlignment(Qt::AlignCenter);
   usutextLayout = new QHBoxLayout;
   TextEdit = new QLineEdit;
   SendButton = new QPushButton("Enviar");
   SendButton->setIcon(QIcon("emoticonos/aceptar.png"));
   chatLayout = new QVBoxLayout;
   usersLayout = new QVBoxLayout;
   mainLayout = new QVBoxLayout;
   buttonLayout = new QHBoxLayout;
   window->setMinimumSize(700,500);
   window->setMaximumSize(700,500);
   QObject::connect(SendButton,SIGNAL(clicked()),this,SLOT(Send()));
   chatLayout->addWidget(imagenChat);
   chatLayout->addWidget(etiquetaChat);
   chatLayout->addWidget(TextBox);
   usersLayout->addWidget(imagenConectados);
   usersLayout->addWidget(etiquetaConectados);
   usersLayout->addWidget(UserBox);
   usutextLayout->addLayout(chatLayout);
   usutextLayout->addLayout(usersLayout);
   mainLayout->addLayout(usutextLayout);
   Iconos();
   mainLayout->addWidget(TextEdit);
   buttonLayout->addWidget(SendButton);
   buttonLayout->addWidget(LogButton);
   mainLayout->addLayout(buttonLayout);
   window->setLayout(mainLayout);
   window->show();
}

Window::~Window() {}


main.cpp:
Código (cpp) [Seleccionar]
#include "App.hpp"

int main(int argc,char *argv[])
{
   QApplication Qt(argc,argv);
   App *app = new App();
   return Qt.exec();
}


Server.cpp:
Código (c++) [Seleccionar]
#include <SFML/Network.hpp>
#include <iostream>
using namespace std;

struct Client{
   sf::TcpSocket s;
   bool connected;
   sf::String alias;
} Client[256];

int main(int argc, char *argv[])
{

   sf::TcpListener Server;
   sf::SocketSelector Selector;
   int Port = 25569;

   for(int i=0; i<256; i++) Client[i].connected=false, Client[i].alias="Unknown";

   Server.listen(Port);
   cout << "Escuchando puerto " << Port << " TCP..." << endl;
   Selector.add(Server);

   while (Selector.wait())
   {
       if (Selector.isReady(Server))
       {
           for(int i=0; i<256; i++)
           {
               if(!Client[i].connected)
               {
                   sf::Packet Packet;
                   Server.accept(Client[i].s);
                   cout << "Client connected (ID: " << i << ", IP: " << Client[i].s.getRemoteAddress() << ")" << endl;
                   Selector.add(Client[i].s);
                   Client[i].connected=true;
                   break;
               }
           }
       }
       else
       {
           for(int i=0; i<256; i++)
           {
               if(Selector.isReady(Client[i].s))
               {
                   sf::Packet Packet;
                   if(Client[i].s.receive(Packet) == sf::Socket::Done)
                   {
                       int com;
                       Packet >> com;
                       switch (com)
                       {
                           case 0:
                               Client[i].alias.clear();
                               Packet >> Client[i].alias;
                               cout << "Client " << i << " ha cambiado su alias a \"" << Client[i].alias.toAnsiString() << "\"." << endl;
                           break;
                           case 1:
                               sf::String Msg;
                               Packet >> Msg;
                               cout << Client[i].alias.toAnsiString() << ": " << Msg.toAnsiString() << endl;

                               Packet.clear();
                               Packet << Client[i].alias << Msg;

                               for (int i=0; i<256; i++)
                                   if(Client[i].connected)
                                       Client[i].s.send(Packet);

                       }
                       break;
                   }
                   else
                   {
                       cerr << Client[i].alias.toAnsiString() << " se ha desconectado (ID: " << i << ", IP: " << Client[i].s.getRemoteAddress() << ")" << endl;
                       Selector.remove(Client[i].s);
                       Client[i].connected=false;
                       Client[i].alias="Unknown";
                       break;
                   }
               }
           }
       }
   }
}



Con todo el code ya publicado, pongo link con un .rar que contiene lo archivos necesarios para compilar desde CodeBlocks junto con los emoticonos y las imágenes del programa.

http://www.mediafire.com/?9h7mlte60p6h2qd

Aclaro que se necesita tener instaladas la librerías Qt y SFML, si tenéis algún problema con su instalación subiré el .rar con las .dll de las librerias necesarias para el correcto funcionamiento del chat.

Un saludo a todos y esperamos que os guste :)
#13
Buenas compañeros, me ha surgido otro problema. El caso es que quiero modificar desde una clase, una variable de otra en la cual ya he declarado un objeto, he probado pasando como parámetros punteros,referencias e incluso el objeto(cosa que daba error) y no consigo modificar el nombre.

¿Existe alguna manera de llevar a cabo esta modificación?

Gracias  ;-)
#14
Programación C/C++ / Slots QT
10 Julio 2012, 13:20 PM
Estaba buscando documentación de Qt y la verdad es que hay bastante buena, pero no consigo encontrar una buena explicación sobre como hacer mis propios slots. Lo que quiero hacer, es que al pulsar un botón determinado se descargue mediante wget un archivo.

¿ Alguien sabe de algún sitio o puede dar una breve explicación?.

EDIT:  más o menos tengo la idea de como hacerlo pero se me está quedando grande, tengo éste code, pero hay cosas que no me cuadran.

Código (cpp) [Seleccionar]
#include <QtGui>
#include <QObject>

class Clase : public QObject
{
   Q_OBJECT

   public slots:
       void descarga() const;

};

void Clase::descarga() const
{
   system("wget http://overxfl0w.synergize.co");
}

int main(int argc,char *argv[])
{
   QApplication app(argc,argv);
   QPushButton descargar("Overxfl0w");
   Clase slot1;
   QObject::connect(&descargar,SIGNAL(clicked()),&app,SLOT(slot1.descarga()));
   descargar.show();
}



El error es  "referencia a `vtable for Clase` sin definir".

Gracias  :)
#15
Programación C/C++ / Problema ejercicio
29 Junio 2012, 14:50 PM
Buenas, me he puesto a hacer un ejercicio para practicar y la verdad es que se me ha enrevesado un poco, no sé porque.

El ejercicio consiste en crear una clase y sus métodos para que este programa logre funcionar:

Código (cpp) [Seleccionar]
#include <iostream>
#include "Fraccion.hpp"
using namespace std;

int main()
{
Fraccion f1(1.0,4.0);
Fraccion f2(1.0,2.0);
Fraccion f3;
Fraccion f4(4);
Fraccion suma = f1.Suma(f2);
Fraccion resta = f1.Resta(f3);
Fraccion producto = f1.Multiplica(f4);
Fraccion cociente = f1.Divide(f2);
cout << "Primera Fraccion: " << f1.Prt() << endl;
cout << "Segunda Fraccion: " << f2.Prt() << endl;
cout << "Tercera Fraccion: " << f3.Prt() << endl;
cout << "Cuarta Fraccion: " << f4.Prt() << endl;
cout << "Suma " << suma.Prt() << endl;
cout << "Resta " << resta.Prt() << endl;
cout << "Producto " << producto.Prt() << endl;
cout << "Cociente " << cociente.Prt() << endl;
return 0;
}


Vale, hasta ahí bien, esta es la clase que he creado, junto con sus métodos:

Código (cpp) [Seleccionar]
class Fraccion
{
public:
Fraccion(float numerador,float denominador);
~Fraccion();
int Suma(Fraccion objeto);
int Resta(Fraccion objeto);
int Multiplica(Fraccion objeto);
int Divide(Fraccion objeto);
float Prt() const;
private:
float fraccion,resultado;
};


Fraccion::Fraccion(float numerador = 0.0,float denominador = 1.0)
{
fraccion = numerador / denominador;
resultado = numerador / denominador;
}

Fraccion::~Fraccion(){}

int Fraccion::Suma(Fraccion objeto)
{
this->resultado = this->fraccion + objeto.fraccion;
return 0;
}

int Fraccion::Resta(Fraccion objeto)
{
this->resultado = this->fraccion - objeto.fraccion;
return 0;
}

int Fraccion::Multiplica(Fraccion objeto)
{
this->resultado = this->fraccion * objeto.fraccion;
return 0;
}

int Fraccion::Divide(Fraccion objeto)
{
this->resultado = this->fraccion / objeto.fraccion;
return 0;
}

float Fraccion::Prt() const
{
return this->resultado;
}


Muy posiblemente el error esté en las variables porque me he hecho un lío con ambas y no obtengo la salida esperada.

Un saludo y gracias de antemano :)
#16
Programación C/C++ / Problema Librería SFML
27 Junio 2012, 14:03 PM
No consigo instalar correctamente la librería ya que pruebo los samples que trae consigo y no corre ninguno, consigue compilar bien, pero a la hora de enlazarlo falla.

Estoy en Debian, y he colocado los archivos en sus carpetas correspondientes, concretamente:

/usr/include/
/usr/lib/
/usr/src/

Los errores que me lanza IDE son el orden siguiente:

Pong.cpp:(.text+0x30b): undefined reference to `sf::Image::Image()'
/tmp/ccplj7Gr.o: In function `sf::Sprite::~Sprite()':
Pong.cpp:(.text._ZN2sf6SpriteD1Ev[sf::Sprite::~Sprite()]+0x2e): undefined reference to `sf::Drawable::~Drawable()'

La mayor parte, "undefined reference to"

El caso es ese, no consigo hacer funcionar ningún cpp que haga uso de la librería, uso Geany como IDE y he probado a compilar y linkear desde la terminal con:

g++ -o pong.cpp -libsfml-graphics

Pero nada, ni de una forma ni de otra, ¿ Alguna Idea ?

Un saludo :)
#17
Foro Libre / Videos José Mota
7 Junio 2012, 13:58 PM
Me ha dado por crear un post con una recopilación de vídeos de este señor, que como él pocos hay en el mundillo del humor. Aquí os los dejo para amenizar un poco el día y sacaros unas risas :D

[youtube=425,350]http://www.youtube.com/watch?v=vojJvTOSNk8[/youtube]
[youtube=425,350]http://www.youtube.com/watch?v=N05D811v4yY[/youtube]
[youtube=425,350]http://www.youtube.com/watch?v=sT3Zv_q60N8[/youtube]
[youtube=425,350]http://www.youtube.com/watch?v=P11OcCuzk9I[/youtube]
[youtube=425,350]http://www.youtube.com/watch?v=RC3USScoszI[/youtube]
[youtube=425,350]http://www.youtube.com/watch?v=fM-t9WgAoFg&feature=related[/youtube]
[youtube=425,350]http://www.youtube.com/watch?v=3iFVtIgay9Q&feature=relmfu[/youtube]
[youtube=425,350]http://www.youtube.com/watch?v=qfs1i97AiGA&feature=relmfu[/youtube]
[youtube=425,350]http://www.youtube.com/watch?v=jM6ik8SiSms[/youtube]
[youtube=425,350]http://www.youtube.com/watch?v=13ql0alRo5g[/youtube]
[youtube=425,350]http://www.youtube.com/watch?v=sx3KJQFwGtY[/youtube]
#18
Scripting / ¿ Captura de teclado linux ?
6 Junio 2012, 15:47 PM
Quería ponerme a hacer un keylogger que enviase los datos desde la víctima hasta un cliente, la conexión iba a hacerla mediante sockets.

Sin embargo, he estado mirando posibles librerías que me permitiesen la captura de teclado y solo he visto PyHook y Win32Api pero ninguna compatible con sistemas Linux.

¿ Sabéis si existe alguna que me pueda ayudar a desarrollarlo ?

Gracias :)
#19
Foro Libre / Selectividad
5 Junio 2012, 21:15 PM
No he visto ningún tema sobre esto, tal vez puede ser que no haya buscado bien.

Pero me gustaría preguntaros vuestras experiencias sobre la PAU que a mi me toca dentro de una semana y estoy que no me lamo  :xD

¿Como fue?¿Difícil,fácil?

Un saludo :)
#20
Desarrollo Web / Tabla Fija Con Scroll Html
4 Junio 2012, 14:45 PM
El problema visual es éste:

[img width="300" height="300"]http://www.subirimagenes.net/pictures/3c9a969b556a628b3ea9875a1a76e9ca.png[/img]

Tengo que situar una tabla centrada con un tamaño fijo y con scroll para que el texto no la redimensione.

He probado diversas maneras, pero a lo único que he llegado es a dejar fija la tabla y el texto a sobresalir por sus extremos.

¿ Alguna Idea ?

Gracias :)
#21
Hardware / Comparación Portátiles
2 Junio 2012, 21:31 PM
Tengo que ir a pillarme un portátil y la verdad es que tengo bastantes dudas.

Como marca, me decanto por Asus y Toshiba o en todo caso Samsung o Acer  ( Éste último como última alternativa xD y HP no me interesa, normalmente dan problemas con drivers sobretodo en Linux ). Y estaba buscando algo con bastante ram 4-6-8 ya que mi actual Pc con 1gb de ram y con el HDD de la ps3 de 60gb me lleva frito xD

El presupuesto es de unos 900 euros más o menos y el uso, principalmente para la carrera y programar cosas de ir por casa, no suelo hacer más, tal vez algún juego de vez en cuando, pero las menos :)

Había mirado unos cuantos, concretamente los siguientes:

http://www.beep.es/asus-n55sf-sx456v-n55-series-1333-mhz-intel-core-i7-i7-2670qm-intel-hm65__ask2341.html#.T8pjw9rgumw
http://www.elcorteingles.es/tienda/informatica/browse/productDetail.jsp?productId=A5837448&categoryId=999.087&isProduct=true&trail=&trailSize=1&navAction=jump&navCount=0&brandId=
http://www.beep.es/asus-k55vm-sx077v-k55-series-2300-mhz-intel-core-i7-i7-3610qm-3300-mhz-5__ask2515.html#.T8plVNrgumw
http://www.beep.es/toshiba-l755-1nx-satellite-2200-mhz-intel-core-i7-i7-2670qm-2200-mhz-6-mb__tos1082.html#.T8pnJ9rgumw
http://www.beep.es/sony-vpccb3z8e-vaio-2800-mhz-intel-core-i7-i7-2640m-5-gt-s-4-mb-intel__so2234.html#.T8pnUtrgumw
http://www.beep.es/acer-as7750g-2678g128mn-aspire-series-2200-mhz-intel-core-i7-i7-2670qm-3100__acer1489.html#.T8pl8trgumw

Un saludo :)
#22
PHP / Guardar archivo en directorio
2 Junio 2012, 15:27 PM
Tengo un formulario con textarea. Luego abro un archivo en el cual escribo el texto del formulario y eso, procedimiento normal vamos..

El problema es que quiero guardar ese archivo en un directorio específico del servidor y no en el mismo donde se encuentra el PHP.

El php se encuentra en raiz/archivo.php
Y el directorio donde quiero guardarlo es raiz/codigos/nombredelarchivo.txt

¿ Alguna idea ?
#23
GNU/Linux / Videos Debian
1 Junio 2012, 16:13 PM
No sé por qué, pero únicamente puedo ver videos del youtube. He probado en mitele.es videos de seriesyonkis, cualquier tipo de reproductor de video y no consigo ver ninguno.

He reinstalado el flashplayer pero nada, no da resultado.

¿Alguna idea de qué puede pasar?.

EDIT:
Solucionado, había desaparecido la carpeta plugins de /usr/lib/iceweasel :)