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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Mensajes
Páginas: 1 ... 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 192 ... 235
1761  Seguridad Informática / Análisis y Diseño de Malware / Re: [C] Stealer Google Chrome en: 2 Abril 2016, 00:41 am
900 Kb el ejecutable puff.

me imagino que se puede Optimizar via flags del compilador.

creo que cambia mucho de un entorno windows. Por ejemplo en Linux mi Bot para telegram pesa sobre 80KB y se me hace mucho.. ahora decir 900 pues noo
1762  Programación / Programación C/C++ / Re: ¿Usas telegram? programa tu bot en C en: 1 Abril 2016, 19:25 pm
El Updates es un contenedor que me indica cuantos items existen en la lista, y la lista el del tipo Update sin la S...

Código
  1. typedef struct {
  2. int length;
  3. Update **list;
  4. }Updates;
  5.  
  6.  
  7. typedef struct {
  8. int update_id;
  9. int type;
  10. Message *message;
  11. }Update;
  12.  

1763  Programación / Programación C/C++ / Re: Frame y dirección de memoria. en: 1 Abril 2016, 19:12 pm
El destino 0x0 no es escribible
1764  Seguridad Informática / Seguridad / Re: blindaje anti hakers en: 1 Abril 2016, 16:19 pm
No olvides NO conectarte a internet, ni usar memorias desconocidas.

Garantizado que no te infectaras de nada.

1765  Programación / Programación C/C++ / Re: ¿Usas telegram? programa tu bot en C en: 1 Abril 2016, 16:06 pm

 Ese memset no va a evitar que la variable con la cual llamaste a telegram_free_updates (en la cual no podes escribir ya que no la pasaste como doble puntero o referencia, updates es una variable local pasada por valor) continue apuntando al mismo bloque de memoria que liberas con free.

Código
  1. Updates *u = (Updates*)malloc(sizeof(Updates));
  2. telegram_free_updates(u);
  3. //u continua apuntando a la direccion de memoria que le haya retornado malloc

Tienes razon es lo que me quede pensando cuando respondi hace rato voy a cambiat el tipo de funcion y retornar NULL.
Y quedaria asi:

Código
  1. u= telegram_free_updates(u)
.

Gracias por el aporte :)
1766  Programación / Programación C/C++ / Re: ¿Usas telegram? programa tu bot en C en: 1 Abril 2016, 15:38 pm
no le sacas partido a calloc ya que no veo para que te sirve que inicialize a 0 cuando luego lo sobrescribieras.

No seas vago. Es importante que el area en la que vas a escribir no tenga basura Me a pasado muchas veces que reservo exactamente la memoria que voy a usar + un byte. y algunas veces tu esperas que ese byte sea 0 y te quedas con esa idea y luego el programa empieza a hacer cosas raras y despues de pasara un rato depurando con GDB te das cuenta que la memoria tenia basura. cambias la instruccion a calloc o le agregas un memset despues del malloc y ahora todo funciona al 100.


Es todo correcto excepto lo de la condicion, la memoria asignada al puntero no la podes comparar de esa manera, de esa manera estas comparando la direccion a la que apunta el puntero con NULL y sera NULL con malloc o calloc en caso de fallo al reservar.

entiendo el punto, el codigo mostrado va cuando yo voy a liberar la memoria despues de usarla, si es que se usado,

Por ejemplo las funciones que ofresco para liberar la memoria

Código
  1. void telegram_free_updates(Updates *updates) {
  2. int i = 0;
  3. if(updates) {
  4. while(i < updates->length) {
  5. if(updates->list[i])
  6. telegram_free_update(updates->list[i]);
  7. i++;
  8. }
  9. memset(updates,0,sizeof(Updates));
  10. free(updates);
  11. }
  12. }
  13.  
1767  Programación / Programación C/C++ / Re: ¿Usas telegram? programa tu bot en C en: 1 Abril 2016, 14:32 pm
Como indica la documentacion de stdlib.

malloc y calloc reservan memoria. sin embargo no hay  garantia que la memoria reservada por malloc este limpia. A veces si a veces no.

calloc por otra parte es como malloc + memset(ptr,0,length). reserva memoria y la limpia. es importante tener la memoria limpia por que a veces haces condicidiones como:

Código:
if(ptr!=NULL)
{
free(ptr);
}

basta que exista un byte de basura en la memoria para que la condicion se cumpla y el programa se cuelgue por tratar de liberar memoria inexistente o en su defecto escribir en un area no reservada.

https://www.freebsd.org/cgi/man.cgi?query=calloc&sektion=3&apropos=0&manpath=redhat


Citar
calloc()    allocates memory for an array of nmemb   elements of size bytes
       each and   returns   a pointer to the allocated memory.  The   memory is  set
       to zero.

       malloc()    allocates  size  bytes   and returns a pointer to the allocated
       memory.   The memory is not cleared.
1768  Seguridad Informática / Criptografía / Re: Sistema de cifrado por lote de texto plano en: 1 Abril 2016, 06:50 am
Buen dia pues hice un pequeño programa para tu algoritmo.

La idea que tenia no a funcionado.

El enfoque era estadístico, lo que hice fue generar N arreglos de Enteros donde N es igual al numero de caracteres del mensaje.

El primer arreglo[0] es de longitud 1
El segundo arrega[1] es de longitud 2
y asi sucesivamente.

Guarde las sumas de los valores ascii de cada caracter en los arreglos. Ademas de contar cuantas veces se sumaba en cada caracter en cada casilla.

Saque los promedios y las desviaciones estandar ademas. saque el promedio de cada arreglo y las desviaciones estandar de las desviaciones estandar valga la redundancia...

Mi idea era ver como cambiaban las desviaciones estandar y me imaginaba que en los puntos de inflexion estaría la pista.

Curiosamente en algunos ejemplos el primer punto de inflexion coincidencia con la longitud de la contraseña, pero en otros no lo hacia.

Codigo:

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<errno.h>
  5. #include<sys/stat.h>
  6.  
  7. off_t fsize(const char *filename);
  8. unsigned char max(unsigned char item,unsigned char mx);
  9. unsigned char min(unsigned char item,unsigned char mn);
  10.  
  11. int main() {
  12. int **sums;
  13. int **counts;
  14. float **diff;
  15. float **promedios;
  16. float **desviacion;
  17. float *sumdesviaciones;
  18. float *promedioDesviaciones;
  19. float *diffdesviaciones;
  20. float *desviacion2;
  21. FILE *file;
  22. char *buffer;
  23. float temp;
  24. int l,i,j,k;
  25. file = fopen("salida.txt","r");
  26. if(file) {
  27. l = fsize("salida.txt");
  28. buffer = calloc(l+1,sizeof(char));
  29. fread(buffer,sizeof(char),l,file);
  30. fclose(file);
  31. sums = calloc(l,sizeof(int*));
  32. counts = calloc(l,sizeof(int*));
  33. diff = calloc(l,sizeof(float*));
  34. promedios = calloc(l,sizeof(float*));
  35. desviacion = calloc(l,sizeof(float*));
  36. sumdesviaciones = calloc(l,sizeof(float));
  37. promedioDesviaciones = calloc(l,sizeof(float));
  38. diffdesviaciones = calloc(l,sizeof(float));
  39. desviacion2 = calloc(l,sizeof(float));
  40. i = 0;
  41.  
  42. while(i < l) {
  43. sums[i] = calloc(i+1,sizeof(int));
  44. counts[i] = calloc(i+1,sizeof(int));
  45. diff[i] = calloc(i+1,sizeof(float));
  46. promedios[i] = calloc(i+1,sizeof(float));
  47. desviacion[i] = calloc(l,sizeof(float));
  48. i++;
  49. }
  50.  
  51. //rellenar array de sumas
  52. j = 0;
  53. while(j < l) {
  54. k =0;
  55. while(k < l) {
  56. //printf("Procesando sums[%i][%i]\n",j,(k % (j+1)));
  57. sums[j][k % (j+1)] += buffer[k];
  58. counts[j][k % (j+1)] +=1;
  59. k++;
  60. }
  61. j++;
  62. }
  63. //mostramos las sumas y los contadores
  64. i=1;
  65. j=0;
  66. while(j < l) {
  67. k =0;
  68. while(k < i) {
  69. //printf("sums[%i][%i] = %i\n",j,k,sums[j][k]);
  70. //printf("counts[%i][%i] = %i\n",k,i,counts[j][k]);
  71. k++;
  72. }
  73. i++;
  74. j++;
  75. }
  76. //calcular promedios
  77. i=1;
  78. j=0;
  79.  
  80. while(j < l) {
  81. k =0;
  82. while(k < i) {
  83. promedios[j][k] = ((float)sums[j][k])/((float)counts[j][k]);
  84. //printf("promedios[%i][%i] = %f\n",j,k,promedios[j][k]);
  85. k++;
  86. }
  87. i++;
  88. j++;
  89. }
  90. //calcular Diferencias
  91. j = 0;
  92. while(j < l) {
  93. k =0;
  94. while(k < l) {
  95. temp = promedios[j][k % (j+1)] - buffer[k];
  96. if(temp < 0.0) {
  97. temp = -1.0 *temp;
  98. }
  99. diff[j][k % (j+1)] += temp;
  100. k++;
  101. }
  102. j++;
  103. }
  104. //calcular desviacion
  105. i=1;
  106. j=0;
  107. while(j < l) {
  108. k =0;
  109. while(k < i) {
  110. desviacion[j][k] = diff[j][k]/counts[j][k];
  111. //printf("desviacion[%i][%i] = %f\n",j,k,desviacion[j][k]);
  112. k++;
  113. }
  114. i++;
  115. j++;
  116. }
  117.  
  118. //calcular suma desviaciones
  119. i=1;
  120. j=0;
  121. while(j < l) {
  122. k =0;
  123. while(k < i) {
  124. sumdesviaciones[j]+= desviacion[j][k];
  125. k++;
  126. }
  127. promedioDesviaciones[j] =  sumdesviaciones[j]/i;
  128. printf("promedio desviacion[%i] = %f\n",j,promedioDesviaciones[j]);
  129. i++;
  130. j++;
  131. }
  132. //calcular differencia de desviaciones
  133. i=1;
  134. j=0;
  135. while(j < l) {
  136. k =0;
  137. while(k < i) {
  138. diffdesviaciones[j]+= promedioDesviaciones[j] - desviacion[j][k];
  139. k++;
  140. }
  141. desviacion2[j] = diffdesviaciones[j]/(float)k;
  142. printf("desviacion2[%i] = %f\n",j,desviacion2[j]);
  143. i++;
  144. j++;
  145. }
  146.  
  147. printf("l : %i\n",l);
  148. }
  149. return 0;
  150. }
  151.  
  152. unsigned char max(unsigned char item,unsigned char mx) {
  153. return (item >= mx)? item:mx;
  154. }
  155.  
  156. unsigned char min(unsigned char item,unsigned char mn) {
  157. return (item <= mn)? item:mn;
  158. }
  159.  
  160. off_t fsize(const char *filename) {
  161. struct stat st;
  162. if (stat(filename, &st) == 0)
  163. return st.st_size;
  164. fprintf(stderr, "Cannot determine size of %s: %s\n",filename, strerror(errno));
  165. return -1;
  166. }
  167.  
  168.  
1769  Programación / Programación C/C++ / ¿Usas telegram? programa tu bot en C en: 1 Abril 2016, 06:30 am
Buen dia compañeros.

Quiero compartirles el proyecto en el que estoy trabajando.

Una interfaz en C para que programen su bot para telegram.

El codigo esta disponible en github, aun lo sigo mejorando y optimizando lo mas que pueda.
Casi todo el programa es memoria dimanica la cual  administra muy bien la aplicacion.

Ejemplo de uso.
Código
  1. /*
  2.  * Luis Alberto
  3.  * Twitter @albertobsd
  4.  */
  5.  
  6. #include<stdio.h>
  7. #include<stdlib.h>
  8. #include<string.h>
  9. #include<curl/curl.h>
  10. #include<sys/stat.h>
  11. #include<errno.h>
  12. #include"telegram.h"
  13. #include"jsmn.h"
  14.  
  15. int main() {
  16. Updates *updates;
  17. User *user;
  18. Message *message;
  19. File *file;
  20. char **variables;
  21. char **valores;
  22. int i = 0;
  23. char *filename;
  24. telegram_init("123456789:zwxecrvtbynuyvbnmutyguhjdkeosdgjhfdouhn");
  25. user = telegram_getMe();
  26. if(!telegram_is_error()) {
  27. printf("User: id: %i\nusername: %s\n",user->id,user->username);
  28. telegram_free_user(user);
  29. }
  30. else {
  31. printf("%s\n",telegram_get_error());
  32. }
  33. updates = telegram_getUpdates();
  34. if(!telegram_is_error()){
  35. printf("updates: %i\n",updates->length);
  36. while(i < updates->length) {
  37. if(updates->list[i]->item.message->document) {
  38. printf("Document exits file_id : %s\n",updates->list[i]->item.message->document->file_id);
  39. file = telegram_getFile(updates->list[i]->item.message->document->file_id);
  40. if(!telegram_is_error()) {
  41. filename = telegram_downloadFile(file,updates->list[i]->item.message->document->file_name);
  42. printf("file name : %s\n",filename);
  43. }
  44. else {
  45. printf("%s\n",telegram_get_error());
  46. }
  47. }
  48. i++;
  49. }
  50. telegram_free_updates(updates);
  51. }
  52. else {
  53. printf("%s\n",telegram_get_error());
  54. }
  55. variables = calloc(5,sizeof(char*));
  56. valores = calloc(5,sizeof(char*));
  57. variables[0] = "chat_id";
  58. variables[1] = "text";
  59. valores[0] = "9219883";
  60. valores[1] ="Texto de prueba";
  61. message = telegram_sendMessage(telegram_build_post(variables,valores));
  62. if(!telegram_is_error()) {
  63. printf("OK %s\n",message->text);
  64. telegram_free_message(message);
  65. }
  66. else {
  67. printf("%s\n",telegram_get_error());
  68. }
  69. variables[1] = "caption";
  70. valores[1] = "Envio archivo";
  71. message = telegram_sendDocument("test_telegram",variables,valores);
  72. if(!telegram_is_error()) {
  73. printf("OK %s\n",message->text);
  74. telegram_free_message(message);
  75. }
  76. else {
  77. printf("%s\n",telegram_get_error());
  78. }
  79. return 0;
  80. }
  81.  
  82.  


Para trabajar con este ejemplo tenemos que te generar un token de autorización para nuestro bot y editar la linea de codigo:

Código
  1. telegram_init("123456789:zwxecrvtbynuyvbnmutyguhjdkeosdgjhfdouhn");

en este ejemplo procesamos las peticiciones:

getMe
getUpdates
sendDocument

Tambien que tenemos que sustituir el chat_id por el nuestro
El codigo depende de que tengamos instalado libcurl

Codigo en gihub

https://github.com/albertobsd/libtelegrambot

Saludos!
1770  Seguridad Informática / Criptografía / Re: Sistema de cifrado por lote de texto plano en: 29 Marzo 2016, 18:20 pm
Como tu lo comentas un ataque por estadistica podria arrojar algo de luz sobre la distribución / frecuencia de los datos.

Código
  1. #include<stdio.h>
  2. #include<string.h>
  3.  
  4. int main() {
  5. char *pass = "HolaMundo";
  6. char *text = "QWERT456Y76U76I7OP6A756S7D567F6G7H56J7K67L6Ñ7Z56X7C567V65B7N65M7q56w2e3r2t41213yuiopasdfghjklzxcugjh877yvbty7t6645r311nm";
  7. int x = 1;
  8. char *name = "salida.txt";
  9. crypt(pass,text,x,name);
  10. return 0;
  11. }
  12.  

Hice este codigo para testear tu algoritmo, deja checo la salida y la analizo.

Cambie los length por strlen y cambie los bool por int para podrelo compilar sin errores, no se que compilador estes usando, en fin con los cambios que le hice funciona bien.

Esta fue la salida:

Citar
gF7Oe{%0HM%G4G2'I?L0)2G<'>$L&83X 8/%`&=3H5&y<MI'3i 3/%ME(2S >0$c&c2G`"_"*!f1By!-h-Xamr\T`V Y]i-aSoV"W*4Hbf\c1&f3G{%l"G `j
Saludos!
Páginas: 1 ... 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 192 ... 235
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines