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

 

 


Tema destacado:


  Mostrar Temas
Páginas: [1] 2
1  Seguridad Informática / Hacking / Necesito ayuda para defenderme de un ARP poisoning en: 23 Noviembre 2010, 21:52 pm
Buenas. Estaba en lo de mis viejos y para mi sorpresa internet andaba demasiado lento. Al punto que levanto mis sospechas. Abro el wireshark pongo el filtro de ARP y veo como de vez en cuando aparece una mac adress que no es el router le dice a todas que el es el router y despues como el router hace lo mismo :o

La cuestion es que no se que puedo hacer. Se como hacer lo que esta haciendo pero no se como defenderme. El router es viejo, tiene filtro de mac adress habilitado y soporta wep y wpa pero hasta ahora no encontre necesidad de usarlo. Todos sabemos q wep es lo mismo q nada. Y hasta donde tengo entendido en lo q respecta ARP poisoning wpa tampoco, corrijanme si me equivoco.

Tambien detecte que la mac adress a la q es redirigido el trafico varia. La va cambiando entre algunas de las mac adress q tienen permiso de conectarse a la red!!! asi q no tengo forma de identificar quien es a noser q lo agarre en algun descuido. Aunque recien acabo de prender el airodump y veo q dice q mi maquina esta conectada a otra mac adress, q no es la del router y no aparece en el wireshark. Creo que ahora si lo tengo.


Que se les ocurre que pueda hacer? Yo no estoy aca seguido y mi miedo es q le roben informacion importante a mis padres cuando no estoy, por que ellos mas que pensar q anda lento no van a hacer. Ideas? Alguna forma de mandarle un mensaje a este pajero?


x cierto si tu mac adress es 00:--:00:41:07:--

TE VOY A IR A BUSCAR!!!!!

jeje

enserio
2  Programación / Java / Necesito una mano con con A*Pathfinding (mover jugador con AI) en: 31 Octubre 2010, 18:43 pm
Estaba tratando de hacer un juego para android. Lo que quiero hacer es que cuando uno hace click en la pantalla el jugador vaya hasta ese punto esquivando todos los obstaculos que hay en el medio. Para eso trate de seguir la logica de A*Pathfinding, con los calculos "manhatan". Pero la verdad es que despues de dos dias de tratar de que ande bien cada vez estoy mas mareado.

Algo de info para entender lo que hice hasta ahora:

 El mapa esta dividido en 50*50 tiles de 32 pixeles c/u. Cuando se carga el mapa se cargan todos los objetos colisionables en mapindexT[ x] [y] = true. Cuando hago click en cualquier tile le paso al void findpath() la coordenada del tile. Despues este void chequea las colisiones de alrededor de las coordenadas que le paso y despues,  al estilo "Manhatan", el costo de caminar horizontal y verticalmente de ir hasta el lugar donde esta el jugador. Despues determina los valores de los tiles de acuerdo al costo de caminar hasta ahi.

Una vez pasado esto deberia buscar cual es el tile optimo y guardar sus coordenadas en un arraylist. Las estoy grabando en 2. Una para pasarle 1 tile x tile las coordenadas de a donde ir una vez calculado como llegar. Y la otra para limpiar otro array booleano que contiene cuales tiles fueron ya calculados una vez que el jugador se termino de mover.

Una vez calculado como deberia llegar vuelve al loop principal en donde agarro las coordenadas que guarde anteriormente "optimas" de como llegar del arraylist y las voy borrando 1 x 1 a medida que el jugador completa un movimiento de tile entero. Una vez que termina el movimiento total calculado le pido que limpie mi array booleano que contiene los tiles que fueron usados.

Actualmente tengo varios errores que no me dejan esclarecer bien cual es el problema. Habre estado 4~6 horas programando esto y 8~10 debuggeando y corrigiendo. Hay variables que estan al pedo, fui creando variables y borrando a medida que debuggeaba para ver si solucionaba el problema, hay mas de una colgada, pero eso no es lo importante, cuando este andando bien voy a borrar las cosas innecesarias.

Estos eran los problemas que tenia al principio, algunos los resolvi, leer el final del post para ver los problemas del codigo actual:
Citar
Los problemas a simple vista que tengo son:
  • El jugador no siempre calcula su tile optima, hay veces que si, hay veces que no
  • Una vez finalizado el movimiento no siempre limpia mi array, cosa que no le encontre sentido alguno
  • Hay veces que el jugador se queda loopeando el movimiento entre 2 tiles, llendo y viniendo
  • Si le pido de que esquive un colisionable a veces entra en un loop infinito :/
  • Seguramente abra mas, pero necesito que alguien que tal vez no este tan cerca del codigo pueda ver que estoy haciendo mal


Bueno les dejo partes del codigo por que el juego total es bastante largo

De aca se inicia el movimiento
Código
  1. @Override
  2. public boolean onSceneTouchEvent(Scene pScene,
  3. TouchEvent pSceneTouchEvent) {
  4.  
  5. if (pSceneTouchEvent.getAction() == MotionEvent.ACTION_DOWN) {
  6.  
  7.     otoy = toy;
  8.     otox = tox;
  9.  
  10.  
  11. toy =(int) pSceneTouchEvent.getY() / 32;
  12. tox = (int) pSceneTouchEvent.getX() / 32;
  13.  
  14. chartouched = false;
  15. onqueuex.clear();
  16. onqueuey.clear();
  17. queue = 0;
  18. Log.d("MO", "tox " + tox + " toy " + toy);
  19. //Game.this.touchmove();
  20. lpath = true;
  21. realfinish = false;
  22. findpath("player", tox, toy);
  23.  
  24.  
  25. return true;
  26.  
  27. };
  28. return false;
  29. }
  30.  
  31.  
  32. });

Esta es la funcion que deberia calcular a donde ir:
Código
  1. private void findpath(String who, int ax, int ay) {
  2. int valuesx[][] = new int[3][3];
  3. int valuesy[][] = new int[3][3];
  4. int xx,yy;
  5. int[][] f = new int[3][3];
  6. int[][] h = new int[3][3];
  7. int[][] g = new int[3][3];
  8. int tmpx, tmpy, tmpv;
  9. tmpx = tmpy = tmpv = xx = yy = 0;
  10. boolean[][] ontclosedlist = new boolean[3][3];
  11. firstmove = true;
  12. fx = ax;
  13. fy = ay;
  14. onqueuex.add(fx);
  15. onqueuey.add(fy);
  16. boolean notthere = true;
  17. boolean walkable = true;
  18. if (mapindexT[fx][fy]) { walkable = false; }
  19.  
  20. if (walkable) {
  21. while (lpath) {
  22. // referenciar los 8 puntos que rodean a donde vamos
  23. valuesx[0][0]= fx - 1;
  24. valuesy[0][0]= fy - 1;
  25.  
  26. valuesx[0][1]= fx;
  27. valuesy[0][1]= fy - 1;
  28.  
  29. valuesx[0][2]= fx +1;
  30. valuesy[0][2]= fy - 1;
  31.  
  32. valuesx[1][0]= fx - 1;
  33. valuesy[1][0]= fy;
  34.  
  35. valuesx[1][1]= fx;
  36. valuesy[1][1]= fy;
  37.  
  38. valuesx[1][2]= fx + 1;
  39. valuesy[1][2]= fy;
  40.  
  41. valuesx[2][0]= fx - 1;
  42. valuesy[2][0]= fy + 1;
  43.  
  44. valuesx[2][1]= fx;
  45. valuesy[2][1]= fy + 1;
  46.  
  47. valuesx[2][2]= fx + 1;
  48. valuesy[2][2]= fy + 1;
  49. //--------------------------------------------------
  50. //checkear collidables y conseguir la siguiente tile optima
  51. for (int m=0; m <= 2; m++) {
  52. for (int q=0;q<=2; q++) {
  53.  
  54.  
  55. int tvx = valuesx[m][q];
  56. int tvy = valuesy[m][q];
  57. Log.d("MO", "tvx " + tvx + " tvy " + tvy);
  58. if ( tvx >= 0  && tvy >=0) {
  59. if (mapindexT[tvx][tvy]) {
  60. ontclosedlist[m][q] = true;
  61. Log.d("MO", "Collidables X: " + valuesx[m][q] + " Y: " + valuesy[m][q]);
  62.  
  63. numberofopenlist++;
  64. }
  65. // no entrar en tiles usados
  66. ontclosedlist[1][1] = true;
  67. if (onclosedlist[valuesx[m][q]][valuesy[m][q]]) { ontclosedlist[m][q] = true;}
  68. // else { ontclosedlist[m][q] = true; }
  69. //setear distancia entre el target y el player
  70. // diferenciar x e y de acuerdo al values >>
  71. if (!ontclosedlist[m][q]) {
  72. if ( mx > valuesx[m][q] && my >= valuesy[m][q]) {
  73. g[m][q]= (mx - valuesx[m][q] + my - valuesy[m][q]) * 10;
  74. // Log.d("MO", "Arriba e izquierda" + " mx " + mx + " fx " + valuesx[m][q] + " my " + my + " fy " + valuesy[m][q]);
  75. } else if ( mx <= valuesx[m][q] && my > valuesy[m][q]) {
  76. g[m][q] = (valuesx[m][q] - mx + my - valuesy[m][q]) * 10;  
  77. //Log.d("MO", "Arriba y derecha mx " + mx + " fx " + valuesx[m][q] + " my " + my + " fy " + valuesy[m][q]);
  78. }  else if ( mx >= valuesx[m][q] && my < valuesy[m][q]) {
  79. g[m][q] = ( mx - valuesx[m][q] + valuesy[m][q] - my) * 10;
  80. //Log.d("MO", "Abajo e izquierda" + " mx " + mx + " fx " + valuesx[m][q] + " my " + my + " fy " + valuesy[m][q]);
  81. } else if (mx == valuesx[m][q] && my == valuesy[m][q]) {
  82. g[m][q] = 0;
  83.  
  84. } else if (mx < valuesx[m][q] && my <= valuesy[m][q]) {
  85. //Log.d("MO", "Abajo y derecha" + " mx " + mx + " fx " + valuesx[m][q] + " my " + my + " fy " + valuesy[m][q]);
  86. g[m][q] = ( valuesx[m][q] - mx + valuesy[m][q] - my)*10;
  87. } else { Log.d("MO", "ERROR DE CALCULO DE COSTOS DE MOVIMIENTO MX: " + mx + " MY: " + my + " valuesx: " + valuesx[m][q] + " valuesy " + valuesy[m][q]); }
  88. //Log.d("mo", "g[m][q] " + g[q][m]  );
  89.  
  90. } else { // Log.d("MO", "Collisionable");
  91.  
  92. }
  93. // setear costo diagonal
  94. if ( m == 0 && q == 0 || m == 0 && q == 2 || m == 2 && q == 0 || m == 2 && q == 2) {
  95. h[m][q] = 20;
  96. } else {
  97. // setear costo xy
  98. h[m][q] = 10;
  99. }
  100. // setear costo total;
  101. f[m][q] = g[m][q] + h[m][q];
  102.  
  103.  
  104. }
  105. }
  106. }
  107.  
  108. for (int x = 0; x <= 2; x++) {
  109. for (int y = 0; y <= 2; y++) {
  110. // buscar f optima;
  111. //if (x == 1 && y == 1) { continue; }
  112. if (ontclosedlist[x][y]) {
  113. //continue;
  114. //Log.d("MO", "collisionable \\/");
  115.  
  116. } else {
  117.  
  118. //Log.d("MO", "Buscando f opt X: " + x + " Y: " + y + " realx: " + valuesx[y][x] + " realy: " + valuesy[y][x] + " costo:  " + f[x][y]  );
  119. if (x == 0 && y ==0) { tmpx =valuesx[0][0]; tmpy = valuesy[0][0]; tmpv = f[x][y]; xx = yy = 0; }
  120. if (f[x][y] < tmpv) { tmpx = valuesx[x][y]; tmpy = valuesy[x][y]; tmpv = f[x][y]; xx = x; yy = y; exitloop = 0; Log.d("mo", "F optima calculada" + " x " + tmpx +" y " + tmpy + " cost " + tmpv);}
  121.  
  122. }
  123. ontclosedlist[x][y] = false;
  124.  
  125. }
  126. }
  127. onqueuelistx.add(tmpx);
  128. onqueuelisty.add(tmpy);
  129. onqueuex.add(tmpx);
  130. onqueuey.add(tmpy);
  131. onclosedlist[tmpx][tmpy] = true;
  132. Log.d( " MO ", "onqueuex: " + onqueuex.get(queue) + " onqueuey: " + onqueuey.get(queue));
  133. queue++;
  134. fx = tmpx;
  135. fy = tmpy;
  136. // llenar lista
  137. // for ( int g1=0; g1<=2; g1++) {
  138. // for (int h1=0; h1<= 2; h1++) {
  139. // if (ontclosedlist[g1][h1]) { onclosedlist[valuesx[h1][g1]][valuesy[h1][g1]] = true; }
  140. // }
  141. // }
  142.  
  143. //-------------------
  144. // referenciar para donde moverse
  145. if (queue > 30) {
  146. Log.d("MO", "Saliendo del loop! error");
  147. onqueuex.clear();
  148. onqueuey.clear();
  149. queue = 0;
  150. break;}
  151.  
  152. Log.d("MO", "Fx: " + fx +" Fy " + fy + " cost " + f[xx][yy] + " onqueue " + queue );
  153. // salir del loop
  154. if (fx == mx && fy == my) {notthere = false; realfinish = false; lpath = false; fpath = true; oqueue = queue;
  155. tmoving = true;
  156. onqueuex.remove(onqueuex.size() - 1); onqueuey.remove(onqueuey.size() - 1);
  157. Log.d("MO", "Path calculado, tamaño: " + queue); break;}
  158.  
  159. }// else { notthere = true; }
  160.  
  161. }
  162.  
  163. }
  164.     //}
  165.    //}
  166.  
  167. }
  168.  
  169.  

Una vez calculada entra aca que es donde el jugador se esta moviendo:
Código
  1.  
  2.                             if (!mloop) {
  3.                             if (fpath) {
  4.  
  5.                             //lpath = true;
  6.                             int tmx, tmy, rtmx, rtmy;
  7.                             if (!onqueuex.isEmpty()) {
  8.  
  9.  
  10.  
  11.                             tmx  = onqueuex.get(onqueuex.size() - 1);
  12.                             tmy = onqueuey.get(onqueuey.size() - 1);
  13.                             rtmx = mx - tmx;
  14.                             rtmy = my - tmy;
  15.                             if (rtmx == 1 && rtmy == 1) {
  16.                             //diagonal superior izquierda
  17.                             tindex = 4;
  18.  
  19.                             } else if (rtmx == 1 && rtmy == -1) {
  20.                             // diagonal inferior izquierda
  21.                             tindex = 5;
  22.                             } else if (rtmx == -1 && rtmy == 1) {
  23.                             // diagonal superior derecha
  24.                             tindex = 6;
  25.                             } else if ( rtmx == -1 && rtmy == -1) {
  26.                             //diagonal inferior derecha
  27.                             tindex = 7;
  28.                             } else if (rtmx == 1) { tindex = 1; }
  29.                             else if (rtmx == -1) { tindex = 0; }
  30.                             else if (rtmy == 1) { tindex = 2; }
  31.                             else if (rtmy == -1) { tindex = 3; }
  32.                             Log.d("MO", "tmx: " + tmx + " tmy " + tmy + " rtmx " + rtmx + " rtmy " + rtmy + " tindex " + tindex);
  33.                         onqueuex.remove(onqueuex.size() - 1);
  34.                           onqueuey.remove(onqueuey.size() - 1);
  35.  
  36.                             } else {
  37.                             fpath = false; realfinish = true;
  38.  
  39.                             for (int g2 = 0; g2 < oqueue ; g2++) {
  40.                             onclosedlist[onqueuelistx.get(g2)][onqueuelisty.get(g2)] = false;
  41.                             Log.d("MO", "Limpiando camino");
  42.                             }
  43.                             onqueuelistx.clear();
  44.                             onqueuelisty.clear();
  45.                             onqueuex.clear();
  46.                             onqueuey.clear();
  47.                             oqueue = 0;
  48.                             }
  49.                             }
  50.                             if (!realfinish) {
  51.                             ox = jx = (int) player.getX();
  52.                             oy = jy = (int) player.getY();
  53.                             String p = "player";
  54.  
  55.                             Log.d("MO", "X: " + mx + " Y: " + my);
  56.  
  57.                             switch(tindex) {
  58.                                                    case 0:
  59.                                                        //derecha
  60.                                                     // mapindex(mx, my, true);
  61.                                                     //    if (collidables(mx, my,p,1)){                                                        
  62.                                                        jx = ox + 8;
  63.                                                        ox = jx;
  64.                                                        mloop = true;
  65.                                                        mx++;
  66.                                                            player.setPosition(jx, oy);
  67.  
  68.                                                            player.animate(new long[]{200, 200, 200}, 3, 5, tmoving);
  69.                                                      //  } else { player.animate(new long[]{200, 200, 200}, 3, 5, moving);}
  70.  
  71.  
  72.                                                            break;
  73.  
  74.                                                    case 1:
  75.                                                     //izquierda
  76.                                                    // mapindex(mx, my, true);
  77.                                                    // if (collidables(mx, my,p,1)) {
  78.                                                         jx = ox - 8;
  79.                                                         ox = jx;
  80.                                                         player.setPosition(jx, oy);
  81.                                                         player.animate(new long[]{200, 200, 200}, 9, 11, tmoving);
  82.                                                         mloop = true;
  83.                                                         mx--;
  84.                                                    // } else { player.animate(new long[]{200, 200, 200}, 9, 11, moving); }
  85.                                                            break;
  86.                                                    case 3:
  87.                                                        //abajo
  88.                                                     //mapindex(mx, my, true);
  89.                                                    // if (collidables(mx, my,p,1)) {
  90.                                                     jy = oy + 8;
  91.                                                     oy = jy;
  92.                                                     my++;
  93.                                                     player.setPosition(ox, jy);
  94.                                                     mloop = true;
  95.                                                     player.animate(new long[]{200, 200, 200}, 6, 8, tmoving);
  96.                                                     //} else {  player.animate(new long[]{200, 200, 200}, 6, 8, moving); }
  97.                                                            break;
  98.                                                    case 2:
  99.                                                        //arriba
  100.                                                     //mapindex(mx, my, true);
  101.                                                     //if(collidables(mx, my,p,1)) {
  102.                                                     jy = oy - 8;
  103.                                                        oy = jy;
  104.                                                        my--;
  105.                                                     player.setPosition(ox, jy);
  106.                                                     mloop = true;
  107.                                                     player.animate(new long[]{200, 200, 200}, 0, 2, tmoving);
  108.                                                    // } else { player.animate(new long[]{200, 200, 200}, 0, 2, moving); }
  109.                                                            break;
  110.                                                    case 4:
  111.                                                     //diagonal superior izquierda
  112.                                                     jx = ox - 4;
  113.                                                     ox = jx;
  114.                                                     jy = oy - 4;
  115.                                                     oy = jy;
  116.                                                     mx--;
  117.                                                     my--;
  118.                                                     player.setPosition(jx, jy);
  119.                                                     mloop = true;
  120.                                                     player.animate(new long[]{200, 200, 200}, 9, 11, tmoving);
  121.                                                     break;
  122.                                                    case 5:
  123.                                                     //diagonal inferior izquierda
  124.                                                     jx = ox - 4;
  125.                                                     ox = jx;
  126.                                                     jy = oy + 4;
  127.                                                     oy = jy;
  128.                                                     mx--;
  129.                                                     my++;
  130.                                                     player.setPosition(jx, jy);
  131.                                                     mloop = true;
  132.                                                     player.animate(new long[]{200, 200, 200}, 9, 11, tmoving);
  133.                                                     break;
  134.                                                    case 6:
  135.                                                     // diagonal superior derecha
  136.                                                     jx = ox + 4;
  137.                                                     ox = jx;
  138.                                                     jy = oy - 4;
  139.                                                     oy = jy;
  140.                                                     mx++;
  141.                                                     my--;
  142.                                                     player.setPosition(jx, jy);
  143.                                                     mloop = true;
  144.                                                     player.animate(new long[]{200, 200, 200}, 3, 5, tmoving);
  145.                                                     break;
  146.                                                    case 7:
  147.                                                     //diagonal inferior derecha
  148.  
  149.                                                     jx = ox + 4;
  150.                                                     ox = jx;
  151.                                                     jy = oy + 4;
  152.                                                     oy = jy;
  153.                                                     mx++;
  154.                                                     my++;
  155.                                                     player.setPosition(jx, jy);
  156.                                                     mloop = true;
  157.                                                     player.animate(new long[]{200, 200, 200}, 3, 5, tmoving);
  158.                                                     break;
  159.  
  160.                            }
  161.                             }
  162.                    } else {
  163.  
  164.  
  165.                     switch(tindex) {
  166.  
  167.                     case 0:
  168.                     jx = ox + 8;
  169.                        ox = jx;
  170.                        player.setPosition(jx, oy);
  171.                            temp++;
  172.                            if (temp == 3) { temp = 0; mloop = false; if (realfinish) { tmoving = false; } }
  173.  
  174.                            player.animate(new long[]{200, 200, 200}, 3, 5, moving);
  175.  
  176.                            break;
  177.                     case 1:
  178.                     jx = ox - 8;
  179.                     ox = jx;
  180.                     player.setPosition(jx, oy);
  181.                     temp++;
  182.                     if (temp == 3) { temp = 0; mloop = false; if (realfinish) { tmoving = false; }}
  183.                     player.animate(new long[]{200, 200, 200}, 9, 11, moving);
  184.                     break;
  185.                     case 2:
  186.                     jy = oy - 8;
  187.                     oy = jy;
  188.                     player.setPosition(ox, jy);
  189.                     temp++;
  190.  
  191.                     if (temp == 3) { temp = 0; mloop = false; if (realfinish) { tmoving = false; }}
  192.                     player.animate(new long[]{200, 200, 200}, 0, 2, moving);
  193.                     break;
  194.                     case 3:
  195.                     jy = oy + 8;
  196.                     oy = jy;
  197.                     player.setPosition(ox, jy);
  198.                     temp++;
  199.                     if (temp == 3) { temp = 0; mloop = false; if (realfinish) { tmoving = false; } }
  200.                     player.animate(new long[]{200, 200, 200}, 6, 8, moving);
  201.                     break;
  202.                      case 4:
  203.                           //diagonal superior izquierda
  204.                           jx = ox - 4;
  205.                           ox = jx;
  206.                           jy = oy - 4;
  207.                           oy = jy;
  208.                           temp++;
  209.                           player.setPosition(jx, jy);
  210.  
  211.                           player.animate(new long[]{200, 200, 200}, 9, 11, tmoving);
  212.                           if (temp == 7) { temp = 0; mloop = false; if(realfinish) {tmoving = false;}}
  213.                           break;
  214.                          case 5:
  215.                           //diagonal inferior izquierda
  216.                           jx = ox - 4;
  217.                           ox = jx;
  218.                           jy = oy + 4;
  219.                           oy = jy;
  220.                           temp++;
  221.                           player.setPosition(jx, jy);
  222.  
  223.                           player.animate(new long[]{200, 200, 200}, 9, 11, tmoving);
  224.                           if (temp == 7) { temp = 0; mloop = false; if(realfinish) {tmoving = false;}}
  225.                           break;
  226.                          case 6:
  227.                           // diagonal superior derecha
  228.                           jx = ox + 4;
  229.                           ox = jx;
  230.                           jy = oy - 4;
  231.                           oy = jy;
  232.                           temp++;
  233.                           player.setPosition(jx, jy);
  234.  
  235.                           player.animate(new long[]{200, 200, 200}, 3, 5, tmoving);
  236.                           if (temp == 7) { temp = 0; mloop = false; if(realfinish) {tmoving = false;}}
  237.                           break;
  238.                          case 7:
  239.                           //diagonal inferior derecha
  240.  
  241.                           jx = ox + 4;
  242.                           ox = jx;
  243.                           jy = oy + 4;
  244.                           oy = jy;
  245.  
  246.                           player.setPosition(jx, jy);
  247.                           temp++;
  248.                           player.animate(new long[]{200, 200, 200}, 3, 5, tmoving);
  249.                           if (temp == 7) { temp = 0; mloop = false; if(realfinish) {tmoving = false;}}
  250.                           break;
  251.  
  252.                     }
  253.  
  254.                    }
  255.                     }
  256.  
  257.  
  258.                    }
  259.            });
  260.  
  261.  


A ver si alguien puede ver lo que yo no veo

Desde ya gracias por dedicarle tiempo a este tema

PD: corregi otra cosa q me pase x alto, tambien el jug arranca a moverse a la derecha siempre x mas q no alla terminado de calcular a donde ir, y el loop infinito pasa mas seguido ahora :/

PD2: Le saque algunos errores mas, al parecer me habia confundido pensando en como habia declarado ciertas cosas. Ahora los problemas se reducen a:

El jugador no siempre calcula bien el path, hay veces que entra en un loop que no termina; aunque ahora lo fuerzo a que salga para que sea mas comodo

Otras veces misteriosamente me tira un ArrayOutOfBounds Exception esta linea:


int tvx = valuesx[m][q];
int tvy = valuesy[m][q];

if ( tvx >= 0  && tvy >=0) {

if (onclosedlist[valuesx[m][q]][valuesy[m][q]]) { ontclosedlist[m][q] = true;}

}
y digo misteriosamente por que esta comprendida en el if que no dejaria que entre si esta outofbounds :/. En el log me dice que entra con tvx = tvy = -1


Mi teoria al tener que decidir entre dos tiles con el mismo valor elige uno y para ese lado no puede solucionar el problema. Ahi es cuando no sale del loop. Cuando este mas en frio lo chequeo bien, pero si alguien lo descubre a simple vista mejor

3  Comunicaciones / Redes / Alguien sabe la velocidad maxima de red sobre bluetooth? en: 27 Septiembre 2010, 00:56 am
Buenas, acabo armar una red de bluetooth con blueman en ubuntu.

La conexión a internet la comparte sin problemas, pero la velocidad deja algo que desear.

La maquina que comparte la conexión tiene un adaptador bluetooth 2.0, pero la que recibe tiene uno viejo, de mas de 5 años, me imagino que es 1.0

Ahora me esta andando como maximo a 43 kb/s con las maquinas a 3 metros una de la otra

Mi duda es vale la pena comprar un tercer adaptador bluetooth mas moderno para mejorar la velocidad? alguien sabe a que velocidad podria llegar a funcionar?



Saludos
4  Programación / Java / Alguien sabe si se puede hacer andar la funcion de cycleInterpolator en android? en: 24 Septiembre 2010, 04:54 am
Buenas, estaba adentrandome en la programacion para android, nunca programe en java pero estoy haciendo lo posible para entenderlo ahora :P

Estaba siguiendo la 3era edicion del libro Hello android en el ejemplo del sudoku por si alguien lo tiene en mente...

Mi problema es que en una clase dada una serie de eventos queria que la pantalla tiemble de lado a lado con el cycleInterpolator. Para eso el ejemplo dice que creemos una carpeta llamada anim dentro de res, con los archivos shake.xml y cycle_7.xml

siendo shake.xml
 
Código
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <translate
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:fromXDelta="0"
  5. android:toXDelta="10"
  6. android:duration="1000"
  7. android:interpolator="@anim/cicle_7" />
  8.  
cycle_7.xml
Código
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <cycleInterpolator
  3.       // aca ^ me dice Error parsing XML: UNBOUND PREFIX
  4. xmnls:android="http://schemas.android.com/apk/res/android"
  5. android:cycles="7" />
  6.  
dentro de la clase que llama esto  importe  las siguientes cosas:
Código
  1. import android.content.Context;
  2. import android.graphics.Canvas;
  3. import android.graphics.Paint;
  4. import android.graphics.Rect;
  5. import android.graphics.Paint.FontMetrics;
  6. import android.graphics.Paint.Style;
  7. import android.util.Log;
  8. import android.view.KeyEvent;
  9. import android.view.MotionEvent;
  10. import android.view.View;
  11. import android.view.animation.AnimationUtils; // creo que estas son las que incluyen al interpolator
  12.  
y asi llamo a la animacion:
Código
  1. public void setSelectedTile(int tile) {
  2. if (game.setTileIfValid(selX, selY, tile)) {
  3. invalidate(); // las pistas pueden cambiar
  4. } else {
  5. // num no es valido para esta tile
  6. Log.d(TAG, "setSelectedTile: invalid: " + tile);
  7. startAnimation(AnimationUtils.loadAnimation(game, R.anim.shake));
  8. }
  9. }
  10.  

La cuestion es que googlie y googlie y solo encontre alternativas que no probe todavia, pero no encontre a nadie que haya tenido este problema y lo alla solucionado usando el cycleInterpolator dentro de los interpolators...

El problema tambien es que al tener un xml con errores, R deja de funcionar y todas las clases dejan de funcionar hasta que lo solucione. Tranquilamente podria sacar todo lo relacionado a esto pero me gustaria hacerlo andar. Alguien tuvo este problema o puede llegar a ver el error?

Gracias

PD: Aparte de esto me surgio la duda, mi plan es hacer en un futuro un motor de juegos al estilo tiled based, que renderize imagenes desde un bitmap en un buffer (para dibujar los mapas) y las valla dibujando en la pantalla a medida que esta se mueve por el buffer. Recien estoy empezando con esto pero no se si me conviene seguir leyendo las funciones del canvas (por un posible tema de velocidad) o empezar a leer sobre programacion 2d en opengl es para android. resumido, vale la pena este metodo para juegos o conviene usar opengl por un tema de rendimiento?

Saludos
5  Programación / Scripting / Duda sobre manejo de strings en bash en: 24 Septiembre 2010, 04:22 am
Buenas, estaba queriendo hacer un pequeño script que chequee si soy la unica persona conectada a la red para saber cuando puedo descargar sin molestar a nadie, pero al desconocer alguna funcion de manejo de strings no puedo hacerla, a ver si alguien me puede hechar una mano[

Código
  1. #!/bin/bash
  2. soloyo="false"
  3. hosts=0
  4. ipme=`ifconfig wlan0 | grep "addr:"`
  5. while [ soloyo="false" ]
  6. do
  7.        #en realidad quier hacer que nmap= mi ip pero con el ultimo valor = 0
  8.        #asi funciona en cualquier red
  9.        nmap=`nmap -sP 10.0.0.0/24 | grep Host`
  10.        sleep 30
  11.        for b in nmap
  12.        do
  13.                echo $nmap
  14.                #aca necesito cortar $b para solo quede una ip
  15.                        for x in $ipme
  16.                        do
  17.                                echo $x
  18.                                #aca quiero reconocer si $x es una ip y asignar esa ip a una variable z
  19.                        done
  20.                         if [ $b != $z ]
  21.                         then
  22.                                        hosts=$hosts + 1
  23.                                        echo $hosts
  24.                         fi
  25.                        if [ $hosts <= 2 ]
  26.                        then
  27.                                echo "Solo quedas vos y el router"
  28.                                soloyo="true"
  29.                        fi
  30.  
  31.        done
  32. # sleep 300 para que chequee cada 5 min
  33. done
  34.  

Bueno si alguien me puede hechar una mano para lograr alguna forma de acotar la ip con algun comando en alguna variable estaria agradecido. Sino si hay alguna forma de usar el comando grep mejor para que agarre solo las ips directamente tambien. Y tambien si hay alguna forma de que la terminal en la que se este ejecutando pase al frente para avivarme que el while termino sin estar mirando la terminal de ves en cuando estaria copado.

Saludos
6  Sistemas Operativos / GNU/Linux / Placa wifi nueva, chipset ralink, dos drivers disponibles, ayuda en: 31 Agosto 2010, 23:24 pm
Bueno, me compre una Alfa AWUS036NEH (148f:3070 Ralink Technology, Corp.), instale los ultimos compat wireless del 28 de agosto y la empeze a probar. Segun lei en un foro aleman traducido (el unico que encontre con info de esta placa en particular) la placa usa el driver rt2800usb.

Hago modprobe rt2800usb, me levanta la placa, conecta, le puedo cambiar el txpower al maximo (1W), pero el problema es que no anda bien las funciones basicas, las paginas tardan años en cargar, se cuelga la conexión, parece que tuviese 20% de señal cuando en realidad esta al maximo.


Entonces pruebo la otra opcion que era el rt2870sta. Conecta, anda todo rapido como es debido, pero a la hora de cambiar la region para que la placa funcione al 100% de su potencia no me deja:

iw reg set BO
nl80211 not found


la verdad llamenme quisquilloso o lo que quieran pero quiero que ande al 100% cuando se lo pida, pero tambien quiero que ande. Todavia no llegue a probar inyectar ni un par de funciones, pero queria ir primero a las funcionalidades basicas.

Lei que varias personas aplican parches a los drivers para que estos anden como es debido, la verdad no encontre de nadie que haya tenido el mismo problema con la misma placa como para copiar el procedimiento. Si la solucion va x este camino me gustaria que alguien me encamine :P


tambien probe instalar los drivers de windows con el ndiswrapper, pero no logre levantar la placa de esta forma, cuando hacia modprobe ndiswrapper no la levantaba... de todas formas le tengo mas fe a los drivers nativos...

no se si abra algun tercer modulo que deba probar o tratar de hacer andar bien de alguna forma a los dos con los que levanta la placa...

Bueno si a alguien se le ocurre como lo puedo solucionar estaria agradecido, me gustaria poder terminar de configurarla
7  Sistemas Operativos / GNU/Linux / Problema con flash, video entrecortado, nvidia ion, varias distros en: 16 Julio 2010, 08:14 am
Hola, hace un rato que estoy peliando con flash para que ande bien y no le encuentro la vuelta por ningun lado. El resultado es siempre el mismo. El video se ve mal, no se como explicarlo tecnicamente de forma correcta, pero es como si el buffer y el refreshrate no se llevaran bien y la imagen no se reproduce de forma correcta, hay partes que se refrescan en menos de un segundo de diferencia por lo que se vuelve medio molesto, lo peor es que despues de unos minutos de uso directamente se cuelga y vuelve a arrancar. Lo mas molesto es que se cuelgue en realidad, leyendo como explique el otro problema suena exagerado, se puede ver, deja un poco que desear...

Bueno el problema lo tengo en todas las distros que tengo en esta maquina salvo en windows :/ (y quisiera no tener que usarlo para ver streams x internet...) (Ubuntu 10.04 64 bits, Ubuntu 10.04 32 bits, Slackware 13.1 64 bits). En todas las versiones uso los drivers restrictivos de nvidia, probe la version 190 y la ultima que es la 256. Tambien probe usar las versiones de flash 64 bits y 32 bits, y 32 bits en el so de 64. Mi creatividad termino aca y ya no se que mas tocar, google no ayudo mucho, hay varios con placas nvidia con el mismo problema, ninguno con la misma placa q yo, tambien note q la misma placa con un procesador mejor puede carecer del problema, mi teoria es que flash no esta usando la aceleracion de la placa o algo por el estilo y le pide todo al procesador, pero la verdad no se como configurar flash, tambien pense en tratar de overclockear el procesador para ver si mejora algo... es un intel D510 1.66 ghz con 2 cores con hyperthreading, igual no creo que cambie mucho esta ultima opcion, y el ruido del cooler al mango es molesto

esta es mi placa de video: 03:00.0 VGA compatible controller: nVidia Corporation GT218 [ION] (rev a2)
es onboard con 512 megas ddr3, me da un poco de bronca que no la pueda hacer andar bien y que mi otra maquina con su intel de 128 megas le pasa el trapo para hacer el mismo trabajo :/ lo que no me puedo quejar es que opengl funciona mucho mejor con esta...

bueno cualquier ayuda es bienvenida, estoy abierto a experimentar, lei que la configuracion de flash esta escrita en hexadecimal pero de hex no se ni mu, de todas formas las soluciones a problemas parecidos tocando la configuracion que encontre eran para placas ati y no nvidia asi que ni siquiera instale un editor de hex

dado que no tengo cable y mi fuente televisiva es internet es un problema que necesito solucionar, temporalmente estoy abriendo windows pero se me hace molesto tener que caer tan bajo, ni me moleste en probar el gnash, que en mi otra maquina lo probe pero en youtube dejaba mucho que desear y justin.tv ni lo cargaba...


Saludos
8  Sistemas Operativos / GNU/Linux / duda sobre consumo de ram en 64 bits en: 9 Julio 2010, 02:31 am
Buenas, me compre una maquina nueva, una zotac mini-itx con cpu intel d510 64 bits, 2 gb de ram y video onboard con 512 megas dedicados. La cuestion es que le instale ubuntu 64 bits. El unico detalle que no me gusto nada es que la maquina al prender ya tiene 900~ megas de ram ocupados :/. Es mi primera maquina de 64 bits pero la verdad que me use el 50% del ram al arranque me parece un desperdicio en comparacion con los 300~ que me usa ubuntu en 32 bits en mi otra maquina...

Mi primera duda es si es ubuntu el problema o todos los sistemas de 64 bits ocupan una banda de ram? Podria llegar a hacer algo, como por ejemplo recompilar el kernel para que valga la pena el sistema? (nunca lo hize pero no tengo problemas de experimentar) a cuanto se lo podria bajar sacando cosas innecesarias?

Hasta ahora anda todo de forma decente, pero todavia no le pedi que haga nada hardcore a la maquina, ni me imagino que pasara cuando le trate de correr maquinas virtuales adentro, tenga corriendo varios gestores de descargas en las diferentes maquinas virtuales con diferentes conexiones a internet y la tenga procesando video de alta definicion al mismo tiempo...

Despues mi segunda duda es si tengo alguna ventaja en correr con 64 bits en vez de 32?

en conclusion que me convendria hacer, sacar el so de 64 bits? instalar otro linux de 64 bits? o instalar otro linux de 32 y elegirlo para hacer otras cosas?


offtopic: note que el cooler del cpu esta siempre al mango, aunque al procesamiento este al minimo, se supone que es compatible con acpi, aunque no alla encontrado la temperatura del cpu todavia, vi la de la placa de video y estaba al minimo, me imagino que la del cpu no estara muy alta tampoco... hay alguna forma de solucionar esto para que regule el cooler automaticamente de acuerdo a la temperatura que tenga en el momento?

Saludos
9  Seguridad Informática / Hacking Wireless / duda sobre clave wep hexadecimal posiblemente de 104 bits en: 21 Junio 2010, 22:05 pm
buenas, hace unos meses q estuve probando el aircrack-ng en ubuntu con una intel pro wireless 3945 abg, y la verdad no me encontre con ningun problema hasta ahora...

entre las redes q tengo a mi alcanze encontre una que me llamo la atencion y me parecio interezante tratar de decifrarla.

Esta red tenia una encriptacion simple, WEP, y filtrado de mac adress... cosa q lo hacia mas interezante para ver q tan bien me funciona el cambio de mac adress

cuestion que pongo en modo monitor, anoto las mac adress q estaban permitidas, cuando se desconecta una me cambio la mac adress y me pongo a inyectar para subir la tasa de paquetes.

todo venia bien hasta que decidi reemplazar mi antena externa de 2 db por una de 5 db en el medio de la inyeccion. al aircrack no le gusto nada y tuve q reiniciar

la inyeccion volvio a andar sin problemas hasta que la otra persona conectada a la red se desconecto; ahi me surgio la duda de si la inyeccion en algunos/todos los casos funciona mejor si hay alguien conectado en la red... por ahora creo q es asi, pero si alguno lo sabe bien por favor digamelo q esto es solo una teoria mia


bueno volviendo al caso, se desconectan, deja de inyectar y me fui a dormir, hoy lo veo conectado a 1 denuevo y repito el mismo proceso

llegue a acumular 125k IV's, y el aircrack no encontraba la password.

ya me parecia raro y decidi probar solo con los paquetes q habia capturado hoy en vez del total (80k IV's)... y bingo, me aparece la clave en hex solamente:

C8:NO SE PONE :F6

cuestion que queria ver si andaba y surgio el problema....

primero trato de usar los traductores de hexadecimal de internet, ninguno me dio la clave en ascii

despues trate de conectarme directamente con la clave hex, pero tambien falle, lo que hice fue:

sudo iwconfig wlan0 essid "essid" key C8:_____________________F6
dhclient wlan0

sudo iwconfig wlan0 essid "essid" key C81____________________________F6
...
... key 0x____________6
...key c_______________f6


y con ninguna logre q el router me asigne una ip

ahora bueno, como ya se imaginaran, mis preguntas son:

 estoy haciendo algo mal para conectarme? SI, ROBAR

hay alguna forma de traducir la clave a ascii q funcione? (lei un poco de que depende del router si usa md5, pero no entendi mucho y me imagino q se supone q me deberia poder conectar con la clave en hex igual

puede ser que los IV's se hayan corrompido cuando cambie la antena y se me colgo el aircrack? por eso que me encuentra la clave si solo selecciono los paquetes del dia de hoy? o es mas factible q de ayer a hoy hayan cambiado la clave?

bueno y la ultima mas boluda es si al haberme cambiado la mac adress (probe con el macchanger y usando la opcion -h con el aireplay-ng, ambas funcionaron correctamente) pueda llegar a influir en que la clave que capture no sea la correcta?
10  Sistemas Operativos / GNU/Linux / problema instalando gnome en arch linux en: 12 Junio 2010, 08:43 am
Buenas, hace 3 dias que estoy tratando de dejar arch linux en mi maquina andando y no hay caso. Lo unico que puedo decir es que aprendi bastante por ahora, pero hay algo que estoy haciendo mal o no se :P

estuve siguiendo las guias en internet para instalarlo correctamente, cosa que no me ayudo mucho


Lo instale con el cd de instalacion, seleccione las particiones manual una para el root, una swap y la del /boot.

Selecciono los paquetes, instalo, configuro el grub y carga la consola sin problemas

Despues de aprender a usar el wpa_supplicant y conectarme a internet :P (ya estresado despues de media hora para poder llegar a volver a bootear ubuntu desde el grub :P) elijo el mirror de pacman, le doy update, agrego a mi usuario y lo añado a los grupos correspondientes.

Instalo el sudo (aca no se si me mande una cagada por que no modifique el archivo sudoers al principio, sino que lo hice despues de instalar el gnome, tendra que ver?)

despues en vez de instalar el alsa como decia en la guia instale el oss, añado el daemon al rc.conf

instalo xorg, mi placa de video que es una intel 945GM con los drivers xf86-video-intel, agrego al mkinitcpio.conf (creo que se llamaba asi) y despues parcheaba el kernel (con el comando mkinitcpio -p...) (hay alguna cosa que alla que hacer aparte para configurarla bien?)

despues instale la tipografia, y los paquetes gnome, gnome-extra y gdm

agrego hal y fam a los daemons (que despues probe borrar fam por q instale gamin y agregue fuse al rc.conf, aunque no hizo diferencia)

modifico el inittab para que arranque en modo gnome, me logueo con mi usuario y genero el archivo ~/.xinitrc y reinicio

la primera vez arranca, y cuando se supone que deberia mostrar la pantalla de login empezo a tirar errores, no arrancaba X y lo deshabilitaba automaticamente por 5 minutos una tras otra vez...

ahi modifique el pacman.conf y agregue los paquetes unstable, hago update y reinicio

me abre la pantalla de login, dice myhost y me da la opcion de hacer click en login, lo hago y me vuelve a cargar la misma pantalla, myhost me lo presenta como texto plano, sin embargo al clickearlo cambia aparece 86.

finalmente lo otro que probe que hizo diferencia en el arranque fue en el rc.conf poner todos los daemons encerrados asi: ([daemons] gdm) ; ya que supuestamente servia para solucionar un bug... al reiniciar me abria una especie de escritorio, con dos terminales abiertas y un reloj arriba a la derecha, estaba todo completamente colgado y no podia escribir, acceder a otras terminales o reiniciar...

tambien prove usar xdm como gestor de login elegiendolo desde rc.conf pero no variaba en nada

Es la tercera vez seguida q trato de instalarlo en estos tres dias y de a poco me esta superando :(

otra cosa que pasaba era que siempre que trataba de hacer un exec gnome-session ; /usr/sbin/gdm start ; startx ; me devolvia un error similar a este:

Failed to adquire org.desktop.DisplayManager ; que es el mismo error que me decia cuando antes de instalar los drivers inestables que no podia inicar el X server

Creo que tal vez me falta configurar la placa de video de alguna forma o algo, pero googlie y googlie y x ahora no encuentro nada, segui una guia para instalarla y no encontre a nadie que le haya dado problemas :/ pero tal vez me falto buscar algo que no se me ocurre ahora por estar tan cerca del problema o por mi inexperiencia


Saludos
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines