• Jueves 25 de Abril de 2024, 14:31

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.


Mensajes - black_flowers

Páginas: [1] 2
1
C/C++ / Re: pasar de codigos ascii a sus correspondientes caracteres.
« en: Martes 12 de Abril de 2011, 23:22 »
bueno parece que con esto funciona, con este codigo leo un fichero que contiene codigos ascii en hexadecimal y creo un archivo nuevo con los caracteres alfanumericos correspondientes. Gracias tanatos por tu ayuda  ;)

Código: C++
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. int main(int argc, char **argv)
  7. {
  8.    FILE * pFileShell;
  9.    FILE * pFileAsci;
  10.  
  11.    int iOpCode;
  12.  
  13.     pFileShell = fopen (argv[1] , "r");
  14.     pFileAsci = fopen (argv[2] , "w+");
  15.    if (pFileShell == NULL) perror ("Error opening file");
  16.    else
  17.    {
  18.        if(pFileAsci == NULL)    perror ("Error creating file");
  19.        else
  20.        {rewind (pFileShell);
  21.            while ( ! feof (pFileShell) )
  22.              {
  23.                 fscanf (pFileShell, "%x", &iOpCode);
  24.                 fprintf (pFileAsci,"%c",iOpCode);
  25.             }
  26.          fclose (pFileAsci);
  27.          fclose (pFileShell);
  28.        }
  29.    }
  30.    return 0;
  31. }
  32.  
  33.  

2
C/C++ / Re: pasar de codigos ascii a sus correspondientes caracteres.
« en: Lunes 11 de Abril de 2011, 22:32 »
bueno a lo de antes qusiera añadir que sí que puedo sacar los numeros como enteros decimales así:
fscanf (pFileShell, "%d", &iOpCode);
pero en hexadecimal de esta manera:fscanf (pFileShell, "%x", &iOpCode);
tras ejecutarla iOpCode contiene -1957267453

3
C/C++ / Re: pasar de codigos ascii a sus correspondientes caracteres.
« en: Lunes 11 de Abril de 2011, 22:12 »
el ejemplo es bueno, lo que pasa es que estoy viendo que mi verdadero problema está en la forma de sacar los caracteres del fichero de texto. Es decir que si en el fichero de texto tengo escrito 33 y lo saco tanto con fgets o fscanf lo que saco es el codigo ascii del 33. Y ese es el problema de que no pueda transformarlo en sus codigos ascii, ya que si yo pudiese sacar el numero 33 como entero hexadecimal podría convertirlo en su caracter ascii solo con asignarlo directamente a una cadena, o a un char, de esta forma:
int numero = 33;
char caracter = numero;
(no lo he probado pero creo que es así,) en resumen que mi problema parece ser otro distinto al del título, ya que lo que necesito es extraer el número que está escrito como texto en un fichero de texto y convertirlo a entero.
uf ya se lía.

4
C/C++ / Re: pasar de codigos ascii a sus correspondientes caracteres.
« en: Lunes 11 de Abril de 2011, 01:21 »
Cita de: "Thanatos-chan"
lo de pasar de hex a ascii, se puede, mas lo que se tiene que ver es como identificar, los strings en hexadecimal.

a ver publica un archivo "codigos.txt"
no se si te entendí bien, me pides que adjunte el fichero codigos.txt?, vale, va adjunto.
contiene caracteres e hexadecimal a mogollón. Lo que necesito es cogerlos de dos en dos y (tratandolos como si fuesen caracteres ascii, que por cierto saldrán unos caracteres rarísimos) obtener su caracter ascii equivalente. Todo esto es algo ambiguo por lo siguiente:
Un caracter cualquiera, la 'a' por ejemplo no es más que el codigo ascii 61 (creo recordar). Luego son la misma cosa, es decir que para tener un char que contenga la letra 'a' lo que va a contener ese char en realidad es el número 61, que es su codigo ascii. ¿cual es el problema entonces? que yo necesito obtener del fichero de texto, los numeros como tal, es cedir 33,8f,4d, etc, pero en lugar de eso lo único que he conseguido leer son los caracteres ascii de esos numeros ¿me explico?ose que si yo leo de ese fichero con fscanf en lugar de un 33, obtengo los caracteres ascii del '3' y del '3' lo cual no me vale, porque yo necesito obtener un entero en hexadecimal que es el 33. Ya verás que la cosa es más complicada de lo que parece.

si yo tengo por ejemplo un fichero codigos.txt con esto:
33  33

lo que tengo es que obtener un fichero caracteres.txt con esto:
! ! (pongo sólo el 33 porque es el único codigo que me sé que es el de la '!')

un saludo,espero no haberlo liado aun más.

5
C/C++ / pasar de codigos ascii a sus correspondientes caracteres.
« en: Domingo 10 de Abril de 2011, 15:23 »
hola, tengo la necesidad de convertir un archivo que contiene caracteres ascii en formato texto (en hexadecimal), a sus correspondientes caracteres ascii. ¿es un lío verdad? en realidad noes complicado de entender pero sí de hacer:
tengo un archivo codigos.txt que contiene esto por ejemplo:
6d 6e 6f
y quiero obtener con c++ sus caracteres para meterlos en otro fichero es decir, que el otro fichero (letras.txt)quedaría:
m n o
Y esto que pensé que iba a ser coser y cantar me encuentro que soy incapaz de hacerlo.
¿alguna idea?

6
Visual C++ / Re: no consigo ejecutar aplicación con shellexecute.
« en: Jueves 31 de Marzo de 2011, 13:19 »
ok, ya lo había resuelto en el foro de c++

un saludo.

7
C/C++ / Re: problema con shellexecute
« en: Miércoles 30 de Marzo de 2011, 00:36 »
Cita de: "Epa"
Buenas

Fijate que las  en las cadenas se representan con \

Proba lo siguiente con el programa en C:

ShellExecute(NULL,"open", "miPrograma.exe",NULL,"C:\", SW_SHOW);

Si funciona vas a tener que pasarle la ruta completa. Lo que podes conseguir facilmente de argv[0] del main.

Saludos

 :good: , por fin, además de eso tambiénhabía que tener en cuenta que para ejecutar la calculadora hay que ejecutarla como administrador. Así que era necesario ejecutar uno que no necesitara ser ejecutado como administrador.

Gracias!!

8
C/C++ / problema con shellexecute
« en: Lunes 28 de Marzo de 2011, 02:39 »
estoy que no doy una, he probado todas las combinaciones pero no consigo ejecutar un maldito programa con shellexecute. Lo quetengo es un programa en c++ que utiliza esta instrucción para ejecutar otro programa:
Código: C++
  1. ShellExecute(NULL,"open", "miPrograma.exe",NULL,NULL, SW_SHOW);
  2.  
pero compila, pasa de largo y no hace nada.
la aplicación miPrograma.exe se encuentra en la misma carpeta que el que estoy ejecutando.
he probado tambien así:
miPrograma.exe
así: (poniendo miPrograma.exe en C:)
Código: C++
  1. ShellExecute(NULL,"open", "miPrograma.exe",NULL,"C:", SW_SHOW);
  2.  
  3.  
pero nada, ninguna funciona.
Sólo me ha funcionado esto:
Código: C++
  1. ShellExecute(NULL,"open", "calc.exe",NULL,NULL, SW_SHOW);
  2.  
ya que la calculadora es accesible desde cualquier punto.
no obstante si coloco la calculadora en c: y hago esto:
Código: C++
  1. ShellExecute(NULL,"open", "calc.exe",NULL,"C:", SW_SHOW);
  2.  
  3.  
ya no funciona tampoco.

9
Visual C++ / no consigo ejecutar aplicación con shellexecute.
« en: Sábado 26 de Marzo de 2011, 22:17 »
estoy que no doy una, he probado todas las combinaciones pero no consigo ejecutar un maldito programa con shellexecute. Lo quetengo es un programa en c++ que utiliza esta instrucción para ejecutar otro programa:
Código: C++
  1. ShellExecute(NULL,"open", "miPrograma.exe",NULL,NULL, SW_SHOW);
  2.  
pero compila, pasa de largo y no hace nada.
la aplicación miPrograma.exe se encuentra en la misma carpeta que el que estoy ejecutando.
he probado tambien así:
miPrograma.exe
así: (poniendo miPrograma.exe en C:)
Código: C++
  1. ShellExecute(NULL,"open", "miPrograma.exe",NULL,"C:", SW_SHOW);
  2.  
pero nada, ninguna funciona.
Sólo me ha funcionado esto:
Código: C++
  1. ShellExecute(NULL,"open", "calc.exe",NULL,NULL, SW_SHOW);
  2.  
ya que la calculadora es accesible desde cualquier punto.
no obstante si coloco la calculadora en c: y hago esto:
Código: C++
  1. ShellExecute(NULL,"open", "calc.exe",NULL,"C:", SW_SHOW);
  2.  
ya no funciona tampoco.

10
Visual C++ / Re: relaciones y funciones en c++
« en: Viernes 11 de Febrero de 2011, 01:50 »
me suena a teoría de conjuntos y la verdad lo desconozco bastante, de todas formas lo primero me imagino que lo harás con numeros enteros. Como el número de elementos de los conjuntos no va a ser fijo, me imagino que tendrás que utilizar colecciones (así podrás meter todos los elementos que quieras). Luego por ejemplo defines una clase Conjunto (así muy por encima, la sintaxis está mal, es sólo un esquema)

class Conjunto
private Collection Elementos;
public static Union(Conjunto C1, Conjunto C2);
public static Intersecion(Conjunto C1, Conjunto C2);
...


las operaciones las declaras static para poder utilizarlas entre dos conjuntos distintos, es decir que le puedas pasar dos clases distintas a la propia clase como parámetro, si no no podrás operar con dos conjuntos distintos.

Y utilizando las operaciones obtienes si la relación es inductiva o reflexiva o lo que sea que no tengo ni idea.

Pero es ahún más complicado, ya que los elementos deben ser tambien clases, ya que cada elemento (si no me equivoco consta de varios números):

A = { 1 , 2 , 3 }
R = { ( 1 , 1 ) , ( 1 , 3 ) , ( 2 , 2 ) , ( 3 , 2 ) , ( 3 , 3 ) }

El conjunto A, está formado por una colección de 3 elementos
cada elemento consta de un sólo número.
Pero el conjunto B, está formado por una colección de 5 elementos, cada uno de los cuales consta de dos números.
Por lo tanto los elementos deben de ser de esta forma:

Class Elemento
Private Collection Números


Esto es una idea, lo difícil está en implementar las operaciones.

11
Visual C++ / Re: qué tipo de proyecto de visual c++ debería escoger?
« en: Viernes 11 de Febrero de 2011, 01:16 »
bueno, creo que lo que necesito no es un thread, sino simplemente un proceso sin ventana.Y sí, que hay diferencia entre un thread y una aplicación de ventana, vaya si la hay. Pero... cómo voy a capturar eventos del ratón en un proceso sin ventana? En windows todo se basa en las ventanas (ya el propio nombre lo dice todo), los eventos del ratón se mandan a las ventanas, los eventos de un temporizador (que tambien necesito) se mandan a la ventana que lo ha creado. Total que no se como hacer para capturar los eventos sin una ventana.

Habrá posibilidad de utilizar la funcion LRESULT CALLBACK WndProc sin estar asociada a una ventana?

12
Visual C++ / Re: qué tipo de proyecto de visual c++ debería escoger?
« en: Jueves 10 de Febrero de 2011, 14:07 »
por el momento lo que voy a hacer es un proyecto de win32 (no de consola) vacío y le añadiré el código para crear una aplicación mínima. Veremos si llego a buen puerto. Normalmente en este tipo de aplicaciones siempre llega momento en el que en todos los ejemplos se añade una ventana. Yo no necesito una ventana. Creo que lo que yo necesito es un thread. Veremos a ver en qué se diferencia un thread de una ventana, si es que se diferencian.

un saludo.

13
Visual C++ / qué tipo de proyecto de visual c++ debería escoger?
« en: Miércoles 9 de Febrero de 2011, 23:57 »
hola quiero hacer un programa que tiene que comprobar la actividad del  ratón y en función de eso hacer una cosa, o no hacerla.
Y bueno, el programa tendría que ejecutarse de manera "invisible", bueno... no exactamente. Tendría que ser uno de esos procesos que aparecen en la pestaña "procesos" en el administrador de tareas. Osea que debería de ser un proceso sin interfaz de usuario de ningún tipo. Ni siquiera constaría de una consola. Por eso que no sé exactamente cómo hacerlo. Yo suelo hacer los programas en visual c++, como proyecto de win32 si es de ventanas, o como aplicación de consola, si es de consola. Pero en este caso no sé qué tipo de proyecto debo elegir. Es más, ni siquiera tengo claro que se pueda hacer con el visualc++.

Para explicarme mejor, indico que el programa lo único que tiene que hacer es comprobar la actividad del ratón y cuando pase más de cierto tiempo sin actividad, apagar el sistema. Así a simple vista parece una chorrada ya que hay una opción de windows que hacer CASI lo mismo, pero lo necesito para una cosa concreta.
Por lo tanto el proceso debería iniciarse al iniciar el windows, pero a poder ser sin que aparezca ninguna consola ni nada: de manera invisible, o mejor dicho, de manera silenciosa.

Me podríais guiar un poco?

14
Visual C++ / Re: Error con cast.
« en: Jueves 3 de Febrero de 2011, 23:56 »
Cita de: "rfog"
Pues no te lo puedo confirmar exactamente.

Es que hay diferencias entre C y C++. C++ es más estricto con los tipos, en C casi puedes juntar peras con manzanas sin problemas... Si los estás compilando en GNU como C, lo mismo Visual C++ compilado como C también traga...

De todos modos, si quieres estar seguro, búscate el "Comeau" Frontend y mete ese código (el tuyo y el mío). El que no entre en el Comeau es que no es código correcto.

no importa...
me vale con que me funcione, un saludo!! :good:

15
Visual C++ / Re: Error con cast.
« en: Jueves 3 de Febrero de 2011, 20:01 »
Cita de: "rfog"
Me pa que los paréntesis del cast están mal...

Esto sí fona:

#include "stdafx.h"
#include <windows.h>
char code[] = "aquí va una shellcode";
typedef void (*pfnc_initDevice)(void);

int _tmain(int argc, _TCHAR* argv[])
{
   pfnc_initDevice pfnc=(pfnc_initDevice)&code[0];
   pfnc();
   return 0;
}
pues sí, este funciona con visual c++. De todas formas el anterior funciona perfectamente con gcc (o dev-c++), y la sintaxis parece c++ normal y corriente, será algo de que  visualc++ no acepta ese tipo de casts "anidados"? Porque lo que es un error de sintaxis no parece ya que va en gcc. También es cierto que el código es mucho más claro con el typedef.

16
Visual C++ / Error con cast.
« en: Jueves 3 de Febrero de 2011, 15:49 »
hola estoy intentando compilar esto con visual c++ 2008, me han comentado que con gcc compila perfectamente pero con visual c++ me dá error:
(c2440):type_cast, cannot conver from char[20] to void (__cdecl*)(void) ¿hay algún error de sintaxis?

#include <stdio.h>
#include <string.h>
char code[] = "aquí va una shellcode";
int main(int argc, char **argv)
{
   (*(void(*)()) code)();
   return 0;
}

17
ok, un saludo!

18
bien vale, con lo cual el codigo que yo vaya a hacer está al mismo nivel que el de un servidor web, que estaría a su vez en el nivel de aplicación, ok tiene sentido.
Es que en algún momento me pareció que el http podía ser una capa más del protocolo osi, cuando en realidad no lo es.

Un saludo. :good:

19
Cita de: "m0skit0"
Tienes que tener un formato sí o sí, sino el servidor no sabría distinguir entre los datos que le llegan. ¿Cuánto ocupa ese número? ¿Qué significa? ¿Cómo se trata? Eso es un formato (protocolo).

Y respondiendo a tu pregunta, estaría en la capa de aplicación obviamente.

Saludos.
vale, tienen un formato, es decir son números enteros, a lo que me refiero es que no voy a enviar páginas web sino que voy a establecer una comunicación mediante dos sockets, uno es el cliente y otro el servidor. Es una comunicación tcp/ip. No utilizaré nada referente a páginas web ni servidores web (post, get, http etc.). Lo que pasa es que las comunicaciones por ethernet son complicadas a la hora de entenderlas. No se trata de llamar a una api del sistema para relizar la comunicación sino que hay muchas capas y no me doy enterado bien de cómo funcionan.

Por lo tanto...  (esto es lo importante). ¿Los sockets están en el nivel de aplicación?

20
la verdad no sabía en que subforo encajar esta pregunta, supongo que este es el más adecuado.
Mi caso es que quiero comunicar dos aplicaciones en maquinas distintas mediante ethernet con el protocolo tcp/ip. Para ello una es el servidor y otra el cliente y ambas se comunican mediante sockets. A este nivel me parece que no tiene sentido hablar de http, con lo cual quería saber a qué nivel del protocolo osi, estaría.
Es decir que quiero mandar números enteros entre una máquina y otra, pero sin ningún formato ni nada, es decir mandar directamente 1,79, 355, 32,5, (me explico?). Entonces no tiene sentido hablar de http ya que es para enviar páginas web. Entocnes la pregunta es, si la aplicación funciona así... ¿en qué capa del protocolo osi estaríamos trabajando?

un saludo.

21
C# / Re: ¿se pueden crear aplicaciones de 16 bits en visual .net?
« en: Martes 25 de Enero de 2011, 00:35 »
Cita de: "m0skit0"
El hardware moderno ejecuta perfectamente un sistema de 16 bits, así que MS-DOS funcionaría perfectamente en cualquier PC (siempre ke encuentres cómo instalarlo). Es la lacra de retrocompatibilidad a la que nos tiene acostumbrados Intel (y últimamente por culpa de AMD). Y de todas formas una máquina virtual no es más que una representación abstracta del hardware de ahora. Así que si funciona en una MV, funciona en una máquina real.

De todas formas no tiene sentido alguno desarrollar nada para 16 bits en la actualidad.
anda mira, alguien que opina lo contrario, pues entonces habrá que intentarlo.
Por cierto no pensaba instalar msdos sino cargarlo directamente desde el cdrom, como he hecho ya varias veces, la única duda es si voy a poder acceder al sistema de interrupciones y en general si voy a poder hacer funcionar una aplicación de 16 bits. Está claro que es cuestión de probarlo y comprobar a ver, pero antes de intentarlo prefiero preguntar a ver si va a ser posible o no.

22
C# / Re: ¿se pueden crear aplicaciones de 16 bits en visual .net?
« en: Lunes 24 de Enero de 2011, 12:35 »
muchas gracias por tu ayuda, un saludo. ;)

23
C# / Re: ¿se pueden crear aplicaciones de 16 bits en visual .net?
« en: Domingo 23 de Enero de 2011, 16:23 »
Cita de: "rfog"
Cita de: "black_flowers"
bueno, a ver. Yo pensaba ejecutarlo en msdos, pero según tú no hay hardware que sea capaz de ejecutarlo, si es así, desde luego desisto en mi intento. Es decir, no hay posibilidad de cargar el msdos en una máquina moderna? (Pentium core2duo). Recuerdo haberlo cargado desde un cdrom hace ya algún tiempo pero no se si sería el propio msdos. El programa no tiene ningún uso, es simplemente para trabajar con las interrupciones de msdos y probar algunas cosas.

Por lo demás probaré el open watcom.

un saludo.

Y por otro lado, a fecha de hoy, aprender todo eso es perder el tiempo... TU mismo.
jeje , ya lo sé, lo que no sabía era que no se pudiese ejecutar un programa msdos ni siquiera desde el propio msdos, ¿por qué no es posible esto?, es decir si tengo una computadora y cargo un cd con el msdos, ¿no puede ejecutar aplicaciones de msdos? o es simplemente que no puede acceder a las interrupciones y esa clase de cosas que pertenecen al hardware?

24
C# / Re: ¿se pueden crear aplicaciones de 16 bits en visual .net?
« en: Domingo 23 de Enero de 2011, 12:27 »
Cita de: "rfog"
¿Y qué puñetas tienes que hacer para MS-DOS de 16 bits? No creo que haya en el mercado ningún hardware que sea capaz de ejecutar eso. Desde hace por lo menos cinco años ninguna placa trae BIOS de 16 bits, por lo que ni siquiera podrás ejecutar un mísero Windows 3.1 o Windows 95...

De todos modos tienes el Open Watcom, que trae IDE incorporado y todo: http://www.openwatcom.org/index.php/Main_Page

Pero no esperes poder ejecutar nada en modo msdos real desde windows xp...

Y no, el DevC++ creo que tampoco te valdría.
bueno, a ver. Yo pensaba ejecutarlo en msdos, pero según tú no hay hardware que sea capaz de ejecutarlo, si es así, desde luego desisto en mi intento. Es decir, no hay posibilidad de cargar el msdos en una máquina moderna? (Pentium core2duo). Recuerdo haberlo cargado desde un cdrom hace ya algún tiempo pero no se si sería el propio msdos. El programa no tiene ningún uso, es simplemente para trabajar con las interrupciones de msdos y probar algunas cosas.

Por lo demás probaré el open watcom.

un saludo.

25
C# / Re: ¿se pueden crear aplicaciones de 16 bits en visual .net?
« en: Sábado 22 de Enero de 2011, 22:22 »
Cita de: "rfog"
No.

Las aplicaciones de consola son de 32 ó 64 bits, nativas de win32/win64 con la capa .NET encima. La consola de windows no es más que una emulación de un terminal, y de hecho la versión de 64 bits no permite ejecutar código de 16 bits. La de 32 creo que sí, pero con extraordinarias limitaciones.

Además, el .NET no está disponible para 16 bits.
:ouch: entonces para msdos ya ni hablamos.
y ya que estamos con el tema... no sabrás de algún compilador de c++ para msdos pero desde windows? Me valdría el DevC++¿? es decir resumiento y hablando en plata, un compilador de c++ para hacer programas para msdos.
En asm sé que se pueden hacer pero eso es para eruditos de la informática   :hitcomp:

Páginas: [1] 2