elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 21:52  


Tema destacado: Únete al Grupo Steam elhacker.NET

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  [Source] File Bin2Hex
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Source] File Bin2Hex  (Leído 1,379 veces)
yeikos


Desconectado Desconectado

Mensajes: 1.424



Ver Perfil
[Source] File Bin2Hex
« en: 8 Junio 2007, 10:59 »

Aquí os dejo mi primer programa en C, es posible que no esté 100% optimizado, por eso espero que me aconsejéis un poco, más que nada para optimizar/mejorar el código...

File Bin2Hex exporta cualquier binario a hexadecimal (\xXX) en un documento de texto para que luego pueda ser más manejable a la hora de editarlo y/o exportarlo desde C/Perl.

PD: Si lo intento compilar con VC++ me da 8 errores y 42 warnings, en cambio con Dev-C++ lo compila perfectamente, ¿alguien sabe por qué es?

Descarga: http://www.streamupload.com/download.aspx?fileID=20076843739
MD5 Hash: 0960b5b10093f122fb27bd0c9014d7f7

Código
#include <stdio.h>
 
// File Bin2Hex 1.0 by YeIk0s - yeikos (at) gmail (dot) com
 
// Este programa es software libre. Puede redistribuirlo y/o modificarlo
// bajo los términos de la Licencia Publica General de GNU según es publicada
// por la Free Software Foundation, bien de la versión 2 de dicha Licencia
// o bien (según su elección) de cualquier versión posterior.
 
// Este programa se distribuye con la esperanza de que sea útil,
// pero SIN NINGUNA GARANTÍA, incluso sin la garantía MERCANTIL implícita o
// sin garantizar la CONVENIENCIA PARA UN PROPÓSITO PARTICULAR.
// Véase la Licencia Publica General de GNU para mas detalles.
 
// http://www.gnu.org/copyleft/gpl.html
 
// bin2hex.c compilado con Dev-C++ 4.9.9.2
 
int main(int argc, char **argv)
{
float x;  float y; unsigned char End; unsigned int Error; unsigned int size; char Re;
unsigned int i; unsigned char strFile[255] = "";  unsigned char strFileB[255] = "";
 
if (argc < 2) {
printf ("\nFile Bin2Hex 1.0 by YeIk0s - yeikos (at) gmail (dot) com \n");
printf ("\nUso: %s archivo\n",argv[0]);
return 1;
}
 
strcat(strFile,argv[1]);
 
for (i = strlen (argv[1]); i > 0; i--) {
if (argv[1][i] == '.') {
strFile[i] = '\0';
break;
}
}
 
strcpy(strFileB,strFile);
strcat(strFileB,".txt");
Error=strcmp(strFileB, argv[1]);
 
if (Error==0) {
strcat(strFile,"~.txt");
} else {
strcpy(strFile,strFileB);
}
 
FILE *MyFile; MyFile = fopen(argv[1], "rb");
 
if(!MyFile) {
printf("\nOcurrio un error de lectura.\n");
return 1;
}
 
FILE *FileExist; FileExist = fopen(strFile, "r");
 
if (FileExist) {
printf("\nEl archivo %s ya existe, desea reemplazarlo? S/N: ", strFile);
scanf( "%s", &Re );
 
if (toupper(Re)!='S' && toupper(Re)!='Y') {
return 1;
}
}
 
FILE *ExportFile; ExportFile = fopen(strFile, "w+");
 
if(!ExportFile) {
printf("\nOcurrio un error de escritura.\n");
return 1;
}
 
fseek(MyFile, 0L, SEEK_END);
size=ftell(MyFile);
fseek(MyFile, 0L, SEEK_SET);
 
fwrite("\"", 1, 1, ExportFile);
 
while(1) {
x = ftell(MyFile);
y = ((x+1)/16);
 
if (ftell(MyFile) == size) { break; }
 
char strHex[3] = "";
 
sprintf(strHex, "\\x%02X", (unsigned char) fgetc(MyFile));
fwrite(strHex, 4, 1, ExportFile);
 
if (y-(int)y==0) {
if (ftell(MyFile)==size) {
End = 1; fwrite("\";", 2, 1, ExportFile);
} else {
fwrite("\".\n\"", 4, 1, ExportFile);
}
}
}
 
if (End!=1) {
fwrite("\";", 2, 1, ExportFile);
}
 
if(fclose(MyFile) || fclose(ExportFile)) {
printf("\nOcurrio un error de lectura/escritura.\n");
return 1;
}
 
return 0;
}
 


« Última modificación: 1 Septiembre 2007, 00:18 por yeikos » En línea
EvilGoblin


Desconectado Desconectado

Mensajes: 2.320


YO NO LA VOTE!


Ver Perfil
Re: [Source] File Bin2Hex
« Respuesta #1 en: 8 Junio 2007, 13:02 »

Mayormente en el comentario de cabezera yo pongo una aclaratoria de que tipo de programa es y para que sirve  :-[

y a mi siempre cada vez que paso de un compilador a otro te me tira error y warnings... incluso de DEV C++ a BORLAND
y ni hablar de C++.Net ^^
Aunque deberia ser UniCompiler =\ Todos deberian compilar medinamente igual  como el GCC ^^

Ahora lo pruebo ;)


En línea

Experimental Serial Lain [Linux User]
yeikos


Desconectado Desconectado

Mensajes: 1.424



Ver Perfil
Re: [Source] File Bin2Hex
« Respuesta #2 en: 8 Junio 2007, 13:16 »

Ya edité el mensaje principal, lo creé por que estaba en busca de stack overflows y con un editor Hex tenía que copiar todos los valores hexadecimales, y luego ponerle sus respectivos caracteres para que pudiera ser exportado desde Perl, en definitiva, que me tiraba mis minutos con ese largo proceso.

En un principio decidí hacerlo en VB, ya que lo controlo y no me iba a llevar mas de 20 minutos, pero luego cambié de opinión y me planteé un reto, hacerlo en C :P.
En línea
SirLanceCC


Desconectado Desconectado

Mensajes: 1.090


Ver Perfil WWW
Re: [Source] File Bin2Hex
« Respuesta #3 en: 9 Junio 2007, 17:32 »

Si entiendo bien el programa va a leer cada byte del archivo de entrada y lo va a escribir en un archivo de salida en hexadecimal, ¿no?
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines