Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - NeoB

#1
Sé (o no, corregidme si me equivoco) que nuestras direcciones IP en la red local las pone el DHCP, y que con las tablas ARP sabe a que MAC corresponde cada IP para saber por donde mandar el paquete de datos. Para que pueda funcionar esta LAN, se necesita el router. Y la pregunta es: ¿qué/quién se encarga de llevar la función de router en internet (WAN)? ¿No hay como un super-router del gobierno o algo así que se encargue de que nadie suplante la IP de nadie, que los paquetes vayan a su IP y esas cosas que hacen los routers?

PD: sé que las IP las ponen los ISP, me refiero a que por ejemplo, ISP1 asigne la dirección de un ordenador de ISP2, o a que los paquetes de ISP1 se manden a ISP1 y no a ISP2.

Perdonad el lío y las garrafadas que pueda haber dicho. Gracias.
#2
Foro Libre / ¿¿Os echáis un minecraft??
26 Diciembre 2013, 12:12 PM
Mi hermano y yo vamos a echarnos hoy un minecraft para retomarlo un poco en vacaciones. Lo hemos dejado todo el año y queremos ver como es ahora :). Si alguien quiere unirse que responda al post y/o me pase un privado con su usuario de hamachi. La red de hamachi es mw3survn. Tengo que aceptar la petición de unirse a hamachi, lo digo por si tardo un minuto ;). Si se llena y hay alguien que quiera unirse que me lo diga y hago dos.

Eso sí: Mi internet es una ***** y se corta de vez en cuando. Suelo tardar un minuto en ponerlo todo listo de nuevo.

Supervivencia (20p) todos desde cero.
Minecraft 1.7.4 (creo que es este: https://www.dropbox.com/s/zvz5tcdpo0jxnow/KeiNett%20Launcher%201.7.4.rar)
#3
Foro Libre / Colaboren votando mi proyecto.
28 Octubre 2013, 16:57 PM
Buenas,

Hace tiempo que no escribo nada en el foro  :-(, y ahora que lo hago es para pedir esto... un poco triste, perdónenme...

Bueno, el caso es que unos amigos y yo llevamos un proyecto de construir un drone de bajo costo y para hacerlo necesitamos financiación. Se nos ha ocurrido usar el crowdfunding para recaudar dinero para los materiales, y ahora estamos en la fase de votos (necesitamos 100 antes de pasar a la fase de financiación), así que si alguno de vosotros ojea el proyecto y le parece una buena idea o siquiera interesante y vota sí: "eternamente agradecidos".


En la descripción del proyecto no hemos puesto nada demasiado técnico, aquí resumo cómo va por si interesa (si queréis más información en la descripción del proyecto pone un email o si no por aquí):

El proyecto es un proyecto de investigación/desarrollo/educación, más bien los últimos dos y sobre todo lo último. Se trata de un drone (uav) de bajo costo (al rededor de 200e). Para la comunicación tenemos pensado utilizar GSM/UMTS y así poder controlarlo desde cualquier dispositivo con acceso a internet. La parte digital del dispositivo es Ardruino (control de los motores y del móvil en general) + Raspberry Pi (se encarga de la conexión con el control, de retransmitir el video etc). No pongo más para no agobiar, si quiere alguien más detalles, con preguntar basta.

** EDITO:
Olvidé poner la página... seré... seré.
http://www.lanzanos.com/proyectos/dronesr/

***EDITO:
Joder lo siento, me he equivocado y lo he puesto en noticias. Pretendía ponerlo en Foro Libre. Perdonadme, espero que algún moderador lo mueva. Lo siento.

Gracias por si vota alguien  ;D
#4
Foro Libre / Lamers. Cuál es su opinión.
11 Julio 2013, 13:19 PM
Buenas. Quiero escribir algo sobre el comportamiento exclusivo de las personas, de por qué y como se califican unas a las otras. Como me gusta la informática en general y me he movido bastante por esos temas, he visto aparecer muchas veces el termino "lamer", y quisiera contar con más opiniones.

¿Cuál es vuestra definición de lamer?
¿Que hace alguien para que lo consideres lamer?

Gracias!
#5
Foro Libre / Es legal...
2 Julio 2013, 18:24 PM
Si un amigo mio encuentra una vulnerabilidad en una web y anda escaso de efectivo, ¿es legal/ilegal pedir dinero por la vulnerabilidad?
#6
Foro Libre / Casualidad, supongo.
2 Julio 2013, 16:54 PM
Imaginaos una página web que acaba de empezar, que no lleva ni dos semanas. Imaginaos que se trata de un foro para debatir sobre cualquier temática y en el que además se exponen algunas noticias que creemos relevantes. En un último esfuerzo para poneros a prueba, os pido que concibáis esta como un sitio en español.

Poneros en lugar de un supuesto usuario que, cofundador del sitio, se atreve a mirar el número de usuarios en línea esperando que la cantidad de visitantes se haya disparado (o al menos incrementado). Para su sorpresa (o renunciando a su humildad, como era de esperar), encuentra que hay dieciséis usuarios a la vez en línea. Al mismo tiempo que se despierta en él la curiosidad, y sin poder evitarlo, se le escapa una sonrisa.

Inmediatamente, sube hasta la cabecera de la página, donde ingresa sesión (y donde está el botón "registrarse", por si alguno se anima). Una vez le aparece el escueto mensaje de bienvenida, "Hola xxxx", se dirige de nuevo hasta el final de la página, donde todavía aparece un inusitado número de invitados, como llama el sitio a los usuarios que no se han "logueado". Como usuario administrador, debe velar por el sitio (ya sabéis: un gran poder, conlleva una gran responsabilidad), así que accede al listado de usuarios donde se muestran la dirección IP del visitante (solo el administrador puede verla) y el post que está visitando.

Para su sorpresa, 14 de ellos están viendo post relacionados con el espionaje de EE.UU. El administrador, haciendo uso de su intuición, se huele algo raro.

Seguir leyendo: http://selfleading.comli.com/forum/index.php?topic=34.msg34;topicseen#new

Es solo un dato curioso que me ha parecido lo suficientemente interesante como para compartirlo aquí (ya que, si os habéis molestado en terminar de leerlo, no muchos hispano-hablantes lo visitan en la web original...). Espero que esto no se considere spam...

PD: ¿que opináis?
#7
Foro Libre / Alguien se une a mi proyecto.
22 Junio 2013, 20:43 PM
Llega el verano y con él mis ideas sobre proyectos que me gustaría realizar. Uno de ellos es la creación de una página/foro para debates.

El objetivo principal de esta, como ya he dicho, son los debates y discusiones (sobre cualquier cosa), compartir opiniones y dar puntos de vista; ya sea en temas de política, economía, ciencia, filosofía, o cualquier otra cosa.

También se publicarían algunas noticias relevantes de la actualidad. Un objetivo secundario es ayudar sobre dudas de cualquier índole a la comunidad que conforme el sitio.

Acaba de nacer (la empecé a desarrollar hace... cuatro o cinco días). Ya tiene una página principal y el foro (smf) instalado con las principales modificaciones hechas. Está alojada en un servidor gratuito (de momento) y no descarto nunca cambiar de hosting si la cosa avanza.

La cuestión es que vendría bien algo de ayuda :P, y quizás si alguno de ustedes se interesa por "el proyecto", le gustaría echar una mano como moderador o colaborador. Si es así, envíemen un mensaje privado o posteen aquí su usuario para que pueda ponerlos como moderador.

Les dejo el link de la página (todavía está un poco vacío):
selfleading.comli.com
#8
Resulta que ayer paseaba con un amigo y me acordé de un problema que me planteé hace alrededor de un año. Quizás no sepa expresarlo muy bien y por ello espero que tengan algo de paciencia conmigo. Sin más, enuncio el problema:

Si tenemos dos puntos, a = 1 y b=2, por poner algún ejemplo, estamos de acuerdo que para llegar de a a b hemos tenido que pasar por el punto 1.1, antes por el punto 1.01, antes por el punto 1.001, antes por el punto 1.0001.
Colocamos una regla en el suelo y situamos nuestro dedo en la marca 0. Movemos el dedo hasta la marca 1. Al hacerlo nuestro dedo ha recorrido los infinitos puntos que separan 0 de 1.


¿Como se puede recorrer infinitos puntos del espacio?
#9
Bueno, les pido consejo a ustedes que de seguro, sabrán más que yo:
Les pongo en contexto: Tengo un ordenador de 64bits con Windows 7 Ultimate SP1 (64 bits) instalado en  una partición y con Ubuntu 12.04 64 bits en otra. Cuando reinicio mi ordenador para entrar en mi Linux, me doy cuenta de que en mi USB hay un archivo ejecutable llamado i00dvoym.exe y un autorun.inf para autoejecutarlo. Lo elimino desde Linux, vuelvo a Windows, y luego, al volver a Linux, observo que se ha vuelto a copiar, así que está claro que mi Windows ha sido infectado.
En un intento de eliminarlo he seguido esta guia: http://blog.teesupport.com/how-to-guide-remove-i00dvoym-exe-i00dvoym-removal-instructions/ pero no encuentro el proceso en ninguna parte. Además me preocupa que mi queridísimo Linux pudiese haber sido infectado a través de Windows.
Ignorando la perdida de mis contraseñas y otros que podría haber causado el virus... ¿como puedo eliminarlo y cerciorarme de que mi Linux sigue estando impecable?

PD: al pulsar sobre el archivo en linux, me da la opción de abrirlo con Mono runtime, ¿podría esto afectar al hecho de si mi sistema Linux esta infectado o no?

Gracias.
#10
Bueno, como dice el título, ES SOLO una sugerencia o una propuesta... ¿Que tal un subforo de Windows Phone? No se, junto al de Android por ejemplo... Se que no hay ni de lejos tantos usuarios como de Android, pero sería cosa de ver si se conoce esta plataforma en el foro. Lo que puedo decir yo es que me parece una plataforma muy completa y muy buena para programar (aunque, bueno, yo lo tengo desbloqueado...). En fin, yo lo dejo caer ;)
#11
Buenas! No acostumbro a venir por esta parte del foro, pero esta vez ¬¬ Decir que mis conocimientos sobre criptografía son nulos, así que no me riñan demasiado si meto una pifiada porfavor xD
El caso es que tengo una ¿frase? cifrada que lo único que llego a observar es que:
-Tiene 43 caracteres de longitud. Nunca más ni nunca menos.
-Puede contener las letras de la a-z y A-Z (la 'ñ' no) y números. También he visto aveces una barra baja '_' o un guión '-'.

Lo siento si no doy suficientes datos...
¿Alguien sabría que algoritmo puede ser?
-Un ejemplo de clave podría ser: dBubBAMAAUA4rR87hYb8szySA_z6OaZxzRJH4Autp1A
Gracias.
#12
Programación C/C++ / Ayuda con código mutante C
19 Septiembre 2012, 19:30 PM
Buenas. He estado esta tarde mirando como es eso de "el código mutante" (cade vez me suena mejor xD) pero al intentar reproducir el ejemplo de esta dirección: http://usuarios.multimania.es/rllopis/mainMutante.html me quedo pillado en que al crear el fichero .c con la función mutante() al hacer el objdump -s me sale:

$ gcc -c mutante.c -o mutante.o
$ objdump -s mutante.o


mutante.o:     file format elf64-x86-64

Contents of section .text:
0000 554889e5 b8010000 005dc3             UH.......].    
Contents of section .comment:
0000 00474343 3a202855 62756e74 752f4c69  .GCC: (Ubuntu/Li
0010 6e61726f 20342e36 2e332d31 7562756e  naro 4.6.3-1ubun
0020 74753529 20342e36 2e3300             tu5) 4.6.3.    
Contents of section .eh_frame:
0000 14000000 00000000 017a5200 01781001  .........zR..x..
0010 1b0c0708 90010000 1c000000 1c000000  ................
0020 00000000 0b000000 00410e10 8602430d  .........A....C.
0030 06460c07 08000000                    .F......    

No se que cojer... también he intentado con hexdump -S pero tampoco se que parte es.
He probado con el código de la web sin modificar y me sale una "violación de segmento core generado".
Además mi máquina es de 64bits, supongo que eso influye en los valores hexadecimales, no¿?
Alguna ayuda¿?
#13
WarZone / Hack-Web_Cross ?
4 Septiembre 2012, 12:24 PM
Por favor, ayúdenme en esta prueba. No se si pedir pistas o que me manden la respuesta por MP. Llevo intentándolo 2 días. He intentado meter scripts en todos los campos y eliminar el del protocolo pero o dan links inválidos o pasan los caracteres a hexadecimal y no puedo poner los "<>" por que me los pasa a hex o los pone con &lt.
He probado también con el Tamper Data a modificar los POST pero nada...
En fin, que no puedo y creo que merecería la pena saber directamente la respuesta y ver donde me he atrancado, o al menos, den pistas "explicitas".

PD: Llevo poco en el lío de seguridad web, me he leí la documentación de XSS, y todo eso... y creí que una buena forma de empezar era ir haciendo los retos de warzone como "complemento a la teoría", pero me minan la moral...
#14
Hacking / ¿Es posible...?
12 Agosto 2012, 20:36 PM
Buenas. La pregunta es: si me conecto a una red, hago un arp spoofing y empiezo a ver el tráfico cifrado (con ssl, ...) entre un ordenador y un servidor, se que no es posible descifrar ese tráfico y ver los credenciales o guardar los cookies... pero es posible imitar esa sesión, es decir... si capturo un paquete de un login en https://urlservidor.com/login.php no puedo ver los credenciales ni importar los cookies pero ¿puedo reenviar ese paquete y logearme como si fuese la víctima que ha ingresado sesión (enviar el paquete cifrado?

PD: No se si me explicado bien... perdonme si es así.
#15
Buenas. Esta vez mi duda es como puedo utilizar una URL en una comunicación con sockets tcp/ip en windows en vez de la IP. Tengo este código:

#include <windows.h>
#include <winsock2.h> //Para sockets
#include <ws2tcpip.h> //Para sockets

 
int main()
{
/*************************** DE LOS SOCKETS **************************/
WSADATA wsa;
int sock;
struct sockaddr_in direccion;

WSAStartup(MAKEWORD(2,0),&wsa);

if((sock=socket(AF_INET,SOCK_STREAM,0))==-1 )
{
return -1;
}

direccion.sin_family=AF_INET;
direccion.sin_port=htons(5000);
direccion.sin_addr.s_addr=inet_addr("192.168.1.35");  

if(connect(sock,(struct sockaddr*)&direccion,sizeof(direccion))==-1)
{
return -1;
}
/***********  ....va pa largo......   ************/

Es decir, cambiar el 192.168.1.35 por algo como "miurl.com".
Utilizo mingw.
Gracias.
#16
Programación C/C++ / ¿Esto se puede en C?
27 Julio 2012, 10:18 AM
Buenas. Me pregunto si en C hay alguna forma de asignar a una variable el valor de otra como nombre, por ejemplo, si tengo una cadena (introducida por el usuario o no) que contiene "var1", puedo crear una variable que se llame var1; o si se puede acceder a una variable llamada var2, a través de una cadena como "var2".
-> He buscado en google pero...
-> Gracias.
#17
Buenas, aquí tienen el código de un juego de ping-pong hecho en C, el famoso pong, pero con un solo jugador. No se si calificarlo como aporte o no así que, porfavor, decidme errores y mejoras (como los tics esos que parece que tiene aveces). Para compilarlo: gcc -o pong pong.c -lncurses -lpthread
(Es para Linux y se ejecuta en una terminal, utiliza ncurses)

**Un video:
[youtube=425,350]http://youtu.be/zICUYgHeNEk[/youtube]


/*
-----Creado por neob
-----Juego de ping-pong.
-----Compilar con gcc -o pong pong.c -lncurses -lpthread .
-----Controles:
-- W - Mover la paleta hacia arriba.
-- S - Mover la paleta hacia abajo.
-- A - Mover la paleta hacia la izquierda.
-- D - Mover la paleta hacia la derecha.
*/


#include <stdio.h> //Simple constumbre....
#include <ncurses.h> //Utilizar ncurses.
#include <math.h> //Funciones para la obtención de números aleatorios ( rand() ).
#include <pthread.h> //Ejecución con varios hilos.
#include <time.h> //Proporciona time() que nos devuelve la hora.

/*******************************/
int salir_ncurses(); //Cierra el modo ncurses.
void dibujar_marco(); //Dibuja el marco.
void *hiloposiciones(); //Se encarga de mover la paleta y dibujar la paleta y la pelota.
void *hilomoverpelota(); //Se encarga de mover la pelota.
void dibujar_pelota(); //Dibuja la pelota en una posición aleatoria (la primera vez).
void pintar_paleta(); //Dibuja la paleta (la primera vez).
void direc_aleatoria(); //Una dirección aleatoria para la bola (la primera vez).
void escojer_dificultad(); //Se encarga de la dificultad del juego.
/*******************************/


/******   VARIABLES   *******/
int x_pelota, y_pelota, x_paleta, y_paleta, dpx_pelota, dpy_pelota, dificultad;
char key; //Guarda la tecla que pulsamos.
/*** Variables para los hilos ***/
pthread_t idhiloposiciones; //Identificador del hilo hiloposiciones
pthread_t idhilomoverpelota; //Identificador del hilo hilomoverpelota.
int error_hilo1, error_hilo2; //Para comprobar que no ha habido errores en los hilos.
/****************************/


int main()
{
initscr(); //Entramos en ncurses.
noecho(); //Que no salgan las teclas pulsadas.

       dibujar_marco(); //Dibujamos las paredes.
pintar_paleta(); //Pintamos la paleta.
       dibujar_pelota();  //Dibujamos la pelota.
direc_aleatoria(); //Para que se mueva la pelota por primera vez (Solo la llamamos aquí).
escojer_dificultad(); //Le preguntamos al jugador la dificultad que quiere que tenga el juego (irá en función de la velocidad de la bola).

srand( time(NULL) ); //Cambiamos la semilla de rand.

error_hilo1 = pthread_create(&idhiloposiciones, NULL, hiloposiciones, NULL); //Lo creamos.
error_hilo2 = pthread_create(&idhilomoverpelota, NULL, hilomoverpelota, NULL); //Lo creamos.

if (error_hilo1 != 0 && error_hilo2 != 0) //Si ha habido error, no podemos seguir adelante.
{
clear();
move(LINES/2,COLS/2);
printw("ERROR AL CREAR HILOS DE EJECUCIÓN.");
return -1;
}

while( key != 'e' && key != 'E' )//Si pulsamos E, nos vamos.
{
key = getch();
if (key == 'w' || key == 'W') { x_paleta = x_paleta - 1; }
if (key == 's' || key == 'S') { x_paleta = x_paleta + 1; }
if (key == 'a' || key == 'A') { y_paleta = y_paleta - 1; }
if (key == 'd' || key == 'D') { y_paleta = y_paleta + 1; }
}

salir_ncurses(); kill(&idhiloposiciones); kill(&hilomoverpelota); return 0; //Hemos salido pulsando E, salimos de ncurses, matamos los hilos y nos vamos.

}

void *hiloposiciones()
{
for(;;)
{
   int i; //Para contar.

   clear(); //Borramos la pantalla para renovar todas las posiciones.
   dibujar_marco(); //Volvemos a dibujar el marco.
         
           /*************** PALETAS ***********/
           if (y_paleta != 0 && y_paleta <= COLS -1 && x_paleta != 0 && (x_paleta - 3) != LINES - 1) //No vas a atravesar el marco, no¿?
   {
    for( i=0; i<4; i++ )
       {
move(x_paleta + i, y_paleta);
printw("#");
       }
   } else
    {
                  if (y_paleta <= 0)
  {
y_paleta = 1; //Volvemos a ajustarla a 1 (para que no pueda salir del marco por la izquierda).
  for( i=0; i<4; i++ )
               {
move(x_paleta + i, y_paleta);
printw("#");
          }
  }

              if (y_paleta >= COLS - 1)
  {
  y_paleta = COLS - 2; //Volvemos a ajustarla a COLS - 2 (para que no pueda salir del marco, pero esta vez por la derecha).
  for( i=0; i<4; i++ )
              {
move(x_paleta + i, y_paleta);
printw("#");
          }
  }

              if (x_paleta <= 0) //Para que no se salga por arriba.
  {
  x_paleta = 1;
  for( i=0; i<4; i++ )
              {
move(x_paleta + i, y_paleta);
printw("#");
          }
  }
             
  if ( (x_paleta + 3) >= LINES - 1) //Para que no se salga por debajo.
  {
  x_paleta = LINES - 4;
  for( i=0; i<4; i++ )
              {
move(x_paleta + i, y_paleta);
printw("#");
          }
  }
     }

    /***************** PELOTA ******************/
    move(x_pelota, y_pelota); //Segun las posiciones marcadas por el hilo hilomoverpelota...
    printw("O"); // ...pintamos las pelota.

/*     //----LO UTILIZO PARA VER LOS ERRORES EN LAS VARIABLES Y EN LAS POSICIONES.
    move(3,3);
    printw("-DEBUG: dpx_pelota=%d; dpy_pelota=%d; x_pelota=%d; y_pelota=%d; x_paleta=%d; y_paleta=%d;", dpx_pelota, dpy_pelota, x_pelota, y_pelota, x_paleta, y_paleta); //DEBUG
*/

    if (y_pelota <= 0) //Significa que no ha parado la pelota, se acaba el juego.
    {
     kill(idhiloposiciones); kill(idhilomoverpelota);
   clear();
     move(LINES/2,COLS/2);
     printw("FIN DEL JUEGO!");
    }

    if ( (y_pelota == y_paleta) && ((x_pelota == x_paleta) || (x_pelota == x_paleta + 1) || (x_pelota == x_paleta + 2)  || (x_pelota == x_paleta + 3)) )
    {
        dpy_pelota = - dpy_pelota; //Si rebota contra la pala, tenemos que cambiar su sentido.
      y_pelota = y_pelota + dpy_pelota; //Después de cambiar su sentido hay que volver a actualizar la posición de la pelota.
    }

    usleep(20*1000); //sleep() trabaja con segundos, por eso usamos usleep(), que trabaja con milisegundos.
    refresh(); //Mostramos los cambios en las posiciones.

}
}

/*************************** MOVIMIENTO PELOTA ***************************/
void *hilomoverpelota()
{
for(;;)
{
    if (!( (y_pelota == y_paleta) && ((x_pelota == x_paleta) || (x_pelota == x_paleta + 1) || (x_pelota == x_paleta + 2)  || (x_pelota == x_paleta + 3))) )
    {  
                    x_pelota = x_pelota + dpx_pelota; //Si no está rebotando con la pala, tiene que continuar su camino, por lo que sigue por su camino.
    y_pelota = y_pelota + dpy_pelota;
    }

    if (x_pelota <= 1) //Para que la pelota rebote contra la pared.
    {
    dpx_pelota = - dpx_pelota;
    }

    if (x_pelota >= LINES - 1) //Para que la pelota rebote contra la pared.
    {
    dpx_pelota = - dpx_pelota;    
    }

    if (y_pelota >= COLS - 1) //Para que la pelota rebote contra la pared.
    {
    dpy_pelota = - dpy_pelota;    
    }

    usleep( dificultad*1000 );
}
}





/************ Funciones secundarias como dibujar objetos, salir de ncurses, ... ******************/

int salir_ncurses()
{
endwin();
return 0;
}

void dibujar_marco()
{
int i;
       for(i=0;i<LINES;i++) //Pintamos las paredes: LINES indica el numero de lineas de la terminal y COLS el de columnas (proporcionados por la librería ncurses).
       {
        move(i,0);
        printw("|");
        move(i,COLS - 1);
        printw("|");
       }

for(i=0;i<COLS-1;i++)
{
move(0,i);
printw("_");
move(LINES -1,i);
printw("_");
}
}

void dibujar_pelota() //Dibujamos la pelota (en una posicion aleatoria dentro de un margen).
{
x_pelota = (int) ( rand() % ((LINES/2+4)-(LINES/2-4)+1) + (LINES/2 - 4) ); //Escojemos un numero aleatorio con rand().
y_pelota = (int) ( rand() % ( (((COLS-1) - COLS/9) + 4)-(((COLS-1) - COLS/9) - 4)+1 ) + (((COLS-1) - COLS/9) - 4) );
move(x_pelota, y_pelota);
printw("O");
}


void pintar_paleta() //Pintamos la paleta.
{
int i;
y_paleta = 3; // Eje y > columnas
x_paleta = LINES/2 - 3; // Eje x >> líneas

for( i=0; i<4; i++ )
{
move(x_paleta + i, y_paleta);
printw("#");
}
}

void direc_aleatoria() //Elejimos una primera dirección aleatoria para la pelota.
{
dpx_pelota = ( rand() % (+1 - (-1) +1) + (-1) );
dpy_pelota = -1;

}


void escojer_dificultad() //Escojemos la dificultad del juego.
{
char d;
clear();
move(3,3);
printw("\n-Creado por Juan Escudero Pedrosa.\n"
      "-Indique el nivel de dificultad:\n"
      "\t1 - Fácil.\n"
      "\t2 - Medio.\n"
      "\t3 - Difícil.\n\n"
      "\t(Los controles son W,S,A y D)");
d = getch();
switch(d)
{
case '1': dificultad = 200; break;
case '2': dificultad = 100; break;
case '3': dificultad = 50; break;
default:
clear();
move(3,3);
printw("No se ha seleccionado ningún nivel de dificultad, se tomará por defecto el nivel 2 (Medio). Pulse una tecla para continuar.");
               dificultad = 100;
getch();
break;
}
     
}
#18
Buenas, tengo un problema que no consigo resolver en C, y espero que puedan ayudarme.
Quiero unir un char (ejemplo '9') a una cadena (ejemplo "6533") de forma que luego imprima la cadena y sea "65339".
He googleado bastante y veo que con strcat() puedo unir dos cadenas, pero yo quiero unir una cadena y un carácter, y al intentarlo con strcat() me da error.
¿Hay alguna función que lo haga? ¿De que manera puedo hacerlo? Gracias.
#19
PHP / Ayuda al crear archivo en servidor!
26 Febrero 2012, 18:23 PM
Tengo este código en un archivo .php en /var/www y quiero que me cree un archivo y que escriba Hola!! pero no me funciona. Tengo este código:
Código (php) [Seleccionar]

<?php
$file
=fopen("texto.txt","r");
fwrite($file"Hola!!!");
fclose($file);
?>


El servidor es apache 2.x con php5  en linux.
Quiero que al visitar la página se me cree el archivo en el mismo directorio en el que está alojado con nombre "texto.txt" pero luego hao un "ls" en el servidor y todo sigue igual, no se crea nada. ¿Pueden ayudarme porfavor?
#20
Buenas, he estado esta última semana dándole vueltas a la idea de hacer un bruteforce en C, para que ya estoy aprendiendo, animarme un poco. Una de las utilidades de este por ejemplo, sería logearse en un ftp remoto, pero me va MUY LENTO (incluso cuando me intento logear en localhost), y no se que hacer para mejorarlo (ya os he dicho que estoy aprendiendo). ¿Alguna idea? Antes de dejar el código os digo como va: Por ejemplo cuando te pide un comando yo le meto:
Código (bash) [Seleccionar]

lftp ftp://localhost/ -u usuario,

--Aquí va el código que llevo:

/*
 *Nombre: COMB.

 *Autor: NeoB

 *Descrpición: Genera una lista de palabras (con o sin sentido)
   combinando las letras del abecedario, en mayusculas, minúsculas, y números;
   además permite usar esas combinaciones con un comando.
   Para modificar esta lista se puede modificar la variable "abc" (global).

*/

/***LAS LIBRERÍAS***/
#include <stdio.h>
#include <string.h>


/***VARIABLES GLOBALES****/
char *abc = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; //El abecedario (los caracteres que hay son los que se usarán).
int i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20; //Contadores que usaremos para apuntar a las diferentes posiciones de "abc".
char command[500];
int yescommand;
int tamcommand;


/*******************EL MAIN() Y LAS FUNCIONES DE CONTROL.*********************/
int main()
{
 char option1, option2; int optiontam;  //Para almacenar las opciones que escojamos.  

 printf("\E[0;1m"
        "     ======================================\n"
        "     || COMB - Generador de diccionarios.||\n"
        "     ||     By Juan Escudero Pedrosa.    ||\n"
        "     ======================================\n"
        "Set the length of the strings used:\n"
        "1) use a progressive increase of the string's lenght.\n"
        "2) fixed lenght.\n"
        "3) use range of values for string's lenght.\n"
        "What option has you selected? (1-3):  "
        "\E[00m");
 option1 = getchar(); //Cogemos la opción.
 getchar();  //Es para borrar el stdin, NO SE DEBE DE HACER, pero funciona.

 printf("\E[0;1m"
        "Do you want to use a command with the strings generated? (y/n)  "
        "\E[00m");
 option2 = getchar(); //Cogemos la opción.
 getchar();  //Es para borrar el stdin, NO SE DEBE DE HACER, pero funciona.

 if(option2=='y')
 {
   printf("\E[0;1m"
          "What command do you want to use? (Remember that the word generated will join to the end of the command):  "
          "\E[00m");
   yescommand = 1; //Si yescommand es 1 siginifica que hemos elegido meter comandos.
/*********************************COJEMOS LA CADENA QUE METE***********************************************************/
   fgets(command,500,stdin); //Almacenamos la cadena con un máximo de 500 caracteres.
   char *buscar_n; //La utilizamos para buscar un fin de línea por que queremos cojer solo una línea.
   buscar_n = strchr (command, '\n'); //Buscamos el fin de linea (\n) en command.
   if (buscar_n) //Si lo hay... (no necesita corchetes ('{' y '}') por que solo hacemos una cosa.
   *buscar_n = '\0'; //Lo sustituimos por un final de cadena (\0).
/**********************************************************************************************************************/
   tamcommand = strlen(command); //Lo usamos luego, ya veréis.
 }

 switch(option1)  //Para los valores de lo primero que se nos da a elegir...
 {
   case '1':  //Si elegimos progresiva, vamos llamando. Podemos por ejemplo, cambiar el orden y ponerlo en dos ordenadores.
     cero();
     one();
     two();
     three();
     four();
     five();
   break;

   case '2': //Si elegimos un tamaño predeterminado...
     printf("\E[0;1m"
            "What lenght do you want to use? (0-20):  "
            "\E[00m");
     scanf("%d",&optiontam); //Cojemos el tamaño.
     switch(optiontam)
     {
       case 0: cero(); break;  //Lamamos a cero() (para 0 caracetres):
       case 1: one(); break;  //Llamamos a one() (para 1 caracter)
       case 2: two(); break;  //Llamamos a two() (para 2 caracteres)
       case 3: three(); break;
       case 4: four(); break;
       case 5: five(); break;
       case 6:  break;  //Todavia no lo he puesto...
       case 7:  break;  //Todavia no lo he puesto...
       case 8:  break;  //Todavia no lo he puesto...
       case 9:  break;  //Todavia no lo he puesto...
       case 10: break;  //Todavia no lo he puesto...
       case 11: break;  //Todavia no lo he puesto...
       case 12: break;  //Todavia no lo he puesto...
       case 13: break;  //Todavia no lo he puesto...
       case 14: break;  //Todavia no lo he puesto...
       case 15: break;  //Todavia no lo he puesto...
       case 16: break;  //Todavia no lo he puesto...
       case 17: break;  //Todavia no lo he puesto...
       case 18: break;  //Todavia no lo he puesto...
       case 19: break;  //Todavia no lo he puesto...
       case 20: break;  //Todavia no lo he puesto...
       default: break;  //Todavia no lo he puesto...
     }
   break;
   
   case '3': //Si hemos elegido utilizar un rango de valores...
     setvalues();
   break;

   default:
     printf("\E[0;1m"
            "Unknow option.\n"
            "\E[00m");
     return -1;
   break;
 }
 return 0;
}


int setvalues()
{
 /***EN CONSTRUCCIÓN****/
 return 0;
}



/*
***************HA ESTAS FUNCIONES LAS LLAMAMOS PARA GENERAR LAS PALABRAS********************
***Explico como lo genera en "three()" y en "four()" (para longitudes 3 y 4 respectivamente).
*/

int cero()
{
 char *toexecute;
 char nada = '\0';  //Por si tenemos la p**a suerte de que la password, o para lo que lo utilizemos está en blanco.
 printf("%c\n",nada); //Utilizamos la cadena vacía.
 if(yescommand==1)
 {
   toexecute = command;
   toexecute[tamcommand] = nada;
   system(toexecute);
 }
 return 0;
}


int one()
{
 char *toexecute;
 for (i1=0; i1<=61; i1++)
 {
   char caracter1 = abc[i1];
   printf("%c\n",caracter1);
   if(yescommand==1)
   {
    toexecute = command;
    toexecute[tamcommand] = caracter1;
    system(toexecute);
   }
 }
 return 0;
}


int two()
{
 char *toexecute;
 for (i1=0; i1<=61; i1++)
 {
   char caracter1 = abc[i1];
   for(i2=0; i2<=61; i2++)
   {
     char caracter2 = abc[i2];
     printf("%c%c\n",caracter1,caracter2);
     if(yescommand==1)
     {
         toexecute = command;
         toexecute[tamcommand] = caracter1;
         toexecute[tamcommand + 1] = caracter2;
         system(toexecute);
     }
   }
 }
 return 0;
}


int three()  //Para generar combinaciones de 3 caracteres de longitud.
{
 char *toexecute; //Donde guardamos el comando introducido + las combinaciones generadas.
 for (i1=0; i1<=61; i1++) //Este sería el que más lento cambia de los 3 caracteres.
 {
   char caracter1 = abc[i1]; //"caracter1" apunta primero a "a", luego a "b", luego a "c", etc (ver la variable abc).
   for(i2=0; i2<=61; i2++)
   {
     char caracter2 = abc[i2];
     for(i3=0; i3<=61; i3++) //Este ni lo veríamos pasar de lo rápido que es, pero solo si elegimos no comandos (esto es lo que quiero solucionar).
     {
       char caracter3 = abc[i3];
       printf("%c%c%c\n",caracter1,caracter2,caracter3); //Imprimimos los caracteres, que van variando.
       if(yescommand==1) //Si hemos elegido utilizar un comando...
       {
         toexecute = command; //Ponemos toexecute igual que command, ya que command tiene el comando, pero le tenemos que agregar las palabras generadas.
         toexecute[tamcommand] = caracter1;  //Le vamos agregando las combinaciones (el primer caracter)...
         toexecute[tamcommand + 1] = caracter2;  //Le vamos agregando las combinaciones (el segundo caracter)...
         toexecute[tamcommand + 2] = caracter3;  //Le vamos agregando las combinaciones (el tercer caracter)...
         system(toexecute);  //Ejecutamos "toexecute".
       }
     }
   }
 }
 return 0; //Decimos al main() que todo ha ido bien.
}


int four()
{
 char *toexecute;
 for (i1=0; i1<=61; i1++)
 {
   char caracter1 = abc[i1];
   for(i2=0; i2<=61; i2++)
   {
     char caracter2 = abc[i2];
     for(i3=0; i3<=61; i3++)
     {
       char caracter3 = abc[i3];
       for(i4=0; i4<=61; i4++)
       {
         char caracter4 = abc[i4];
         printf("%c%c%c%c\n",caracter1,caracter2,caracter3,caracter4);
         if(yescommand==1) //Si hemos elegido utilizar un comando...
         {
           toexecute = command; //Ponemos toexecute igual que command.
           toexecute[tamcommand] = caracter1;  //Le vamos agregando las combinaciones (el primer caracter)...
           toexecute[tamcommand + 1] = caracter2;  //Le vamos agregando las combinaciones (el segundo caracter)...
           toexecute[tamcommand + 2] = caracter3;  //Le vamos agregando las combinaciones (el tercer caracter)...
           toexecute[tamcommand + 3] = caracter4;  //Le vamos agregando las combinaciones (el cuarto caracter)...
           system(toexecute);  //Ejecutamos "toexecute".
         }
       }
     }
   }
 }
 return 0;
}


int five()
{
 char *toexecute;
 for (i1=0; i1<=61; i1++)
 {
   char caracter1 = abc[i1];
   for(i2=0; i2<=61; i2++)
   {
     char caracter2 = abc[i2];
     for(i3=0; i3<=61; i3++)
     {
       char caracter3 = abc[i3];
       for(i4=0; i4<=61; i4++)
       {
         char caracter4 = abc[i4];
         for(i5=0; i5<=61; i5++)
         {
           char caracter5 = abc[i5];
           printf("%c%c%c%c%c\n",caracter1,caracter2,caracter3,caracter4,caracter5);
           if(yescommand==1)
           {
           toexecute = command;
           toexecute[tamcommand] = caracter1;
           toexecute[tamcommand + 1] = caracter2;
           toexecute[tamcommand + 2] = caracter3;
           toexecute[tamcommand + 3] = caracter4;
           toexecute[tamcommand + 4] = caracter5;
           system(toexecute);
           }
         }
       }
     }
   }
 }
 return 0;
}


No tengo mucho tiempo para mejorarlo por eso de estudiar, y cuando tengo, no veo que cambiar (detalles importantes, y lo único que he hecho es conseguir logearme en localhost con esta "aaaad" en la opción fijo con 5 caracteres).
He de decir que va muy rápido cuando lo hago sin introducir comandos, pero va al ritmo de 1 por segundo cuando es con comando (porejemplo cuando pongo:  "lftp ftp://localhost/ -u user,". Gracias por adelantado.
(El http:ftp://localhost/ ese sale solo) :o
#21
Hola, soy nuevo en el foro y se poco de C. Tengo una pequeña duda que me está matando. He probado de un montón de formas y no acierto. Tengo un programa que me pide unos argumentos y al intentar sacarlos con strcpy me devuelve "Violación de segmento". Este es el código:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

main(int argc, char *argv[])
{
char *argumento1;
/*Creo que aquí me da el error con "strcpy(&argumento1, argv[1]);" y con otros...*/
if (argumento1=="--help")
{
printf("En construcción.\n");
}
return 0;
}


¿Alguien me da la forma de copiar argv[1] en argumento1? Gracias de antemano.