elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


  Mostrar Mensajes
Páginas: 1 ... 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 [176] 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 ... 235
1751  Sistemas Operativos / Unix/Unix-Like / Re: Ayuda con FreeBSD wireless en: 8 Abril 2016, 02:44 am
Si bien recuerdo solo hay que recompilar el kernel qgregando el driver para realtek en el archivo de configuracion.
1752  Seguridad Informática / Criptografía / Re: Whatsapp criptografia End-to-End en: 7 Abril 2016, 14:02 pm
Comparte la noticia para nos de gracia tambien a nosotros.

Whatsapp a sido muy criticado por su falta de seguridad, desde aquellos dias que podias ver los mensajes en texto plano entre otras cosas.

whatsapp podria a ver detectado una disminucion de usuarios y se puso las pilas en ese tema.
El caso de FBI vs Apple demostro que las organizaciones gubernamentales no pueden hacer mucho contra un sistema criptografico bien implementado.

Ahora whatapp solo ofrece seguridad mas no anonimato, todavia quien esta hablando con quien..

para anonimato los sistemas no deberian de pedirte un numero que te identifique.
1753  Seguridad Informática / Criptografía / Re: Whatsapp criptografia End-to-End en: 7 Abril 2016, 07:24 am
ahh! es que todo pasa en claro? yo estoy asumiendo que el Message Key pasa por asimetrico! :s

Era mi duda, yo asumo que pasa por asimetro al igual que tu y con las claves publicas Curve25519 lo decifran. En la lectura no lo especifican, me imagino que lo dan por hecho.

Bueno ya que nos quitamos la duda teóricamente todo esta bien.

Acabo de hacer un programa en C usando libgcrypt para ejemplicar esto.

El programa hace lo siguiente.
  • Crea un archivo llamada AAAA.txt de 512 bytes lleno de AAAAAAAAAA's para ejempliciar el plain text.
  • Genera un par de llaves RSA (Parte tardada)
  • Guarda las claves creadas en archivo en archivo para su posterior uso
  • Genera apartir de la llave publica y algunos otros datos 5  "Key Message" para fines didacticos solo usaremos el ultimo
  • usa el campo pass del KeyMessage para cifrar el AES en modo CBC con el iv correspondiente
  • Guarda la salida en un archivo llamada AAES.txt

Todavia no me queda muy claro como utilizar HMAC pero leyendo la API y los RFC correspondientes aprendere.

Muestro la salida y al final el codigo del programa que la produce.

Archivo >>>>>>>>AAES <<<<<<<<<<<de salida

Código:
Key df9701195198737faf7c163298704e2c5b583532cf8fc20595c8512b5b65e8db2ef1683d4e7399132d719a38cdf14b32d100a73e84f338ae4d8c43dc43c408222e2278d005332bca737d55b5a7a24897
Key b858d2f07d002deeb2afd730078b8f38904725e37f98d31dd15c11a404e22777c1813ea5982db9324e9fc8f85b60720fa709f62baaab81034f9090cf4ad37609858b5d5c7b285f8f0baf241fcd405c28
Key 4df7986bfb598832b552860e7e03bb67a661c75d6a571656ac6b5e31ea60755f984964eafaf78e79e83a66589c2993dd7fc67de37467c6c3e56a565e8167305271079d6902c6cbfdd7ee8c3799d58b79
Key a8d81e45dfcec1e6cb5b9be014626311f42c38f88ceb6f4ef6494d4c7281c92c0e92cdc6cb296231322909b8634af89b15807235b7fcd27c7103e4df89e6163cf809a342ce4004145e3d7f19643d2133
Key 420341bb215e4393c4fb364ed05331bb4ab51e81355d767fe7ac4fe33012c15fcc66740840cc8b0981a9d6e98b925f408e9c16e0b559993b368fb749f337bae3dfe9797fdced844f1d227dbce12bda05



Algunas funciones del programa fueron implementadas de forma rapida y puede fallar.

Código
  1. /*
  2. twitter: @albertobsd
  3. cc -o ejemplos ejemplos.c `libgcrypt-config --cflags --libs`
  4. */
  5.  
  6. #include<stdio.h>
  7. #include<stdlib.h>
  8. #include<string.h>
  9. #include<gcrypt.h>
  10.  
  11. void libgcrypt_init();
  12. int createRSA_4096(char *prefix,char *bufferPkey);
  13. unsigned char *my_kdf(char *passphrase,size_t passphraselen,unsigned int iterations,size_t keysize);
  14. int encrypt(char *buffer,char *pass,char *iv,int length);
  15.  
  16.  
  17.  
  18. typedef struct str_KeyMessage {
  19. unsigned char pass[32];
  20. unsigned char hmac[32];
  21. unsigned char iv[16];
  22. }*KeyMessage;
  23.  
  24. int main() {
  25.  
  26. FILE *archivo = NULL;
  27. char *buffer = NULL;
  28. char *pkey = NULL;
  29. char *digest = NULL;
  30. unsigned char *key = NULL;
  31. int length,i,j;
  32. buffer = calloc(512,1);
  33. if(!buffer) {
  34. printf("calloc\n");
  35. exit(0);
  36. }
  37. memset(buffer,'A',512);
  38. archivo = fopen("AAAA.txt","w");
  39. if(!archivo) {
  40. printf("calloc\n");
  41. exit(0);
  42. }
  43. fwrite(buffer,1,512,archivo);
  44. fclose(archivo);
  45. libgcrypt_init();
  46. pkey = calloc(2048,1);
  47. length = createRSA_4096("UsuarioA",pkey);
  48. j = 0;
  49. while(j < 5) {
  50. key = my_kdf(pkey,length,1024,80);
  51. if(!key) {
  52. printf("my_kdf\n");
  53. exit(0);
  54. }
  55. printf("Key ");
  56. i = 0;
  57. while(i < 80) {
  58. printf("%.2x",key[i]);
  59. i++;
  60. }
  61. printf("\n");
  62. j++;
  63. }
  64. KeyMessage km = (KeyMessage)key;
  65. encrypt(buffer,(char*)km->pass,(char*)km->iv,512);
  66. archivo = fopen("AAES.txt","w");
  67. if(!archivo) {
  68. printf("fopen 2");
  69. exit(0);
  70. }
  71. fwrite(buffer,1,512,archivo);
  72. fclose(archivo);
  73.  
  74. }
  75.  
  76. void libgcrypt_init() {
  77. if(!gcry_check_version(GCRYPT_VERSION)) {
  78. fprintf(stderr,"libgrypt version mismatch %s\n",GCRYPT_VERSION);
  79. exit(0);
  80. }
  81. gcry_control(GCRYCTL_SUSPEND_SECMEM_WARN);
  82. gcry_control(GCRYCTL_INIT_SECMEM,1638,0);
  83. gcry_control(GCRYCTL_INITIALIZATION_FINISHED,0);
  84. if(!gcry_control(GCRYCTL_INITIALIZATION_FINISHED_P)) {
  85. fprintf(stderr,"libgrypt has not been initialized\n");
  86. exit(0);
  87. }
  88. }
  89.  
  90. int createRSA_4096(char *prefix,char *publickey) {
  91. FILE *p;
  92. FILE *s;
  93. gcry_sexp_t rsa_parms = NULL;
  94. gcry_sexp_t rsa_keypair = NULL;
  95. gcry_sexp_t rsa_skey = NULL;
  96. gcry_sexp_t rsa_pkey = NULL;
  97. gcry_error_t err = 0;
  98. int temp = 0;
  99. char *nombre_p,*nombre_s;
  100. size_t length = 2048;
  101. size_t offset = 0;
  102. char *bufferkey;
  103. nombre_p = calloc(strlen(prefix) + 2,sizeof(char));
  104. nombre_s = calloc(strlen(prefix) + 2,sizeof(char));
  105. sprintf(nombre_p,"%sp",prefix);
  106. sprintf(nombre_s,"%ss",prefix);
  107. err = gcry_sexp_build(&rsa_parms, NULL, "(genkey (rsa (nbits 4:4096)(rsa-use-e 1:1)))");
  108. if(err) {
  109. fprintf(stderr,"gcry_sexp_build: failed to build\n");
  110. fclose(stderr);
  111. exit(0);
  112. }
  113. err = gcry_pk_genkey(&rsa_keypair, rsa_parms);
  114. gcry_sexp_release(rsa_parms);
  115. if(err) {
  116. fprintf(stderr,"gcry_pk_genkey: failed to genkey\n");
  117. fclose(stderr);
  118. exit(0);
  119. }
  120. rsa_pkey = gcry_sexp_find_token(rsa_keypair, "public-key", 0);
  121. rsa_skey = gcry_sexp_find_token(rsa_keypair, "private-key", 0);
  122. gcry_sexp_release(rsa_keypair);
  123. bufferkey = calloc(length,sizeof(char));
  124. if(bufferkey == NULL) {
  125. fprintf(stderr,"unable to alloc memory\n");
  126. fclose(stderr);
  127. exit(0);
  128. }
  129. offset = gcry_sexp_sprint(rsa_pkey,GCRYSEXP_FMT_CANON,bufferkey,length);
  130. gcry_sexp_release(rsa_pkey);
  131. p = fopen(nombre_p,"w");
  132. if(p == NULL) {
  133. fprintf(stderr,"unable to create file\n");
  134. fclose(stderr);
  135. exit(0);
  136. }
  137. temp = offset;
  138. memcpy(publickey,bufferkey,offset);
  139. fwrite(bufferkey,sizeof(char),offset,p);
  140. fclose(p);
  141. memset(bufferkey,0,length);
  142. offset = gcry_sexp_sprint(rsa_skey,GCRYSEXP_FMT_CANON,bufferkey,length);
  143. gcry_sexp_release(rsa_skey);
  144. s = fopen(nombre_s,"w");
  145. if(s == NULL) {
  146. fprintf(stderr,"unable to create file\n");
  147. fclose(stderr);
  148. exit(0);
  149. }
  150. fwrite(bufferkey,sizeof(char),offset,s);
  151. fclose(s);
  152. memset(bufferkey,0,length);
  153. return temp;
  154. }
  155.  
  156. unsigned char *my_kdf(char *passphrase,size_t passphraselen,unsigned int iterations,size_t keysize) {
  157. gpg_error_t err;
  158. unsigned char *bufferkey = NULL;
  159. char *salt = NULL;
  160. bufferkey = calloc(keysize,1);
  161. salt = calloc(8,1);
  162. gcry_randomize(salt,8,GCRY_VERY_STRONG_RANDOM);
  163. err = gcry_kdf_derive(passphrase,passphraselen,GCRY_KDF_ITERSALTED_S2K,GCRY_MD_SHA512,salt,8,iterations,keysize,bufferkey);
  164. if(err != 0) {
  165. free(bufferkey);
  166. free(salt);
  167. return NULL;
  168. }
  169. else {
  170. free(salt);
  171. return bufferkey;
  172. }
  173. }
  174.  
  175.  
  176. int encrypt(char *buffer,char *pass,char *iv,int length) {
  177. gcry_error_t err = 0;
  178. gcry_cipher_hd_t aes_hd;
  179. gcry_cipher_open(&aes_hd, GCRY_CIPHER_AES256,GCRY_CIPHER_MODE_CBC, GCRY_CIPHER_SECURE);
  180. err = gcry_cipher_setkey(aes_hd, pass, 32);
  181. if (err) {
  182. fprintf(stderr,"gcry_cipher_setkey(): could not set cipher key\n");
  183. fclose(stderr);
  184. exit(0);
  185. }
  186. err = gcry_cipher_setiv(aes_hd, iv, 16);
  187. if (err) {
  188. fprintf(stderr,"gcry_cipher_setiv(): could not set cipher initialization vector\n");
  189. fclose(stderr);
  190. exit(0);
  191. }
  192. err = gcry_cipher_encrypt(aes_hd, (unsigned char*) buffer, length, NULL, 0);
  193. if (err) {
  194. fprintf(stderr,"gcry_cipher_encrypt(): unable to encrypt file\n");
  195. fclose(stderr);
  196. exit(0);
  197. }
  198. err = gcry_cipher_reset(aes_hd);
  199. gcry_cipher_close(aes_hd);
  200. return err;
  201. }
  202.  
  203.  
  204.  

1754  Seguridad Informática / Criptografía / Re: Whatsapp criptografia End-to-End en: 7 Abril 2016, 04:41 am
pasas la clave por asimetrico (RSA, ECDHE)

Tu mismo lo dices pasas la "clave" por asimetrico y ya una vez descifrada con tu clave privada pasas a descifrar lo que pasastes por AES256 o por chacha20 o el algoritmo que acordaran


tengo estos 3 mensajes, clave 123
Código:
K7xGlZ3okW+uE4jiqTt0jE4FGkSwRRUKC9maBAHdsXl8A8+7bZVX/mp85Rmkf2EV
Código:
vmd1WLXCAEI1YMaAWvtQsyf6/1Bsiuw5cYTo8jedjGNOW0hgmsvjbcELP/jjBE1S
Código:
2zybZUeUJZ8cdGncA+1VczXAJUw7nx4WN3YQcW6BV+SxmSy9K802ATQBJXtSYkE6
y las 3 son el mismo mensaje

Claro por el IV o por el modo de empleo del del AES o también puede cambiar dependido si es modo CFB, CBC etc..

En lo que tenga un chance publicare un ejemplo en C.


1755  Seguridad Informática / Criptografía / Re: Whatsapp criptografia End-to-End en: 7 Abril 2016, 01:18 am
la llave publica es para ser pasada en plano, no tiene sentido protegerla XD para protegerla solo harías una llave publica de una llave publica...

la llave publica es como mandar un candado abierto, solo puede ser usada para cerrar el mensaje... no puede hacerse más nada con ella

Claro, cuando se genera un PAR de llaves una es publica y la otra privada. La llave publica se envia a las personas con las que te quieres comunicar entiendo eso y si la llave publica se tranmite en texto plano

Tengo muy claro eso.

Ahora si leemos la documentaion El Message Key contiene un total de 80 de los cuales esta didivido en 3 secciones.

  • 32 bytes AES password
  • 32 bytes HMAC
  • 16 bytes IV

Entonces eso solo compone el Message Key.
El mensaje Cifrado es otra parte de la Data enviada y de nada serviria mandar algo cifrado si tambien vamos a mandar la llave en los 80 bytes anteriores. Recordemos que AES es un sistema para cifrado simetrico.

Y por lo tanto supongo que esos 80 bytes se mandan cifrados con criptografia asimetrica..

Insito en esto por que estoy programando un projecto con necesidades similares y me gustaria tomar las mejores ideas, no se tal vez no me explico bien y/o estoy omitiendo algo en la lectura o en mis bases criptograficas. Omito cosas con mucha facilidad.

Whatsapp no es de codigo abierto.
1756  Seguridad Informática / Criptografía / Re: Whatsapp criptografia End-to-End en: 6 Abril 2016, 22:55 pm
hasta Line creo que empezó cifrando su mensajería.

a mi me gusta más Line que whatsapp, pero por donde vivo no es popular.

La verdad Whatsapp gano mucho terreno. Frente a otros que ya existian incluso ve el Google Hangouts que en su momento era Talk

Por lo que estoy leyendo del protocolo este manda el mensaje cifrado con AES256 y firmado por HMAC256 esto es y lo que manda cifrado con la llave publica, es a lo que entiendo el Message Key.

Por se se me haria inseguro por no decir otra palabra mandar el Message Key en texto plano para que en el remoto caso de alguien intercepte ese paquete tenga acceso a la clave de descifrado.

La lectura no indica este punto claramente o por lo menos yo no lo he visto o no lo entiendo al 100

Segun yo se manda lo siguiente:

Código:
<Message Key>
<CLAVE: 32 Bytes clave de decifrado AES256><HMAC: 32 Bytes firma HMAC><IV: 16 bytes Vector de Inicializacion para el modo CBC del mensaje cifrado>
</Message Key>
<Message>
Mensaje cifrado con AES256  con la clave "CLAVE" en modo CBC con el vector de de inicializacion "IV"
</Message>

Donde en teoria se manda el "Message Key" cifrado con la llave publica.
1757  Programación / Programación C/C++ / Re: Problema al utilizar archivos en C en: 6 Abril 2016, 17:28 pm
Código
  1. int IDtableLoad( char DNI[] )
  2. {
  3. FILE *fptr;
  4. char mot[BUFSIZ];
  5. int i;
  6. fptr = fopen( "DNIList.txt", "rt" );
  7. if( fptr != NULL ) {
  8. i = 0;
  9. fscanf( fptr, " %s", mot );
  10. while( !feof( fptr ) ) {
  11. //Aqui deberias de agregar la variable leida a la variable  global
  12. fscanf( fptr, " %s", mot );
  13. } /* while */
  14. fclose( fptr );
  15. } else {
  16. i = -1;
  17. } /* if */
  18. return i;
  19. } /* IDtableLoad */
  20.  

Esta funcion hace lo siguiente:
Abrir el archivo
Lee un renglon
Lo  guarda en una variable local
Lee el siguiente renglon. y asi sucesivamente

Mas nunca guarda la variable locan el el arreglo global que tiene.

Código
  1. char IDtable[MAXID][IDLEN+1];

Al parecer es un buffer que solo tiene espacio para 116 DNI.

El como pasar la variable local al buffer global es tu tarea.

Sugerencias
usar memcpy
hacer un ciclo manual y copiar byte por byte.
Cambiar el buffer estatico por memoria dinamica.
Traducir del frances al español jajajajaja

Otra observacion importante el programa es vulnerable a buffer overflow. si el renglon leido desde el archivo es de mayor tamaño a BUFSIZ entonces escribira en las variables continuas del programa y causara un segment fault
1758  Foros Generales / Noticias / Re: Un ataque hacker podría estar detrás de la filtración de los Papeles de Panamá en: 6 Abril 2016, 15:49 pm
ya publico forbes que tenian varias vulnerabilidades en drupal qu no fue actualuzado en mas de 3 años y tambien un wordpress no actualizado en algunos meses.

http://www.forbes.com/sites/thomasbrewster/2016/04/05/panama-papers-amazon-encryption-epic-leak/#39c7e9ca1df5
1759  Programación / Programación C/C++ / Re: Problema al utilizar archivos en C en: 6 Abril 2016, 14:40 pm
buen dia.

veo que lee el archivo pero no veo que cargue contenido en la memoria.

Usa El Code=c para poner tu codigo. Ya que es dificil leerlo asi
1760  Seguridad Informática / Criptografía / Re: Whatsapp criptografia End-to-End en: 6 Abril 2016, 06:02 am
Algo que se me hizo interesante y a la vez un poco tonto fue la parte para validar las Llaves.

Dice el texto:
Citar
Verifying Keys

WhatsApp users additionally have the option to verify the keys of the other users with whom they are communicating so that they are able to confirm that an unauthorized third party (or WhatsApp) has not initiated a man-in-the-middle attack. This can be done by scanning a QR code, or by comparing a 60-digit number.

The QR code contains:

1. A version.
2. The user identifier for both parties.
3. The full 32-byte public Identity Key for both parties.

When either user scans the other’s QR code, the keys are compared to ensure that what is in the QR code matches the Identity Key as retrieved from the server.

The 60-digit number is computed by concatenating the two 30-digit numeric fingerprints for each user’s Identity Key

To calculate a 30-digit numeric fingerprint:
1. Iteratively SHA-512 hash the public Identity Key and user identifier 5200 times.
2. Take the first 30 bytes of the final hash output.
3. Split the 30-byte result into six 5-byte chunks.
4. Convert each 5-byte chunk into 5 digits by interpreting each 5-byte chunk as a big-endian unsigned integer and reducing it modulo 100000 .
5. Concatenate the six groups of five digits into thirty digits.

Iteratively SHA-512 hash the public Identity Key and user identifier 5200 times.

Por que 5200? Siendo que a  sha512 no le han encontrado colisiones por que ese numero incluso el sha512 de una texto unas cuantas veces digamos 5 seria suficiente en fin.

 :silbar: :silbar:

Aqui dejo un codigo de como seria el calcular 5200 veces el sha512 de un texto dado usando la libreria libgcrypt
Código
  1. /*
  2. Twitter @albertobsd
  3. cc -o iterative_sha512 iterative_sha512.c `libgcrypt-config --cflags --libs`
  4. */
  5.  
  6. #include<stdio.h>
  7. #include<gcrypt.h>
  8.  
  9. int main() {
  10. unsigned char *buffer,*digest,*temp = NULL;
  11. register int i = 0,j;
  12. buffer = calloc(64,sizeof(unsigned char));
  13. digest = calloc(64,sizeof(unsigned char));
  14. memset(buffer,'A',64);
  15. while(i < 5200) {
  16. gcry_md_hash_buffer(GCRY_MD_SHA512,digest,buffer,64);
  17. printf("sha512: ");
  18. j = 0;
  19. while(j < 64) {
  20. printf("%.2x",digest[j++]);
  21. }
  22. printf("\n");
  23. temp = buffer;
  24. buffer = digest;
  25. digest = temp;
  26. i++;
  27. }
  28. free(buffer);
  29. free(digest);
  30. }
  31.  
  32.  

Aqui un pedacito de la salida (las ultimas lineas)

Código:
sha512: 4f86b77580f55fdb90493042738915127aaa4fa2f1302a52b647b7a179b9c49b06f3cf67d0b1cc6e50dc7519bbb30c207b87be46eb60c8c78da0a18be7ee7b7a
sha512: 08726cc621866ffce20525d3e06d369aa73efae405d452ecdb426dfa00784637b2d0287e8702c50853741c34aac4768765d2e8395188351e9c5b5c6793d4759b
sha512: 16687e52fd941f0ccd8f70ce64c6802688c135482ec01c03e16cf0bb60490774b86ffab6fc7d19b65a22519d38807ee5b88277847a875f011c05ea2f47ae7e3b
sha512: bc83d85641f7588c15a023f8fe3617baacc67a758d148829ea8e10e3123d684f710b7d085de99fea5be9913db9a67145d181de39d7b19fc664780477f5e2253b
sha512: 13bd175d39ab444f808a09dc49a823f76720a36a48bf8e1f321ba9a16303325003fb41fb80d40fd2a82cf8c2904168dc6160491e0be48ef60a6e8ed63137ee4f
sha512: 36d743bb4e26669d09c96e4f82213105f5d34e4fcbcb7e5d385bf278b30e2083d9d8dfd9516a28e5e4096078a5ee7ab160da16aff39c19062eddfce4282190d7
sha512: dee957067e6ca41113242e06e9a42532c0806a577fb665ed6d9e45a8f60762ab0c8c4511ef720a0edaf3758cf40bf6f85e10237f2821ec3213451b8aa34a3a2f
sha512: fd3172c5314f26e48a6f94d243e428be4bb28379c5536e943fa33c8a7b87564c46b23359dc113f547b21f64a6b8ca3d8b655f4f743c533aeffd84c38f10ceced
sha512: a2c5ce5e4342863ca31dfbf0ff204d94636fd2da00c539df97ab6ce193791c5dd4a4136686ef7e37ca25c547fe12cea80192f06c1e6c33450e730f73a9d170ba
sha512: 467bb8f325dcb319ebfb9f60464a4d54cf4078fc3c5ad8ee70ab214e999a2fb39873d430a51cb96e5ca2929d8c485105b3095463f4790ba4709deb425512cb2e
sha512: 82776272e658cbc37b73258da6d5283baa027f85c27ee1538c47aaccde688ee510652e2e47fb8bcfa7eb02f3797bfffa44cf20f9274f401d8668467632459928
sha512: 5387ba3de50479e2b15c466d0bec62252bccaace8a207c53d5591283fb799ef7d1480aebdefeaff30e92436633d519e9a494d3db6a578e1da84b452372aa1b71

Ahora pense que seria algo tardado pero al parecer es bastante rapido
WhatsApp... Facebook... espera. ¿Los de Facebook están implementando anonimato en la comunicación del teléfono verde?

Muy bien, carajo, ¿dónde está el truco?

Creo que whatsApp esta motivado por 2 cosas.

*Sus principales competidores ya implementaban cifrado end-to-end y estan perdiendo usuarios.

Telegram por ejemplo se me hace mejor que whatapp, tiene tambien autodestrucion de mensajes, stickers y una API para poder programar bots y un largo etc..

*El caso del FBI vs Apple

Aunque el FBI encontrara metodos alternos para acceder al iphone. Apple se mantuvo firmo y demostro que una Organizacion gubernamental puede terminar por no acceder a los datos cuando un buen sistema de cifrado esta implementado.
Páginas: 1 ... 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 [176] 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 ... 235
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines