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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21]
201  Programación / Programación C/C++ / Re: El programa se cierra al usar string[] en: 2 Noviembre 2012, 11:57 am
Muchas gracias @tuket por la explicación tan completa! No se me había ocurrido usar *arr :P

Ahora pruebo y te digo si funciona.

Citar
Otro problema es que en el ceil haces casting a int dentro primero y así redondeas al más bajo cuando ceil se supone que debe redondear al más alto. Pero de todas maneras esto se puede solucionar sumando 1.
Pero lo hago después del ceil, así 7.123 se convertiría en 8 y luego lo convierto a int para que no tire error al iniciar la variable (creo que devolvía float o double el ceil).
Si me equivoco corrígeme.

PD: Sí, estoy intentando sacar la raíz cuadrada, pero no es exactamente para el colegio  :silbar: se me ocurrió sacar la raíz cuadrada de un número de 132 números (¡estoy loco! :P) y como ningún tipo de datos, ya sea double, long long ni parecidos lograba guardarlo, pues nada, a usar strings! :P Y para practicar me puse la condición de nada de sqrt(), pero eso se soluciona fácil creando una función sqrt2() creada por mi, como el método babilónico que me has dejado.

Gracias!

=== Edito: ===
Lo he probado y funciona, pero al final tira error:
Segmentation fault (core dumped)
Process returned 139 (0x8B)

Estoy usando Linux Mint Maya versión MATE
202  Programación / Programación C/C++ / El programa se cierra al usar string[] en: 1 Noviembre 2012, 18:23 pm
Hola!

Tengo este código:
Código
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. string _sqrt(string num);
  7. string chunk_split(string source, int length = 2);
  8. string substr(string source, int start, int end);
  9. int chrpos(char s, char *str);
  10.  
  11. int main(){
  12. string s;
  13.  
  14. cout << "Insert a number:\n> ";
  15. cin >> s;
  16.  
  17. _sqrt(s);
  18.  
  19. cin.get();
  20. cin.get();
  21. return 0;
  22. }
  23.  
  24. int chrpos(char s, char *str){
  25. for(int i=0,c=(int)strlen(str);i<c;i++){
  26. if(str[i] == s) return i;
  27. }
  28. return -1;
  29. }
  30.  
  31. string chunk_split(string source, int length){
  32. int j = 0, t = (int)ceil((int)source.length()/2);
  33. string r[t];
  34. for(int i=0;i<source.length();i+=length){
  35. r[j] = substr(source, i, length);
  36. ++j;
  37. }
  38. return *r;
  39. }
  40.  
  41. string substr(string source, int start, int end){
  42. string r = "";
  43. for(int i=start,c=start+end;i<c;i++){
  44. r += source[i];
  45. }
  46. return r;
  47. }
  48.  
  49. string _sqrt(string num){
  50. // const int l = (int)ceil((int)num.length()/2);
  51. string arr[1024] = chunk_split(substr(num, 1, num.length() - 3), 2);
  52. for(int i=0;i<1024;i++){
  53. cout << "arr[" << i << "] = " << arr[i] << endl;
  54. }
  55. // cout << substr(num, 4, 4);
  56. }
  57.  

El problema es que, si le pongo de input "1234567", en el for de _sqrt SIEMPRE sale "23", en todos los 1024 elementos. Deberían estar vacíos los que van después del [2], pero no, todos son 23.

Alguien sabe a qué se debe?
Estoy intentando sacar la raíz cuadrada de un número en string, pero la función la haré más tarde, ya que no puedo seguir antes de solucionar esto.

Resumiendo: arr[] ha de contener los números de un string separados de 2 en 2.
203  Programación / Programación C/C++ / Re: Duda sobre crash en: 10 Octubre 2012, 21:38 pm
Muchas gracias, ya lo he solucionado, sabía que los índices negativos no existen, pero mira lo que hacen las prisas  ;-) se puede cerrar
204  Programación / Programación C/C++ / Duda sobre crash en: 7 Octubre 2012, 16:20 pm
Hola,

estaba haciendo un simple programa en C++ porque me aburría y, al probarlo, el programa llegaba a cierto punto y se cerraba.

Lo que intento es llenar un array con números [-2000, 2000], guardar los números usados en un bitset (bs[1024] sería 1 si he metido 1024 en el array y 0 si no lo he hecho) y luego, con un for, empezar en -2000 y llegar a 2000 mostrando todos los números que no he usado en el array anterior, y para evitar recorrer el array cada iteración, usé un bitset que consume menos memoria y es más rápido.

El código es este:
Código
  1. #include <iostream> // std::
  2. #include <stdlib.h> // rand(), srand()
  3. #include <time.h> // time()
  4. #include <bitset> // bitset<>
  5.  
  6. using namespace std;
  7.  
  8. int main(){
  9. int a[4000], t;
  10. bitset<2000> used1;
  11. bitset<2000> used2;
  12. srand((unsigned) time(NULL));
  13. for(int i=0;i<4000;i++){
  14. t = rand() % 2000;
  15. a[i] = (rand() % 2 ? t : -t);
  16. if(a[i] >= 0) used1[a[i]] = 1;
  17. else used2[a[i] * (-1)] = 1;
  18. }
  19. cout << "Not used:\n";
  20. for(int i=-2000;i<2000;i++){
  21. if((i >= 0 && !used1[i]) || used2[i * (-1)]) cout << i << " ";
  22. }
  23. cin.get();
  24. return 0;
  25. }
  26.  

Gracias y saludos
205  Seguridad Informática / Nivel Web / . en: 14 Mayo 2012, 02:39 am
.
206  Seguridad Informática / Nivel Web / Re: Upload de imagenes seguro PHP en: 14 Mayo 2012, 01:48 am
Hombre, pueden subir una imágen (válida) con código PHP en los comentarios, aunque si has verificado que en tu web no hay LFI, no hay problema ;)

Igual pasala por GD, así se eliminan los comentarios y, también aplicale algo como getimagesize() o similares, si tiran error es que no es una imágen válida, así cancelas el upload y listo.

PD: Filtra también que el nombre no contenga el byte nulo porque, si lo contiene, no estoy seguro pero puede que logren bypassear tu filtro.



Explicación sobre el byte nulo:
Imaginate que tienes esto en PHP:
Código
  1. <? if(file_exists('include/'.$_GET['include'].'.php')) include('include/'.$_GET['include'].'.php'); ?>

Y yo voy a:
file.php?include=../files/avatares/mi_avatar_con_comentario_malicioso.jpg%00

Se incluiría perfectamente el archivo, pues el %00 es el byte nulo, que indica el final del string, por lo que el resto es ignorado y el include queda como include/../files/avatares/mi_avatar_con_comentario_malicioso.jpg, y, al tener los tags PHP <? ?> (la imagen en los comentarios), la función include los evalúa y ejecúta el código, por lo que el atacante tendría el poder de ejecutar código PHP en tu servidor (más que suficiente para hackearte por completo).

Nota: no es necesario que el archivo sea .php para que include() ejecute el código que hay en él (entre los tags <? ?>).

Espero que me hayas entendido.

Saludos.
207  Seguridad Informática / Seguridad / [Duda] Ver escritorio desde netcat en: 30 Abril 2012, 01:35 am
Hola!

Pues verán, tengo 2 PCs en LAN y, con uno, logré entrar con metasploit al otro e hice que se iniciara netcat cada vez que inicio el PC.
Bien, hasta ahí todo bien, tengo acceso a la shell (cmd de windows).

Lo que intento es poder ver y controlar el escritorio remoto (está en LAN) sin tener acceso físico al PC (lo tengo, pero la cuestión es obtener el escritorio sin eso).

PC atacante: win 7 professional x32
PC "víctima": win 7 ultimate x32

Si necesitais algo más... avisad.
208  Seguridad Informática / Nivel Web / Re: Es esto suficiente para evitar SQL Injection? en: 30 Abril 2012, 01:24 am
No, lo mejor es que uses preg_match:
Código
  1. El nick<?
  2. $nick = '´s.-dasdPOAeru0203842u3482947thwef';
  3. if(!preg_match('/^([a-z0-9_\-]{3,20})$/i', $nick)){
  4. echo ' no ';
  5. }else{
  6. echo ' si ';
  7. }
  8. ?>es válido.
  9.  

Es el mejor modo para filtrar un nick.


Ahora, si quieres evitar el SQLi, lo mejor es filtrar CADA dato que te da el usuario con mysql_real_escape_string:
Código
  1. <?
  2. mysql_query("SELECT * FROM usuarios WHERE nick = '".mysql_real_escape_string($_GET['nick'])."'");
  3. ?>
  4.  

Con eso estás protegido. =)
209  Seguridad Informática / Hacking / ´ en: 28 Febrero 2012, 13:09 pm
-
Páginas: 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines