Pongo a vuestra disposición el material de la charla que dí sobre cracking en GNU/Linux dentro de los Cursillos de Julio del e-ghost, el grupo de Software Libre de la Universidad de Deusto. Lo de siempre, si tenéis cosas que añadir o comentar, estaré encantado de escucharos 😉
Ejemplos utilizados durante la charla:
Números de serie:
- Ejemplo en C:
#include <stdio.h> #include <string.h> int main( int argc, char *argv[] ) { char pass[] = "topsecret"; char input[10]; int ok; printf("Password? "); scanf("%s", &input); ok = !strncmp(input, pass, 10); if(ok) { printf("Aqui se ejecuta el juego :-)\n"); } else printf("UNREGISTERED!!\n"); return 0; }
- Ejemplo en C++:
#include <iostream> #include <string> using namespace std; int main() { string pass("topsecret"); string input; cout << "Password? "; cin >> input; if(pass == input) cout << "Aqui se ejecuta el juego :-)" << endl; else cout << "UNREGISTERD!!" << endl; return 0; }
- Ejemplo en ASM:
extern scanf extern strcmp section .text global _start _start: mov eax,04h ;write(1,msgPass,lenPass); mov ebx,01h mov ecx,msgPass mov edx,lenPass int 80h push dword scanf_a ;scanf("%s", &scanf_a); push dword scanf_s call scanf push dword scanf_a ;strmcmp(scanf_a, secret); push dword secret call strcmp cmp eax,00h jne BAD OK: mov eax,04h ;write(1,msgOK,lenOK); mov ebx,01h mov ecx,msgOK mov edx,lenOK int 80h jmp exit BAD: mov eax,04h ;write(1,msgBAD,lenBAD); mov ebx,01h mov ecx,msgBAD mov edx,lenBAD int 80h exit: mov eax,01h ;exit(0) xor ebx,ebx ; int 80h ;call kernel section .data msgPass db 'Password? ' ;mensaje lenPass equ $ - msgPass ;longitud msgOK db 'Aqui se ejecutaria el juego ;-)', 0Ah ;mensaje lenOK equ $ - msgOK ;longitud msgBAD db 'UNREGISTERED!!', 0Ah ;mensaje lenBAD equ $ - msgBAD ;longitud scanf_s db '%s',0 scanf_a db 0,0,0,0,0,0,0,0,0,0,0 secret db 'topsecret'
Discos llave:
- Ejemplo de lectura de un fichero llave:
#include <stdio.h> #include <string.h> int main( int argc, char *argv[] ) { char pass[] = "topsecret"; char input[9]; FILE *file; int ok; file = fopen("./file.key", "r"); fread(input, sizeof(char), 9, file); ok = !strncmp(input, pass, 9); if(ok) { printf("Aqui se ejecuta el juego :-)\n"); } else printf("UNREGISTERED!!\n"); return 0; }
- Ejemplo de lectura de un diskette llave:
#include <stdio.h> #include <string.h> #define FS "/dev/loop0" #define FS "./fd0" int main( int argc, char *argv[] ) { char pass[] = "topsecret"; char input[9]; FILE *file; int ok; file = fopen(FS, "r"); fseek(file,0,SEEK_SET); fread(&input[0], sizeof(char), 1, file); fseek(file,10,SEEK_SET); fread(&input[1], sizeof(char), 1, file); fseek(file,16,SEEK_SET); fread(&input[2], sizeof(char), 1, file); fseek(file,18,SEEK_SET); fread(&input[3], sizeof(char), 1, file); fseek(file,21,SEEK_SET); fread(&input[4], sizeof(char), 1, file); fseek(file,23,SEEK_SET); fread(&input[5], sizeof(char), 1, file); fseek(file,25,SEEK_SET); fread(&input[6], sizeof(char), 1, file); fseek(file,27,SEEK_SET); fread(&input[7], sizeof(char), 1, file); fseek(file,32,SEEK_SET); fread(&input[8], sizeof(char), 1, file); ok = !strncmp(input, pass, 8); if(ok) { printf("Aqui se ejecuta el juego :-)\n"); } else printf("UNREGISTERED!!\n"); return 0; }
- Fichero llave.
- Imagen del diskette llave comprimida con GZIP.
Ejemplo más complejo:
Descárgate la presentación:
Descárgate el audio:
Vaya, el reproductor de flash me reproduce el MP3 como los pitufos makineros. ¿A alguien le suena bien el flash con el reproductor? Si a todo el mundo le va mal, lo quito directamente 😀
ehh! que rule el helio ;-DDD
Definitivamente, lo he probado en distintos exploradores y sistemas, y lo oigo de esa forma tan graciosa a la par que inutil en todos…
Muchas gracias por el betatesting 😉
Quito el Flash Player este. Quizá tenga que ver con el tipo de MP3 que puede reproducir o algo así. Seguiremos investigando…
Aupa aspaldiko!
Estuve en la Euskal iba a saludarte pero tuve que pirarme a toda leche! Siento por este acto tan descortes :P. Zaitu ai! Ea ni ere blog-arekin animatzen naizen 🙂
Aupa gip!!!
Aspaldiko, bai! ¿Qué es de tu vida? Ya me dijo Hey_neken que piras a Barcelona a seguir estudiando y tal. La verdad es que cuando ví en una intro una mención a Dust Inc. me acordé de vuestras creaciones y vuestras rayadas en la Euskal 😉
Ondo pasa Bartzelonan, ea elkar ikusten dogun laster 😛