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ú

Mensajes - eferion

#921
Programación C/C++ / Re: Hacer mientras en C
25 Septiembre 2013, 16:59 PM
si te fijas el scanf tiene un espacio antes del %d... eso hace que el scanf ignore saltos de línea que pueda haber en el buffer de entrada.

Y te entra una vez porque sigue no vale 1, el scanf te está leyendo basura... prueba si no a hacer un printf de "sigue" a ver que valor sale.
#922
Programación C/C++ / Re: Hacer mientras en C
25 Septiembre 2013, 16:45 PM
Cita de: neeeko en 25 Septiembre 2013, 16:32 PM
Nose que dato queres que cambie por int que variable .
Lo que queiro es que haga es que entre si sigue=1  sino que no haga nada.


Vale a ver, me he liado... lo que tiene estar a mil cosas a la vez jejeje.

scanf tiene un problemilla con las lecturas si el buffer está "sucio".

para solucionarlo hay que retocar la cadena que se le pasa a scanf tal que

scanf(" %d",&sigue);

Con eso creo que debería bastar.
#923
En c++ tienes cout para sacar información por la salida estándar...

Si formateas dicha salida el texto se alineará donde tú quieras...

Código (cpp) [Seleccionar]

// texto con alineación tradicional
std::cout << "0123456789" << std::endl;

// texto con alineación a la derecha
std::cout << setiosflags(ios::left) << setw(80) << "0123456789" << std::endl;

// las dos juntas
std::cout << "0123456789";
std::cout << setiosflags(ios::left) << setw(70) << "0123456789" << std::endl;


Luego hay librerías más completas para colocar el texto donde tú quieras, pero eso ya depende de tus necesidades.
#924
Programación C/C++ / Re: Hacer mientras en C
25 Septiembre 2013, 16:27 PM
Es facil... cuando tu le pides un dato al usuario este presiona teclas del teclado... estas teclas se transforman en chars... concretamente para el '1' el char correspondiente es el 0x31.

En el while tu estás haciendo la comparación (sigue == 1) o, lo que es lo mismo, (0x31 == 0x01 ).

Obviamente el resultado será falso y no se repetirá el bucle.

Soluciones:

* cambiar la condición por ( sigue == '1' )
* convertir el char a int

Un saludo
#925
Frameworks que proporcionan interfaz gráfica:

* API de Windows ( cuesta hacerse con ella si no tienes experiencia previa )
* Qt ( Windows y Linux )
* GTK ( Windows y Linux )
* wxWidgets( Windows y Linux )

Con esto deberías tener de sobra para empezar.

Por cierto, la programación en entorno gráfico en Windows / Linux es ligeramente diferente a la programación clásica en consola. Si no tienes experiencia previa mírate antes los tutoriales.

#926
SMTP es el protocolo que se emplea para el envío de correos electrónicos. Es un estándar y todos los clientes de correo se basan en el mismo para funcionar ( además es justamente este el motivo por el que funcionan ).

Dicho estándar detalla el formato que ha de tener la trama que contiene el correo.

Hasta donde llego si es posible enviar correos con Telnet... lo que pasa que a ver, Telnet no está pensado para eso y el proceso puede ser engorroso y expuesto a problemas.

Lo más sencillo es empaparse un poco sobre cómo funciona el estándar SMTP y ahí podrás encontrar el formato que ha de tener tu mensaje de correo electrónico para poder ser enviado... como se codifican los ficheros adjuntos... como se identifican las diferentes capas del correo ( HTML, plano ), etc.

Al final los ejemplos que puedas encontrar dudo mucho que sean lo suficientemente completos como para abordar todas las posibilidades, luego la experiencia que puedas extraer de ellos.

Un detalle a tener en cuenta: si intentas enviar correos a gmail, hotmail, etc o directamente suplantar una de sus cuentas, te puedes encontrar con problemas.
Lo más lógico es que sus servidores marquen tu mensaje como SPAM o que directamente lo eliminen... lo mejor para probar tus códigos es que te instales un servidor de correo en tu ordenador y hagas pruebas en ese entorno.
#927
Cita de: fabian7593 en 25 Septiembre 2013, 03:58 AM
estaria hablando de mas de un archivo pra mi .exe (del keylogger compilado), por lo tanto la idea de utilizar una serializacion por fuera no me parece muy buena...

No veo por qué habrías de incorporar una librería nueva a tu código... si empleas por ejemplo xdr se genera código fuente que puedes añadir sin ningún problema a tu ejecutable... lo que tu comentas de archivos adicionales sería si utilizases una dll precompilada... y normalmente estos códigos vienen con su fuente, por lo que añadirlo a tu ejecutable lo único que genera es un ejecutable un poco más grande.

Cita de: fabian7593 en 25 Septiembre 2013, 03:58 AM
ahh y la serializacion depende de como se vea sirve para mas cosas, en mi caso la utilice em c# y python para serializar contraseñas (muy parecido a la codificacion de hecho), y serializar archivos pra q sean guardados en una base de datos de esa manera.

Técnicamente eso no se debería confundir con serializar... en el caso de las contraseñas, lo lógico es que las contraseñas no se guarden nunca en texto plano... luego el paso lógico es codificar la contraseña o almacenar únicamente su hash... de tal forma que a través del hash no sea sencillo identificar la clave original... y esto no es serializar.

Y en el caso de ficheros en bases de datos, lo más normal es crear un campo de tipo bloob que va a ser capaz almacenar el fichero sin necesidad de retoques... a lo sumo sustituir las comillas para no falsear la consulta SQL... pero esto tampoco debería ser considerado serializar... es una mera sustitución o reemplazo.

Sin embargo, coger un objeto que tiene 20 propiedades y almacenar su estado de forma que pueda duplicarse el estado del objeto en cualquier otro lugar y momento... eso si se serialización... es como si pudieses enviar ladrillos por Internet... a través del cable... por eso a esta técnica se la conoce como serialización, el resto de acepciones, por norma general, son desvarios del personal.

Otro ejemplo de desvarios es el concepto que tiene la gente de tiempo real... que muchos piensan que consiste en que las cosas se ejecuten lo más rápidamente posible... instantáneamente a ser posible... nada más lejos de la realidad... tiempo real es que cada parte del programa tiene un tiempo exacto en el que ejecutarse y tiene que terminar en un momento determinado, ni antes ni después. Ya ves cómo cambia la cosa.

Cita de: fabian7593 en 25 Septiembre 2013, 03:58 AM
mi idea en si es meter el arhcivo serializado en mi codgo c++ y desdeserializarlo en la pc victima, sin necesidad de descargar o tener un archivo y/o programa por aparte

Lo que tú necesitas es añadir a tu ejecutable un archivo de recursos... en este caso el recurso sería el archivo que quieres desempaquetar... en este caso el recurso puede ir tal cual o comprimido y/o cifrado según las necesidades, pero recuerda que en estos últimos casos ( comprimido y/o cifrado ) tendrás que dotar a tu ejecutable de la capacidad para descomprimir y/o descifrar el archivo para que éste sea útil.
#928
En esta vida la gente tiene la mala costumbre de crear especificaciones en las cuales se basa el funcionamiento de cosas como el formato mp3... en vez de dar tantas vueltas prueba a poner "mp3 specification" o "mp3 standard" en google y tendrás soluciones mucho más satisfactorias...

Además has de tener en cuenta que el formato mp3 está patentado, por lo que puedes tener problemas legales si replicas su funcionamiento si infringes las licencias de uso correspondientes.
#929
Programación C/C++ / Re: serie de numeros en fichero
24 Septiembre 2013, 03:45 AM
Te imprime basura porque fwrite espera una cadena de caracteres... y tu le estas pasando un int.

Hablando en binario.

el número 1000 en texto se representa de la siguiente forma: 0x31 0x30 0x30 0x30

es decir, 4 caracteres que representan 1 uno seguido de 3 ceros.

el número 1000 en notación binaria se codifica tal que 0x00 0x00 0x03 0xE8 ... se parecen como un huevo a una castaña

Lo que te sucede, por si no ha quedado claro, es que tú le estás pasando 0x00 0x00 0x03 0xE8 y es eso jústamente lo que está escribiendo en el archivo... obviamente 0x00 y 0x03 no son caracteres legibles... y 0xE8 es cualquier cosa menos un número, de ahi que tú solo seas capaz de ver basura.

Tu estás esperando que fwrite sea capaz, por ciencia infusa, de saber que tú le estás pasando un int y que además quieres que lo convierta a char... mala suerte, fwrite no es tan listo.

Si quieres que ese número sea legible tendrás que convertirlo antes a cadena de caracteres. deberias mirarte la función itoa, por ejemplo.

Un saludo.
#930
XDR, ASN.1, XML ... hay infinidad de formas para serializar... y están ya inventadas.

Lo que tienes que tener claro es qué significa serializar... serializar significa almacenar el estado de uno o varios objetos de tu aplicación para almacenarlos en disco o bien para enviarlos por red a un servidor o cliente.

Por tanto, serializar archivos no tiene ningún sentido. Además, los métodos de serialización son independientes de que uses vs, qtcreator, dev... eso solo son IDEs y el IDE sobre el que desarrolles no afecta en absoluto al código fuente que se genera... esa tarea le corresponde al compilador y como norma general se puede configurar cualquier IDE para que sea capaz de usar cualquier compilador.