|
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 - m3kanic0
Páginas: [1]
1
« en: Viernes 19 de Mayo de 2006, 07:17 »
gracias por las respuestas ojala resulte lo que quiero hacer.
2
« en: Miércoles 17 de Mayo de 2006, 16:21 »
gracias por la respuesta intentare hacer lo que entendi de aca gracias.
3
« en: Miércoles 17 de Mayo de 2006, 05:38 »
Una consulta continuando con el tema aquel si yo a este trozo de codigo:
int main (argc, argv) int argc; char *argv[]; { mas codigo }
Intento transformarlo en funcion estaria bien escrito asi ?
void md5 (argc, argv) int argc; char *argv[]; { mas codigo }
4
« en: Miércoles 17 de Mayo de 2006, 05:30 »
NO es lo mismo la primera con la segunda entonces ?
5
« en: Martes 16 de Mayo de 2006, 08:09 »
tengo uncodigo y compila bien pero no entiendo pk sale asi int main (argc, argv) int argc; char *argv[]; { mas codigo } y no asi int main (argc, argv) { int argc; char *argv[]; mas codigo } no entiendo sere muy bruto ?
6
« en: Viernes 12 de Mayo de 2006, 17:41 »
como una funcion intentare eso ep. tendria que cambiar int main (argc, argv) ??
quiero validar en md5 pk juego online y muchos de los jugadores modifican partes del juego para jugar con algun tipo de ventaja asi obligo a que el juego lo mantengan intacto. y podria comprovar su autenticidad.
7
« en: Jueves 11 de Mayo de 2006, 20:09 »
tengo el programa grande es un juego. q2 pa ser mas especifico. y el codigo que puse es de un programa de verficcacion md5 queria dentro del quake2 poder usar la verificacion md5. no soy muy experimentado.
8
« en: Martes 9 de Mayo de 2006, 20:59 »
Como debiese hacerlo ? osea dos codigos fuentes Un codigo realmente extenso onda un juego mesclado con un md5 para verificacion de archivos. ? /*
Calculate or Check MD5 Signature of File or Command Line Argument
by John Walker http://www.fourmilab.ch/
This program is in the public domain.
*/
#define VERSION "2.0 (2003-04-15)"
#include <stdio.h> #include <ctype.h> #include <string.h> #ifdef _WIN32 #include <fcntl.h> #include <io.h> #endif
#include "md5.h"
#define FALSE 0 #define TRUE 1
#define EOS '\0'
/* Main program */ int main (argc, argv) int argc; char *argv[]; { int i, j, opt, cdata = FALSE, docheck = FALSE, showfile = TRUE, f = 0; unsigned int bp; char *cp, *clabel, *ifname, *hexfmt = "%02X"; FILE *in = stdin, *out = stdout; unsigned char buffer[16384], signature[16], csig[16]; struct MD5Context md5c;
for (i = 1; i < argc; i++) { cp = argv; if (*cp == '-') { if (strlen(cp) == 1) { i++; break; /* - -- Mark end of options; balance are files */ } opt = *(++cp); if (islower(opt)) { opt = toupper(opt); }
switch (opt) {
case 'C': /* -Csignature -- Check signature, set return code */ docheck = TRUE; if (strlen(cp + 1) != 32) { docheck = FALSE; } memset(csig, 0, 16); clabel = cp + 1; for (j = 0; j < 16; j++) { if (isxdigit((int) clabel[0]) && isxdigit((int) clabel[1]) && sscanf((cp + 1 + (j * 2)), hexfmt, &bp) == 1) { csig[j] = (unsigned char) bp; } else { docheck = FALSE; break; } clabel += 2; } if (!docheck) { fprintf(stderr, "Error in signature specification. Must be 32 hex digits.\n"); return 2; } break;
case 'D': /* -Dtext -- Compute signature of given text */ MD5Init(&md5c); MD5Update(&md5c, (unsigned char *) (cp + 1), strlen(cp + 1)); cdata = TRUE; f++; /* Mark no infile argument needed */ break; case 'L': /* -L -- Use lower case letters as hex digits */ hexfmt = "%02x"; break; case 'N': /* -N -- Don't show file name after sum */ showfile = FALSE; break; case 'O': /* -Ofname -- Write output to fname (- = stdout) */ cp++; if (strcmp(cp, "-") != 0) { if (out != stdout) { fprintf(stderr, "Redundant output file specification.\n"); return 2; } if ((out = fopen(cp, "w")) == NULL) { fprintf(stderr, "Cannot open output file %s\n", cp); return 2; } } break;
case '?': /* -U, -? -H -- Print how to call information. */ case 'H': case 'U': printf("\nMD5 -- Calculate MD5 signature of file. Call"); printf( "\n with md5 [ options ] [file ...]"); printf("\n"); printf("\n Options:"); printf("\n -csig Check against sig, set exit status 0 = OK"); printf("\n -dtext Compute signature of text argument"); printf("\n -l Use lower case letters for hexadecimal digits"); printf("\n -n Do not show file name after sum"); printf("\n -ofname Write output to fname (- = stdout)"); printf("\n -u Print this message"); printf("\n -v Print version information"); printf("\n"); printf("\nby John Walker -- http://www.fourmilab.ch/"); printf("\nVersion %s\n", VERSION); printf("\nThis program is in the public domain.\n"); printf("\n"); return 0; case 'V': /* -V -- Print version number */ printf("%s\n", VERSION); return 0; } } else { break; } } if (cdata && (i < argc)) { fprintf(stderr, "Cannot specify both -d option and input file.\n"); return 2; } if ((i >= argc) && (f == 0)) { f++; } for (; (f > 0) || (i < argc); i++) { if ((!cdata) && (f > 0)) { ifname = "-"; } else { ifname = argv; } f = 0;
if (!cdata) { /* If the data weren't supplied on the command line with the "-d" option, read it now from the input file. */ if (strcmp(ifname, "-") != 0) { if ((in = fopen(ifname, "rb")) == NULL) { fprintf(stderr, "Cannot open input file %s\n", ifname); return 2; } } else { in = stdin; } #ifdef _WIN32
/** Warning! On systems which distinguish text mode and binary I/O (MS-DOS, Macintosh, etc.) the modes in the open statement for "in" should have forced the input file into binary mode. But what if we're reading from standard input? Well, then we need to do a system-specific tweak to make sure it's in binary mode. While we're at it, let's set the mode to binary regardless of however fopen set it.
The following code, conditional on _WIN32, sets binary mode using the method prescribed by Microsoft Visual C 7.0 ("Monkey C"); this may require modification if you're using a different compiler or release of Monkey C. If you're porting this code to a different system which distinguishes text and binary files, you'll need to add the equivalent call for that system. */
_setmode(_fileno(in), _O_BINARY); #endif MD5Init(&md5c); while ((j = (int) fread(buffer, 1, sizeof buffer, in)) > 0) { MD5Update(&md5c, buffer, (unsigned) j); } } MD5Final(signature, &md5c);
if (docheck) { docheck = 0; for (j = 0; j < sizeof signature; j++) { if (signature[j] != csig[j]) { docheck = 1; break; } } if (i < (argc - 1)) { fprintf(stderr, "Only one file may be tested with the -c option.\n"); return 2; } } else { for (j = 0; j < sizeof signature; j++) { fprintf(out, hexfmt, signature[j]); } if ((!cdata) && showfile) { fprintf(out, " %s", (in == stdin) ? "-" : ifname); } fprintf(out, "\n"); } }
return docheck; } /* * This code implements the MD5 message-digest algorithm. * The algorithm is due to Ron Rivest. This code was * written by Colin Plumb in 1993, no copyright is claimed. * This code is in the public domain; do with it what you wish. * * Equivalent code is available from RSA Data Security, Inc. * This code has been tested against that, and is equivalent, * except that you don't need to include two pages of legalese * with every copy. * * To compute the message digest of a chunk of bytes, declare an * MD5Context structure, pass it to MD5Init, call MD5Update as * needed on buffers full of bytes, and then call MD5Final, which * will fill a supplied 16-byte array with the digest. */
/* Brutally hacked by John Walker back from ANSI C to K&R (no prototypes) to maintain the tradition that Netfone will compile with Sun's original "cc". */
#include <memory.h> /* for memcpy() */ #include "md5.h"
#ifdef sgi #define HIGHFIRST #endif
#ifdef sun #define HIGHFIRST #endif
#ifndef HIGHFIRST #define byteReverse(buf, len) /* Nothing */ #else /* * Note: this code is harmless on little-endian machines. */ void byteReverse(buf, longs) unsigned char *buf; unsigned longs; { uint32 t; do { t = (uint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 | ((unsigned) buf[1] << 8 | buf[0]); *(uint32 *) buf = t; buf += 4; } while (--longs); } #endif
/* * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious * initialization constants. */ void MD5Init(ctx) struct MD5Context *ctx; { ctx->buf[0] = 0x67452301; ctx->buf[1] = 0xefcdab89; ctx->buf[2] = 0x98badcfe; ctx->buf[3] = 0x10325476;
ctx->bits[0] = 0; ctx->bits[1] = 0; }
/* * Update context to reflect the concatenation of another buffer full * of bytes. */ void MD5Update(ctx, buf, len) struct MD5Context *ctx; unsigned char *buf; unsigned len; { uint32 t;
/* Update bitcount */
t = ctx->bits[0]; if ((ctx->bits[0] = t + ((uint32) len << 3)) < t) ctx->bits[1]++; /* Carry from low to high */ ctx->bits[1] += len >> 29;
t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */
/* Handle any leading odd-sized chunks */
if (t) { unsigned char *p = (unsigned char *) ctx->in + t;
t = 64 - t; if (len < t) { memcpy(p, buf, len); return; } memcpy(p, buf, t); byteReverse(ctx->in, 16); MD5Transform(ctx->buf, (uint32 *) ctx->in); buf += t; len -= t; } /* Process data in 64-byte chunks */
while (len >= 64) { memcpy(ctx->in, buf, 64); byteReverse(ctx->in, 16); MD5Transform(ctx->buf, (uint32 *) ctx->in); buf += 64; len -= 64; }
/* Handle any remaining bytes of data. */
memcpy(ctx->in, buf, len); }
/* * Final wrapup - pad to 64-byte boundary with the bit pattern * 1 0* (64-bit count of bits processed, MSB-first) */ void MD5Final(digest, ctx) unsigned char digest[16]; struct MD5Context *ctx; { unsigned count; unsigned char *p;
/* Compute number of bytes mod 64 */ count = (ctx->bits[0] >> 3) & 0x3F;
/* Set the first char of padding to 0x80. This is safe since there is always at least one byte free */ p = ctx->in + count; *p++ = 0x80;
/* Bytes of padding needed to make 64 bytes */ count = 64 - 1 - count;
/* Pad out to 56 mod 64 */ if (count < 8) { /* Two lots of padding: Pad the first block to 64 bytes */ memset(p, 0, count); byteReverse(ctx->in, 16); MD5Transform(ctx->buf, (uint32 *) ctx->in);
/* Now fill the next block with 56 bytes */ memset(ctx->in, 0, 56); } else { /* Pad block to 56 bytes */ memset(p, 0, count - 8); } byteReverse(ctx->in, 14);
/* Append length in bits and transform */ ((uint32 *) ctx->in)[14] = ctx->bits[0]; ((uint32 *) ctx->in)[15] = ctx->bits[1];
MD5Transform(ctx->buf, (uint32 *) ctx->in); byteReverse((unsigned char *) ctx->buf, 4); memcpy(digest, ctx->buf, 16); memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */ }
/* The four core functions - F1 is optimized somewhat */
/* #define F1(x, y, z) (x & y | ~x & z) */ #define F1(x, y, z) (z ^ (x & (y ^ z))) #define F2(x, y, z) F1(z, x, y) #define F3(x, y, z) (x ^ y ^ z) #define F4(x, y, z) (y ^ (x | ~z))
/* This is the central step in the MD5 algorithm. */ #define MD5STEP(f, w, x, y, z, data, s) \ ( w += f(x, y, z) + data, w = w<<s | w>>(32-s), w += x )
/* * The core of the MD5 algorithm, this alters an existing MD5 hash to * reflect the addition of 16 longwords of new data. MD5Update blocks * the data and converts bytes into longwords for this routine. */ void MD5Transform(buf, in) uint32 buf[4]; uint32 in[16]; { register uint32 a, b, c, d;
a = buf[0]; b = buf[1]; c = buf[2]; d = buf[3];
MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
buf[0] += a; buf[1] += b; buf[2] += c; buf[3] += d; }
9
« en: Lunes 8 de Mayo de 2006, 01:56 »
Intente compilar este cliente y funciono pero luego le agrege unos sources de CRC32 y me sale el siguiente error no cacho. alguien me puede ayudar.?
------ Build started: Project: quake2, Configuration: Dedicated Only Win32 ------
Compiling... check.c qcommon\check.c(73) : warning C4013: 'isatty' undefined; assuming extern returning int qcommon\check.c(381) : warning C4013: 'snprintf' undefined; assuming extern returning int Linking... sys_win.obj : error LNK2005: _main already defined in check.obj check.obj : error LNK2019: unresolved external symbol _snprintf referenced in function _commafy ./build/binaries/release/dedicated.exe : fatal error LNK1120: 1 unresolved externals
Build log was saved at "file://c:\Documents and Settings\Victor1\Escritorio\Albertorar\r1q2-b6557-src\build\temp\dedicated\BuildLog.htm" quake2 - 3 error(s), 2 warning(s)
---------------------- Done ----------------------
Build: 0 succeeded, 1 failed, 0 skipped
10
« en: Jueves 13 de Abril de 2006, 19:42 »
------ Build started: Project: md5, Configuration: Debug Win32 ------ Compiling... main.c c:\documents and settings\administrador\mis documentos\visual studio 2005\projects\md5\main.c(64) : warning C4996: 'sscanf' was declared deprecated c:\archivos de programa\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' c:\documents and settings\administrador\mis documentos\visual studio 2005\projects\md5\main.c(100) : warning C4996: 'fopen' was declared deprecated c:\archivos de programa\microsoft visual studio 8\vc\include\stdio.h(234) : see declaration of 'fopen' Message: 'This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' c:\documents and settings\administrador\mis documentos\visual studio 2005\projects\md5\main.c(161) : warning C4996: 'fopen' was declared deprecated c:\archivos de programa\microsoft visual studio 8\vc\include\stdio.h(234) : see declaration of 'fopen' Message: 'This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' md5.c Generating Code... Compiling manifest to resources... Linking... LINK : fatal error LNK1104: cannot open file '..\..\program files\microsoft visual studio .net\vc7\lib\setargv.obj' Build log was saved at "file://c:\Documents and Settings\Administrador\Mis documentos\Visual Studio 2005\Projects\md5\Debug\BuildLog.htm" md5 - 1 error(s), 3 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
11
« en: Lunes 10 de Abril de 2006, 08:11 »
gracias pero no me compila nose porque
12
« en: Lunes 10 de Abril de 2006, 04:45 »
un codigo de md5 para DOS aguien tendra o un buen manual ¿?
13
« en: Lunes 10 de Abril de 2006, 02:55 »
muchas graciass por la respuesta.
14
« en: Domingo 9 de Abril de 2006, 22:23 »
eso estoy modificando un codigo y me tope con ese problema.
que codigo agregar para que al momento de ejecutar el programa compilado me diga su nombre me explico bien¿¿
ejemplo check.exe
mi nombre es check.exe y estoy en c:\check folder\
Páginas: [1]
|
|
|