Jump to content

Shogun

Miembro
  • Contador contenido

    378
  • Ingreso

  • Última visita

  • Días ganados

    51

Actividad de reputación

  1. Me Gusta
    Shogun reacted to pepineitor in error 1064 (ayuda con query)   
    INSERT INTO `shop_item` VALUES (75, 14020, 1);
     
    El error te sale porque después del 1 ponías una ',' y la tabla en la que intentas meter los datos tiene 3 columnas en lugar de 4.
  2. Me Gusta
    Shogun reacted to Yori in error 1064 (ayuda con query)   
    le falta el nombre despues del ultimo campo, por eso te da error
     
    INSERT INTO `shop_item` VALUES (75, 14020, 1,'nombre');[/color]  
    [color=rgb(90,90,90);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);]sino quieres poner nombre deberias hacerlo asi:[/color]
     
    [sql] INSERT INTO `shop_item` (shop_vnum, item_vnum, count) VALUES (75, 14020, 1);
     
    o asi:
     
    [color=rgb(90,90,90);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);][sql] INSERT INTO `shop_item` VALUES (75, 14020, 1,'');  Nota: Las comillas finales son dos comillas simples[/color]
  3. Me Gusta
    Shogun reacted to PACI in [Guia] Actualiza tu cliente   
    Hola.
    Hay gente que aún usa (tanto en cliente, como en servidor) cosas viejas, os traigo esta guia para que podáis "actualizar" vuestro cliente, y ya de paso vuestros cores para una versión más estable, y menos.. digamos peligrosa, aunque no es la palabra correcta.
     
    Desde hace ya mucho tiempo, tenemos disponible los binarios cuya revisión es la 34xxx o superior, aunque, desde que han salido, veo aún mucha gente de la comunidad hispana de metin2 usando los binarios viejos, o porque no saben hacerlo, o porque no quieren arriesgarse.
     
    Yo personalmente os recomiendo, ante todo, que actualicéis todo lo vuestro.
     
     
    Qué hay que cambiar para usar un binário >= 34k y <= 36k ?
    Los cambios para usar un binario entre 34k y 36k son muy simples, y no muy dificiles de hacer.
    Lo primero es cambiar vuestro game y db, os recomiendo la revisión 34083 y 33820 (game y db, respectivamente) para evitar errores de packets, y también para usar un game mucho mejor que del 2089M para abajo.
     
    Al cambiar la versión de la db para la 33820, las tablas item_proto y mob_proto dejan de ser utilizadas, aunque podeis usar esta librería de
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. para volver a utilizar las tablas en vez de archivos *.txt: Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    La parte del cliente es muy sencilla, solo tenéis que extraer vuestro cliente entero, y, donde el *.xml buscamos todos los type="2" y los reemplazamos por type="1". Si usais EterNexus, que es un extractor que no crea el *.xml, solo tenéis que extraer todo el cliente, y volver a compilarlo.
     
    En el uitooltip.py del root, deberéis cambiar esto:
     
    item.APPLY_DEF_GRADEitem.APPLY_ATT_GRADE  
    Por:
     
     
    item.APPLY_DEF_GRADE_BONUSitem.APPLY_ATT_GRADE_BONUS  
     
     
    Con la salida de las revisiones 40k y con la salida del source, la mayoría de la gente dejó ya de usar las versiones anteriores a esta para compilar una propria modificandolo a nuestro gusto, como yo y muchos otros, o usar el famoso bin 28k con el game 40250.
     
     
    Qué hay que cambiar para usar un game r40k ?
    Además de la db, game, y la adición de los *.txt (item_proto.txt, item_names.txt, mob_proto.txt, mob_names.txt), debereís hacer bastantes cambios a nível de cliente.
     
    Lo primero es cambiar el nombre de vuestro locale.py para localeinfo.py. En los demás archivos de root, debereis cambiar todos los import que se hagan al locale y todas las cosas que llamen ese archivo.
     
    Ejemplo:
     
    import locale -> import localeInfolocale. -> localeInfo. NO CONFUNDIR CON uiScriptLocale!!  
    Después de esto hay que cambiar todos los archivos de la carpeta lib y la python22.dll/python27.dll (depende del tipo de binario que tengáis)
     
     
    Y eso es todo, por lo menos lo que yo hice para usar las cosas del source.
     
    Saludos y suerte.
  4. Me Gusta
    Shogun reacted to LovePlay in [SALCHICHON]Select PJ - LovePlay & Felipe Ard   
    Hola andaba buscando porno perdido por mi PC, y me encontre con este select que tenia que me hizo felipe ard amablemente sin yo darle nada xd
     
    Y como no la uso porque soy JAQUER  pues aqui os la dejo para que la tengais, si quereis un create igual al selecet, si me lo pedis bastantes os lo hago :*
     
    Scrip: Felipe Ard
    Diseño:  LovePlay
    Material pal diseño: Zielsko
     

     
     
    Grabe hace tiempi un video de mi login y select, asi que os lo dejo si quereis verla mejor calidad:


    Debes iniciar sesión para ver el contenido del enlace en esta publicación.

    #ElQueDeThanksLePago50€  
    Link de descarga: 
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  5. Me Gusta
    Shogun reacted to PACI in [Guia] Crear diffs   
    Hola.
    Como sabéis, ahora que el source es publico, ya nadie, o casi nadie, hará, ni posteará, más diffs para editar vuestros cores.
    Este es uno de los motivos por los cuales hago escribo esta guia, el otro es para dar a la comunidad hispana un poco más de conocimiento, aunque no sea mucho.
     
    Que se necesita para hacer diffs?
    Hay quién diga que necesitas saber ASM (assembly), C, y esas cosas. Aunque, yo no sé ninguno de los 2, y creaba diffs.
    Lo que más necesitamos es un brain.exe, como se suele decir, paciencia, y el
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. y un Debes iniciar sesión para ver el contenido del enlace en esta publicación..  
    Antes de ponernos a toquetear en el IDA, debemos, antes de nada, saber una cosa.
     
    Qué es un diff?
    Un diff (difference file) es un archivo que contiene, de una manera simplificada, una (o varias) linea(s) que altera(n) un (o más) bytes de un archivo.
    La sintaxis es: offset: byte antiguo byte nuevo.
    La creación de un diff no es propriamente un problema, ya que el IDA, dependiendo de lo que hayamos modificado, lo crea solo.
    Y a través de un diff no puedes saber lo que cambia.
     
    Después de saber que és un diff, y para que sirve, tenemos que saber qué es lo que queremos cambiar, y donde se localiza, yo, para eso, usaba el Pseudocode de un game core o db core para buscar lo que queria cambiar, obviamente para esto necesitamos el brain.exe, porque tenemos que entender la sintaxis del codigo que hay por ahí. Os dejaré en adjuntos, todos los pseudocodes de todos los game core y db core que tengo
     
    Vale, ahora qué hago?
    Yo, para empezar, cogeré el pseudocode del game r40250 y cambiaré... por ejemplo, el nível de diferencia que se necesita para invitar a alguién en un grupo.
     
    Como empezamos?
    Hay que saber un poquito de inglés, porque las variables no están escritas en español. Lo que sabemos es que grupo se puede decir party en inglés. Una vez sepamos eso, empezaremos buscando party en nuestro editor de texto (yo uso Notepad++ para esto, vosotros podéis usar algun otro), lo segundo es saber, cuando sucede la acción, o sea, cuando sale el mensajito ese en el chat diciendo que la diferencia de nível es X. Sabemos también que eso pasa cuando invitamos a alguién, invitar en inglés es invite. Entonces ya sabemos que tenemos que buscar algo como PartyInvite.
     
    Cuando encontremos algo de este tipo:
    extern char CHARACTER__PartyInvite_CHARACTER______FUNCTION__[12]; // weak Entonces lo que hacemos es buscar esa función. Ojo, apenas buscamos por CHARACTER__PartyInvite.
     
    Y por fin, encontraremos la función CHARACTER__PartyInvite:
    int __fastcall CHARACTER__PartyInvite(int a1, int a2, int a3, int a4){  int v4; // eax@4  int v5; // edx@4  int v6; // ecx@4  int v7; // ebx@6  int v8; // eax@6  int v9; // eax@7  int result; // eax@8  int v11; // eax@10  int v12; // eax@15  int v13; // eax@22  int v14; // eax@23  int v15; // edx@23  int v16; // ecx@23  int v17; // edi@23  int v18; // eax@23  int v19; // edx@25  int v20; // ecx@25  int v21; // [sp+0h] [bp-48h]@3  int v22; // [sp+0h] [bp-48h]@6  int v23; // [sp+20h] [bp-28h]@23  int v24; // [sp+24h] [bp-24h]@23  _BYTE v25[5]; // [sp+2Bh] [bp-1Dh]@29  int v26; // [sp+30h] [bp-18h]@23  int v27; // [sp+34h] [bp-14h]@22  int v28; // [sp+38h] [bp-10h]@1  v28 = *(_DWORD *)_stack_chk_guard__FBSD_1_0;  if ( *(_DWORD *)(a3 + 9328) && CParty__GetLeaderPID(a1, a2, *(_DWORD *)(a3 + 9328)) != *(_DWORD *)(a3 + 256) )  {   v21 = (int)&unk_848D8B8;LABEL_4:   v4 = locale_find(v21);   CHARACTER__ChatPacket(a3, 1, (const char *)v4);  }  else  {   if ( *(_BYTE *)(a4 + 9104) & 2 )   {   v8 = CHARACTER__GetName(a4);   v22 = (int)&unk_848D8E8;   v7 = v8;LABEL_7:   v9 = locale_find(v22);   CHARACTER__ChatPacket(a3, 1, (const char *)v9, v7);   }   else   {   v11 = CHARACTER__IsPartyJoinableCondition(a3, a4);   if ( (unsigned int)v11 <= 0xA )   {   switch ( v11 )   {   default:   goto LABEL_11;   case 10:   v21 = (int)&unk_848D868;   goto LABEL_4;   case 8:   v21 = (int)&unk_848D4C0;   goto LABEL_4;   case 7:   v12 = CHARACTER__GetName(a4);   v22 = (int)"<ÆÄƼ> ÀÌ¹Ì %s´ÔÀº ÆÄƼ¿¡ ¼ÓÇØ ÀÖ½À´Ï´Ù.";   v7 = v12;   goto LABEL_7;   case 6:   v21 = (int)&unk_848D480;   goto LABEL_4;   case 5:   v21 = (int)&unk_848D440;   goto LABEL_4;   case 4:   v21 = (int)&unk_848D404;   goto LABEL_4;   case 3:   v21 = (int)&unk_848D3D0;   goto LABEL_4;   case 2:   v21 = (int)&unk_848D39C;   goto LABEL_4;   case 1:   v21 = (int)&unk_848D368;   goto LABEL_4;   case 0:   v27 = *(_DWORD *)(a4 + 256);   v13 = std___Rb_tree_unsigned_int_std__pair_unsigned_int__const_boost__intrusive_ptr_event___std___Select1st_std__pair_unsigned_int__const_boost__intrusive_ptr_event____std__less_unsigned_int__std__allocator_std__pair_unsigned_int__const_boost__intrusive_ptr_event______find(   a3 + 9340,   (int)&v27);   v5 = a3 + 9344;   if ( a3 + 9344 == v13 )   {   v14 = AllocEventInfo_TPartyJoinEventInfo_();   *(_DWORD *)(v14 + 4) = *(_DWORD *)(a4 + 256);   *(_DWORD *)(v14 + 8) = *(_DWORD *)(a3 + 256);   event_create_ex(&v26, (int)party_invite_event, v14, 10 * passes_per_sec);   v17 = v26;   v18 = *(_DWORD *)(a4 + 256);   v24 = v26;   v23 = v18;   if ( v26 )   intrusive_ptr_add_ref(v16, v15, v26);   std___Rb_tree_unsigned_int_std__pair_unsigned_int__const_boost__intrusive_ptr_event___std___Select1st_std__pair_unsigned_int__const_boost__intrusive_ptr_event____std__less_unsigned_int__std__allocator_std__pair_unsigned_int__const_boost__intrusive_ptr_event_______M_insert_unique(   a3 + 9340,   (int)&v23);   if ( v24 )   intrusive_ptr_release(v20, v19, v24);   if ( v17 )   intrusive_ptr_release(v20, v19, v17);   v25[0] = 77;   *(_DWORD *)&v25[1] = *(_DWORD *)(a3 + 260);   DESC__Packet(*(_DWORD *)(a4 + 44), (int)v25, 5);   }   break;   }   }   else   {LABEL_11:   sys_err((int)"PartyInvite", 4558, "Do not process party join error(%d)", v11);   }   }  }  result = *(_DWORD *)_stack_chk_guard__FBSD_1_0 ^ v28;  if ( *(_DWORD *)_stack_chk_guard__FBSD_1_0 != v28 )   __stack_chk_fail(v6, v5);  return result;} Ahora a partir de aquí, hay que saber leer. Vayamos por partes:
    LABEL_4:   v4 = locale_find(v21);   CHARACTER__ChatPacket(a3, 1, (const char *)v4); LABEL_7:   v9 = locale_find(v22);   CHARACTER__ChatPacket(a3, 1, (const char *)v9, v7); LABEL_4 y LABEL_7 tienen un locale_find y un ChatPacket, lo que significa que buscará en el locale_string.txt un texto que estará dentro del locale_find y luego lo mostrará en el Chat.
     
    Pasemos directamente al switch:
      v11 = CHARACTER__IsPartyJoinableCondition(a3, a4);   if ( (unsigned int)v11 <= 0xA )   {   switch ( v11 )   {   default:   goto LABEL_11;   case 10:   v21 = (int)&unk_848D868;   goto LABEL_4;   case 8:   v21 = (int)&unk_848D4C0;   goto LABEL_4;   case 7:   v12 = CHARACTER__GetName(a4);   v22 = (int)"<ÆÄƼ> ÀÌ¹Ì %s´ÔÀº ÆÄƼ¿¡ ¼ÓÇØ ÀÖ½À´Ï´Ù.";   v7 = v12;   goto LABEL_7;   case 6:   v21 = (int)&unk_848D480;   goto LABEL_4;   case 5:   v21 = (int)&unk_848D440;   goto LABEL_4;   case 4:   v21 = (int)&unk_848D404;   goto LABEL_4;   case 3:   v21 = (int)&unk_848D3D0;   goto LABEL_4;   case 2:   v21 = (int)&unk_848D39C;   goto LABEL_4;   case 1:   v21 = (int)&unk_848D368;   goto LABEL_4;   case 0:   v27 = *(_DWORD *)(a4 + 256);   v13 = std___Rb_tree_unsigned_int_std__pair_unsigned_int__const_boost__intrusive_ptr_event___std___Select1st_std__pair_unsigned_int__const_boost__intrusive_ptr_event____std__less_unsigned_int__std__allocator_std__pair_unsigned_int__const_boost__intrusive_ptr_event______find(   a3 + 9340,   (int)&v27);   v5 = a3 + 9344;   if ( a3 + 9344 == v13 )   {   v14 = AllocEventInfo_TPartyJoinEventInfo_();   *(_DWORD *)(v14 + 4) = *(_DWORD *)(a4 + 256);   *(_DWORD *)(v14 + 8) = *(_DWORD *)(a3 + 256);   event_create_ex(&v26, (int)party_invite_event, v14, 10 * passes_per_sec);   v17 = v26;   v18 = *(_DWORD *)(a4 + 256);   v24 = v26;   v23 = v18;   if ( v26 )   intrusive_ptr_add_ref(v16, v15, v26);   std___Rb_tree_unsigned_int_std__pair_unsigned_int__const_boost__intrusive_ptr_event___std___Select1st_std__pair_unsigned_int__const_boost__intrusive_ptr_event____std__less_unsigned_int__std__allocator_std__pair_unsigned_int__const_boost__intrusive_ptr_event_______M_insert_unique(   a3 + 9340,   (int)&v23);   if ( v24 )   intrusive_ptr_release(v20, v19, v24);   if ( v17 )   intrusive_ptr_release(v20, v19, v17);   v25[0] = 77;   *(_DWORD *)&v25[1] = *(_DWORD *)(a3 + 260);   DESC__Packet(*(_DWORD *)(a4 + 44), (int)v25, 5);   }   break;   }   }   else   {LABEL_11:   sys_err((int)"PartyInvite", 4558, "Do not process party join error(%d)", v11);   } Como veremos, la variable v11 está obteniendo el valor de una otra función, llamada CHARACTER__IsPartyJoinableCondition.
    Entonces, lo que el servidor hará es testear ese valor desde la función switch.
      switch ( v11 )   {   default:   goto LABEL_11; Si esa variable es false dependiendo de los valores encontrados en los case, entonces irá hasta el LABEL_11, que es un error en syserr:
    LABEL_11:   sys_err((int)"PartyInvite", 4558, "Do not process party join error(%d)", v11); Si esa condición es verdadera, hará una serie de cosas.
     
    Entonces ya sabemos que, lo que sale en el chat dependerá:
    - Del valor de la variable v11, o sea, el valor que la función CHARACTER__IsPartyJoinableCondition obtiene. Ahora que sabemos esto, vayamos directos a esa función.
    int __cdecl CHARACTER__IsPartyJoinableCondition(int a1, int a2){  int v2; // edx@1  int result; // eax@2  v2 = a2;  if ( *(_BYTE *)(a1 + 9797) == *(_BYTE *)(a2 + 9797) )  {   if ( *(_DWORD *)_stack_chk_guard__FBSD_1_0 == *(_DWORD *)_stack_chk_guard__FBSD_1_0 )   return CHARACTER__IsPartyJoinableMutableCondition(a1, a2, a1, a2);LABEL_6:   __stack_chk_fail(a1, v2);  }  v2 = *(_DWORD *)_stack_chk_guard__FBSD_1_0 ^ *(_DWORD *)_stack_chk_guard__FBSD_1_0;  result = 10;  if ( *(_DWORD *)_stack_chk_guard__FBSD_1_0 != *(_DWORD *)_stack_chk_guard__FBSD_1_0 )   goto LABEL_6;  return result;} De aqui no podemos sacar grandes conclusiones, pero, sabemos una cosa:
      if ( *(_DWORD *)_stack_chk_guard__FBSD_1_0 == *(_DWORD *)_stack_chk_guard__FBSD_1_0 )   return CHARACTER__IsPartyJoinableMutableCondition(a1, a2, a1, a2); Esta funcion hará return al valor de una otra función. Debemos entonces, movermos hasta esa función, CHARACTER__IsPartyJoinableMutableCondition.
    int __fastcall CHARACTER__IsPartyJoinableMutableCondition(int a1, int a2, int a3, int a4){  int v4; // edx@1  char v5; // al@4  __int64 v6; // qax@5  int result; // eax@7  int v8; // eax@10  int v9; // [sp+1Ch] [bp-Ch]@1  v4 = 1;  v9 = *(_DWORD *)_stack_chk_guard__FBSD_1_0;  if ( *(_BYTE *)(singleton_CPartyManager___ms_singleton + 76) )  {   LOBYTE(v4) = 2;   if ( !*(_DWORD *)(a3 + 9364) )   {   LOBYTE(v4) = 3;   if ( !*(_BYTE *)(a4 + 4) )   {   v5 = LC_IsCanada(a1);   a1 = 15;   if ( !v5 )   a1 = (unsigned __int8)LC_IsBrazil(15) < 1u ? 30 : 10;   v6 = *(_BYTE *)(a3 + 1298) - *(_BYTE *)(a4 + 1298);   LODWORD(v6) = (HIDWORD(v6) ^ v6) - HIDWORD(v6);   v4 = 4;   if ( a1 >= (_DWORD)v6 )   {   LOBYTE(v4) = 7;   if ( !*(_DWORD *)(a4 + 9328) )   {   if ( !*(_DWORD *)(a3 + 9328)   || (v8 = CParty__GetMemberCount(a1, v4, *(_DWORD *)(a3 + 9328)), v4 = 8, v8 != 8) )   v4 = 0;   }   }   }   }  }  result = v4;  if ( *(_DWORD *)_stack_chk_guard__FBSD_1_0 != v9 )   __stack_chk_fail(a1, *(_DWORD *)_stack_chk_guard__FBSD_1_0 ^ v9);  return result;} La primera cosa en lo que nos fijaremos es en esto:
      v5 = LC_IsCanada(a1);   a1 = 15;   if ( !v5 )   a1 = (unsigned __int8)LC_IsBrazil(15) < 1u ? 30 : 10; La variable v5 será igual a un boolean (true o false), a1 es un integer (un valor entre 0 a 2 millones). Lo que la función hace, es verificar si la variable v5 es false, si así es, el valor de la variable a1 cambia, dependiendo del locale, ya que si este es un locale/brazil el a1 será 10.
    a1 = (unsigned __int8)LC_IsBrazil(15) < 1u ? 30 : 10; Esto es lo que se llama, un short if-statement:
    a1 = boolean ? valor si es true : valor si es false;
     
    Como el nivel de diferencia en los servidores de europa es 15, podemos concluir que la variable a1 define el nivel de diferencia y es el valor que queremos cambiar.
     
     
    Toqueteando en el IDA
     
    Después de saber que valor tenemos que cambiar, y donde está, abrimos el IDA:

     
    Y le damos al primer botón (New - Disassemble a new file), seleccionamos nuestro archivo, en mi caso el game r40250, y nos aparecerá algo de este tipo:

     
    Nosotros, sin tocar en nada, le damos al OK. Y esperamos hasta que cargue las funciones.
     
    Cuando nos salga algo así:

     
    Significa que las funciones ya están cargadas.
    Ahora le hacemos click en la ventana Function name y escribimos: CHARACTER::IsPartyJoinableMutableCondition y le damos un doble click.
     

     
     
    Nosotros simplemente bajamos hasta aqui:

     
    Si le damos al botón de tabulación, nos llevará al pseudocode de esa función y, además, nos dejará en la localización actual, por ejemplo:
    call   _Z11LC_IsCanadav ; LC_IsCanada(void)mov ecx, 0Fhtest   al, aljz   short loc_806E8B0 Si hacemos click en el mov y hacemos un jump to pseudocode nos llevará hasta:
    a1 = 15; Yo, como no sé cambiar los valores de los short if-statements, haré NOP (No Operation, que simplemente hace que en esa parte no haga nada).
     
    Entonces, nos moveremos al Hex View y podremos ver que la parte que está seleccionada, es la parte que hemos seleccionado en el IDA View.
    Nos vamos a la ventana donde está el LC_IsCanada:
    .text:0806E83A jnz short loc_806E878.text:0806E83C call   _Z11LC_IsCanadav ; LC_IsCanada(void).text:0806E841 mov ecx, 0Fh.text:0806E846 test   al, al.text:0806E848 jz   short loc_806E8B0 El short jump if not zero (jnz) si le damos click y vamos al pseudo, veremos que está demasiado arriba del if-statement.
    El call al LC sabemos que es una variable
    El mov es la variable que queremos cambiar.
    El test es el if-statement.
    El jump if zero (jz) basicamente es lo que va después de la condición.
     
    Entonces lo que tenemos que hacer, es NOP al jz y al test.
     
    Como?
    Facil, seleccionamos lo que queremos cambiar:

     
    Nos vamos al Hex View le damos al F2, y cambiamos los 2 valores que salen seleccionados por 90. Ya que el No Operation (NOP) equivale a 90. Volvemos a darle al F2 para guardar los cambios.
    Y luego, hacemos lo mismo con el jz.
     
    Que hemos echo entonces?
    Basicamente, lo que hicimos hasta ahora, es dejar el nivel de diferencia entre jugadores para que se inviten sea de 15, ya que el if define todo lo demás, dependiendo del locale.
    Si queremos cambiar el 15 por otro, facil. Vamos hasta:
    mov ecx, 0Fh
     
    Luego al Hex View, entonces abrimos el
    Debes iniciar sesión para ver el contenido del enlace en esta publicación., ponemos 15 donde el 1, y le damos click a to hexadecimal, que nos saldra un f, o sea 15 en hexadecimal equivale a 0F. Buscaremos eso en el Hex View, le damos al F2. Volvemos al conversor, y convertimos el valor que queremos poner a cambio de 15. Yo por ejemplo, pondré 5 que es 05. Le daré al F2 otra vez para guardar los cambios.
     
    Entonces si vuelvo al pseudo me saldrá:
      v5 = LC_IsCanada(a1, v4);   a1 = 5; En vez de:
      v5 = LC_IsCanada(a1, v4);   a1 = 15; Eso es porque hemos cambiado el 15 por 5 en el Hex View.
     
     
    Por fin, como creamos la diff después de cambiar lo que queramos?

     
     
    Y mi diff me saldrá así:
    This difference file has been created by IDA Progame_r4025000026842: 0F 05 // Esto es el cambio de la variable a1, de 15 a 5// Estos NOP es de la condición que hemos "eliminado"00026846: 84 9000026847: C0 9000026848: 74 9000026849: 66 90 Y por último os dejo aqui los pseudocode que tengo:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  6. Me Gusta
    Shogun reacted to PACI in [PEDIDO] Quest de leveo por pvp   
    --[[needed functions: npc.get_vid() -> Debes iniciar sesión para ver el contenido del enlace en esta publicación. pvplevelup begin state start begin when kill begin -- 1 if not npc.is_pc() and pc.level >= 150 then -- killing mobs pc.give_exp2(-pc.get_exp()) end -- 5 local canContinue = true local mapdict = {idx1, idx2, idx3, idx4, idx5, idx6} -- levelup map indexes for _, v in ipairs(mapdict) do if pc.get_map_index() == v then canContinue = false break end end if pc.level >= 170 or canContinue == false then return end if npc.is_pc() then -- killing other players -- 4 local oppvid = pc.select(npc.get_vid()) local opplvl, oppid = 0, 0 if oppvid == 0 then return end opplvl, oppid = pc.level, pc.get_player_id() pc.select(oppvid) if opplvl < 90 or get_time() < pc.getqf("delay") then return end -- 2 local expvalue = tonumber(pc.getqf("killed_id") ~= oppid and 200000000 or 200000000/pc.getqf("killcount")+1) pc.setqf("killed_id", oppid) pc.setqf("killcount", tonumber(pc.getqf("killcount") == 2 and 0 or pc.getqf("killcount")+1)) pc.setqf("delay", get_time()+60*5) pc.give_exp2(expvalue) end end endend
  7. Me Gusta
    Shogun got a reaction from ASIKOO in Vanilla Core 2.3   
    ~~~Vanilla v3 rev52410 CHANGELOG~~~* Guerras de gremio de tipo negativo ya no crashean el servidor (/war exploit)* Ya no puedes evitar el límite de nivel y Yang al crear un gremio.* Bug de invisibilidad arreglado* Bug de imperios arreglado (si el imperio es > 3 será tratado como 3)* Arreglada la opción de límite de Yang en CONFIG* Arreglada la opción de límite de nivel en CONFIG* Reconstruido el código fuente con tablas editadas* Arreglado overflow de HP y Yang* Arreglado SKILLBOOK_STEP_LEVELING. Ahora funcionará como debe.* Cambiado el nivel a long permitiendo superar 255.* Arreglado ITEM_DROP_TIME. Ahora funcionará correctamente.* Arreglado belt_allow_all_items. Ahora funciona como debe.* El sistema de mascotas funciona de nuevo+ Añadida versión al arrancar el servidor+ Añadidas nuevas opciones de CONFIG:
     Se permite la libre distribución de Vanilla Core pero asegúrate de dar créditos a los autores. El código fuente base es obra de YMIR, las modificaciones son de Vanilla. Y si lo publicas en algun otro foro asegúrate de crear una referencia al hilo oficial: 
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Planes futuros:* Mejorar el tratamiento de errores* Arreglar el hack de daño de habilidad* Arreglar el kick hack* Nuevas opciones CONFIG para hacer innecesario el uso de DIFsDescarga: Debes iniciar sesión para ver el contenido del enlace en esta publicación.Password: vanillaInstalación: leer readme.txt
  8. Confuso
    Shogun got a reaction from Ruby in Vanilla Core 2.3   
    vanilla 2.2 changelogNuevas opciones en conf.txt (db) Nuevas opciones de CONFIG: Nuevas funciones de quest: 
  9. Me Gusta
    Shogun got a reaction from ahmedhaies in Vanilla Core 2.3   
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. + eliminadas las funciones de licencia, el servidor no comprobará la validez de tu licencia+ eliminada la fecha de caducidad del game+ combinadas todas las tablas de exp en una única+ el nivel máximo es 255+ En todos los niveles el jugador recibirá puntos de estado+ Eliminado el bug de vampirismo para no perder HP cuando haces una matanza (los suras agradecerán esto)+ El bonus de Exp es cumulativo en lugar de dar una posibilidad de obtener doble exp. Es decir si tienes 20% Bonus de EXP recibiras un 20% mas de EXP.+ Reescrito Version Check. Ahora puedes configurar tu versión en CONFIG para que sea comparada con la del cliente - si no coinciden, el jugador será desconectado.+ Límite de Yang aumentado a 999.999.999.999+ Arreglado el buffer de memoria. Ahora el buffer está optimizado para no consumir mucha RAM, sólo la justa para no provocar la desconexión del jugador.+ Ahora puedes dar bonus de imperio hasta 2000%+ Muchas nuevas funciones, triggers y opciones de CONFIG+ Mejor estabilidad y rendimiento ya que está compilado con una versión más reciente de gcc+ El check de IP interna admite IPs que comiencen por 5. y 25.+ Se pueden vender items por 0 Yang+ 6o y 7o bonus funcionales+ Cambio de Nombre funciona en cualquier Locale+ Exceso de Yang: si se supera el límite, se reseteará al valor máximo.+ La tabla del caballo admite hasta nivel 51. Aumentar el level aumenta los stats proporcionados por el caballo.+ Nuevo tratamiento de error para exceso de bonus.+ La velocidad de movimiento del jugador será comprobada por el jugador y reducida al valor máximo si lo supera.+ Las habilidades pueden proporcionar nuevos bonus. Por ejemplo puedes aumentar la INT con una habilidad. Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. MAX_LEVEL_STATUS: unsigned intNivel máximo para recibir puntos de estado.MAX_STATUS: unsigned intSets a maximum of distributed status points. If you e. g. set it to 20, you can only raise your stat's by 20 each status.SERVER_CHECK: 1/0Habilita la comprobación de versión del cliente.SERVER_VERSION: unsigned intEstablece la versión para SERVER_CHECK.MAX_HT: unsigned intIt's the same option than MAX_STATUS but only for the con-attribute.MAX_IQ: unsigned intIt's the same option than MAX_STATUS but only for the int-attribute.MAX_ST: unsigned intIt's the same option than MAX_STATUS but only for the str-attribute.MAX_DX: unsigned intIt's the same option than MAX_STATUS but only for the dex-attribute.ATTR_ALWAYS_ADD: 1/0Si es 1, el Añadir Bonus tendrá un 100% de posibilidadATTR_ALWAYS_5_ADD: 1/0Si es 1, la Bola de Bendición tendrá un 100% de posibilidadATTR_CHANGE_LIMIT: intYou can set a limit time to change your attributes again. It's changed to seconds (set it to 1 to let the users switch only once per second their attributes).GUILD_MAX_LEVEL: intMáximo nivel de gremio (el valor máximo posible es 50)ITEM_OWNERSHIP_TIME: intTiempo durante el cual un item dropeado conserva el nombre del propietario.MIN_ADDON_FKS: intMínimo Daño de HabilidadMAX_ADDON_FKS: intMáximo Daño de HabilidadMIN_ADDON_DSS: intMínimo Daño de MediaMIN_ADDON_DSS: intMáximo Daño de MediaSKILLBOOK_DELAY: intTiempo de espera para leer libros, en segundos.SKILLBOOK_NEED_EXP: intExp necesaria para leer un libro.SKILLBOOK_ALWAYS_BOOK: 1/0Si es 1, todos los libros de habilidad funcionarán con Lectura ConcentradaGOLD_DROP_TIME_INTERVAL: intTiempo de espera al dropear Yang en segundosSEQUENCE_CHECK: 1/0Si es 1, se comprobará la tabla de secuencias del cliente corresponde a la del servidor.SKILLBOOK_STEP_LEVELING: 1/0Si es 0, solo se necesitará un libro para pasar al siguiente M. Si es 1, será como en el oficial.RAISE_EMPIRE_PRICES: 1/0Si es 0, los items costarán lo mismo en los 3 reinos.HORSE_MAX_LEVEL: intMáximo nivel del caballo (ten en cuenta que tendrás que escribir tú mismo las quest que permitan aumentar el nivel)MARRIAGE_MAX_PERCENT: intMáximo porecentaje de Puntos de Amor. Ojo! Si es mayor de 100 provocará bugs al divorciarse.PC_MAX_MOVEMENT_SPEED: intMáxima velocidad de movimiento.PC_MAX_ATTACK_SPEED: intMáxima velocidad de ataque.MOB_MAX_MOVEMENT_SPEED: intMáxima velocidad de movimiento de los mobs.MOB_MAX_ATTACK_SPEED: intMáxima velocidad de ataque.TAXES: intDe 0 a 100. Impuestos que debes pagar al comprar en tienda.DYE_LEVEL: intNúmero de niveles que hay que esperar antes de volver a teñir tu pelo.YANG_MAX: long longMáximo de Yang que puedes llevar. El máximo posible es 999.999.999.999 Yang. Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. item.get_attr_type(int index)item.get_attr_value(int index)item.set_attr(int ApplyType, int ApplyValue[, int index])npc.get_level()game.mysql_real_escape_string(string query)game.mysql_query(string query)game.mysql_update_query(string query)pc.delayed_disconnect(int zeit)pc.get_mount_vnum()pc.set_level(int level)pc.send_effect(int id) Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. OnBuy (al comprar un item)OnDie (al morir) Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. MAX_HPMAX_SPHP_REGENSP_REGENBLOCKHPSPATT_GRADEDEF_GRADEMAGIC_ATT_GRADEMAGIC_DEF_GRADEBOW_DISTANCEMOV_SPEEDATT_SPEEDPOISON_PCTRESIST_RANGECASTING_SPEEDREFLECT_MELEEATT_BONUSDEF_BONUSRESIST_NORMALDODGEKILL_HP_RECOVERKILL_SP_RECOVERHIT_HP_RECOVERHIT_SP_RECOVERCRITICALMANASHIELDSKILL_DAMAGE_BONUSNORMAL_HIT_DAMAGE_BONUSHTIQSTDXSTUN_PCTSLOW_PCTPENETRATE_PCTATTBONUS_HUMANSTEAL_HPSTEAL_SPMANA_BURN_PCTDAMAGE_SP_RECOVERRESIST_SWORDRESIST_TWOHANDRESIST_DAGGERRESIST_BELLRESIST_FANRESIST_BOWRESIST_FIRERESIST_ELECRESIST_MAGICRESIST_WINDREFLECT_CURSEPOISON_REDUCEEXP_DOUBLE_BONUSGOLD_DOUBLE_BONUSITEM_DROP_BONUSPOTION_BONUSIMMUNE_STUNIMMUNE_SLOWIMMUNE_FALLCURSE_PCTSTAATTBONUS_WARRIORATTBONUS_ASSASSINATTBONUS_SURAATTBONUS_SHAMANATTBONUS_MONSTERMAX_HP_PCTMAX_SP_PCTSKILL_DEFEND_BONUSNORMAL_HIT_DEFEND_BONUSRESIST_WARRIORRESIST_ASSASSINRESIST_SURARESIST_SHAMANENERGYRESIST_CRITICALRESIST_PENETRATE Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  10. Me Gusta
    Shogun reacted to Rafa23Alzira in [QUEST]Noticias del servidor en tiempo real.   
    Hola chicos, les traigo una pequeña quest con la que podrán mostrarles a sus jugadores las noticias del servidor en tiempo real, sin necesidad de reload o reboot.
    quest noticias begin state start begin when letter begin send_letter("Últimas Noticias") end                 when button or info begin local fecha = write_or_read("/home/game/share/locale/germany/quest/noticias/", "fecha.txt", "leer", "linea") say_title("Noticias - "..fecha.."")         say(write_or_read("/home/game/share/locale/germany/quest/noticias/", "noticias.txt", "leer", "todo")) end end end Para usarla debéis crear una carpeta llamada noticias en la ruta que pongáis, dentro de ella creáis dos archivos, uno llamado fecha.txt y otro noticias.txt (supongo que ahí ya os guiáis bastante)
     
    Necesitareis está función: 
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Se que no es mucho, pero a alguien le servirá.
  11. Me Gusta
    Shogun got a reaction from Dragonslayer in Como instalar el firewall pf   
    Hola a todos,
     
    Hoy os voy a explicar cómo instalar y configurar el firewall pf que viene integrado desde hace mucho tiempo en FreeBSD. Por tanto este tutorial debería servir en cualquier versión de FreeBSD que utilicéis.
     
    Además de bloquear los puertos que no queramos que estén abiertos al público, configuraremos un limitador de frecuencia que bloqueará las IP que hagan demasiadas conexiones o demasiado rápidas, lo cual es muy útil para protegerse de ciertos ataques DDoS.
     
    En primer lugar crearemos un fichero llamado /etc/pf.conf con el Easy Editor:
     
    ee /etc/pf.conf
     
    Nota: Esta configuración asume que tenemos página web, base de datos y juego, en la misma máquina. Si tenéis la web en otro sitio, cerrad los puertos 80 y 443 borrándolos de service_ports y añadir la IP de vuestro servidor web en /var/db/trusted_hosts. Para otras configuraciones preguntad en el hilo.
     
    Copiamos y pegamos lo que viene a continuación en el putty:
    ext_if="igb1" service_ports="{ 22, 80, 443 }" game_ports="{ 11000, 13000, 13001, 13002, 13010, 13011, 13012, 13020, 13021, 13022, 13099 }" table <abusive_hosts> persist table <trusted_hosts> persist file "/var/db/trusted_hosts" set block-policy return set loginterface $ext_if set skip on lo scrub on $ext_if reassemble tcp no-df set-tos lowdelay random-id antispoof quick for { lo0 $ext_if } block in pass out all keep state pass out on $ext_if all modulate state pass in quick from <trusted_hosts> block in quick from <abusive_hosts> pass in on $ext_if inet proto icmp all icmp-type echoreq keep state pass in on $ext_if proto tcp to any port $game_ports flags S/SA synproxy state / (max-src-conn 30, max-src-conn-rate 20/5, overload <abusive_hosts> flush) pass in on $ext_if proto tcp to any port $service_ports flags S/SA keep state / (max-src-conn 30, max-src-conn-rate 20/5, overload <abusive_hosts> flush) Las tres primeras líneas debéis cambiarlas de esta forma:
     
    ext_if: nombre del interface público, lo podemos averiguar con el comando ifconfig:
     
    En este caso mi interface público, el que tiene asignado mi IP pública de internet, es igb1.
     
    service_ports: puertos usados para ssh, web, etc. En el ejemplo he puesto 22 (SSH), 80 (HTTP), 443 (HTTPS)
     
    game_ports: todos los puertos del metin, separados por coma: auth y los game cores (no pongáis el de db que suele ser 15000 por defecto ya que db no debe estar accesible a internet sólo a los game cores)
     
    Si tienes tu página web en otro servidor o quieres por cualquier otro motivo que una o más direcciones IP tengan acceso libre a tu servidor sin pasar por el firewall debes ponerlas, una por línea, en este fichero que crearemos con:
     
    ee /var/db/trusted_hosts
     
    Terminada la configuración haremos lo siguiente:
     
    kldload pf
    pfctl -e
     
    A partir de este momento estará activado nuestro firewall, aunque para que sea plenamente funcional debemos añadir una línea a /etc/rc.conf que ponga:
     
    pf_enable="YES"
     
    Y reiniciar FreeBSD. Ya estamos protegidos contra algunos tipos de ataque DDoS bastante comunes.
     
    Manejo del firewall
     
    Para ver las IP baneadas:
     
    pfctl -t abusive_hosts -T show
     
    Para borrar la tabla de bans entera:
     
    pfctl -t abusive_hosts -T flush
     
    Para añadir una IP a la tabla de bans:
     
    pfctl -t abusive_hosts -T add 8.8.8.8
     
    Para borrar una IP de la tabla de bans
     
    pfctl -t abusive_hosts -T del 8.8.8.8
     
    Para deshabilitar temporalmente el firewall:
     
    pfctl -d
     
    Si por cualquier motivo queremos desinstalar el firewall será necesario borrar la línea que escribimos en /etc/rc.conf y reiniciar la máquina. Tened cuidado también ya que os podéis bloquear a vosotros mismos sin querer, en ese caso la única solución es cambiar vuestra IP o pedirle a otro administrador que nos desbloquee con el comando correspondiente.
     
    Cualquier duda os responderé en este hilo cuando pueda
  12. Me Gusta
    Shogun got a reaction from mansevas acuña in Concept Art original de YMIR   
    Buenas a todos,
     
    Hoy os traigo el concept art original creado para Metin2, para quien no lo sepa el concept art son los bocetos a partir de los cuales los modeladores crean los escenarios, personajes y armas.
     
    Estos bocetos fueron creados hace ya más de diez años por un diseñador coreano que firma con el seudónimo de Latte.
     
    Seguramente los habéis visto muchas veces pero aquí estan al completo y a gran tamaño perfecto para quien los quiera usar en sus propios diseños
     
    Además incluyo los wallpapers originales. Una muestra:
     
     

     
     
    YMIR - Metin2 Concept Art.zip 14.6 MB Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
  13. Me Gusta
    Shogun got a reaction from Rafa23Alzira in Cliente oficial game 2089   
    La diferencia es que no tiene 50.000 bugs absurdos por lo que a alguien le puede interesar como base para su propio cliente.
  14. Me Gusta
    Shogun got a reaction from Migcia in Como instalar el firewall pf   
    Hola a todos,
     
    Hoy os voy a explicar cómo instalar y configurar el firewall pf que viene integrado desde hace mucho tiempo en FreeBSD. Por tanto este tutorial debería servir en cualquier versión de FreeBSD que utilicéis.
     
    Además de bloquear los puertos que no queramos que estén abiertos al público, configuraremos un limitador de frecuencia que bloqueará las IP que hagan demasiadas conexiones o demasiado rápidas, lo cual es muy útil para protegerse de ciertos ataques DDoS.
     
    En primer lugar crearemos un fichero llamado /etc/pf.conf con el Easy Editor:
     
    ee /etc/pf.conf
     
    Nota: Esta configuración asume que tenemos página web, base de datos y juego, en la misma máquina. Si tenéis la web en otro sitio, cerrad los puertos 80 y 443 borrándolos de service_ports y añadir la IP de vuestro servidor web en /var/db/trusted_hosts. Para otras configuraciones preguntad en el hilo.
     
    Copiamos y pegamos lo que viene a continuación en el putty:
    ext_if="igb1" service_ports="{ 22, 80, 443 }" game_ports="{ 11000, 13000, 13001, 13002, 13010, 13011, 13012, 13020, 13021, 13022, 13099 }" table <abusive_hosts> persist table <trusted_hosts> persist file "/var/db/trusted_hosts" set block-policy return set loginterface $ext_if set skip on lo scrub on $ext_if reassemble tcp no-df set-tos lowdelay random-id antispoof quick for { lo0 $ext_if } block in pass out all keep state pass out on $ext_if all modulate state pass in quick from <trusted_hosts> block in quick from <abusive_hosts> pass in on $ext_if inet proto icmp all icmp-type echoreq keep state pass in on $ext_if proto tcp to any port $game_ports flags S/SA synproxy state / (max-src-conn 30, max-src-conn-rate 20/5, overload <abusive_hosts> flush) pass in on $ext_if proto tcp to any port $service_ports flags S/SA keep state / (max-src-conn 30, max-src-conn-rate 20/5, overload <abusive_hosts> flush) Las tres primeras líneas debéis cambiarlas de esta forma:
     
    ext_if: nombre del interface público, lo podemos averiguar con el comando ifconfig:
     
    En este caso mi interface público, el que tiene asignado mi IP pública de internet, es igb1.
     
    service_ports: puertos usados para ssh, web, etc. En el ejemplo he puesto 22 (SSH), 80 (HTTP), 443 (HTTPS)
     
    game_ports: todos los puertos del metin, separados por coma: auth y los game cores (no pongáis el de db que suele ser 15000 por defecto ya que db no debe estar accesible a internet sólo a los game cores)
     
    Si tienes tu página web en otro servidor o quieres por cualquier otro motivo que una o más direcciones IP tengan acceso libre a tu servidor sin pasar por el firewall debes ponerlas, una por línea, en este fichero que crearemos con:
     
    ee /var/db/trusted_hosts
     
    Terminada la configuración haremos lo siguiente:
     
    kldload pf
    pfctl -e
     
    A partir de este momento estará activado nuestro firewall, aunque para que sea plenamente funcional debemos añadir una línea a /etc/rc.conf que ponga:
     
    pf_enable="YES"
     
    Y reiniciar FreeBSD. Ya estamos protegidos contra algunos tipos de ataque DDoS bastante comunes.
     
    Manejo del firewall
     
    Para ver las IP baneadas:
     
    pfctl -t abusive_hosts -T show
     
    Para borrar la tabla de bans entera:
     
    pfctl -t abusive_hosts -T flush
     
    Para añadir una IP a la tabla de bans:
     
    pfctl -t abusive_hosts -T add 8.8.8.8
     
    Para borrar una IP de la tabla de bans
     
    pfctl -t abusive_hosts -T del 8.8.8.8
     
    Para deshabilitar temporalmente el firewall:
     
    pfctl -d
     
    Si por cualquier motivo queremos desinstalar el firewall será necesario borrar la línea que escribimos en /etc/rc.conf y reiniciar la máquina. Tened cuidado también ya que os podéis bloquear a vosotros mismos sin querer, en ese caso la única solución es cambiar vuestra IP o pedirle a otro administrador que nos desbloquee con el comando correspondiente.
     
    Cualquier duda os responderé en este hilo cuando pueda
  15. Me Gusta
    Shogun got a reaction from Tiico™ in Como instalar el firewall pf   
    Hola a todos,
     
    Hoy os voy a explicar cómo instalar y configurar el firewall pf que viene integrado desde hace mucho tiempo en FreeBSD. Por tanto este tutorial debería servir en cualquier versión de FreeBSD que utilicéis.
     
    Además de bloquear los puertos que no queramos que estén abiertos al público, configuraremos un limitador de frecuencia que bloqueará las IP que hagan demasiadas conexiones o demasiado rápidas, lo cual es muy útil para protegerse de ciertos ataques DDoS.
     
    En primer lugar crearemos un fichero llamado /etc/pf.conf con el Easy Editor:
     
    ee /etc/pf.conf
     
    Nota: Esta configuración asume que tenemos página web, base de datos y juego, en la misma máquina. Si tenéis la web en otro sitio, cerrad los puertos 80 y 443 borrándolos de service_ports y añadir la IP de vuestro servidor web en /var/db/trusted_hosts. Para otras configuraciones preguntad en el hilo.
     
    Copiamos y pegamos lo que viene a continuación en el putty:
    ext_if="igb1" service_ports="{ 22, 80, 443 }" game_ports="{ 11000, 13000, 13001, 13002, 13010, 13011, 13012, 13020, 13021, 13022, 13099 }" table <abusive_hosts> persist table <trusted_hosts> persist file "/var/db/trusted_hosts" set block-policy return set loginterface $ext_if set skip on lo scrub on $ext_if reassemble tcp no-df set-tos lowdelay random-id antispoof quick for { lo0 $ext_if } block in pass out all keep state pass out on $ext_if all modulate state pass in quick from <trusted_hosts> block in quick from <abusive_hosts> pass in on $ext_if inet proto icmp all icmp-type echoreq keep state pass in on $ext_if proto tcp to any port $game_ports flags S/SA synproxy state / (max-src-conn 30, max-src-conn-rate 20/5, overload <abusive_hosts> flush) pass in on $ext_if proto tcp to any port $service_ports flags S/SA keep state / (max-src-conn 30, max-src-conn-rate 20/5, overload <abusive_hosts> flush) Las tres primeras líneas debéis cambiarlas de esta forma:
     
    ext_if: nombre del interface público, lo podemos averiguar con el comando ifconfig:
     
    En este caso mi interface público, el que tiene asignado mi IP pública de internet, es igb1.
     
    service_ports: puertos usados para ssh, web, etc. En el ejemplo he puesto 22 (SSH), 80 (HTTP), 443 (HTTPS)
     
    game_ports: todos los puertos del metin, separados por coma: auth y los game cores (no pongáis el de db que suele ser 15000 por defecto ya que db no debe estar accesible a internet sólo a los game cores)
     
    Si tienes tu página web en otro servidor o quieres por cualquier otro motivo que una o más direcciones IP tengan acceso libre a tu servidor sin pasar por el firewall debes ponerlas, una por línea, en este fichero que crearemos con:
     
    ee /var/db/trusted_hosts
     
    Terminada la configuración haremos lo siguiente:
     
    kldload pf
    pfctl -e
     
    A partir de este momento estará activado nuestro firewall, aunque para que sea plenamente funcional debemos añadir una línea a /etc/rc.conf que ponga:
     
    pf_enable="YES"
     
    Y reiniciar FreeBSD. Ya estamos protegidos contra algunos tipos de ataque DDoS bastante comunes.
     
    Manejo del firewall
     
    Para ver las IP baneadas:
     
    pfctl -t abusive_hosts -T show
     
    Para borrar la tabla de bans entera:
     
    pfctl -t abusive_hosts -T flush
     
    Para añadir una IP a la tabla de bans:
     
    pfctl -t abusive_hosts -T add 8.8.8.8
     
    Para borrar una IP de la tabla de bans
     
    pfctl -t abusive_hosts -T del 8.8.8.8
     
    Para deshabilitar temporalmente el firewall:
     
    pfctl -d
     
    Si por cualquier motivo queremos desinstalar el firewall será necesario borrar la línea que escribimos en /etc/rc.conf y reiniciar la máquina. Tened cuidado también ya que os podéis bloquear a vosotros mismos sin querer, en ese caso la única solución es cambiar vuestra IP o pedirle a otro administrador que nos desbloquee con el comando correspondiente.
     
    Cualquier duda os responderé en este hilo cuando pueda
  16. Me Gusta
    Shogun got a reaction from Edward in Como instalar el firewall pf   
    ¿sabes lo que es un firewall y lo que es un sistema de mitigación o un ataque Layer 7?
  17. Me Gusta
    Shogun got a reaction from LORDCarlo™ in Como instalar el firewall pf   
    Hola a todos,
     
    Hoy os voy a explicar cómo instalar y configurar el firewall pf que viene integrado desde hace mucho tiempo en FreeBSD. Por tanto este tutorial debería servir en cualquier versión de FreeBSD que utilicéis.
     
    Además de bloquear los puertos que no queramos que estén abiertos al público, configuraremos un limitador de frecuencia que bloqueará las IP que hagan demasiadas conexiones o demasiado rápidas, lo cual es muy útil para protegerse de ciertos ataques DDoS.
     
    En primer lugar crearemos un fichero llamado /etc/pf.conf con el Easy Editor:
     
    ee /etc/pf.conf
     
    Nota: Esta configuración asume que tenemos página web, base de datos y juego, en la misma máquina. Si tenéis la web en otro sitio, cerrad los puertos 80 y 443 borrándolos de service_ports y añadir la IP de vuestro servidor web en /var/db/trusted_hosts. Para otras configuraciones preguntad en el hilo.
     
    Copiamos y pegamos lo que viene a continuación en el putty:
    ext_if="igb1" service_ports="{ 22, 80, 443 }" game_ports="{ 11000, 13000, 13001, 13002, 13010, 13011, 13012, 13020, 13021, 13022, 13099 }" table <abusive_hosts> persist table <trusted_hosts> persist file "/var/db/trusted_hosts" set block-policy return set loginterface $ext_if set skip on lo scrub on $ext_if reassemble tcp no-df set-tos lowdelay random-id antispoof quick for { lo0 $ext_if } block in pass out all keep state pass out on $ext_if all modulate state pass in quick from <trusted_hosts> block in quick from <abusive_hosts> pass in on $ext_if inet proto icmp all icmp-type echoreq keep state pass in on $ext_if proto tcp to any port $game_ports flags S/SA synproxy state / (max-src-conn 30, max-src-conn-rate 20/5, overload <abusive_hosts> flush) pass in on $ext_if proto tcp to any port $service_ports flags S/SA keep state / (max-src-conn 30, max-src-conn-rate 20/5, overload <abusive_hosts> flush) Las tres primeras líneas debéis cambiarlas de esta forma:
     
    ext_if: nombre del interface público, lo podemos averiguar con el comando ifconfig:
     
    En este caso mi interface público, el que tiene asignado mi IP pública de internet, es igb1.
     
    service_ports: puertos usados para ssh, web, etc. En el ejemplo he puesto 22 (SSH), 80 (HTTP), 443 (HTTPS)
     
    game_ports: todos los puertos del metin, separados por coma: auth y los game cores (no pongáis el de db que suele ser 15000 por defecto ya que db no debe estar accesible a internet sólo a los game cores)
     
    Si tienes tu página web en otro servidor o quieres por cualquier otro motivo que una o más direcciones IP tengan acceso libre a tu servidor sin pasar por el firewall debes ponerlas, una por línea, en este fichero que crearemos con:
     
    ee /var/db/trusted_hosts
     
    Terminada la configuración haremos lo siguiente:
     
    kldload pf
    pfctl -e
     
    A partir de este momento estará activado nuestro firewall, aunque para que sea plenamente funcional debemos añadir una línea a /etc/rc.conf que ponga:
     
    pf_enable="YES"
     
    Y reiniciar FreeBSD. Ya estamos protegidos contra algunos tipos de ataque DDoS bastante comunes.
     
    Manejo del firewall
     
    Para ver las IP baneadas:
     
    pfctl -t abusive_hosts -T show
     
    Para borrar la tabla de bans entera:
     
    pfctl -t abusive_hosts -T flush
     
    Para añadir una IP a la tabla de bans:
     
    pfctl -t abusive_hosts -T add 8.8.8.8
     
    Para borrar una IP de la tabla de bans
     
    pfctl -t abusive_hosts -T del 8.8.8.8
     
    Para deshabilitar temporalmente el firewall:
     
    pfctl -d
     
    Si por cualquier motivo queremos desinstalar el firewall será necesario borrar la línea que escribimos en /etc/rc.conf y reiniciar la máquina. Tened cuidado también ya que os podéis bloquear a vosotros mismos sin querer, en ese caso la única solución es cambiar vuestra IP o pedirle a otro administrador que nos desbloquee con el comando correspondiente.
     
    Cualquier duda os responderé en este hilo cuando pueda
  18. Me Gusta
    Shogun got a reaction from PACI in Como instalar el firewall pf   
    ¿sabes lo que es un firewall y lo que es un sistema de mitigación o un ataque Layer 7?
  19. Me Gusta
    Shogun got a reaction from Edward in Como instalar el firewall pf   
    Hola a todos,
     
    Hoy os voy a explicar cómo instalar y configurar el firewall pf que viene integrado desde hace mucho tiempo en FreeBSD. Por tanto este tutorial debería servir en cualquier versión de FreeBSD que utilicéis.
     
    Además de bloquear los puertos que no queramos que estén abiertos al público, configuraremos un limitador de frecuencia que bloqueará las IP que hagan demasiadas conexiones o demasiado rápidas, lo cual es muy útil para protegerse de ciertos ataques DDoS.
     
    En primer lugar crearemos un fichero llamado /etc/pf.conf con el Easy Editor:
     
    ee /etc/pf.conf
     
    Nota: Esta configuración asume que tenemos página web, base de datos y juego, en la misma máquina. Si tenéis la web en otro sitio, cerrad los puertos 80 y 443 borrándolos de service_ports y añadir la IP de vuestro servidor web en /var/db/trusted_hosts. Para otras configuraciones preguntad en el hilo.
     
    Copiamos y pegamos lo que viene a continuación en el putty:
    ext_if="igb1" service_ports="{ 22, 80, 443 }" game_ports="{ 11000, 13000, 13001, 13002, 13010, 13011, 13012, 13020, 13021, 13022, 13099 }" table <abusive_hosts> persist table <trusted_hosts> persist file "/var/db/trusted_hosts" set block-policy return set loginterface $ext_if set skip on lo scrub on $ext_if reassemble tcp no-df set-tos lowdelay random-id antispoof quick for { lo0 $ext_if } block in pass out all keep state pass out on $ext_if all modulate state pass in quick from <trusted_hosts> block in quick from <abusive_hosts> pass in on $ext_if inet proto icmp all icmp-type echoreq keep state pass in on $ext_if proto tcp to any port $game_ports flags S/SA synproxy state / (max-src-conn 30, max-src-conn-rate 20/5, overload <abusive_hosts> flush) pass in on $ext_if proto tcp to any port $service_ports flags S/SA keep state / (max-src-conn 30, max-src-conn-rate 20/5, overload <abusive_hosts> flush) Las tres primeras líneas debéis cambiarlas de esta forma:
     
    ext_if: nombre del interface público, lo podemos averiguar con el comando ifconfig:
     
    En este caso mi interface público, el que tiene asignado mi IP pública de internet, es igb1.
     
    service_ports: puertos usados para ssh, web, etc. En el ejemplo he puesto 22 (SSH), 80 (HTTP), 443 (HTTPS)
     
    game_ports: todos los puertos del metin, separados por coma: auth y los game cores (no pongáis el de db que suele ser 15000 por defecto ya que db no debe estar accesible a internet sólo a los game cores)
     
    Si tienes tu página web en otro servidor o quieres por cualquier otro motivo que una o más direcciones IP tengan acceso libre a tu servidor sin pasar por el firewall debes ponerlas, una por línea, en este fichero que crearemos con:
     
    ee /var/db/trusted_hosts
     
    Terminada la configuración haremos lo siguiente:
     
    kldload pf
    pfctl -e
     
    A partir de este momento estará activado nuestro firewall, aunque para que sea plenamente funcional debemos añadir una línea a /etc/rc.conf que ponga:
     
    pf_enable="YES"
     
    Y reiniciar FreeBSD. Ya estamos protegidos contra algunos tipos de ataque DDoS bastante comunes.
     
    Manejo del firewall
     
    Para ver las IP baneadas:
     
    pfctl -t abusive_hosts -T show
     
    Para borrar la tabla de bans entera:
     
    pfctl -t abusive_hosts -T flush
     
    Para añadir una IP a la tabla de bans:
     
    pfctl -t abusive_hosts -T add 8.8.8.8
     
    Para borrar una IP de la tabla de bans
     
    pfctl -t abusive_hosts -T del 8.8.8.8
     
    Para deshabilitar temporalmente el firewall:
     
    pfctl -d
     
    Si por cualquier motivo queremos desinstalar el firewall será necesario borrar la línea que escribimos en /etc/rc.conf y reiniciar la máquina. Tened cuidado también ya que os podéis bloquear a vosotros mismos sin querer, en ese caso la única solución es cambiar vuestra IP o pedirle a otro administrador que nos desbloquee con el comando correspondiente.
     
    Cualquier duda os responderé en este hilo cuando pueda
  20. Me Gusta
    Shogun got a reaction from bunker439 in Cliente oficial game 2089   
    Buenas,
     
    Como se que hay muchos que aún usan el game 2089 (también conocido como files 2011)  os traigo este cliente oficial. Ningún pack está encriptado.
     
    No trae nada que no hubiera en el 2011 os decir no hay atuendos, pets, ni nada de eso.
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Bugs conocidos:
     
    Es necesario cambiar en root uiTooltip.py APPLY_DEF_GRADE por APPLY_DEF_GRADE_BONUS
  21. Me Gusta
    Shogun got a reaction from fuuton97 in Como instalar el firewall pf   
    Hola a todos,
     
    Hoy os voy a explicar cómo instalar y configurar el firewall pf que viene integrado desde hace mucho tiempo en FreeBSD. Por tanto este tutorial debería servir en cualquier versión de FreeBSD que utilicéis.
     
    Además de bloquear los puertos que no queramos que estén abiertos al público, configuraremos un limitador de frecuencia que bloqueará las IP que hagan demasiadas conexiones o demasiado rápidas, lo cual es muy útil para protegerse de ciertos ataques DDoS.
     
    En primer lugar crearemos un fichero llamado /etc/pf.conf con el Easy Editor:
     
    ee /etc/pf.conf
     
    Nota: Esta configuración asume que tenemos página web, base de datos y juego, en la misma máquina. Si tenéis la web en otro sitio, cerrad los puertos 80 y 443 borrándolos de service_ports y añadir la IP de vuestro servidor web en /var/db/trusted_hosts. Para otras configuraciones preguntad en el hilo.
     
    Copiamos y pegamos lo que viene a continuación en el putty:
    ext_if="igb1" service_ports="{ 22, 80, 443 }" game_ports="{ 11000, 13000, 13001, 13002, 13010, 13011, 13012, 13020, 13021, 13022, 13099 }" table <abusive_hosts> persist table <trusted_hosts> persist file "/var/db/trusted_hosts" set block-policy return set loginterface $ext_if set skip on lo scrub on $ext_if reassemble tcp no-df set-tos lowdelay random-id antispoof quick for { lo0 $ext_if } block in pass out all keep state pass out on $ext_if all modulate state pass in quick from <trusted_hosts> block in quick from <abusive_hosts> pass in on $ext_if inet proto icmp all icmp-type echoreq keep state pass in on $ext_if proto tcp to any port $game_ports flags S/SA synproxy state / (max-src-conn 30, max-src-conn-rate 20/5, overload <abusive_hosts> flush) pass in on $ext_if proto tcp to any port $service_ports flags S/SA keep state / (max-src-conn 30, max-src-conn-rate 20/5, overload <abusive_hosts> flush) Las tres primeras líneas debéis cambiarlas de esta forma:
     
    ext_if: nombre del interface público, lo podemos averiguar con el comando ifconfig:
     
    En este caso mi interface público, el que tiene asignado mi IP pública de internet, es igb1.
     
    service_ports: puertos usados para ssh, web, etc. En el ejemplo he puesto 22 (SSH), 80 (HTTP), 443 (HTTPS)
     
    game_ports: todos los puertos del metin, separados por coma: auth y los game cores (no pongáis el de db que suele ser 15000 por defecto ya que db no debe estar accesible a internet sólo a los game cores)
     
    Si tienes tu página web en otro servidor o quieres por cualquier otro motivo que una o más direcciones IP tengan acceso libre a tu servidor sin pasar por el firewall debes ponerlas, una por línea, en este fichero que crearemos con:
     
    ee /var/db/trusted_hosts
     
    Terminada la configuración haremos lo siguiente:
     
    kldload pf
    pfctl -e
     
    A partir de este momento estará activado nuestro firewall, aunque para que sea plenamente funcional debemos añadir una línea a /etc/rc.conf que ponga:
     
    pf_enable="YES"
     
    Y reiniciar FreeBSD. Ya estamos protegidos contra algunos tipos de ataque DDoS bastante comunes.
     
    Manejo del firewall
     
    Para ver las IP baneadas:
     
    pfctl -t abusive_hosts -T show
     
    Para borrar la tabla de bans entera:
     
    pfctl -t abusive_hosts -T flush
     
    Para añadir una IP a la tabla de bans:
     
    pfctl -t abusive_hosts -T add 8.8.8.8
     
    Para borrar una IP de la tabla de bans
     
    pfctl -t abusive_hosts -T del 8.8.8.8
     
    Para deshabilitar temporalmente el firewall:
     
    pfctl -d
     
    Si por cualquier motivo queremos desinstalar el firewall será necesario borrar la línea que escribimos en /etc/rc.conf y reiniciar la máquina. Tened cuidado también ya que os podéis bloquear a vosotros mismos sin querer, en ese caso la única solución es cambiar vuestra IP o pedirle a otro administrador que nos desbloquee con el comando correspondiente.
     
    Cualquier duda os responderé en este hilo cuando pueda
  22. Me Gusta
    Shogun got a reaction from herbunker348 in Cliente oficial game 2089   
    Buenas,
     
    Como se que hay muchos que aún usan el game 2089 (también conocido como files 2011)  os traigo este cliente oficial. Ningún pack está encriptado.
     
    No trae nada que no hubiera en el 2011 os decir no hay atuendos, pets, ni nada de eso.
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Bugs conocidos:
     
    Es necesario cambiar en root uiTooltip.py APPLY_DEF_GRADE por APPLY_DEF_GRADE_BONUS
  23. Me Gusta
    Shogun got a reaction from Jeo in Cliente oficial game 2089   
    Buenas,
     
    Como se que hay muchos que aún usan el game 2089 (también conocido como files 2011)  os traigo este cliente oficial. Ningún pack está encriptado.
     
    No trae nada que no hubiera en el 2011 os decir no hay atuendos, pets, ni nada de eso.
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Bugs conocidos:
     
    Es necesario cambiar en root uiTooltip.py APPLY_DEF_GRADE por APPLY_DEF_GRADE_BONUS
  24. Me Gusta
    Shogun got a reaction from PACI in Como instalar el firewall pf   
    Hola a todos,
     
    Hoy os voy a explicar cómo instalar y configurar el firewall pf que viene integrado desde hace mucho tiempo en FreeBSD. Por tanto este tutorial debería servir en cualquier versión de FreeBSD que utilicéis.
     
    Además de bloquear los puertos que no queramos que estén abiertos al público, configuraremos un limitador de frecuencia que bloqueará las IP que hagan demasiadas conexiones o demasiado rápidas, lo cual es muy útil para protegerse de ciertos ataques DDoS.
     
    En primer lugar crearemos un fichero llamado /etc/pf.conf con el Easy Editor:
     
    ee /etc/pf.conf
     
    Nota: Esta configuración asume que tenemos página web, base de datos y juego, en la misma máquina. Si tenéis la web en otro sitio, cerrad los puertos 80 y 443 borrándolos de service_ports y añadir la IP de vuestro servidor web en /var/db/trusted_hosts. Para otras configuraciones preguntad en el hilo.
     
    Copiamos y pegamos lo que viene a continuación en el putty:
    ext_if="igb1" service_ports="{ 22, 80, 443 }" game_ports="{ 11000, 13000, 13001, 13002, 13010, 13011, 13012, 13020, 13021, 13022, 13099 }" table <abusive_hosts> persist table <trusted_hosts> persist file "/var/db/trusted_hosts" set block-policy return set loginterface $ext_if set skip on lo scrub on $ext_if reassemble tcp no-df set-tos lowdelay random-id antispoof quick for { lo0 $ext_if } block in pass out all keep state pass out on $ext_if all modulate state pass in quick from <trusted_hosts> block in quick from <abusive_hosts> pass in on $ext_if inet proto icmp all icmp-type echoreq keep state pass in on $ext_if proto tcp to any port $game_ports flags S/SA synproxy state / (max-src-conn 30, max-src-conn-rate 20/5, overload <abusive_hosts> flush) pass in on $ext_if proto tcp to any port $service_ports flags S/SA keep state / (max-src-conn 30, max-src-conn-rate 20/5, overload <abusive_hosts> flush) Las tres primeras líneas debéis cambiarlas de esta forma:
     
    ext_if: nombre del interface público, lo podemos averiguar con el comando ifconfig:
     
    En este caso mi interface público, el que tiene asignado mi IP pública de internet, es igb1.
     
    service_ports: puertos usados para ssh, web, etc. En el ejemplo he puesto 22 (SSH), 80 (HTTP), 443 (HTTPS)
     
    game_ports: todos los puertos del metin, separados por coma: auth y los game cores (no pongáis el de db que suele ser 15000 por defecto ya que db no debe estar accesible a internet sólo a los game cores)
     
    Si tienes tu página web en otro servidor o quieres por cualquier otro motivo que una o más direcciones IP tengan acceso libre a tu servidor sin pasar por el firewall debes ponerlas, una por línea, en este fichero que crearemos con:
     
    ee /var/db/trusted_hosts
     
    Terminada la configuración haremos lo siguiente:
     
    kldload pf
    pfctl -e
     
    A partir de este momento estará activado nuestro firewall, aunque para que sea plenamente funcional debemos añadir una línea a /etc/rc.conf que ponga:
     
    pf_enable="YES"
     
    Y reiniciar FreeBSD. Ya estamos protegidos contra algunos tipos de ataque DDoS bastante comunes.
     
    Manejo del firewall
     
    Para ver las IP baneadas:
     
    pfctl -t abusive_hosts -T show
     
    Para borrar la tabla de bans entera:
     
    pfctl -t abusive_hosts -T flush
     
    Para añadir una IP a la tabla de bans:
     
    pfctl -t abusive_hosts -T add 8.8.8.8
     
    Para borrar una IP de la tabla de bans
     
    pfctl -t abusive_hosts -T del 8.8.8.8
     
    Para deshabilitar temporalmente el firewall:
     
    pfctl -d
     
    Si por cualquier motivo queremos desinstalar el firewall será necesario borrar la línea que escribimos en /etc/rc.conf y reiniciar la máquina. Tened cuidado también ya que os podéis bloquear a vosotros mismos sin querer, en ese caso la única solución es cambiar vuestra IP o pedirle a otro administrador que nos desbloquee con el comando correspondiente.
     
    Cualquier duda os responderé en este hilo cuando pueda
  25. Me Gusta
    Shogun got a reaction from DiosesHost in Como instalar el firewall pf   
    Hola a todos,
     
    Hoy os voy a explicar cómo instalar y configurar el firewall pf que viene integrado desde hace mucho tiempo en FreeBSD. Por tanto este tutorial debería servir en cualquier versión de FreeBSD que utilicéis.
     
    Además de bloquear los puertos que no queramos que estén abiertos al público, configuraremos un limitador de frecuencia que bloqueará las IP que hagan demasiadas conexiones o demasiado rápidas, lo cual es muy útil para protegerse de ciertos ataques DDoS.
     
    En primer lugar crearemos un fichero llamado /etc/pf.conf con el Easy Editor:
     
    ee /etc/pf.conf
     
    Nota: Esta configuración asume que tenemos página web, base de datos y juego, en la misma máquina. Si tenéis la web en otro sitio, cerrad los puertos 80 y 443 borrándolos de service_ports y añadir la IP de vuestro servidor web en /var/db/trusted_hosts. Para otras configuraciones preguntad en el hilo.
     
    Copiamos y pegamos lo que viene a continuación en el putty:
    ext_if="igb1" service_ports="{ 22, 80, 443 }" game_ports="{ 11000, 13000, 13001, 13002, 13010, 13011, 13012, 13020, 13021, 13022, 13099 }" table <abusive_hosts> persist table <trusted_hosts> persist file "/var/db/trusted_hosts" set block-policy return set loginterface $ext_if set skip on lo scrub on $ext_if reassemble tcp no-df set-tos lowdelay random-id antispoof quick for { lo0 $ext_if } block in pass out all keep state pass out on $ext_if all modulate state pass in quick from <trusted_hosts> block in quick from <abusive_hosts> pass in on $ext_if inet proto icmp all icmp-type echoreq keep state pass in on $ext_if proto tcp to any port $game_ports flags S/SA synproxy state / (max-src-conn 30, max-src-conn-rate 20/5, overload <abusive_hosts> flush) pass in on $ext_if proto tcp to any port $service_ports flags S/SA keep state / (max-src-conn 30, max-src-conn-rate 20/5, overload <abusive_hosts> flush) Las tres primeras líneas debéis cambiarlas de esta forma:
     
    ext_if: nombre del interface público, lo podemos averiguar con el comando ifconfig:
     
    En este caso mi interface público, el que tiene asignado mi IP pública de internet, es igb1.
     
    service_ports: puertos usados para ssh, web, etc. En el ejemplo he puesto 22 (SSH), 80 (HTTP), 443 (HTTPS)
     
    game_ports: todos los puertos del metin, separados por coma: auth y los game cores (no pongáis el de db que suele ser 15000 por defecto ya que db no debe estar accesible a internet sólo a los game cores)
     
    Si tienes tu página web en otro servidor o quieres por cualquier otro motivo que una o más direcciones IP tengan acceso libre a tu servidor sin pasar por el firewall debes ponerlas, una por línea, en este fichero que crearemos con:
     
    ee /var/db/trusted_hosts
     
    Terminada la configuración haremos lo siguiente:
     
    kldload pf
    pfctl -e
     
    A partir de este momento estará activado nuestro firewall, aunque para que sea plenamente funcional debemos añadir una línea a /etc/rc.conf que ponga:
     
    pf_enable="YES"
     
    Y reiniciar FreeBSD. Ya estamos protegidos contra algunos tipos de ataque DDoS bastante comunes.
     
    Manejo del firewall
     
    Para ver las IP baneadas:
     
    pfctl -t abusive_hosts -T show
     
    Para borrar la tabla de bans entera:
     
    pfctl -t abusive_hosts -T flush
     
    Para añadir una IP a la tabla de bans:
     
    pfctl -t abusive_hosts -T add 8.8.8.8
     
    Para borrar una IP de la tabla de bans
     
    pfctl -t abusive_hosts -T del 8.8.8.8
     
    Para deshabilitar temporalmente el firewall:
     
    pfctl -d
     
    Si por cualquier motivo queremos desinstalar el firewall será necesario borrar la línea que escribimos en /etc/rc.conf y reiniciar la máquina. Tened cuidado también ya que os podéis bloquear a vosotros mismos sin querer, en ese caso la única solución es cambiar vuestra IP o pedirle a otro administrador que nos desbloquee con el comando correspondiente.
     
    Cualquier duda os responderé en este hilo cuando pueda
×
×
  • Crear nuevo...