Con esto quiero decir, ¿es posible escribir un progtwig en C, comstackrlo y luego ver cómo se ve en unos y ceros? Sería genial actuar como un hacker 1337 y pretender que se progtwig en unos y ceros: p.
Puedes usar xxd :
xxd -b filename
C: \ opt \ bin> xxd -b ctags.exe | cabeza 0000000: 01001101 01011010 10010000 00000000 00000011 00000000 MZ .... 0000006: 00000000 00000000 00000100 00000000 00000000 00000000 ...... 000000c: 11111111 11111111 00000000 00000000 10111000 00000000 ...... 0000012: 00000000 00000000 00000000 00000000 00000000 00000000 ...... 0000018: 01000000 00000000 00000000 00000000 00000000 00000000 @ ..... 000001e: 00000000 00000000 00000000 00000000 00000000 00000000 ...... 0000024: 00000000 00000000 00000000 00000000 00000000 00000000 ...... 000002a: 00000000 00000000 00000000 00000000 00000000 00000000 ...... 0000030: 00000000 00000000 00000000 00000000 00000000 00000000 ...... 0000036: 00000000 00000000 00000000 00000000 00000000 00000000 ......
Solo para hacer esto un poco más relacionado con la progtwigción:
#include #include const char *lookup[] = { /* 0 1 2 3 4 5 6 7 */ "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", /* 8 9 ABCDEF */ "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111", }; int main(int argc, char *argv[]) { FILE *fin; int c; size_t bytes_read = 0; if ( argc != 2 ) { fputs("No filename provided", stderr); exit(EXIT_FAILURE); } fin = fopen(argv[1], "rb"); if ( !fin ) { fprintf(stderr, "Cannot open %s\n", argv[1]); exit(EXIT_FAILURE); } while ( EOF != (c = fgetc(fin)) ) { printf("%s", lookup[ (c & 0xf0) >> 4 ]); printf("%s", lookup[ (c & 0x0f) ]); bytes_read += 1; if ( bytes_read % 9 == 0 ) { puts(""); } } fclose(fin); return EXIT_SUCCESS; }
Salida:
C: \ Temp> binary.exe c: \ opt \ bin \ ctags.exe | cabeza 01001101010110101001000000000000000011000000000000000000000000000100 0000000000000000000000001111111111111100000000000000001011100000000 000000000000000000000000000000000000000000000001000000000000000000 000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000001110000000000000000 000000000000111000011111101110100000111000000000101101000000100111001 0010000110111000000000010100110011001101001001010101000110100001101001 011100110010000001110000011100100110111101100111011100100110000101101101
Utilice hexdump o un editor hexadecimal para ver un binario en bytes hexadecimales.
Hexadecimal es simplemente una forma más compacta de ver binarios. Cada dígito hexadecimal (0-F) representa cuatro bits. Por ejemplo, 0xF
en decimal es 15 y en binario es 1111.
¿Quieres decir que no puedes hacer comstackción y traducir los códigos de operación a binarios en tu cabeza?
De hecho, una de las computadoras en las que aprendí a progtwigr tenía que activar el código de arranque mediante los interruptores del panel frontal. Necesitaba ingresar suficiente código para arrancar el cargador desde la unidad de disquete de 8 “y cargar el sistema operativo. Puede ver una imagen de uno aquí . Realmente necesitaba saber el binario para los códigos de operación del cargador de arranque.
Claro que es posible. Puedes escribir tu propio visor usando la información en esta publicación .