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 - .:UND3R:.

#136
Hola a todos, algo aburrido estoy intentando crear un troyano tipo conexión inversa, pero me nacen dudas con respecto a las API's de WinSock, me gustaría saber más menos el orden de estas y su aplicación (si se aplica en cliente o en el servidor):

CLIENTE:
- WSAStartup
- socket
- listen
- accept
[espera la interacción del usuario con el cliente]
- send (dependiendo de la opción que seleccione)
si la opción recibe datos:
- recv
- funcion mostrar

SERVIDOR:
- WSAStartup
- socket
- connect
- listen
- accept
- recv
if dependiendo de la opción recibida
si la opción recibida envía datos:
- send

A ver si me ayudan por favor, saludos.
#137
Ingeniería Inversa / Ayuda con .DLL
8 Abril 2013, 02:27 AM
Hola a todos, tanto tiempo, espero que esté bien, bueno les comento que necesito su ayuda, nunca pido favores pero esta dll no me da, les pido por favor si alguien puede hacerle un unpack, se los pido, ando a falta de tiempo, se los agradecería desde el fondo de mi corazón (es una DLL importante para mi).

http://www.mediafire.com/?crgqqqr13qyxzw5

Muchas gracias

UND3R
#138
Ingeniería Inversa / dbghelp.dll OllyDbg
4 Marzo 2013, 02:28 AM
¿Esta .dll que viene con ollydbg v1.10 es necesaria, la usa OllyDbg?

Saludos
#139
Hola a todos, actualmente me encuentro alejado de mi ordenador en el cual tengo todas mis herramientas, ahora estoy buscando el nombre de un programa que era para monitorear los cambios realizados tras ejecutar una aplicación, el software funcionaba así:
- Se tomaba una "imagen" del sistema operativo
- Se instalaba o ejecutaba una aplicación
- Se tomaba una segunda "imagen y el programa automáticamente mostraba las diferencias que presentaba el equipo.

Si mal no recuerdo el programa se llamaba más menos: Intr5 o Ctrl5, no recuerdo muy bien, además creo que tenía un ojo de color (el instalador, en realidad no recuerdo muy bien), a ver si me ayudan, me encuentro fuera del país y hecho de menos mi reversing natal y mi ordenador, saludos.

Solución: WhatChanged
#140
Hola a todos, estoy realizando una auditoría a una aplicación smarthphone, ya logro obtener los datos, pero me gustaría intervenir los paquetes POST enviados en ves de reenviar, ya que al reenviar me los niega, ¿cómo podría hacer eso?






Solucionado, con TRAP
#141
ASM / Problema al linkear .res dentro de una dll
29 Septiembre 2012, 16:59 PM
Hola a todos, estoy intentando hacer un splash screen basándome en las teorías de Iczelion, intentando tomar la idea, ya terminado mi código este no me muestra la imagen, si no que solamente muestra un cuadrado blanco, por lo que sospeché que el causante podría haber sido el .RES, abrí la .dll con Resource hacker y este no me encontró el .RES así que supongo que RadASM no quiere linkiar el .res con la dll, a ver si me logran ayudar, adjunto el proyecto completo:

http://www.mediafire.com/?tatug445rre4cy3

Gracias :D
#142
ASM / ¿Cómo mostrar una imagen? [MASM]
9 Septiembre 2012, 17:34 PM
Hola a todos, estoy realizando un programa en MASM, me gustaría que al iniciar me mostrara una especie de splash (una imagen sin importar su formato, me es indiferente, puede ser .jpg, .bmp, png), mi pregunta es:

¿Cómo podría hacerlo?.

A ver si alguien ya lo ha hecho y logra guiar, saludos.
#143
Hola a todos estoy intentando crashear OllyDbg (hoy vengo del lado de los buenos), pero no consigo, tengo el siguiente código:

Código (asm) [Seleccionar]
.data
output_debug BYTE 50h DUP("%s"),0
.code
INVOKE OutputDebugString,ADDR output_debug
INVOKE ExitProcess,0


A ver si me pueden indicar si es correcto lo que estoy haciendo, saludos y gracias
#144
ASM / Problema con ballon notification
4 Septiembre 2012, 02:26 AM
Hola a todos, estoy intentando hacer dos cosas:
1.- Cargar un ícono en la barra de tareas en la derecha (tray icon).
2.- Mostrar un globo junto con un mensaje (ballon notification).

Tengo el siguiente código:
Código (asm) [Seleccionar]

main PROC
        ....                                              ; calls
call START_TRAY_ICON
        ...                                               ; calls
main ENDP

START_TRAY_ICON PROC
mov struct_icon.cbSize,SIZEOF NOTIFYICONDATA ; Tamaño de la structura (SIZEOF)
mov eax,[hdl_proc_name]       ; manejador (handler) del proceso
mov struct_icon.hwnd,eax ; Manejador (Handle) de la ventana que recibirá la notificacion cuando ocurran eventos de ratón sobre el icono de la bandeja
mov struct_icon.uID,ID_ICON ; La constante que es usada como identificador del icono (sirve para chequear desde qué icono de bandeja proviene la notificación)
mov struct_icon.uFlags,NIF_TIP+NIF_ICON+NIF_INFO ; Especifica qué miembros son válidos
mov struct_icon.uCallbackMessage,WM_SHELLNOTIFY ; El mensaje común que Windows mandará a la ventana especificado por el miembro hwnd cuando ocurren eventos sobre el icono de bandeja
INVOKE LoadIcon,NULL,IDI_WINLOGO
mov struct_icon.hIcon,eax
INVOKE lstrcpy,ADDR struct_icon.szTip,ADDR app_name
INVOKE Shell_NotifyIcon,NIM_ADD,ADDR struct_icon


Push TIME_ICON ; duración del globo en milisegundos
push NIIF_INFO ; icono alerta
push OFFSET error1_title ; titulo
push OFFSET error1 ; mensaje

call TRAY_ICON
ret
START_TRAY_ICON ENDP


TRAY_ICON PROC
; aquí debería mostrar el mensaje
push ebp
mov ebp,esp
mov eax,[ebp+8h]
INVOKE lstrcpy,ADDR struct_icon.szInfo, eax
mov eax,[ebp+0ch]
INVOKE lstrcpy,ADDR struct_icon.szInfoTitle, eax
mov eax,[ebp+10h]
mov struct_icon.dwInfoFlags,eax
mov eax,[ebp+14h]
mov struct_icon.uTimeout,eax
INVOKE Shell_NotifyIcon,NIM_MODIFY,ADDR struct_icon
pop ebp
ret 10h

TRAY_ICON ENDP


Lo estoy haciendo en APP:Console MASM

a ver si me pueden guiar, saludos
#145
ASM / Problema con CreateThread
1 Septiembre 2012, 17:44 PM
Tengo lo siguiente:
Código (asm) [Seleccionar]
CREATE_THREAD PROC
INVOKE CreateThread,NULL,NULL,ADDR Thread,NULL,0,NULL
ret

CREATE_THREAD ENDP

Thread PROC
INVOKE CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0
cmp eax,NULL
mov hdl_snap,eax
mov inf_process.dwSize,128h
INVOKE Process32First,[hdl_snap],ADDR inf_process
cmp eax,TRUE

INVOKE Process32Next,[hdl_snap],ADDR inf_process


ret

Thread ENDP


1) lpParameter [in, optional]
A pointer to a variable to be passed to the thread.

Qué parámetro introduzco para que no pase una variable al thread?, yo lo dejo con 0 pero me gustaría saber como si está bien.

2) Al intentar ensamblar esto me muestra el siguiente error:
error A2006: undefined symbol : Thread

¿Cómo soluciono esto?

Saludos
#146
ASM / error A2009: syntax error in expression
30 Agosto 2012, 04:44 AM
Hola a todos, intentando ensamblar ML me muestra el siguiente error:

error A2009: syntax error in expression

esto es mostrado en la siguiente línea:
Código (asm) [Seleccionar]
inf_process   PROCESSENTRY32 <>

declaro la estructura de la siguiente manera:

Código (asm) [Seleccionar]
PROCESSENTRY32 STRUCT
dwSize DWORD ?
cntUsage DWORD ?
th32ProcessID DWORD ?
th32DefaultHeapID DWORD PTR ?
th32ModuleID DWORD ?
cntThreads DWORD ?
th32ParentProcessID DWORD ?
pcPriClassBase SDWORD ?
dwFlags DWORD ?
szExeFile BYTE ?
PROCESSENTRY32 ENDS


¿Alguna idea del motivo de este error?, saludos.
#147
ASM / Duda con downloader (WINSOCK)
29 Agosto 2012, 00:45 AM
Hola a todos, bueno les cuento estoy intentando programar un sistema de seguridad para un juego que poseo, me surge la duda de: ¿cómo podría descargar un archivo ubicado dentro de una url?, he estado basándome en el código:

http://foro.elhacker.net/analisis_y_diseno_de_malware/cannabis_multi_downloader_v10_source-t264970.0.html

Pero lamentablemente no se encuentra comentado, mi pregunta sería ¿existe alguna documentación (libro, guía, tutorial) sobre como trabajar con sockets en ASM? (secuencia de API's a llamar), me intriga este tema, saludos y gracias.

EDIT: ya estoy entendiendo el código pero desconozco que hace luego de gethostbyname ya que esto devuelve una estructura, exactamente no entiendo:

virtual at eax
.host   hostent
end     virtual
#148
PHP / Problemas tilde en PHP.
24 Julio 2012, 23:02 PM
Hola a todos tengo el siguiente lector de RSS de facebook, este funciona la perfección, el problema es que los tildes no me los muestra correctamente, ¿alguien podría echarme una mano?

Código (php) [Seleccionar]
<?php
    
// Without this "ini_set" Facebook's RSS url is all screwy for reading!
    // This is the most essential line, don't forget it.
    
ini_set('user_agent''Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9');
 
    
// This URL is the URL to the Facebook Page's RSS feed.
    // Go to the page's profile, and on the left-hand side click "Get Updates vis RSS"
    
$rssUrl "http://www.facebook.com/feeds/notifications.php?id=319579974767006&viewer=1074983523&key=AWhjAKL7r9fCfZlH&format=rss20";
    
$xml simplexml_load_file($rssUrl); // Load the XML file

    // This creates an array called "entry" that puts each <item> in FB's
    // XML format into the array
    
$entry $xml->channel->item;
 
    
// This is just a blank string I create to add to as I loop through our
    // FB feed. Feel free to format however you want, or do whatever else
    // you want with the data.
    
$returnMarkup '';
 
    
// Now we'll loop through are array. I just have it going up to 3 items
    // for this example.
    
for ($i 0$i 3$i++) {
        
//$returnMarkup .= "<h3>".$entry[$i]->title."</h3>"; // Title of the update
        //$returnMarkup .= "<p>".$entry[$i]->link."</p>"; // Link to the update
        
$returnMarkup .= "<p>".$entry[$i]->description."</p>"// Full content
        //$returnMarkup .= "<p>".$entry[$i]->pubDate."</p>"; // The date published
        
$returnMarkup .= "<p>".$entry[$i]->author."</p>"// The author (Page Title)
    
}
 
    
// Finally, we return (or in this case echo) our formatted string with our
    // Facebook page feed data in it!
    
echo $returnMarkup;
?>


Saludos
#149
PHP / INCLUDE (ruta)
18 Julio 2012, 05:09 AM
Hola a todos, tengo el siguiente problema que no logro solucionarlo, acudo a ustedes a ver si me pueden guiar un poco.

Tengo en la carpeta www los siguientes archivos
hola (carpeta)
index.php


Dentro de la carpeta hola hay un miles de archivos.

Lo que tengo que hacer por obligación (estructura de web) es un include al index.php que está dentro de hola, pero al hacer el include todas las rutas dentro de los php's de la carpeta hola no funcionan, ya que quedan así

www/url
en vez de www/hola/url

el problema que tengo es que son muchos archivos que tendría que editar, que podría hacer para que el include tomara como si estuviera dentro de la carpeta hola?

Saludos y gracias
#150
Lenguaje ensamblador para computadoras basadas en Intel.


Un resumen trabajado y escrito por mi (Victor Hugo Gutierrez Gutierrez). Este libro contiene lo esencial para conocer los fundamentos base del lenguaje ensamblador, se tocan interesantes temas sobre este interesante y cautivante lenguaje. Cabe aclarar que no es fundamental saber programar en lenguaje ensamblador, para poder saber ingeniería inversa (en cuanto a ejecutables), aun así es una excelente herramienta que nos facilitará el aprendizaje y el logro de metas más difíciles que nos propongamos.

Nombre del libro: Lenguaje ensamblador para computadoras basadas en Intel
Autor: Kip K. Irvine.
Autor del resumen: Victor Hugo Gutierrez Gutierrez / UND3R
Tipo de archivo: .PDF
Tamaño de archivo: 3.838KB
Cantidad de páginas: 584
Descarga del resumen: Descargar resumen



Apéndice:
- RadAsm IDE: http://www.oby.ro/rad_asm/
- Librerias e includes del libro (actualizadas): http://kipirvine.com/asm/gettingStartedVS2010/index.htm
- Guía de instalación (RHL): http://foro.elhacker.net/empty-t345502.0.html
#151
Estoy viendo ejemplos de como utilizar la instrucción FWAIT y me dan el siguiente ejemplo de cuando sería útil:

Código (asm) [Seleccionar]
.data
valEnt DWORD 25
.code
fild ValEnt                   ; carga entero en ST(0)
inc valEnt                    ; incrementa el entero


Me dicen que en el ejemplo mostrado se generaría una excepción.

¿Por qué con la instrucción fild ValEnt se produce tal excepción?.

Saludos
#152
PHP / Descifrar PHP
1 Julio 2012, 03:42 AM
Hola a todos, acudo a su ayuda, necesito descifrar un php, el cual he buscado y he encontrado la "solución", pero no sé aplicarlo, la solución es muy explícita pero pese a ello no logro vencerla. Podrían ayudarme (Lo puse en criptografía pero creo que la ser PHP, no me han podido ayudar):

Instrucción:
Replace eval() with echo() -  Base64_decode()  Decode $variable names  Replace $variables -  ROT13 -> Base64_decode() -> gzinflate()  Just echo  -

también encontré esta:

@ Eval (gzinflate (base64_decode (str_rot13 ("base64 cadena de aquí"))));


Código:

Código (php) [Seleccionar]
<?php
//Obfuscation provided by FOPO - Free Online PHP Obfuscator v1.2: http://www.fopo.com.ar
$z9f8c7964ef2="\x62\141\x73\145\x36\64\x5f\144\x65\143\x6f\144\x65";@eval($z9f8c7964ef2(
"JGpkZDc5N2ZhMDY5ZjcyNGU2ZTE1MmMxYTg1MjA0YTU0PSJceDYyIjskdDcwOTc3YjIzMjYxMmE3MjBlZmYxZWR
mZGRiYWNiYTg9Ilx4NjUiOyRhOWEwZjYyZGQ3YjFhODA1NTBiMmUwN2JmYjkyZjllYT0iXHg2NiI7JHM4MjNlODI
0Y2ZkOWI5MjE4YjQwODVkOGRjZDgwODhjPSJceDY3IjskbWNjODM1OWUxMGRkOGFkMmRiOWQ5ZjU0ZWUyYzUwNTY
9Ilx4NmQiOyRzZDdjMjY2NjA0MDg0YTExMTU1YzBjNjMxOTZkNzAwZT0iXHg2ZiI7JG44YzM5NzhiNmE3MjgyMzM
2MzBmYmYzOWQ2ZTk1MTljPSJceDZmIjskdWMxMTEyMjk2ZGMxZDY5NjkxZjJlZmQ1MjAyZGVkZjk9Ilx4NmYiOyR
6ZWY2Nzk4N2MyMWQ4M2M4N2I5YjMxODY3MTA3ZTEyYz0iXHg2ZiI7JGY5MGJlZDQ4NDNhNTI5ZmQwNzM1ZjRhOTk
2ZDdmYWMzPSJceDczIjskamFmYzRmMWYzNzllNjNlZTM1YTkwODliNmE4NGZlMWY9Ilx4NzMiOyRtMWFkM2YxMzI
1M2I3MmRlM2E1ZjFlNDgwNTkwZDFjOD0iXHg3MyI7JHIwMDVjNzk0MzNlZjEzN2NmMGViMmMyYWMwMWViODRjPSJ
ceDczIjskamRkNzk3ZmEwNjlmNzI0ZTZlMTUyYzFhODUyMDRhNTQuPSJcMTQxIjskdDcwOTc3YjIzMjYxMmE3MjB
lZmYxZWRmZGRiYWNiYTguPSJcMTYyIjskYTlhMGY2MmRkN2IxYTgwNTUwYjJlMDdiZmI5MmY5ZWEuPSJcMTUxIjs
kczgyM2U4MjRjZmQ5YjkyMThiNDA4NWQ4ZGNkODA4OGMuPSJcMTcyIjskbWNjODM1OWUxMGRkOGFkMmRiOWQ5ZjU
0ZWUyYzUwNTYuPSJcMTQ0Ijskc2Q3YzI2NjYwNDA4NGExMTE1NWMwYzYzMTk2ZDcwMGUuPSJcMTQyIjskbjhjMzk
3OGI2YTcyODIzMzYzMGZiZjM5ZDZlOTUxOWMuPSJcMTQyIjskdWMxMTEyMjk2ZGMxZDY5NjkxZjJlZmQ1MjAyZGV
kZjkuPSJcMTQyIjskemVmNjc5ODdjMjFkODNjODdiOWIzMTg2NzEwN2UxMmMuPSJcMTQyIjskZjkwYmVkNDg0M2E
1MjlmZDA3MzVmNGE5OTZkN2ZhYzMuPSJcMTY0IjskamFmYzRmMWYzNzllNjNlZTM1YTkwODliNmE4NGZlMWYuPSJ
cMTY0IjskbTFhZDNmMTMyNTNiNzJkZTNhNWYxZTQ4MDU5MGQxYzguPSJcMTY0IjskcjAwNWM3OTQzM2VmMTM3Y2Y
wZWIyYzJhYzAxZWI4NGMuPSJcMTY0IjskamRkNzk3ZmEwNjlmNzI0ZTZlMTUyYzFhODUyMDRhNTQuPSJceDczIjs
kdDcwOTc3YjIzMjYxMmE3MjBlZmYxZWRmZGRiYWNiYTguPSJceDY1IjskYTlhMGY2MmRkN2IxYTgwNTUwYjJlMDd
iZmI5MmY5ZWEuPSJceDZjIjskczgyM2U4MjRjZmQ5YjkyMThiNDA4NWQ4ZGNkODA4OGMuPSJceDY5IjskbWNjODM
1OWUxMGRkOGFkMmRiOWQ5ZjU0ZWUyYzUwNTYuPSJceDM1Ijskc2Q3YzI2NjYwNDA4NGExMTE1NWMwYzYzMTk2ZDc
wMGUuPSJceDVmIjskbjhjMzk3OGI2YTcyODIzMzYzMGZiZjM5ZDZlOTUxOWMuPSJceDVmIjskdWMxMTEyMjk2ZGM
xZDY5NjkxZjJlZmQ1MjAyZGVkZjkuPSJceDVmIjskemVmNjc5ODdjMjFkODNjODdiOWIzMTg2NzEwN2UxMmMuPSJ
ceDVmIjskZjkwYmVkNDg0M2E1MjlmZDA3MzVmNGE5OTZkN2ZhYzMuPSJceDcyIjskamFmYzRmMWYzNzllNjNlZTM
1YTkwODliNmE4NGZlMWYuPSJceDcyIjskbTFhZDNmMTMyNTNiNzJkZTNhNWYxZTQ4MDU5MGQxYzguPSJceDcyIjs
kcjAwNWM3OTQzM2VmMTM3Y2YwZWIyYzJhYzAxZWI4NGMuPSJceDcyIjskamRkNzk3ZmEwNjlmNzI0ZTZlMTUyYzF
hODUyMDRhNTQuPSJcMTQ1IjskdDcwOTc3YjIzMjYxMmE3MjBlZmYxZWRmZGRiYWNiYTguPSJcMTQ3IjskYTlhMGY
2MmRkN2IxYTgwNTUwYjJlMDdiZmI5MmY5ZWEuPSJcMTQ1IjskczgyM2U4MjRjZmQ5YjkyMThiNDA4NWQ4ZGNkODA
4OGMuPSJcMTU2Ijskc2Q3YzI2NjYwNDA4NGExMTE1NWMwYzYzMTk2ZDcwMGUuPSJcMTQ1IjskbjhjMzk3OGI2YTc
yODIzMzYzMGZiZjM5ZDZlOTUxOWMuPSJcMTQ1IjskdWMxMTEyMjk2ZGMxZDY5NjkxZjJlZmQ1MjAyZGVkZjkuPSJ
cMTQ3IjskemVmNjc5ODdjMjFkODNjODdiOWIzMTg2NzEwN2UxMmMuPSJcMTYzIjskZjkwYmVkNDg0M2E1MjlmZDA
3MzVmNGE5OTZkN2ZhYzMuPSJcMTM3IjskamFmYzRmMWYzNzllNjNlZTM1YTkwODliNmE4NGZlMWYuPSJcMTM3Ijs
kbTFhZDNmMTMyNTNiNzJkZTNhNWYxZTQ4MDU5MGQxYzguPSJcMTYwIjskcjAwNWM3OTQzM2VmMTM3Y2YwZWIyYzJ
hYzAxZWI4NGMuPSJcMTY0IjskamRkNzk3ZmEwNjlmNzI0ZTZlMTUyYzFhODUyMDRhNTQuPSJceDM2IjskdDcwOTc
3YjIzMjYxMmE3MjBlZmYxZWRmZGRiYWNiYTguPSJceDVmIjskYTlhMGY2MmRkN2IxYTgwNTUwYjJlMDdiZmI5MmY
5ZWEuPSJceDVmIjskczgyM2U4MjRjZmQ5YjkyMThiNDA4NWQ4ZGNkODA4OGMuPSJceDY2Ijskc2Q3YzI2NjYwNDA
4NGExMTE1NWMwYzYzMTk2ZDcwMGUuPSJceDZlIjskbjhjMzk3OGI2YTcyODIzMzYzMGZiZjM5ZDZlOTUxOWMuPSJ
ceDZlIjskdWMxMTEyMjk2ZGMxZDY5NjkxZjJlZmQ1MjAyZGVkZjkuPSJceDY1IjskemVmNjc5ODdjMjFkODNjODd
iOWIzMTg2NzEwN2UxMmMuPSJceDc0IjskZjkwYmVkNDg0M2E1MjlmZDA3MzVmNGE5OTZkN2ZhYzMuPSJceDcyIjs
kamFmYzRmMWYzNzllNjNlZTM1YTkwODliNmE4NGZlMWYuPSJceDcyIjskbTFhZDNmMTMyNTNiNzJkZTNhNWYxZTQ
4MDU5MGQxYzguPSJceDZmIjskcjAwNWM3OTQzM2VmMTM3Y2YwZWIyYzJhYzAxZWI4NGMuPSJceDZmIjskamRkNzk
3ZmEwNjlmNzI0ZTZlMTUyYzFhODUyMDRhNTQuPSJcNjQiOyR0NzA5NzdiMjMyNjEyYTcyMGVmZjFlZGZkZGJhY2J
hOC49IlwxNjIiOyRhOWEwZjYyZGQ3YjFhODA1NTBiMmUwN2JmYjkyZjllYS49IlwxNDciOyRzODIzZTgyNGNmZDl
iOTIxOGI0MDg1ZDhkY2Q4MDg4Yy49IlwxNTQiOyRzZDdjMjY2NjA0MDg0YTExMTU1YzBjNjMxOTZkNzAwZS49Ilw
xNDQiOyRuOGMzOTc4YjZhNzI4MjMzNjMwZmJmMzlkNmU5NTE5Yy49IlwxNDQiOyR1YzExMTIyOTZkYzFkNjk2OTF
mMmVmZDUyMDJkZWRmOS49IlwxNjQiOyR6ZWY2Nzk4N2MyMWQ4M2M4N2I5YjMxODY3MTA3ZTEyYy49IlwxNDEiOyR
mOTBiZWQ0ODQzYTUyOWZkMDczNWY0YTk5NmQ3ZmFjMy49IlwxNDUiOyRqYWZjNGYxZjM3OWU2M2VlMzVhOTA4OWI
2YTg0ZmUxZi49IlwxNTciOyRtMWFkM2YxMzI1M2I3MmRlM2E1ZjFlNDgwNTkwZDFjOC49IlwxNjMiOyRyMDA1Yzc
5NDMzZWYxMzdjZjBlYjJjMmFjMDFlYjg0Yy49IlwxNTMiOyRqZGQ3OTdmYTA2OWY3MjRlNmUxNTJjMWE4NTIwNGE
1NC49Ilx4NWYiOyR0NzA5NzdiMjMyNjEyYTcyMGVmZjFlZGZkZGJhY2JhOC49Ilx4NjUiOyRhOWEwZjYyZGQ3YjF
hODA1NTBiMmUwN2JmYjkyZjllYS49Ilx4NjUiOyRzODIzZTgyNGNmZDliOTIxOGI0MDg1ZDhkY2Q4MDg4Yy49Ilx
4NjEiOyRzZDdjMjY2NjA0MDg0YTExMTU1YzBjNjMxOTZkNzAwZS49Ilx4NWYiOyRuOGMzOTc4YjZhNzI4MjMzNjM
wZmJmMzlkNmU5NTE5Yy49Ilx4NWYiOyR1YzExMTIyOTZkYzFkNjk2OTFmMmVmZDUyMDJkZWRmOS49Ilx4NWYiOyR
6ZWY2Nzk4N2MyMWQ4M2M4N2I5YjMxODY3MTA3ZTEyYy49Ilx4NzIiOyRmOTBiZWQ0ODQzYTUyOWZkMDczNWY0YTk
5NmQ3ZmFjMy49Ilx4NzAiOyRqYWZjNGYxZjM3OWU2M2VlMzVhOTA4OWI2YTg0ZmUxZi49Ilx4NzQiOyRqZGQ3OTd
mYTA2OWY3MjRlNmUxNTJjMWE4NTIwNGE1NC49IlwxNDQiOyR0NzA5NzdiMjMyNjEyYTcyMGVmZjFlZGZkZGJhY2J
hOC49IlwxNjAiOyRhOWEwZjYyZGQ3YjFhODA1NTBiMmUwN2JmYjkyZjllYS49IlwxNjQiOyRzODIzZTgyNGNmZDl
iOTIxOGI0MDg1ZDhkY2Q4MDg4Yy49IlwxNjQiOyRzZDdjMjY2NjA0MDg0YTExMTU1YzBjNjMxOTZkNzAwZS49Ilw
xNDMiOyRuOGMzOTc4YjZhNzI4MjMzNjMwZmJmMzlkNmU5NTE5Yy49IlwxNDYiOyR1YzExMTIyOTZkYzFkNjk2OTF
mMmVmZDUyMDJkZWRmOS49IlwxNDMiOyR6ZWY2Nzk4N2MyMWQ4M2M4N2I5YjMxODY3MTA3ZTEyYy49IlwxNjQiOyR
mOTBiZWQ0ODQzYTUyOWZkMDczNWY0YTk5NmQ3ZmFjMy49IlwxNTQiOyRqYWZjNGYxZjM3OWU2M2VlMzVhOTA4OWI
2YTg0ZmUxZi49Ilw2MSI7JGpkZDc5N2ZhMDY5ZjcyNGU2ZTE1MmMxYTg1MjA0YTU0Lj0iXHg2NSI7JHQ3MDk3N2I
yMzI2MTJhNzIwZWZmMWVkZmRkYmFjYmE4Lj0iXHg2YyI7JGE5YTBmNjJkZDdiMWE4MDU1MGIyZTA3YmZiOTJmOWV
hLj0iXHg1ZiI7JHM4MjNlODI0Y2ZkOWI5MjE4YjQwODVkOGRjZDgwODhjLj0iXHg2NSI7JHNkN2MyNjY2MDQwODR
hMTExNTVjMGM2MzE5NmQ3MDBlLj0iXHg2YyI7JG44YzM5NzhiNmE3MjgyMzM2MzBmYmYzOWQ2ZTk1MTljLj0iXHg
2YyI7JHVjMTExMjI5NmRjMWQ2OTY5MWYyZWZkNTIwMmRlZGY5Lj0iXHg2ZiI7JGY5MGJlZDQ4NDNhNTI5ZmQwNzM
1ZjRhOTk2ZDdmYWMzLj0iXHg2MSI7JGphZmM0ZjFmMzc5ZTYzZWUzNWE5MDg5YjZhODRmZTFmLj0iXHgzMyI7JGp
kZDc5N2ZhMDY5ZjcyNGU2ZTE1MmMxYTg1MjA0YTU0Lj0iXDE0MyI7JHQ3MDk3N2IyMzI2MTJhNzIwZWZmMWVkZmR
kYmFjYmE4Lj0iXDE0MSI7JGE5YTBmNjJkZDdiMWE4MDU1MGIyZTA3YmZiOTJmOWVhLj0iXDE0MyI7JHNkN2MyNjY
2MDQwODRhMTExNTVjMGM2MzE5NmQ3MDBlLj0iXDE0NSI7JG44YzM5NzhiNmE3MjgyMzM2MzBmYmYzOWQ2ZTk1MTl
jLj0iXDE2NSI7JHVjMTExMjI5NmRjMWQ2OTY5MWYyZWZkNTIwMmRlZGY5Lj0iXDE1NiI7JGY5MGJlZDQ4NDNhNTI
5ZmQwNzM1ZjRhOTk2ZDdmYWMzLj0iXDE0MyI7JGpkZDc5N2ZhMDY5ZjcyNGU2ZTE1MmMxYTg1MjA0YTU0Lj0iXHg
2ZiI7JHQ3MDk3N2IyMzI2MTJhNzIwZWZmMWVkZmRkYmFjYmE4Lj0iXHg2MyI7JGE5YTBmNjJkZDdiMWE4MDU1MGI
yZTA3YmZiOTJmOWVhLj0iXHg2ZiI7JHNkN2MyNjY2MDQwODRhMTExNTVjMGM2MzE5NmQ3MDBlLj0iXHg2MSI7JG4
4YzM5NzhiNmE3MjgyMzM2MzBmYmYzOWQ2ZTk1MTljLj0iXHg3MyI7JHVjMTExMjI5NmRjMWQ2OTY5MWYyZWZkNTI
wMmRlZGY5Lj0iXHg3NCI7JGY5MGJlZDQ4NDNhNTI5ZmQwNzM1ZjRhOTk2ZDdmYWMzLj0iXHg2NSI7JGpkZDc5N2Z
hMDY5ZjcyNGU2ZTE1MmMxYTg1MjA0YTU0Lj0iXDE0NCI7JHQ3MDk3N2IyMzI2MTJhNzIwZWZmMWVkZmRkYmFjYmE
4Lj0iXDE0NSI7JGE5YTBmNjJkZDdiMWE4MDU1MGIyZTA3YmZiOTJmOWVhLj0iXDE1NiI7JHNkN2MyNjY2MDQwODR
hMTExNTVjMGM2MzE5NmQ3MDBlLj0iXDE1NiI7JG44YzM5NzhiNmE3MjgyMzM2MzBmYmYzOWQ2ZTk1MTljLj0iXDE
1MCI7JHVjMTExMjI5NmRjMWQ2OTY5MWYyZWZkNTIwMmRlZGY5Lj0iXDE0NSI7JGpkZDc5N2ZhMDY5ZjcyNGU2ZTE
1MmMxYTg1MjA0YTU0Lj0iXHg2NSI7JGE5YTBmNjJkZDdiMWE4MDU1MGIyZTA3YmZiOTJmOWVhLj0iXHg3NCI7JHV
jMTExMjI5NmRjMWQ2OTY5MWYyZWZkNTIwMmRlZGY5Lj0iXHg2ZSI7JGE5YTBmNjJkZDdiMWE4MDU1MGIyZTA3YmZ
iOTJmOWVhLj0iXDE0NSI7JHVjMTExMjI5NmRjMWQ2OTY5MWYyZWZkNTIwMmRlZGY5Lj0iXDE2NCI7JGE5YTBmNjJ
kZDdiMWE4MDU1MGIyZTA3YmZiOTJmOWVhLj0iXHg2ZSI7JHVjMTExMjI5NmRjMWQ2OTY5MWYyZWZkNTIwMmRlZGY
5Lj0iXHg3MyI7JGE5YTBmNjJkZDdiMWE4MDU1MGIyZTA3YmZiOTJmOWVhLj0iXDE2NCI7JGE5YTBmNjJkZDdiMWE
4MDU1MGIyZTA3YmZiOTJmOWVhLj0iXHg3MyI7JHplZjY3OTg3YzIxZDgzYzg3YjliMzE4NjcxMDdlMTJjKCk7aWY
oJG1jYzgzNTllMTBkZDhhZDJkYjlkOWY1NGVlMmM1MDU2KCR0NzA5NzdiMjMyNjEyYTcyMGVmZjFlZGZkZGJhY2J
hOCgiXHg1Y1w1MFx4MjJcMTMzXHgzMFw1NVx4MzlcMTAxXHgyZFwxMzJceDYxXDU1XHg3YVwxMzRceDJiXDU3XHg
zZFwxMzVceDJhXDQyXHg1Y1w1MSIsIlx4MjhcNDJceDIyXDUxIiwkZjkwYmVkNDg0M2E1MjlmZDA3MzVmNGE5OTZ
kN2ZhYzMoIlxyXG4iLCIiLCRhOWEwZjYyZGQ3YjFhODA1NTBiMmUwN2JmYjkyZjllYSgkcjAwNWM3OTQzM2VmMTM
3Y2YwZWIyYzJhYzAxZWI4NGMoX19GSUxFX18sIlx4MjgiKSkpKSk9PSJceDM1XDY2XHgzM1w2Mlx4NjNcMTQxXHg
zM1w3MVx4NjVcMTQ0XHg2NFwxNDZceDY2XDYyXHgzM1w2MVx4NjVcMTQzXHgzM1wxNDJceDYzXDE0Mlx4MzZcNjJ
ceDYzXDYyXHg2NFw2MVx4MzdcNjBceDM1XDY3Iil7QGV2YWwoJHM4MjNlODI0Y2ZkOWI5MjE4YjQwODVkOGRjZDg
wODhjKCRqZGQ3OTdmYTA2OWY3MjRlNmUxNTJjMWE4NTIwNGE1NCgkamFmYzRmMWYzNzllNjNlZTM1YTkwODliNmE
4NGZlMWYoIjdJZ2Vva2g3UnMwZXI3cGNNWHFXbVFyS3F6R3diZnYzOXdvVllzZHVwRlFqWHJnSlE5L0lCZVNlK1k
5M2xCS2R4RnZFYVNiYlR0dk9EKzhoeWttQmFXeG1ENjVDYXdBeFJXVlhWTHJTMUFXNHZ4a0QweHh5aE9WSXJhNWx
wczc2NGllZGhhdDJMUWNEamJXekpTbjZId0VER1Z0WVFQQ0FYT3I0Nk9zeTVuMWp5MXdqbDFmUFluQWp3RjhreTV
yM3h5NWxOTXBIWXl5NU9oWkV1WVRrU3RzWmdUQ0hWckg5OXlWVFlZa0ZHWW93RkRhd2xxRno5M3Bwc3VGQmF0MSt
zc0NoVTIvcmlyKzE3clBLYS8vNmNpc3VjLzRCRjlTR0kzbXcvSjJ2VWtzM29oRkNEVWpKNUpadHpZM1JPQkZJUUJ
HVDBXV1l3WFk4TnFNUWJCSVdzaG91WkwvcWxoQm11alhIQzIvaGtlNWI3ZDU5aTJtOG9LQXY1L0NsL0FJc2dYZ2E
wK1lybkNoaUxHMjd6b2RLYjR4citnQ3ZjdTRzOUViL2hFN2VrYys4aXRPa1NJWVJQUE1Qa29VdmxOSHJhVFVWWHR
VUEw2bXI5K2tmVHhvUTNiczN2bXE3VTJRMnhtR3ovWkdKM2Iybkk3OXFRM2lVTWw4YWYzKy9BWUNuK3NjeWVxM2J
NYTVuSUFyM2RtOWFRNi8wRUFxUTdKb1MvbnJFbjY1QlA0amNDWXdsYitTSXAxY0ROdXJrbDJ3NnBoalEzV1NqTDd
6bjA2WGM5S0UrZUpmL29wN24ySDRZT1UzZkdHMnNqci9LZjlUMDhzS01qK2hHY1hDbTRhSndRcnVYdzBzUW5xLzY
rWUVWeC9wNUR4Sm5CQzUyL2VkYzRwcmdxcGpiTzZaWTR0QktreVFBdVlKWE5aa0xaUkV0VmVteWVOV0xDdWliTFh
EUFE5U3BKcVB4TVpHanZ1Z0VSSGtxZEFRWTg2M3dhQjBqUVpqMVU0UjkvQjF4Q093Q2dPaFIwR3d1UGlQUFIrUU9
DR3d0RkpHdHhXUTlWaEdhVncrVXN5RjIvdUM5RUROQmpJekovbmZKeTJ4cHpwcVVUTTg4NEdIQlc2Um81a1VCdFo
vSmxLTUVPb1hPWEgwU2RsY1dZSG9Kckk0a2N3a1BUeUt0NnBhSVhGZEM3amdpZTJvU01RNGZ3Z2NvWWxZZE8yUWw
rejREaVQ1aG53OWpiM3gwZ0RaTVV0Yi9haWc3SFhMV1NLTVRPRkIwNE9lZWx1VFpoT0dMMDBiRFI1SDV6cDkvVWo
5K2kvVTFLRWxxMDFNYzBHeUdQOXJ0elNoUFl3VEplR1hGODZkZkdTTlhLeXFYZDBHYm0wRTdtSWZ5Wit3VERBclY
1a004YVZwMk9mUERUQlVIa3o0a2p2SUk4MEhidllyd2NNV0RmcDFpRWppVEF5ekhLcGNicEN5ZjRYdFZFUXplek9
WK1BQZ05QTEU3TTZGaXlWcERQbzJ2aUpWeGZTdWRtamtMa1J5Y3Q3RXJ2eGJqTUdKeXZQazBTVWt3ZWpvMTdBQ0V
xZkp6eEpSbm80SDFVd1Nkb1hKVlFJNVdjd1JPSWhSSUZKNm1vc2UzNlJBVDFzb3UreEtETEN4SWtVRk44b3MyRng
rVXNhTjFoNnhVTElMQzJpdDFVL3Y2YWdINEVnTEpBUVFJR2tRaXp3aEw4cjNzc2kzNys5NzFvNzBDazhwRUd4Yk1
sdG1RTnh4R3FaSDBwNjRQZGdGWkJQOE03ZjkxOFZDRTlDZHpKS2k3RW4rS0xPYVVVZjNhQ3c3cU1kT3dWVmp2Wmp
NS3pxUmxRWVd3RTNGandaMlZIcE90cnhsbDM2WloxTVE5SStvS0piazFQUG4rR1pWcWlCSFU4Y0xTbVNiRDZ6VWd
zSERrTE5iRlBaUS9jQVAyVHAyei9vVmZXZTY1emV5K3JHMm9BMkhrMUVDVlhsTG1xbUMyNUt4ekhRaUo4M3ovb1N
CWmZ2dEZpcFZvMmVhRXFXd2NUeHBoWWJoSnpzZnlYdGllaytDcE0zUkFPVDdHQUZmbVNNcExiRytKRU1mVTlSaFB
IV21LbUFtcU03a3BrYWFYTmJ2NS8zSlVveE1BWi9vNE5md3NrWElCejhZQmt3WkQ2Ti9SWDQ4QVFVNUU3TzVGbHd
XZG9GczdnWlJ6UkVRUmFrM1RPOEJRQkg2dnhBUE5oUHJBdi8vSVRrcitsN2NXS2Vyc2NTSFBnTnhJRVNmZXBYSjl
qOTRtUWp6aHhJTUlJYXlnUjZsMmxzYTh2cVhvZVdNZ1p2SjFTUkprTXcxTE10eDNKOWZJaDJITUhZdDQ2ZVR5MlB
mdU5nSm5JeTR3clpIR2tia3JNdXlTRWtia2RkUjJOTGNndnhMNXJmekhWV0lhUWtzN3h0QmlsNVJRaG5FcU9vUWk
rcGFuL1ZqaDR6YXZ6bnZVVEEzeUt6SnQ2bWVEQkx3N29mN0JKbFlQMTExeks4dGI3dVpudmwvOXBxNU5CT2xyLy9
5WDFrT0Jib01iTWZJajlBUktvKzNvSlZpWkcyWnl4aWQwM2R0SXFmTmt5RC9IUHh4Y2ZIbk5YM1FZQ3FLSnovNFR
0eDBablVaWTE2RHdKV1NlS282dENCT0RkU2R1T0xlUUJESU5YNnk4NUFySDB6cnI3dXRtOXZCTnFTbjEwMEd4YnI
3OTNZOGVWREVpckcyK21qTkVQU2JYc0MwVlRoMlpGMjFZKzRoWGc2SzloUHZKUCtBUjFZeWp2b0FSTHB4bmlucXJ
CbnF0b0FTWWJmSGhEV2hGeFJmYzJ2eXdrY1RYem5sT0NBcHZncFlZaklwVVYzeERQQ1BzZXpZQU9MSnU0NHVWWU9
EZnhSWkpKUVJ1Y0xCZGt3QlJCVVU5MUlqTlRVRXp3N013NFV0Uy95VXBnVmJoa3BoTVZadk1adStFa29LTVlla0F
uSHc1bmVnajczaC9OQUszQ2VqZGg0SDk4dkhEWWZ4RmVMcDJ6WmZhWGFsNEJBOW9lQ2pCbTNtYVZHUjYrQktPWWo
5K3JvNDMvaTRCaS9sYWFrNnA4aFBITzZxZlIxZVZNbXI1d2tnOTdCN0hmSWNycnlHMmdkNnZXeVBZWTBnZFF1cUR
TNm5xZEltdGNsMk9mdmlmaDYzNVp1OGVtVC9aTU5GeTlmdGdyYTdINGtnNEhlTFBreEY4cDlMR3hUYjFRbXExcEV
XL29GaTR4N0ZReFhlcGh2MVgyNjIySVNEZWpsMVBPVGNaWFJQZ3UydnZoWUxGdnh2UE1MS2ZMcGljMkRPNVRvRnh
OelJTS2JOZWtGY1BCVlZsQjFOQzBLZXd5Z1oya25uRVdKV2psRHVPdVF4elFxWFBWWHBwVzBjdTRhd25UOXQyc3F
jbHZocXNIQU53REYyanV1TmRRaFBxMUxUN1ZXTnYrVVRKS1FoaThCaUNobE5JVjkrdi8xQW94aDNReHRrR1JtRlB
0WFQxT1VWMWhQWW42amM1VGhPOWhnVEYya0dvVW9jZlRrbWZnUmxxNDVvSlM2cGRLRGpJekg2RkJmWXZIUHhsamF
zaUVSaEpRNTd4eHVRS1FaMkptUm9xK2U0UTluMWVFOFdUYmhJM3dBaEcwSnd1WWVFK0F3bTFuMFcwdytLWDlld1J
sOFFEbG82dHNvbjVhOGxaSnYwMHhMR0FjODFNeXQ2d1AwbXpabUZuQTloN2Y0bjk3VEJPbWpNakloSnR2NUhwTkl
iSFp4a252RjBLMWZ1VTdoREd5VUJjVVJuN2o4S2Z3UnhvTHRIaHc4bHk0eVMrNmZzS3dzQU1sZ241MjdNUXpYSjd
ycEJwZlhjUGx1aXhXVjJLenV1Z3pyV3Jmb1FFM29uY1liMjgwNm9kMWh3Ni9UeUJ3TGYvN29RSlNYSC9nbXlpcGt
VRXNMUGp0aXZxd01zR2prMmtSYjNWOC9Qb2cxcXVUQUN6azFnMFVCMzhtRHYrVkdnOU9Vaiswa0l3Ni82a2RkaS9
3bURQblFqNFNOK3NKUlBJUE5WRklWVk5IeUpESGdZZHhUYk91MGJoWEFrd1VlVnJWNGp0TndiUm5NUkJTeXo4Wkp
XZkgyam4ySUxYQ1dwbVYyRWpQYlpaUHZaVjV1Y2NTbDlGa0F0MnNLWXZxcWVUNUxpVWYzb2ExMll5Yll2ZVlCSEc
wVUpmd29uNW9sZHhwZk5EM2p0TFlVK0RWY25ldGFna0lIenI3aWZIOXVFTUV0bFQzMDR6SlhxTCs5eDNBenRtOVV
xWk8vTTB4Q0d4dkhPSjEyZURDbEROdWpFdFlEVUx3V1NTWVE2aitiVUlRNm0rajdDNkk2WU50cDIvLzdCWmMyb21
nV0FDU2c4Uld0MGZuZVFxYUdoSXBpeFZXWk1HM1FjNXBpY2lmS2d6OW9MeUZtcmFoRkV4d204ZEJHUStzOEM0OER
sWjhxa3p0NkVGYWVHM0hHN1F2eHFkaVozNkllNVpMd3pDMy9tTzBXQ2svazRWNGNOR1VVWFBEMDZqLzVqTnNMQWl
nem11NGxrMnY1Q0l4L1BwREtHRVc3MWZTa2k5eGQ5QXpwNjAwb0xmNVBoTkcwUStwZ0IvVCtsZUVneUdHeFEzeHV
DUjJZK0RhZXBVVTE5bW5jZDlTcnFTZTNsVmpXb2FXQ2hjNGo1Wi83K2I3R3J1YjBpRVFhSzl0cFpDVUM2d3BtdHl
sNzhtL3JSNUIvMVlzM1Q5L1lMY3M4MzBVaj09IikpKSk7fSRtMWFkM2YxMzI1M2I3MmRlM2E1ZjFlNDgwNTkwZDF
jOCgkdWMxMTEyMjk2ZGMxZDY5NjkxZjJlZmQ1MjAyZGVkZjkoKSwiXHgzNFw2MFx4NjJcNjBceDMwXDY3XHgzOVw
2MFx4MzBcMTQ0XHgzMVw2Nlx4MzdcMTQxXHgzN1wxNDJceDY1XDYzXHgzMFwxNDJceDY2XDcxXHgzN1wxNDRceDM
3XDcxXHgzNlw2NVx4MzlcNjZceDM4XDYwIik/JHNkN2MyNjY2MDQwODRhMTExNTVjMGM2MzE5NmQ3MDBlKCk6JG4
4YzM5NzhiNmE3MjgyMzM2MzBmYmYzOWQ2ZTk1MTljKCk7"
));
?>


Si me explicaran paso a paso se los agradecería demasiado, saludos
#153
Criptografía / Descifrar PHP
30 Junio 2012, 01:26 AM
Hola a todos, acudo a su ayuda, necesito descifrar un php, el cual he buscado y he encontrado la "solución", pero no sé aplicarlo, la solución es muy explícita pero pese a ello no logro vencerla. Podrían ayudarme:

Instrucción:
Replace eval() with echo() -  Base64_decode()  Decode $variable names  Replace $variables -  ROT13 -> Base64_decode() -> gzinflate()  Just echo  -

también encontré esta:

@ Eval (gzinflate (base64_decode (str_rot13 ("base64 cadena de aquí"))));


Código:

Código (php) [Seleccionar]
<?php
//Obfuscation provided by FOPO - Free Online PHP Obfuscator v1.2: http://www.fopo.com.ar
$z9f8c7964ef2="\x62\141\x73\145\x36\64\x5f\144\x65\143\x6f\144\x65";@eval($z9f8c7964ef2(
"JGpkZDc5N2ZhMDY5ZjcyNGU2ZTE1MmMxYTg1MjA0YTU0PSJceDYyIjskdDcwOTc3YjIzMjYxMmE3MjBlZmYxZWR
mZGRiYWNiYTg9Ilx4NjUiOyRhOWEwZjYyZGQ3YjFhODA1NTBiMmUwN2JmYjkyZjllYT0iXHg2NiI7JHM4MjNlODI
0Y2ZkOWI5MjE4YjQwODVkOGRjZDgwODhjPSJceDY3IjskbWNjODM1OWUxMGRkOGFkMmRiOWQ5ZjU0ZWUyYzUwNTY
9Ilx4NmQiOyRzZDdjMjY2NjA0MDg0YTExMTU1YzBjNjMxOTZkNzAwZT0iXHg2ZiI7JG44YzM5NzhiNmE3MjgyMzM
2MzBmYmYzOWQ2ZTk1MTljPSJceDZmIjskdWMxMTEyMjk2ZGMxZDY5NjkxZjJlZmQ1MjAyZGVkZjk9Ilx4NmYiOyR
6ZWY2Nzk4N2MyMWQ4M2M4N2I5YjMxODY3MTA3ZTEyYz0iXHg2ZiI7JGY5MGJlZDQ4NDNhNTI5ZmQwNzM1ZjRhOTk
2ZDdmYWMzPSJceDczIjskamFmYzRmMWYzNzllNjNlZTM1YTkwODliNmE4NGZlMWY9Ilx4NzMiOyRtMWFkM2YxMzI
1M2I3MmRlM2E1ZjFlNDgwNTkwZDFjOD0iXHg3MyI7JHIwMDVjNzk0MzNlZjEzN2NmMGViMmMyYWMwMWViODRjPSJ
ceDczIjskamRkNzk3ZmEwNjlmNzI0ZTZlMTUyYzFhODUyMDRhNTQuPSJcMTQxIjskdDcwOTc3YjIzMjYxMmE3MjB
lZmYxZWRmZGRiYWNiYTguPSJcMTYyIjskYTlhMGY2MmRkN2IxYTgwNTUwYjJlMDdiZmI5MmY5ZWEuPSJcMTUxIjs
kczgyM2U4MjRjZmQ5YjkyMThiNDA4NWQ4ZGNkODA4OGMuPSJcMTcyIjskbWNjODM1OWUxMGRkOGFkMmRiOWQ5ZjU
0ZWUyYzUwNTYuPSJcMTQ0Ijskc2Q3YzI2NjYwNDA4NGExMTE1NWMwYzYzMTk2ZDcwMGUuPSJcMTQyIjskbjhjMzk
3OGI2YTcyODIzMzYzMGZiZjM5ZDZlOTUxOWMuPSJcMTQyIjskdWMxMTEyMjk2ZGMxZDY5NjkxZjJlZmQ1MjAyZGV
kZjkuPSJcMTQyIjskemVmNjc5ODdjMjFkODNjODdiOWIzMTg2NzEwN2UxMmMuPSJcMTQyIjskZjkwYmVkNDg0M2E
1MjlmZDA3MzVmNGE5OTZkN2ZhYzMuPSJcMTY0IjskamFmYzRmMWYzNzllNjNlZTM1YTkwODliNmE4NGZlMWYuPSJ
cMTY0IjskbTFhZDNmMTMyNTNiNzJkZTNhNWYxZTQ4MDU5MGQxYzguPSJcMTY0IjskcjAwNWM3OTQzM2VmMTM3Y2Y
wZWIyYzJhYzAxZWI4NGMuPSJcMTY0IjskamRkNzk3ZmEwNjlmNzI0ZTZlMTUyYzFhODUyMDRhNTQuPSJceDczIjs
kdDcwOTc3YjIzMjYxMmE3MjBlZmYxZWRmZGRiYWNiYTguPSJceDY1IjskYTlhMGY2MmRkN2IxYTgwNTUwYjJlMDd
iZmI5MmY5ZWEuPSJceDZjIjskczgyM2U4MjRjZmQ5YjkyMThiNDA4NWQ4ZGNkODA4OGMuPSJceDY5IjskbWNjODM
1OWUxMGRkOGFkMmRiOWQ5ZjU0ZWUyYzUwNTYuPSJceDM1Ijskc2Q3YzI2NjYwNDA4NGExMTE1NWMwYzYzMTk2ZDc
wMGUuPSJceDVmIjskbjhjMzk3OGI2YTcyODIzMzYzMGZiZjM5ZDZlOTUxOWMuPSJceDVmIjskdWMxMTEyMjk2ZGM
xZDY5NjkxZjJlZmQ1MjAyZGVkZjkuPSJceDVmIjskemVmNjc5ODdjMjFkODNjODdiOWIzMTg2NzEwN2UxMmMuPSJ
ceDVmIjskZjkwYmVkNDg0M2E1MjlmZDA3MzVmNGE5OTZkN2ZhYzMuPSJceDcyIjskamFmYzRmMWYzNzllNjNlZTM
1YTkwODliNmE4NGZlMWYuPSJceDcyIjskbTFhZDNmMTMyNTNiNzJkZTNhNWYxZTQ4MDU5MGQxYzguPSJceDcyIjs
kcjAwNWM3OTQzM2VmMTM3Y2YwZWIyYzJhYzAxZWI4NGMuPSJceDcyIjskamRkNzk3ZmEwNjlmNzI0ZTZlMTUyYzF
hODUyMDRhNTQuPSJcMTQ1IjskdDcwOTc3YjIzMjYxMmE3MjBlZmYxZWRmZGRiYWNiYTguPSJcMTQ3IjskYTlhMGY
2MmRkN2IxYTgwNTUwYjJlMDdiZmI5MmY5ZWEuPSJcMTQ1IjskczgyM2U4MjRjZmQ5YjkyMThiNDA4NWQ4ZGNkODA
4OGMuPSJcMTU2Ijskc2Q3YzI2NjYwNDA4NGExMTE1NWMwYzYzMTk2ZDcwMGUuPSJcMTQ1IjskbjhjMzk3OGI2YTc
yODIzMzYzMGZiZjM5ZDZlOTUxOWMuPSJcMTQ1IjskdWMxMTEyMjk2ZGMxZDY5NjkxZjJlZmQ1MjAyZGVkZjkuPSJ
cMTQ3IjskemVmNjc5ODdjMjFkODNjODdiOWIzMTg2NzEwN2UxMmMuPSJcMTYzIjskZjkwYmVkNDg0M2E1MjlmZDA
3MzVmNGE5OTZkN2ZhYzMuPSJcMTM3IjskamFmYzRmMWYzNzllNjNlZTM1YTkwODliNmE4NGZlMWYuPSJcMTM3Ijs
kbTFhZDNmMTMyNTNiNzJkZTNhNWYxZTQ4MDU5MGQxYzguPSJcMTYwIjskcjAwNWM3OTQzM2VmMTM3Y2YwZWIyYzJ
hYzAxZWI4NGMuPSJcMTY0IjskamRkNzk3ZmEwNjlmNzI0ZTZlMTUyYzFhODUyMDRhNTQuPSJceDM2IjskdDcwOTc
3YjIzMjYxMmE3MjBlZmYxZWRmZGRiYWNiYTguPSJceDVmIjskYTlhMGY2MmRkN2IxYTgwNTUwYjJlMDdiZmI5MmY
5ZWEuPSJceDVmIjskczgyM2U4MjRjZmQ5YjkyMThiNDA4NWQ4ZGNkODA4OGMuPSJceDY2Ijskc2Q3YzI2NjYwNDA
4NGExMTE1NWMwYzYzMTk2ZDcwMGUuPSJceDZlIjskbjhjMzk3OGI2YTcyODIzMzYzMGZiZjM5ZDZlOTUxOWMuPSJ
ceDZlIjskdWMxMTEyMjk2ZGMxZDY5NjkxZjJlZmQ1MjAyZGVkZjkuPSJceDY1IjskemVmNjc5ODdjMjFkODNjODd
iOWIzMTg2NzEwN2UxMmMuPSJceDc0IjskZjkwYmVkNDg0M2E1MjlmZDA3MzVmNGE5OTZkN2ZhYzMuPSJceDcyIjs
kamFmYzRmMWYzNzllNjNlZTM1YTkwODliNmE4NGZlMWYuPSJceDcyIjskbTFhZDNmMTMyNTNiNzJkZTNhNWYxZTQ
4MDU5MGQxYzguPSJceDZmIjskcjAwNWM3OTQzM2VmMTM3Y2YwZWIyYzJhYzAxZWI4NGMuPSJceDZmIjskamRkNzk
3ZmEwNjlmNzI0ZTZlMTUyYzFhODUyMDRhNTQuPSJcNjQiOyR0NzA5NzdiMjMyNjEyYTcyMGVmZjFlZGZkZGJhY2J
hOC49IlwxNjIiOyRhOWEwZjYyZGQ3YjFhODA1NTBiMmUwN2JmYjkyZjllYS49IlwxNDciOyRzODIzZTgyNGNmZDl
iOTIxOGI0MDg1ZDhkY2Q4MDg4Yy49IlwxNTQiOyRzZDdjMjY2NjA0MDg0YTExMTU1YzBjNjMxOTZkNzAwZS49Ilw
xNDQiOyRuOGMzOTc4YjZhNzI4MjMzNjMwZmJmMzlkNmU5NTE5Yy49IlwxNDQiOyR1YzExMTIyOTZkYzFkNjk2OTF
mMmVmZDUyMDJkZWRmOS49IlwxNjQiOyR6ZWY2Nzk4N2MyMWQ4M2M4N2I5YjMxODY3MTA3ZTEyYy49IlwxNDEiOyR
mOTBiZWQ0ODQzYTUyOWZkMDczNWY0YTk5NmQ3ZmFjMy49IlwxNDUiOyRqYWZjNGYxZjM3OWU2M2VlMzVhOTA4OWI
2YTg0ZmUxZi49IlwxNTciOyRtMWFkM2YxMzI1M2I3MmRlM2E1ZjFlNDgwNTkwZDFjOC49IlwxNjMiOyRyMDA1Yzc
5NDMzZWYxMzdjZjBlYjJjMmFjMDFlYjg0Yy49IlwxNTMiOyRqZGQ3OTdmYTA2OWY3MjRlNmUxNTJjMWE4NTIwNGE
1NC49Ilx4NWYiOyR0NzA5NzdiMjMyNjEyYTcyMGVmZjFlZGZkZGJhY2JhOC49Ilx4NjUiOyRhOWEwZjYyZGQ3YjF
hODA1NTBiMmUwN2JmYjkyZjllYS49Ilx4NjUiOyRzODIzZTgyNGNmZDliOTIxOGI0MDg1ZDhkY2Q4MDg4Yy49Ilx
4NjEiOyRzZDdjMjY2NjA0MDg0YTExMTU1YzBjNjMxOTZkNzAwZS49Ilx4NWYiOyRuOGMzOTc4YjZhNzI4MjMzNjM
wZmJmMzlkNmU5NTE5Yy49Ilx4NWYiOyR1YzExMTIyOTZkYzFkNjk2OTFmMmVmZDUyMDJkZWRmOS49Ilx4NWYiOyR
6ZWY2Nzk4N2MyMWQ4M2M4N2I5YjMxODY3MTA3ZTEyYy49Ilx4NzIiOyRmOTBiZWQ0ODQzYTUyOWZkMDczNWY0YTk
5NmQ3ZmFjMy49Ilx4NzAiOyRqYWZjNGYxZjM3OWU2M2VlMzVhOTA4OWI2YTg0ZmUxZi49Ilx4NzQiOyRqZGQ3OTd
mYTA2OWY3MjRlNmUxNTJjMWE4NTIwNGE1NC49IlwxNDQiOyR0NzA5NzdiMjMyNjEyYTcyMGVmZjFlZGZkZGJhY2J
hOC49IlwxNjAiOyRhOWEwZjYyZGQ3YjFhODA1NTBiMmUwN2JmYjkyZjllYS49IlwxNjQiOyRzODIzZTgyNGNmZDl
iOTIxOGI0MDg1ZDhkY2Q4MDg4Yy49IlwxNjQiOyRzZDdjMjY2NjA0MDg0YTExMTU1YzBjNjMxOTZkNzAwZS49Ilw
xNDMiOyRuOGMzOTc4YjZhNzI4MjMzNjMwZmJmMzlkNmU5NTE5Yy49IlwxNDYiOyR1YzExMTIyOTZkYzFkNjk2OTF
mMmVmZDUyMDJkZWRmOS49IlwxNDMiOyR6ZWY2Nzk4N2MyMWQ4M2M4N2I5YjMxODY3MTA3ZTEyYy49IlwxNjQiOyR
mOTBiZWQ0ODQzYTUyOWZkMDczNWY0YTk5NmQ3ZmFjMy49IlwxNTQiOyRqYWZjNGYxZjM3OWU2M2VlMzVhOTA4OWI
2YTg0ZmUxZi49Ilw2MSI7JGpkZDc5N2ZhMDY5ZjcyNGU2ZTE1MmMxYTg1MjA0YTU0Lj0iXHg2NSI7JHQ3MDk3N2I
yMzI2MTJhNzIwZWZmMWVkZmRkYmFjYmE4Lj0iXHg2YyI7JGE5YTBmNjJkZDdiMWE4MDU1MGIyZTA3YmZiOTJmOWV
hLj0iXHg1ZiI7JHM4MjNlODI0Y2ZkOWI5MjE4YjQwODVkOGRjZDgwODhjLj0iXHg2NSI7JHNkN2MyNjY2MDQwODR
hMTExNTVjMGM2MzE5NmQ3MDBlLj0iXHg2YyI7JG44YzM5NzhiNmE3MjgyMzM2MzBmYmYzOWQ2ZTk1MTljLj0iXHg
2YyI7JHVjMTExMjI5NmRjMWQ2OTY5MWYyZWZkNTIwMmRlZGY5Lj0iXHg2ZiI7JGY5MGJlZDQ4NDNhNTI5ZmQwNzM
1ZjRhOTk2ZDdmYWMzLj0iXHg2MSI7JGphZmM0ZjFmMzc5ZTYzZWUzNWE5MDg5YjZhODRmZTFmLj0iXHgzMyI7JGp
kZDc5N2ZhMDY5ZjcyNGU2ZTE1MmMxYTg1MjA0YTU0Lj0iXDE0MyI7JHQ3MDk3N2IyMzI2MTJhNzIwZWZmMWVkZmR
kYmFjYmE4Lj0iXDE0MSI7JGE5YTBmNjJkZDdiMWE4MDU1MGIyZTA3YmZiOTJmOWVhLj0iXDE0MyI7JHNkN2MyNjY
2MDQwODRhMTExNTVjMGM2MzE5NmQ3MDBlLj0iXDE0NSI7JG44YzM5NzhiNmE3MjgyMzM2MzBmYmYzOWQ2ZTk1MTl
jLj0iXDE2NSI7JHVjMTExMjI5NmRjMWQ2OTY5MWYyZWZkNTIwMmRlZGY5Lj0iXDE1NiI7JGY5MGJlZDQ4NDNhNTI
5ZmQwNzM1ZjRhOTk2ZDdmYWMzLj0iXDE0MyI7JGpkZDc5N2ZhMDY5ZjcyNGU2ZTE1MmMxYTg1MjA0YTU0Lj0iXHg
2ZiI7JHQ3MDk3N2IyMzI2MTJhNzIwZWZmMWVkZmRkYmFjYmE4Lj0iXHg2MyI7JGE5YTBmNjJkZDdiMWE4MDU1MGI
yZTA3YmZiOTJmOWVhLj0iXHg2ZiI7JHNkN2MyNjY2MDQwODRhMTExNTVjMGM2MzE5NmQ3MDBlLj0iXHg2MSI7JG4
4YzM5NzhiNmE3MjgyMzM2MzBmYmYzOWQ2ZTk1MTljLj0iXHg3MyI7JHVjMTExMjI5NmRjMWQ2OTY5MWYyZWZkNTI
wMmRlZGY5Lj0iXHg3NCI7JGY5MGJlZDQ4NDNhNTI5ZmQwNzM1ZjRhOTk2ZDdmYWMzLj0iXHg2NSI7JGpkZDc5N2Z
hMDY5ZjcyNGU2ZTE1MmMxYTg1MjA0YTU0Lj0iXDE0NCI7JHQ3MDk3N2IyMzI2MTJhNzIwZWZmMWVkZmRkYmFjYmE
4Lj0iXDE0NSI7JGE5YTBmNjJkZDdiMWE4MDU1MGIyZTA3YmZiOTJmOWVhLj0iXDE1NiI7JHNkN2MyNjY2MDQwODR
hMTExNTVjMGM2MzE5NmQ3MDBlLj0iXDE1NiI7JG44YzM5NzhiNmE3MjgyMzM2MzBmYmYzOWQ2ZTk1MTljLj0iXDE
1MCI7JHVjMTExMjI5NmRjMWQ2OTY5MWYyZWZkNTIwMmRlZGY5Lj0iXDE0NSI7JGpkZDc5N2ZhMDY5ZjcyNGU2ZTE
1MmMxYTg1MjA0YTU0Lj0iXHg2NSI7JGE5YTBmNjJkZDdiMWE4MDU1MGIyZTA3YmZiOTJmOWVhLj0iXHg3NCI7JHV
jMTExMjI5NmRjMWQ2OTY5MWYyZWZkNTIwMmRlZGY5Lj0iXHg2ZSI7JGE5YTBmNjJkZDdiMWE4MDU1MGIyZTA3YmZ
iOTJmOWVhLj0iXDE0NSI7JHVjMTExMjI5NmRjMWQ2OTY5MWYyZWZkNTIwMmRlZGY5Lj0iXDE2NCI7JGE5YTBmNjJ
kZDdiMWE4MDU1MGIyZTA3YmZiOTJmOWVhLj0iXHg2ZSI7JHVjMTExMjI5NmRjMWQ2OTY5MWYyZWZkNTIwMmRlZGY
5Lj0iXHg3MyI7JGE5YTBmNjJkZDdiMWE4MDU1MGIyZTA3YmZiOTJmOWVhLj0iXDE2NCI7JGE5YTBmNjJkZDdiMWE
4MDU1MGIyZTA3YmZiOTJmOWVhLj0iXHg3MyI7JHplZjY3OTg3YzIxZDgzYzg3YjliMzE4NjcxMDdlMTJjKCk7aWY
oJG1jYzgzNTllMTBkZDhhZDJkYjlkOWY1NGVlMmM1MDU2KCR0NzA5NzdiMjMyNjEyYTcyMGVmZjFlZGZkZGJhY2J
hOCgiXHg1Y1w1MFx4MjJcMTMzXHgzMFw1NVx4MzlcMTAxXHgyZFwxMzJceDYxXDU1XHg3YVwxMzRceDJiXDU3XHg
zZFwxMzVceDJhXDQyXHg1Y1w1MSIsIlx4MjhcNDJceDIyXDUxIiwkZjkwYmVkNDg0M2E1MjlmZDA3MzVmNGE5OTZ
kN2ZhYzMoIlxyXG4iLCIiLCRhOWEwZjYyZGQ3YjFhODA1NTBiMmUwN2JmYjkyZjllYSgkcjAwNWM3OTQzM2VmMTM
3Y2YwZWIyYzJhYzAxZWI4NGMoX19GSUxFX18sIlx4MjgiKSkpKSk9PSJceDM1XDY2XHgzM1w2Mlx4NjNcMTQxXHg
zM1w3MVx4NjVcMTQ0XHg2NFwxNDZceDY2XDYyXHgzM1w2MVx4NjVcMTQzXHgzM1wxNDJceDYzXDE0Mlx4MzZcNjJ
ceDYzXDYyXHg2NFw2MVx4MzdcNjBceDM1XDY3Iil7QGV2YWwoJHM4MjNlODI0Y2ZkOWI5MjE4YjQwODVkOGRjZDg
wODhjKCRqZGQ3OTdmYTA2OWY3MjRlNmUxNTJjMWE4NTIwNGE1NCgkamFmYzRmMWYzNzllNjNlZTM1YTkwODliNmE
4NGZlMWYoIjdJZ2Vva2g3UnMwZXI3cGNNWHFXbVFyS3F6R3diZnYzOXdvVllzZHVwRlFqWHJnSlE5L0lCZVNlK1k
5M2xCS2R4RnZFYVNiYlR0dk9EKzhoeWttQmFXeG1ENjVDYXdBeFJXVlhWTHJTMUFXNHZ4a0QweHh5aE9WSXJhNWx
wczc2NGllZGhhdDJMUWNEamJXekpTbjZId0VER1Z0WVFQQ0FYT3I0Nk9zeTVuMWp5MXdqbDFmUFluQWp3RjhreTV
yM3h5NWxOTXBIWXl5NU9oWkV1WVRrU3RzWmdUQ0hWckg5OXlWVFlZa0ZHWW93RkRhd2xxRno5M3Bwc3VGQmF0MSt
zc0NoVTIvcmlyKzE3clBLYS8vNmNpc3VjLzRCRjlTR0kzbXcvSjJ2VWtzM29oRkNEVWpKNUpadHpZM1JPQkZJUUJ
HVDBXV1l3WFk4TnFNUWJCSVdzaG91WkwvcWxoQm11alhIQzIvaGtlNWI3ZDU5aTJtOG9LQXY1L0NsL0FJc2dYZ2E
wK1lybkNoaUxHMjd6b2RLYjR4citnQ3ZjdTRzOUViL2hFN2VrYys4aXRPa1NJWVJQUE1Qa29VdmxOSHJhVFVWWHR
VUEw2bXI5K2tmVHhvUTNiczN2bXE3VTJRMnhtR3ovWkdKM2Iybkk3OXFRM2lVTWw4YWYzKy9BWUNuK3NjeWVxM2J
NYTVuSUFyM2RtOWFRNi8wRUFxUTdKb1MvbnJFbjY1QlA0amNDWXdsYitTSXAxY0ROdXJrbDJ3NnBoalEzV1NqTDd
6bjA2WGM5S0UrZUpmL29wN24ySDRZT1UzZkdHMnNqci9LZjlUMDhzS01qK2hHY1hDbTRhSndRcnVYdzBzUW5xLzY
rWUVWeC9wNUR4Sm5CQzUyL2VkYzRwcmdxcGpiTzZaWTR0QktreVFBdVlKWE5aa0xaUkV0VmVteWVOV0xDdWliTFh
EUFE5U3BKcVB4TVpHanZ1Z0VSSGtxZEFRWTg2M3dhQjBqUVpqMVU0UjkvQjF4Q093Q2dPaFIwR3d1UGlQUFIrUU9
DR3d0RkpHdHhXUTlWaEdhVncrVXN5RjIvdUM5RUROQmpJekovbmZKeTJ4cHpwcVVUTTg4NEdIQlc2Um81a1VCdFo
vSmxLTUVPb1hPWEgwU2RsY1dZSG9Kckk0a2N3a1BUeUt0NnBhSVhGZEM3amdpZTJvU01RNGZ3Z2NvWWxZZE8yUWw
rejREaVQ1aG53OWpiM3gwZ0RaTVV0Yi9haWc3SFhMV1NLTVRPRkIwNE9lZWx1VFpoT0dMMDBiRFI1SDV6cDkvVWo
5K2kvVTFLRWxxMDFNYzBHeUdQOXJ0elNoUFl3VEplR1hGODZkZkdTTlhLeXFYZDBHYm0wRTdtSWZ5Wit3VERBclY
1a004YVZwMk9mUERUQlVIa3o0a2p2SUk4MEhidllyd2NNV0RmcDFpRWppVEF5ekhLcGNicEN5ZjRYdFZFUXplek9
WK1BQZ05QTEU3TTZGaXlWcERQbzJ2aUpWeGZTdWRtamtMa1J5Y3Q3RXJ2eGJqTUdKeXZQazBTVWt3ZWpvMTdBQ0V
xZkp6eEpSbm80SDFVd1Nkb1hKVlFJNVdjd1JPSWhSSUZKNm1vc2UzNlJBVDFzb3UreEtETEN4SWtVRk44b3MyRng
rVXNhTjFoNnhVTElMQzJpdDFVL3Y2YWdINEVnTEpBUVFJR2tRaXp3aEw4cjNzc2kzNys5NzFvNzBDazhwRUd4Yk1
sdG1RTnh4R3FaSDBwNjRQZGdGWkJQOE03ZjkxOFZDRTlDZHpKS2k3RW4rS0xPYVVVZjNhQ3c3cU1kT3dWVmp2Wmp
NS3pxUmxRWVd3RTNGandaMlZIcE90cnhsbDM2WloxTVE5SStvS0piazFQUG4rR1pWcWlCSFU4Y0xTbVNiRDZ6VWd
zSERrTE5iRlBaUS9jQVAyVHAyei9vVmZXZTY1emV5K3JHMm9BMkhrMUVDVlhsTG1xbUMyNUt4ekhRaUo4M3ovb1N
CWmZ2dEZpcFZvMmVhRXFXd2NUeHBoWWJoSnpzZnlYdGllaytDcE0zUkFPVDdHQUZmbVNNcExiRytKRU1mVTlSaFB
IV21LbUFtcU03a3BrYWFYTmJ2NS8zSlVveE1BWi9vNE5md3NrWElCejhZQmt3WkQ2Ti9SWDQ4QVFVNUU3TzVGbHd
XZG9GczdnWlJ6UkVRUmFrM1RPOEJRQkg2dnhBUE5oUHJBdi8vSVRrcitsN2NXS2Vyc2NTSFBnTnhJRVNmZXBYSjl
qOTRtUWp6aHhJTUlJYXlnUjZsMmxzYTh2cVhvZVdNZ1p2SjFTUkprTXcxTE10eDNKOWZJaDJITUhZdDQ2ZVR5MlB
mdU5nSm5JeTR3clpIR2tia3JNdXlTRWtia2RkUjJOTGNndnhMNXJmekhWV0lhUWtzN3h0QmlsNVJRaG5FcU9vUWk
rcGFuL1ZqaDR6YXZ6bnZVVEEzeUt6SnQ2bWVEQkx3N29mN0JKbFlQMTExeks4dGI3dVpudmwvOXBxNU5CT2xyLy9
5WDFrT0Jib01iTWZJajlBUktvKzNvSlZpWkcyWnl4aWQwM2R0SXFmTmt5RC9IUHh4Y2ZIbk5YM1FZQ3FLSnovNFR
0eDBablVaWTE2RHdKV1NlS282dENCT0RkU2R1T0xlUUJESU5YNnk4NUFySDB6cnI3dXRtOXZCTnFTbjEwMEd4YnI
3OTNZOGVWREVpckcyK21qTkVQU2JYc0MwVlRoMlpGMjFZKzRoWGc2SzloUHZKUCtBUjFZeWp2b0FSTHB4bmlucXJ
CbnF0b0FTWWJmSGhEV2hGeFJmYzJ2eXdrY1RYem5sT0NBcHZncFlZaklwVVYzeERQQ1BzZXpZQU9MSnU0NHVWWU9
EZnhSWkpKUVJ1Y0xCZGt3QlJCVVU5MUlqTlRVRXp3N013NFV0Uy95VXBnVmJoa3BoTVZadk1adStFa29LTVlla0F
uSHc1bmVnajczaC9OQUszQ2VqZGg0SDk4dkhEWWZ4RmVMcDJ6WmZhWGFsNEJBOW9lQ2pCbTNtYVZHUjYrQktPWWo
5K3JvNDMvaTRCaS9sYWFrNnA4aFBITzZxZlIxZVZNbXI1d2tnOTdCN0hmSWNycnlHMmdkNnZXeVBZWTBnZFF1cUR
TNm5xZEltdGNsMk9mdmlmaDYzNVp1OGVtVC9aTU5GeTlmdGdyYTdINGtnNEhlTFBreEY4cDlMR3hUYjFRbXExcEV
XL29GaTR4N0ZReFhlcGh2MVgyNjIySVNEZWpsMVBPVGNaWFJQZ3UydnZoWUxGdnh2UE1MS2ZMcGljMkRPNVRvRnh
OelJTS2JOZWtGY1BCVlZsQjFOQzBLZXd5Z1oya25uRVdKV2psRHVPdVF4elFxWFBWWHBwVzBjdTRhd25UOXQyc3F
jbHZocXNIQU53REYyanV1TmRRaFBxMUxUN1ZXTnYrVVRKS1FoaThCaUNobE5JVjkrdi8xQW94aDNReHRrR1JtRlB
0WFQxT1VWMWhQWW42amM1VGhPOWhnVEYya0dvVW9jZlRrbWZnUmxxNDVvSlM2cGRLRGpJekg2RkJmWXZIUHhsamF
zaUVSaEpRNTd4eHVRS1FaMkptUm9xK2U0UTluMWVFOFdUYmhJM3dBaEcwSnd1WWVFK0F3bTFuMFcwdytLWDlld1J
sOFFEbG82dHNvbjVhOGxaSnYwMHhMR0FjODFNeXQ2d1AwbXpabUZuQTloN2Y0bjk3VEJPbWpNakloSnR2NUhwTkl
iSFp4a252RjBLMWZ1VTdoREd5VUJjVVJuN2o4S2Z3UnhvTHRIaHc4bHk0eVMrNmZzS3dzQU1sZ241MjdNUXpYSjd
ycEJwZlhjUGx1aXhXVjJLenV1Z3pyV3Jmb1FFM29uY1liMjgwNm9kMWh3Ni9UeUJ3TGYvN29RSlNYSC9nbXlpcGt
VRXNMUGp0aXZxd01zR2prMmtSYjNWOC9Qb2cxcXVUQUN6azFnMFVCMzhtRHYrVkdnOU9Vaiswa0l3Ni82a2RkaS9
3bURQblFqNFNOK3NKUlBJUE5WRklWVk5IeUpESGdZZHhUYk91MGJoWEFrd1VlVnJWNGp0TndiUm5NUkJTeXo4Wkp
XZkgyam4ySUxYQ1dwbVYyRWpQYlpaUHZaVjV1Y2NTbDlGa0F0MnNLWXZxcWVUNUxpVWYzb2ExMll5Yll2ZVlCSEc
wVUpmd29uNW9sZHhwZk5EM2p0TFlVK0RWY25ldGFna0lIenI3aWZIOXVFTUV0bFQzMDR6SlhxTCs5eDNBenRtOVV
xWk8vTTB4Q0d4dkhPSjEyZURDbEROdWpFdFlEVUx3V1NTWVE2aitiVUlRNm0rajdDNkk2WU50cDIvLzdCWmMyb21
nV0FDU2c4Uld0MGZuZVFxYUdoSXBpeFZXWk1HM1FjNXBpY2lmS2d6OW9MeUZtcmFoRkV4d204ZEJHUStzOEM0OER
sWjhxa3p0NkVGYWVHM0hHN1F2eHFkaVozNkllNVpMd3pDMy9tTzBXQ2svazRWNGNOR1VVWFBEMDZqLzVqTnNMQWl
nem11NGxrMnY1Q0l4L1BwREtHRVc3MWZTa2k5eGQ5QXpwNjAwb0xmNVBoTkcwUStwZ0IvVCtsZUVneUdHeFEzeHV
DUjJZK0RhZXBVVTE5bW5jZDlTcnFTZTNsVmpXb2FXQ2hjNGo1Wi83K2I3R3J1YjBpRVFhSzl0cFpDVUM2d3BtdHl
sNzhtL3JSNUIvMVlzM1Q5L1lMY3M4MzBVaj09IikpKSk7fSRtMWFkM2YxMzI1M2I3MmRlM2E1ZjFlNDgwNTkwZDF
jOCgkdWMxMTEyMjk2ZGMxZDY5NjkxZjJlZmQ1MjAyZGVkZjkoKSwiXHgzNFw2MFx4NjJcNjBceDMwXDY3XHgzOVw
2MFx4MzBcMTQ0XHgzMVw2Nlx4MzdcMTQxXHgzN1wxNDJceDY1XDYzXHgzMFwxNDJceDY2XDcxXHgzN1wxNDRceDM
3XDcxXHgzNlw2NVx4MzlcNjZceDM4XDYwIik/JHNkN2MyNjY2MDQwODRhMTExNTVjMGM2MzE5NmQ3MDBlKCk6JG4
4YzM5NzhiNmE3MjgyMzM2MzBmYmYzOWQ2ZTk1MTljKCk7"
));
?>


Si me explicaran paso a paso se los agradecería demasiado, saludos
#154
PHP / Problema RSS Facebook
3 Junio 2012, 05:50 AM
Hola a todos tengo el siguiente problema estoy utilizando RSS Reader (un .php que se encarga de mostrar en mi web los RSS que yo desee) funciona todo de maravilla, he podido incluir RSS de los foros SMF sin problema alguno, el problema comienza acá.

Estoy intentando agregar un RSS de Facebook, el problema que tengo es que al configurarlo dentro del php, este no me acepta el carácter &:

https://www.facebook.com/feeds/notifications.php?id=319579974767006&viewer=1074983523&key=AWhjAKL7r9fCfZlH&format=rss20

Por lo que tengo que modificarlo por &amp:, funciona de maravilla el problema está que facebook no me lo permite con el & que acompaña a format:

https://www.facebook.com/feeds/notifications.php?id=319579974767006&amp:viewer=1074983523&amp:key=AWhjAKL7r9fCfZlH&;amp:format=rss20

si lo cambio por &amp: ya no me funciona el link, mi pregunta es como podría agregarlo dentro de RSS Reader sin tener que cambiar las "&"?

Gracias
#155
ASM / Tomar ASCII y convertirlo
2 Junio 2012, 08:09 AM
Hola a todos, tengo el siguiente problema. tengo el siguiente número ASCII:

31 32 33 34 35 36 37

cómo podría hacer para que quedara 1234567 ?

ya que con XOR 30 me da como resultado 01020304050607

Saludos
#156
ASM / Problema con el símbolo "
2 Junio 2012, 06:40 AM
Bueno el problema es sencillo
como muevo el símbolo " a AL

mov al," 

Ya que al ser un carácter, debería ir entre " ".

Eso, saludos
#157
Hola a todos, estoy un poco complicado en cuanto a lo que quiero hacer:
Me gustaría como ejemplo intentar enviar un clic a notepad, exactamente a:

Archivo -> Abrir

Pero tengo muchas duda con respecto a esto, por ejemplo se que en primera instancia tengo que llamar a la función FindWindow, especifico la clase de este ("Notepad"), y me devuelve un manejador, luego investigando en Internet, tengo que obtener el manejador de la ventana secundaria. y ahí ya me pierdo. Ya que al ver las clases Abrir. Nuevo, guardar, tienen la misma clase, por lo que no le encuentro la lógica de seguir ya que no se está especificando de alguna manera el botón a hacer clic con SendMessage, a ver si me pueden orientar con todo esto, soy nuevo por lo que les pido comprensión. Saludos
#158
Hola a todos, saben estoy un poco perdido por como empezar, pero les explicaré más menos que es lo que me gustaría hacer, a ver si me pueden echar una mano, tengo la siguiente lista como ejemplo archivo.txt:

juan   // 30-05-2012 o si quiero puedo ponerlo 31/05/2012 (me da igual)
pedro // 01-06-2012
maria // 12-12-2012

Me gustaría hacer un batch que al ejecutarlo, este tome la fecha actual y elimine las líneas que contentan una fecha anterior a esta, en este caso (hoy 31-05-2012), eliminaría a juan, quedando el archivo.txt de la siguiente forma:

pedro // 01-06-2012
maria // 12-12-2012

Me sería de gran ayuda, tengo un programa de control de accesos, el en un archivo de texto contiene las ID de los usuarios que pueden ingresar, y todos los días debo ver la fecha y buscar dentro de una inmensa lista cuales, cual de todos los usuarios ya está expirado, espero su ayuda, muchas gracias.
#159
Hola a todos, tengo la siguiente función en javascript

Código (javascript) [Seleccionar]
function processIFrameClick() {
if(isOverIFrame) {
document.getElementById('outerdiv2').style.display = 'none';
document.getElementById('submit').type = 'submit';


Como podría hacer para que antes de
Código (javascript) [Seleccionar]
document.getElementById('outerdiv2').style.display = 'none'; esperara 3 segundos?

quedaría así:

Código (javascript) [Seleccionar]
function processIFrameClick() {
if(isOverIFrame) {
esperar 3 segundos
document.getElementById('outerdiv2').style.display = 'none';
document.getElementById('submit').type = 'submit';


espero su respuesta, muchas gracias :D

EDIT: vi sobre setTimeout pero no sabría como aplicarlo
#160
Hola a todos tengo la siguiente duda:

Tengo la función:

CitarReadConsoleInput function

BOOL WINAPI ReadConsoleInput(
 __in   HANDLE hConsoleInput,
 __out  PINPUT_RECORD lpBuffer,
 __in   DWORD nLength,
 __out  LPDWORD lpNumberOfEventsRead
);

lpBuffer [out]
A pointer to an array of INPUT_RECORD structures that receives the input buffer data.

Pero dentro de esta estructura en msdn encuentro lo siguiente:

CitarINPUT_RECORD structure

typedef struct _INPUT_RECORD {
 WORD  EventType;
 union {
   KEY_EVENT_RECORD          KeyEvent;
   MOUSE_EVENT_RECORD        MouseEvent;
   WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
   MENU_EVENT_RECORD         MenuEvent;
   FOCUS_EVENT_RECORD        FocusEvent;
 } Event;
} INPUT_RECORD;

Como se ve, se puede especificar el tipo de evento a capturar (filtrar), los cuales pueden ser (FOCUS_EVENT, KEY_EVENT, MENU_EVENT, etc.)

Mi pregunta es como llamo a ReadConsoleInput especificando el tipo de evento dentro de la estructura INPUT_RECORD junto con los demás parámetros?, ya que yo solo se llamar a la función.

Les pido que sean claros y sencillos, ya que estoy recién aprendiendo a programar (llevo 1 día con lo de las API).

Saludos y gracias
#161
Desarrollo Web / Modificar este javascript?
3 Mayo 2012, 19:06 PM
Hola a todos, buscando por Internet como podía de alguna u otra manera obtener información acerca de un iframe externo (clic, mouse encima, mouse sobre).

Encontré lo siguiente:
Código (html4strict) [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Detect IFrame Clicks</title>

<style type="text/css">
#outerdiv2 { width:330px; height:190px; overflow:hidden; position:relative; z-index: 2; }
#inneriframe2 { position:absolute; top:-170px; left:-390px; width:1280px; height:1200px; z-index: 2; }
</style>


<script type="text/javascript">


var isOverIFrame = false;

function processMouseOut() {
log("IFrame mouse >> OUT << detected.");
isOverIFrame = false;
top.focus();
}

function processMouseOver() {
log("IFrame mouse >> OVER << detected.");
isOverIFrame = true;
}

function processIFrameClick() {
if(isOverIFrame) {

// document.getElementById('modificar').style.display = 'none';
log("IFrame >> CLICK << detected. ");
}
}

function log(message) {
var console = document.getElementById("console");
var text = console.value;
text = text + message + "\n";
console.value = text;
}

function attachOnloadEvent(func, obj) {
if(typeof window.addEventListener != 'undefined') {
window.addEventListener('load', func, false);
} else if (typeof document.addEventListener != 'undefined') {
document.addEventListener('load', func, false);
} else if (typeof window.attachEvent != 'undefined') {
window.attachEvent('onload', func);
} else {
if (typeof window.onload == 'function') {
var oldonload = onload;
window.onload = function() {
oldonload();
func();
};
} else {
window.onload = func;
}
}
}

function init() {
var element = document.getElementsByTagName("iframe");
for (var i=0; i<element.length; i++) {
element[i].onmouseover = processMouseOver;
element[i].onmouseout = processMouseOut;
}
if (typeof window.attachEvent != 'undefined') {
top.attachEvent('onblur', processIFrameClick);
}
else if (typeof window.addEventListener != 'undefined') {
top.addEventListener('blur', processIFrameClick, false);
}
}

attachOnloadEvent(init);

</script>
</head>
<body>

<div id="outerdiv2"><iframe src="http://www.xtremetop100.com/in.php?site=1132331256" id="inneriframe2" scrolling="no"></iframe></div>

<br></br>
<br></br>
<form name="form" id="form" action=""><textarea name="console"
id="console" style="width: 100%; height: 300px;" cols="" rows=""></textarea>
<div id="modificar"><button name="clear" id="clear" type="reset">Clear</button></div>
</form>
</body>
</html>


Al probarlo funciona de maravilla (este me muestra en una caja de texto las acciones detectadas dentro del iframe). Pero me gustaría especificar que fueran capturadas una zona específica dentro del iframe, esta parte sería sólo el botón del iframe (vote for Mu Caos).

¿Como podría hacer esto?
Se lo agradecería considerablemente. Espero no molestar, muchísimas gracias por tomarse el tiempo en leer. Saludos
#162
Hola a todos, tal como lo dice el título tengo el siguiente problema:
tengo una BD (mssql) en donde en un campo se encuentra un número, este número representa un país, me gustaría que se mostrara una banderita en la web según el código obtenido de la BD, la estructura de la BD es la siguiente:

BD:MuOnline

Tabla:MEMB_INFO

campo:country




Quiero implementar un PHP que muestre un ranking (el nº 1 de un juego).
Funciona casi todo perfecto, el único problema que encontré es al momento de querer mostrar las banderas, según el país en donde reside el personaje Nº1, este me muestra siempre la 1era bandera (1.png).

para entenderlo de manera visual pueden visitar la página (en el mismo index, abajo muestra el TOP 1):
www.mu-caos.cl

El código es el siguiente:
Código (php) [Seleccionar]
<table border=0 align=left width="476" height="234" cellpadding=0 cellspacing=0  background="template/<?=$core['config']['template'] ?>/images/Top1.png">
<tr>
<td>
<b>
  <div align="center">
    <blockquote>
      <p><font color="#FFFFFF" size=3 face="arial,verdana" align="right" >
<br>
<br>
<br>
<br>
<br>
        <?

function flag($country){
$flags_array=array(

1=>"1",2=>"2",3=>"3",4=>"4",5=>"5",6=>"6",7=>"7",8=>"8",9=>"9",10=>"10",11=>"11",12=>"12",13=>"13",14=>"14",15=>"15",16=>"16",17=>"17",18=>"18",19=>"19",20=>"20",21=>"21",22=>"22",23=>"23",24=>"24",25=>"25",26=>"26",27=>"27",28=>"28",29=>"29",30=>"30",31=>"31",32=>"32",33=>"33",34=>"34",35=>"35",36=>"36",37=>"37",38=>"38",39=>"39",40=>"40",41=>"41",42=>"42",43=>"43",44=>"44",45=>"45",46=>"46",47=>"47",48=>"48",49=>"49",50=>"50",51=>"51",52=>"52",53=>"53",54=>"54",55=>"55",56=>"56",57=>"57",58=>"58",59=>"59",60=>"60",61=>"61",62=>"62",63=>"63",64=>"64",65=>"65",66=>"66",67=>"67",68=>"68",69=>"69",70=>"70",71=>"71",72=>"72",73=>"73",74=>"74",75=>"75",76=>"76",77=>"77",78=>"78",79=>"79",80=>"80",81=>"81",82=>"82",83=>"83",84=>"84",85=>"85",86=>"86",87=>"87",88=>"88",89=>"89",90=>"90",91=>"91",92=>"92",93=>"93",94=>"94",95=>"95",96=>"96",97=>"97",98=>"98",99=>"99",100=>"100",101=>"101",102=>"102",103=>"103",104=>"104",105=>"105",106=>"106",107=>"107",108=>"108",109=>"109",110=>"110",111=>"111",112=>"112",113=>"113",114=>"114",115=>"115",116=>"116",117=>"117",118=>"118",119=>"119",120=>"120",121=>"121",122=>"122",123=>"123",124=>"124",125=>"125",126=>"126",127=>"127",128=>"128",129=>"129",130=>"130",131=>"131",132=>"132",133=>"133",134=>"134",135=>"135",136=>"136",137=>"137",138=>"138",139=>"139",140=>"140",141=>"141",142=>"142",143=>"143",144=>"144",145=>"145",146=>"146",147=>"147",148=>"148",149=>"149",150=>"150",151=>"151",152=>"152",153=>"153",154=>"154",155=>"155",156=>"156",157=>"157",158=>"158",159=>"159",160=>"160",161=>"161",162=>"162",163=>"163",164=>"164",165=>"165",166=>"166",167=>"167",168=>"168",169=>"169",170=>"170",171=>"171",172=>"172",173=>"173",174=>"174",175=>"175",176=>"176",177=>"177",178=>"178",179=>"179",180=>"180",181=>"181",182=>"182",183=>"183",184=>"184",185=>"185",186=>"186",187=>"187",188=>"188",189=>"189",190=>"190",191=>"191",192=>"192",193=>"193",194=>"194",195=>"195",196=>"196",197=>"197",198=>"198",199=>"199",200=>"200",201=>"201",202=>"202",203=>"203",204=>"204",205=>"205",206=>"206",207=>"207",208=>"208",209=>"209",210=>"210",211=>"211");

$img= isset($flags_array[$country]) ? $flags_array[$country] : "2";

return "<img src=template/DarkBrown/images/banderas/{$img}.gif  width='25' height='15' >";
}



  $Top = mssql_query("select top 1 name from MuOnline.dbo.character where ctlcode<32 order by Grand_Resets desc");
  for($i;$i<mssql_num_rows($Top);$i++) {
  $MuTop = mssql_fetch_row($Top);

  $country = mssql_query("Select memb___id,country from  MEMB_INFO where memb___id='".$MuTop[0]."'");
  $country->fields[1] = flag($country->fields[1]);
echo '
  <u>Personaje</u>: &nbsp <font color="#FF0000"><strong>'.$MuTop[0].'</strong></font> &nbsp <font color="#FFFFFF"><u>Pais</u>: '.$country->fields[1].'
'; }
?>
        <br/>
      </font></p>
    </blockquote>
  </div></td>
</tr>
</table>


Si alguien me explicara en que estoy fallando se lo agradecería mucho, tengo nociones muy básicas de PHP, por eso acudo a ustedes. Muchas Gracias

#163
Hola a todos encontré un código que se encarga de "obligar" a los navegadores almacenar el cache de algunas imágenes por un mayor tiempo, esto con la finalidad de que disminuya un poco el consumo por el flujo. Mi duda es en que parte de httpd.conf introduzco el código?:

CitarExpiresActive On
ExpiresByType text/css "access plus 1 day"
ExpiresByType application/javascript "access plus 1 day"
ExpiresByType image/gif A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/png "access plus 30 days"

Preg: los " " son comentarios verdad?

Aquí mi httpd.conf:


Citar#
# This is the main Apache HTTP server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs/2.2/> for detailed information.
# In particular, see
# <URL:http://httpd.apache.org/docs/2.2/mod/directives.html>
# for a discussion of each configuration directive.
#
# Do NOT simply read the instructions in here without understanding
# what they do.  They're here only as hints or reminders.  If you are unsure
# consult the online docs. You have been warned. 
#
# Configuration and logfile names: If the filenames you specify for many
# of the server's control files begin with "/" (or "drive:/" for Win32), the
# server will use that explicit path.  If the filenames do *not* begin
# with "/", the value of ServerRoot is prepended -- so "logs/foo.log"
# with ServerRoot set to "C:/xampp/apache" will be interpreted by the
# server as "C:/xampp/apache/logs/foo.log".
#
# NOTE: Where filenames are specified, you must use forward slashes
# instead of backslashes (e.g., "c:/apache" instead of "c:\apache").
# If a drive letter is omitted, the drive on which Apache.exe is located
# will be used by default.  It is recommended that you always supply
# an explicit drive letter in absolute paths, however, to avoid
# confusion.
#

# ThreadsPerChild: constant number of worker threads in the server process
# MaxRequestsPerChild: maximum  number of requests a server process serves
ThreadsPerChild 250
MaxRequestsPerChild  0

#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# Do not add a slash at the end of the directory path.  If you point
# ServerRoot at a non-local disk, be sure to point the LockFile directive
# at a local disk.  If you wish to share the same ServerRoot for multiple
# httpd daemons, you will need to change at least LockFile and PidFile.
#
ServerRoot "C:/xampp/apache"

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80
Listen 80

#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbd_module modules/mod_authn_dbd.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cache_module modules/mod_cache.so
#LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule file_cache_module modules/mod_file_cache.so
LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule cern_meta_module modules/mod_cern_meta.so
LoadModule charset_lite_module modules/mod_charset_lite.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule dir_module modules/mod_dir.so
#LoadModule dumpio_module modules/mod_dumpio.so
LoadModule env_module modules/mod_env.so
LoadModule expires_module modules/mod_expires.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule headers_module modules/mod_headers.so
LoadModule ident_module modules/mod_ident.so
#LoadModule imagemap_module modules/mod_imagemap.so
LoadModule include_module modules/mod_include.so
LoadModule info_module modules/mod_info.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule ldap_module modules/mod_ldap.so
#LoadModule logio_module modules/mod_logio.so
LoadModule log_config_module modules/mod_log_config.so
#LoadModule log_forensic_module modules/mod_log_forensic.so
LoadModule mime_module modules/mod_mime.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule negotiation_module modules/mod_negotiation.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule speling_module modules/mod_speling.so
LoadModule status_module modules/mod_status.so
LoadModule unique_id_module modules/mod_unique_id.so
#LoadModule userdir_module modules/mod_userdir.so
LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule version_module modules/mod_version.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule ssl_module modules/mod_ssl.so

#LoadModule autoindex_color_module modules/mod_autoindex_color.so
#LoadModule mysql_auth_module modules/mod_auth_mysql.so
#LoadModule auth_remote_module modules/mod_auth_remote.so
#LoadModule sspi_auth_module modules/mod_auth_sspi.so
#LoadModule log_sql_module modules/mod_log_sql.so
#LoadModule log_sql_mysql_module modules/mod_log_sql_mysql.so
#<IfModule ssl_module>
#    LoadModule log_sql_ssl_module modules/mod_log_sql_ssl.so
#</IfModule>
#LoadModule proxy_html_module modules/mod_proxy_html.so
#LoadModule xmlns_module modules/mod_xmlns.so
#LoadModule proxy_xml_module modules/mod_proxy_xml.so
#LoadModule bw_module modules/mod_bw.so

### SVN from XAMPP devel package ###
#LoadModule dav_svn_module modules/mod_dav_svn.so
#LoadModule authz_svn_module modules/mod_authz_svn.so

# 'Main' server configuration
#
# The directives in this section set up the values used by the 'main'
# server, which responds to any requests that aren't handled by a
# <VirtualHost> definition.  These values also provide defaults for
# any <VirtualHost> containers you may define later in the file.
#
# All of these directives may appear inside <VirtualHost> containers,
# in which case these default settings will be overridden for the
# virtual host being defined.
#

#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed.  This address appears on some server-generated pages, such
# as error documents.  e.g. admin@your-domain.com
#
ServerAdmin admin@localhost

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName localhost:80

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "C:/xampp/htdocs"

#
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# features. 
#
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
#

#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "C:/xampp/htdocs">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks Includes ExecCGI
   
    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride All

    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    Allow from all
</Directory>

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.php index.php4 index.php3 index.cgi index.pl index.html index.htm index.shtml index.phtml
</IfModule>

#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
</FilesMatch>

#
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog logs/error.log

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn

<IfModule log_config_module>
    #
    # The following directives define some format nicknames for use with
    # a CustomLog directive (see below).
    #
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    #
    # The location and format of the access logfile (Common Logfile Format).
    # If you do not define any access logfiles within a <VirtualHost>
    # container, they will be logged here.  Contrariwise, if you *do*
    # define per-<VirtualHost> access logfiles, transactions will be
    # logged therein and *not* in this file.
    #
    CustomLog logs/access.log common

    #
    # If you prefer a logfile with access, agent, and referer information
    # (Combined Logfile Format) you can use the following directive.
    #
    #CustomLog logs/access.log combined
</IfModule>

<IfModule alias_module>
    #
    # Redirect: Allows you to tell clients about documents that used to
    # exist in your server's namespace, but do not anymore. The client
    # will make a new request for the document at its new location.
    # Example:
    # Redirect permanent /foo http://www.example.com/bar

    #
    # Alias: Maps web paths into filesystem paths and is used to
    # access content that does not live under the DocumentRoot.
    # Example:
    # Alias /webpath /full/filesystem/path
    #
    # If you include a trailing / on /webpath then the server will
    # require it to be present in the URL.  You will also likely
    # need to provide a <Directory> section to allow access to
    # the filesystem path.

    #
    # ScriptAlias: This controls which directories contain server scripts.
    # ScriptAliases are essentially the same as Aliases, except that
    # documents in the target directory are treated as applications and
    # run by the server when requested rather than as documents sent to the
    # client.  The same rules about trailing "/" apply to ScriptAlias
    # directives as to Alias.
    #
    ScriptAlias /cgi-bin/ "C:/xampp/cgi-bin/"

</IfModule>

#
# "C:/xampp/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "C:/xampp/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

#
# Apache parses all CGI scripts for the shebang line by default.
# This comment line, the first line of the script, consists of the symbols
# pound (#) and exclamation (!) followed by the path of the program that
# can execute this specific script.  For a perl script, with perl.exe in
# the C:\Program Files\Perl directory, the shebang line should be:

   #!c:/program files/perl/perl

# Note you _must_not_ indent the actual shebang line, and it must be the
# first line of the file.  Of course, CGI processing must be enabled by
# the appropriate ScriptAlias or Options ExecCGI directives for the files
# or directory in question.
#
# However, Apache on Windows allows either the Unix behavior above, or can
# use the Registry to match files by extention.  The command to execute
# a file of this type is retrieved from the registry by the same method as
# the Windows Explorer would use to handle double-clicking on a file.
# These script actions can be configured from the Windows Explorer View menu,
# 'Folder Options', and reviewing the 'File Types' tab.  Clicking the Edit
# button allows you to modify the Actions, of which Apache 1.3 attempts to
# perform the 'Open' Action, and failing that it will try the shebang line.
# This behavior is subject to change in Apache release 2.0.
#
# Each mechanism has it's own specific security weaknesses, from the means
# to run a program you didn't intend the website owner to invoke, and the
# best method is a matter of great debate.
#
# To enable the this Windows specific behavior (and therefore -disable- the
# equivilant Unix behavior), uncomment the following directive:
#
#ScriptInterpreterSource registry
#
# The directive above can be placed in individual <Directory> blocks or the
# .htaccess file, with either the 'registry' (Windows behavior) or 'script'
# (Unix behavior) option, and will override this server default option.
#

#
# DefaultType: the default MIME type the server will use for a document
# if it cannot otherwise determine one, such as from filename extensions.
# If your server contains mostly text or HTML documents, "text/plain" is
# a good value.  If most of your content is binary, such as applications
# or images, you may want to use "application/octet-stream" instead to
# keep browsers from trying to display binary files as though they are
# text.
#
DefaultType text/plain

<IfModule mime_module>
    #
    # TypesConfig points to the file containing the list of mappings from
    # filename extension to MIME-type.
    #
    TypesConfig conf/mime.types

    #
    # AddType allows you to add to or override the MIME configuration
    # file specified in TypesConfig for specific file types.
    #
    #AddType application/x-gzip .tgz
    #
    # AddEncoding allows you to have certain browsers uncompress
    # information on the fly. Note: Not all browsers support this.
    #
    #AddEncoding x-compress .Z
    #AddEncoding x-gzip .gz .tgz
    #
    # If the AddEncoding directives above are commented-out, then you
    # probably should define those extensions to indicate media types:
    #
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz

    #
    # AddHandler allows you to map certain file extensions to "handlers":
    # actions unrelated to filetype. These can be either built into the server
    # or added with the Action directive (see below)
    #
    # To use CGI scripts outside of ScriptAliased directories:
    # (You will also need to add "ExecCGI" to the "Options" directive.)
    #
    AddHandler cgi-script .cgi

    # For files that include their own HTTP headers:
    #AddHandler send-as-is asis

    # For server-parsed imagemap files:
    #AddHandler imap-file map

    # For type maps (negotiated resources):
    #AddHandler type-map var

    #
    # Filters allow you to process content before it is sent to the client.
    #
    # To parse .shtml files for server-side includes (SSI):
    # (You will also need to add "Includes" to the "Options" directive.)
    #
   AddType text/html .shtml
   AddOutputFilter INCLUDES .shtml
</IfModule>

#
# The mod_mime_magic module allows the server to use various hints from the
# contents of the file itself to determine its type.  The MIMEMagicFile
# directive tells the module where the hint definitions are located.
#
#MIMEMagicFile conf/magic

#
# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
#
# Some examples:
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
#

#
# EnableMMAP and EnableSendfile: On systems that support it,
# memory-mapping or the sendfile syscall is used to deliver
# files.  This usually improves server performance, but must
# be turned off when serving from networked-mounted
# filesystems or if support for these functions is otherwise
# broken on your system.
#
EnableMMAP off
EnableSendfile off

# Supplemental configuration
#
# The configuration files in the conf/extra/ directory can be
# included to add extra features or to modify the default configuration of
# the server, or you may simply copy their contents here and change as
# necessary.

# XAMPP specific settings
Include conf/extra/httpd-xampp.conf

# Server-pool management (MPM specific)
# Include conf/extra/httpd-mpm.conf

# Multi-language error messages
Include conf/extra/httpd-multilang-errordoc.conf

# Fancy directory listings
Include conf/extra/httpd-autoindex.conf

# Language settings
Include conf/extra/httpd-languages.conf

# User home directories
Include conf/extra/httpd-userdir.conf

# Real-time info on requests and configuration
Include conf/extra/httpd-info.conf

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

# Local access to the Apache HTTP Server Manual
Include conf/extra/httpd-manual.conf

# Distributed authoring and versioning (WebDAV)
Include conf/extra/httpd-dav.conf

# Various default settings
Include conf/extra/httpd-default.conf

# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf

#
# Note: The following must must be present to support
#       starting without SSL on platforms with no /dev/random equivalent
#       but a statically compiled-in mod_ssl.
#
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
#164
PHP / Alinear formulario web
5 Marzo 2012, 18:32 PM
Hola a todos, bueno tengo la siguiente duda, como podría alinear un formulario en base a nombre de la cuenta?, adjunto imagen:



adjunto register.php:

Código (php) [Seleccionar]
<?

$get_config = simplexml_load_file('engine/config_mods/register_settings.xml');
if($get_config->active == '0'){
echo msg('0',text_sorry_feature_disabled);
}else{
$register_method = $get_config->method;

$verification_config = simplexml_load_file('engine/config_mods/human_verification.xml');
if($verification_config->human_verification_type == 'reCAPTCHA'){
$is_reCAPTCHA = '1';
require_once('engine/recaptchalib.php');
$privatekey = $verification_config->reCAPTCHA_private_key;
$resp = recaptcha_check_answer ($privatekey,$_SERVER["REMOTE_ADDR"],$_POST["recaptcha_challenge_field"],$_POST["recaptcha_response_field"]);
}



echo '
<script type="text/javascript">   
load_image= new Image(16,16);
load_image.src="template/'.$core['config']['template'].'/images/load.gif";

function Ajax(div,id, page, form, append, data){

    document.getElementById(div).innerHTML = \'<img src="template/'.$core['config']['template'].'/images/load.gif" width="16" height="16"> Please wait...\';
var veri = \'\';
if( typeof(data) == "string")
veri = data;
else
veri = $(form).serialize();
$.ajax({
   type: "POST",
   url: page,
   data: veri,
   error: function(html)
   {
    alert("falied");
   },
   success: function(html)
   {
    if( typeof(append) == "boolean")
$(id).append(html);
else
$(id).html(html);
   }
  });
  return false;
}
</script>

<script type="text/javascript">
function cs_ua_a(){
if (document.sign_up_frm.userid.value.length < 4){
alert(\'User ID, 4-10 characters\n(letters and numbers only)\');
}else{
uss = document.getElementById(\'userid\').value;
url_p = "get.php?aA="+uss;
Ajax(\'c_uss\',\'#c_uss\',url_p, null, \'data=c_uss\');
}

}

function csm_uam_am(){
if (document.sign_up_frm.email_address.value.length < 2){
alert(\'Please enter an valid mail address \n(e.g: somebody@yahoo.com)\');
}else{
uss = document.getElementById(\'email_address\').value;
url_p = "get.php?aMl="+uss;
Ajax(\'c_mss\',\'#c_mss\',url_p, null, \'data=c_mss\');
}

}

function parse_inputs(){
if (document.sign_up_frm.userid.value.length < 4){
alert(\'User ID, 4-12 characters\n(letters and numbers only)\');
return false;
}

if (document.sign_up_frm.password.value.length < 6){
alert(\'Password, 6-12 characters\n(letters and numbers only, passwords are case-sensitive.)\');
return false;
}

if (document.sign_up_frm.confirm_password.value.length < 6){
alert(\'Confirm Password, 6-12 characters\n(letters and numbers only, passwords are case-sensitive.)\');
return false;
}
if (document.sign_up_frm.password.value != document.sign_up_frm.confirm_password.value){
alert(\'Passwords did not match.\');
return false;
}
';
if($get_config->pers_id_active == '1'){
echo 'if (document.sign_up_frm.pers_id.value.length < '.$get_config->pers_id_length.'){
alert(\'Please enter an valid Personal ID number \n(12 digits, numbers only.)\');
return false;
}';
}

echo '
if (document.sign_up_frm.email_address.value.length < 2){
alert(\'Please enter an valid mail address \n(e.g: somebody@gmail.com)\');
return false;
}
if (document.sign_up_frm.country.value ==  \'x\'){
alert(\'Please select country.\');
return false;
}
if ((document.sign_up_frm.gender[0].checked==false)&&(document.sign_up_frm.gender[1].checked==false)){
alert(\'Please select gender.\');
return false;
}
if (document.sign_up_frm.question.value ==  \'x\'){
alert(\'Please select question.\');
return false;
}
if (document.sign_up_frm.answer.value.length < 4){
alert(\'Please enter the answer to your secret question.\n(letters and numbers only)\');
return false;
}';
if($is_reCAPTCHA != '1'){
echo ' if (document.sign_up_frm.verify_int.value.length < 6){
alert(\'Please enter the code from verification image.\');
return false;
}';

}


echo '
if ((document.sign_up_frm.terms.checked==false)){
    alert(\'Please read the Terms of Service.\');
    return false;
}

document.sign_up_frm.submit();
}

</script>';


if(isset($_POST['create_account'])){



require("engine/validate.php");
$elems[] = array('name'=>'userid','label'=>text_register_error1, 'type'=>'text','uname'=>'true', 'required'=>true, 'len_min'=>4,'len_max'=>10, 'cont' =>'alpha');


$elems[] = array('name'=>'password', 'label'=>text_register_error2, 'type'=>'text', 'required'=>true, 'len_min'=>6,'len_max'=>12, 'cont' =>'alpha');
$elems[] = array('name'=>'confirm_password', 'label'=>text_register_error3,'type'=>'text', 'required'=>true, 'len_min'=>6,'len_max'=>12, 'cont' =>'alpha','equal'=> array('password'));

if($get_config->pers_id_active == '1'){
$elems[] = array('name'=>'pers_id', 'label'=>str_replace("{pers_id_length}",$get_config->pers_id_length,text_register_error4),'type'=>'text', 'required'=>true, 'len_min'=>$get_config->pers_id_length,'len_max'=>$get_config->pers_id_length, 'cont' =>'digit');
}

$elems[] = array('name'=>'email_address', 'label'=>text_register_error5, 'type'=>'text', 'required'=>true, 'len_max'=>50, 'cont' => 'email');

$elems[] = array('name'=>'country', 'label'=>text_register_error6,'type'=>'text', 'required'=>true, 'len_max'=>3, 'cont' =>'digit');
$elems[] = array('name'=>'gender', 'label'=>text_register_error7,'type'=>'text', 'required'=>true, 'len_max'=>1, 'cont' =>'digit');
$elems[] = array('name'=>'question', 'label'=>text_register_error8,'type'=>'text', 'required'=>true, 'len_max'=>2, 'cont' =>'digit');

$elems[] = array('name'=>'answer', 'label'=>text_register_error9,'type'=>'text', 'required'=>true, 'len_min'=>4,'len_max'=>20, 'cont' =>'alpha');
$f = new FormValidator($elems);
$err = $f->validate($_POST);
if ( $err === true ) {
$valid = $f->getValidElems();
foreach ( $valid as $k => $v ) {
if ( $valid[$k][0][1] == false ) {
if ( empty($valid[$k][0][2]) ) {
$msg_error = msg('0',$valid[$k][0][2]);
}else{
$msg_error = msg('0',$valid[$k][0][2]);
}
}
}
} else {
$userid = safe_input($_POST['userid'],'');
$password = safe_input($_POST['password'],'');
$email = safe_input($_POST['email_address'],'\_\@\.\-');
$country = safe_input($_POST['country'],'');
$gender = safe_input($_POST['gender'],'');
$question = safe_input($_POST['question'],'');
$anaswer = safe_input($_POST['answer'],'');
if($get_config->pers_id_active == '1'){
$pid = safe_input($_POST['pers_id'],'');
}else{
$pid = trim($get_config->pers_id);
}


if($is_reCAPTCHA == '1'){
if(!$resp->is_valid){
$bot_check = '1';
}
}else{
if($_SESSION['SID_code'] != md5($_POST['verify_int'])){
$bot_check = '1';
}
}


if($bot_check == '1'){
$msg_error = msg('0',text_register_error10);

}else{
if(check_account($userid) === true){
$msg_error =  msg('0',text_register_error11);
}else{
if(check_mail($email) === true){
$msg_error = msg('0',text_register_error12);
}else{
if($register_method == '1'){
$confirmed = '1';
$blocked = '0';
$activation_need = '0';
$activation_id = md5($userid);
}elseif ($register_method == '2'){
$confirmed = '0';
$blocked = '1';
$activation_need = '1';
$activation_id = md5($userid);
}

if($core['config']['md5'] == '1'){
$make_me_acc = $core_db2->Execute("INSERT INTO MEMB_INFO (memb___id,memb__pwd,memb_name,sno__numb,bloc_code,ctl1_code,mail_chek,mail_addr,appl_days,modi_days,out__days,true_days,SecretQuestion,SecretAnswer,Country,Gender,confirmed,activation_id) VALUES (?,[dbo].[fn_md5](?,?),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",array($userid,$password,$userid,'test',$pid,$blocked,'0','1',$email,date('m/d/Y'),date('m/d/Y'),'2005-01-03','2005-01-03',$question,$anaswer,$country,$gender,$confirmed,$activation_id));
}elseif($core['config']['md5'] == '0'){
$make_me_acc = $core_db2->Execute("INSERT INTO MEMB_INFO (memb___id,memb__pwd,memb_name,sno__numb,bloc_code,ctl1_code,mail_chek,mail_addr,appl_days,modi_days,out__days,true_days,SecretQuestion,SecretAnswer,Country,Gender,Confirmed,activation_id) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",array($userid,$password,'test',$pid,$blocked,'0','1',$email,date('m/d/Y'),date('m/d/Y'),'2005-01-03','2005-01-03',$question,$anaswer,$country,$gender,$confirmed,$activation_id));
$make_me_acc_ = 1;
/*
$make_me_acc_ = $core_db2->Execute("INSERT INTO VI_CURR_INFO (ends_days,chek_code,used_time,memb___id,memb_name,memb_guid,sno__numb,Bill_Section,Bill_value,Bill_Hour,Surplus_Point,Surplus_Minute,Increase_Days ) VALUES ('2005','1',1234,?,?,1,'7','6','3','6','6',".date('m/d/Y').",'0' )", array($userid,'test'));
*/
}
if($make_me_acc){
if($activation_need == '0'){
$msg_error = msg('1',str_replace("{userid}",$userid,text_register_success1));
$complete = 1;
}elseif ($activation_need == '1'){
/*
require("engine/smtp.php");
$smtp_config = simplexml_load_file('engine/config_mods/smtp_settings.xml');
$mail = new SMTP($smtp_config->smtp_server,$smtp_config->smtp_username,$smtp_config->smtp_password);
$header = $mail->make_header($core['config']['master_mail'],$email,'Account Activation for '.$core['config']['websitetitle'].'');
$header .= "Content-Type: text/html; charset=\"iso-8859-1\" \r\n";
$header .= "Content-Transfer-Encoding: 8bit \r\n";
$header .= "MIME-Version: 1.0 \r\n";
*/


$body = str_replace("{user_id}",$userid,mail_register_t1);
$body = str_replace("{website_title}",$core['config']['websitetitle'],$body);
$body = str_replace("{activation_url}",$core['config']['website_url'].'/'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.REGISTER_CMS_PAGE.'&activation_id='.$activation_id,$body);
/*

$body = 'Dear '.$userid.',<br><br>
Thank you for registering at the '.$core['config']['websitetitle'].'. Before we can activate your account one last step must be taken to complete your registration.<br><br>
Please note - you must complete this last step to become a registered member. You will only need to visit this URL once to activate your account.<br>
<br>
To complete your registration, please visit this URL:<br>
<a href="'.$core['config']['website_url'].'/'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.REGISTER_CMS_PAGE.'&activation_id='.$activation_id.'">'.$core['config']['website_url'].'/'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.REGISTER_CMS_PAGE.'&activation_id='.$activation_id.'</a>
<br><br><br>
All the best,<br>
'.$core['config']['websitetitle'].' Team.';
*/


if($core['debug'] == '1'){
define('DISPLAY_XPM4_ERRORS', true);
}else{
define('DISPLAY_XPM4_ERRORS', false);
}

$get_config = simplexml_load_file('engine/config_mods/smtp_settings.xml');

require("engine/mail.php");
$m = new MAIL;
$m->From($core['config']['master_mail']);
$m->AddTo(trim($email));
$m->Subject('Contact Us - '.$subject_set.'');
$m->Html($body);

if($get_config->smtp_connection == 'none'){
$c = $m->Connect(trim($get_config->smtp_server), intval($get_config->smtp_port), trim($get_config->smtp_username), trim($get_config->smtp_password)) or $smtp_connect_fail = '1';
}else {
$c = $m->Connect(trim($get_config->smtp_server), intval($get_config->smtp_port), trim($get_config->smtp_username), trim($get_config->smtp_password), trim($get_config->smtp_connection), 10, 'localhost', null, 'plain') or $smtp_connect_fail = '1';
}
if($smtp_connect_fail != '1'){
if($m->Send($c)){
$msg_error = msg('1',str_replace("{userid}",$userid,text_register_success2));
}else{
echo msg('0',text_register_error13);
}
}else {
echo msg('0',text_register_error14);
}


}
}else{
$msg_error = msg('0',text_register_error15);
}
}
}
}
}
}

if($register_method == '2'){
if(isset($_GET['activation_id'])){
$activate_md5 = '1';
if(empty($_GET['activation_id'])){
header('Location: '.ROOT_INDEX.'');
}else{
$md5_link = safe_input($_GET['activation_id'],'');
$check_link = $core_db2->Execute("Select confirmed,memb___id from MEMB_INFO where activation_id=?",array($md5_link));
if($check_link->EOF){
$msg_error = msg('0',text_register_error16);
}else{
if($check_link->fields[0] == '1'){
$msg_error = msg('0',text_register_error17);
}elseif ($check_link->fields[0] == '0'){
$active_id = $core_db2->Execute("Update MEMB_INFO set bloc_code='0',confirmed='1' where activation_id=?",array($md5_link));
if($active_id){
$msg_error = msg('1',str_replace("{userid}",$check_link->fields[1],text_register_success3));
}else {
$msg_error = msg('0',text_register_error18);
}

}
}
}
}

echo ' <table  border="0" cellspacing="4" cellpadding="0"  align="center" width="100%" >
<tr>';
if($activate_md5 != 1){
echo '<td align="left" class="curent_step" width="33%">1. '.text_register_complete_form.'</td>';
}else{
echo '<td align="left" class="step" width="33%">1. '.text_register_complete_form.'</td>';
}
if($activate_md5 == '1'){
echo '<td align="left" class="curent_step"  width="33%">2. '.text_register_activate_account.'</td>';
}else {
echo '<td align="left" class="step"  width="33%">2. '.text_register_activate_account.'</td>';
}
echo '
</tr>
</table>';



}
if($msg_error){
echo $msg_error;
}
if($activate_md5 != '1'){

if($complete != '1'){
$userid_post = htmlspecialchars($_POST['userid']);
$p_id_post = htmlspecialchars($_POST['pers_id']);
$email_post = htmlspecialchars($_POST['email_address']);
$country_post = htmlspecialchars($_POST['country']);
$question_post = htmlspecialchars($_POST['question']);
$anaswer_post = htmlspecialchars($_POST['answer']);
}
echo '
<form name="sign_up_frm" method="post" action="" id="sign_up_frm">
<div id="a"></div>
<table border="0" cellspacing="10" cellpadding="0" width="100%" style="margin-top: 10px;" align="center">
<tr>
<td colspan="3" align="left" class="iRg_line">'.text_register_t1.':</td>
</tr>
<tr>
<td align="left" class="iRg_text" style="padding-left: 24px;" width="130">'.text_user_id.'</td>
<td align="center" class="iRg_inf"><input class="iRg_input" type="text" name="userid" id="userid" maxlength="10" onclick="document.getElementById(\'c_uss\').innerHTML=\''.text_register_req1.'\'" value="'.$userid_post.'"> <a href="javascript:void(0)" onclick="cs_ua_a();">'.link_check_available.'</a></td>
<td align="left" ><span class="iRg_inf"><div id="c_uss">'.text_register_req1.'</div></span></td>
</tr>
</tr>
<tr>
<td align="left" class="iRg_text"  style="padding-left: 24px;">'.text_password.'</td>
<td align="left"><input class="iRg_input" type="password" name="password" id="password" maxlength="12"></td>
<td align="left"><span class="iRg_inf">'.text_register_req2.'</span></td>
</tr>
<tr>
<td align="left" class="iRg_text"  style="padding-left: 24px;">'.text_cnf_password.'</td>
<td align="left"><input class="iRg_input" type="password" name="confirm_password" id="confirm_password" maxlength="12"> <span class="iRg_inf"></span></td>
<td align="left"><span class="iRg_inf"><em>*'.text_register_req3.'</em></span></td>
</tr>
</tr>';
if($get_config->pers_id_active == '1'){
echo '<tr>
<td colspan="3" align="left" class="iRg_line">'.text_register_t2.':</td>
</tr>
<tr>
<td align="left" class="iRg_text"  style="padding-left: 24px;">'.text_personal_id.'</td>
<td align="left"><input class="iRg_input" type="text" name="pers_id" id="pers_id" maxlength="'.$get_config->pers_id_length.'" value="'.$p_id_post.'"> <span class="iRg_inf"></span></td>
<td align="left"><span class="iRg_inf"><span class="iRg_inf">'.text_register_req4.'</span></td>
</tr>
</tr>
';
}

echo '
<tr>
<td colspan="3" align="left" class="iRg_line">'.text_register_t3.':</td>
</tr>
<tr>
<td align="left" class="iRg_text"  style="padding-left: 24px;">'.text_email_address.'</td>
<td align="center" class="iRg_inf"><input class="iRg_input" maxlength="50" type="text" name="email_address" id="email_address" onclick="document.getElementById(\'c_mss\').innerHTML=\''.text_register_req5.'\'" value="'.$email_post.'"> <a href="javascript:void(0)" onclick="csm_uam_am();">'.link_check_available.'</a></td>
<td align="left"><span class="iRg_inf"><div id="c_mss">'.text_register_req5.'</div></span></td>
</tr>
<tr>
<td colspan="3" align="left" class="iRg_line">'.text_register_t4.':</td>
</tr>
<tr>
<td align="left" class="iRg_text"  style="padding-left: 24px;">'.text_country.'</td>
<td align="left"><select name="country" class="iRg_input" id="country"><option value="x">--'.text_select.'</option>';

    $c = getcountry('list');
foreach ($c as $cc => $v) {
if($country_post == $cc){
echo  '<option value="'.$cc.'" selected="selected">'.$v.'</option>';
}else{
echo  '<option value="'.$cc.'">'.$v.'</option>';
}

}

echo '</select></td>
<td align="left"></td>
</tr>
<tr>
<td align="left" class="iRg_text"  style="padding-left: 24px;">'.text_gender.'</td>
<td align="left" class="iRg_gender"><label><input name="gender" id="gender" type="radio" value="1">'.text_male.'</label>&nbsp;&nbsp;&nbsp;<label><input name="gender" type="radio" value="2" id="gender">'.text_female.'</label></td>
<td align="left"></td>
</tr>
<tr>
<td colspan="3" align="left" class="iRg_line">'.text_register_t5.':</td>
</tr>
<tr>
<td align="left" class="iRg_text"  style="padding-left: 24px;">'.text_register_secret_question.'</td>
<td align="left" colspan="2"><select name="question" id="question"  class="iRg_input"><option value="x">--'.text_select.'</option>
';
    foreach ($secret_questions as $sq_id => $sq_name){
    if($question_post == $sq_id){
    echo '<option value="'.$sq_id.'" selected="selected">'.$sq_name.'</option>';
    }else{
    echo '<option value="'.$sq_id.'">'.$sq_name.'</option>';
    }



}
   echo '</select></td>
<td align="left"></td>
</tr>
<tr>
<td align="left" class="iRg_text"  style="padding-left: 24px;">'.text_register_answer_question.'</td>
<td align="left" colspan="2"><input class="iRg_input" type="text" name="answer" id="answer" maxlength="20" value="'.$anaswer_post.'">&nbsp;&nbsp;&nbsp;'.text_register_req6.'</td>
</tr>
</tr>
<tr>
<td colspan="3" align="left" class="iRg_line">'.text_register_t6.':</td>
</tr>
<tr>
<td align="left" colspan="3"> ';
   if($is_reCAPTCHA == '1'){
    $publickey = $verification_config->reCAPTCHA_public_key;
    echo '<script type="text/javascript">
var RecaptchaOptions = {
theme : \''.$verification_config->reCAPTCHA_theme.'\'
,lang : \'en\'
};
</script>
';
    echo recaptcha_get_html($publickey);

   }else{
    echo '
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td align="left"><img src="get.php?aI" border="0"></td>
<td align="left" class="iRg_inf"><div align="left" style="padding-bottom: 4px; ">'.text_register_type_code.'</div><input class="iRg_input" type="text" name="verify_int" id="verify_int"></td>
</tr>
</table>'
;
   }
  echo '
</td>
</tr>
</table>

<table border="0" cellspacing="10" cellpadding="0" width="100%"  align="center">
<tr>
<td align="center" colspan="2" class="iRg_terms_agree"><label><input type="checkbox" name="terms" value="1"> '.text_register_read_terms1.'</label> <a href="'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.TERMSOFSERVICE_CMS_PAGE.'" target="_blank">'.text_register_read_terms2.'</a>.<input type="hidden" name="create_account"></td>
</tr>
<tr>
<td align="right"><input type="image" src="template/'.$core['config']['template'] .'/images/submit_btn.gif" onclick="return parse_inputs()"></td>
<td align="left"><img src="template/'.$core['config']['template'].'/images/cancel_btn.gif" border="0" onclick="location.href=\''.$core['config']['website_url'].'\'"></td>
</table>
</form>';
}
}
?>


Desconozco php, si puedieran guiarme un poco se los agradecería, he probado con dreamviewer pero no me da resultados, Muchas gracias, saludos
#165
Hola a todos, bueno tengo el siguiente problema me gustaría poder enviar un header POST con tal como lo muestra la siguiente imagen:



Esto lo capturé entrando a:
www.xtremetop100.com/in.php?site=1132331256

luego introduciendo el captcha que me pide y presionando el botón.

Me gustaría poder hacer esto automáticamente con la librerìa cURL he probado de la siguiente manera pero no logro que funcione:

Código (php) [Seleccionar]
<?php
$url 
'www.google.com';
$data 'site=1132331256&word=retine&submit=Vote+for+Mu+Caos'

//cUrl//
$handler curl_init();  
curl_setopt($handlerCURLOPT_URL$url);  
curl_setopt($handlerCURLOPT_POST,true);  
curl_setopt($handlerCURLOPT_POSTFIELDS$data);  
curl_exec ($handler);  
curl_close($handler); 
//cUrl
?>


Ya que cuando lo hago desde el navegador me debería redireccionar al index.php (www.xtremetop100.com)

Espero una respuesta, muchas gracias, Saludos

EDIT: me olvidaba word= contiene el captcha no quise colocar el código completo, pero el captcha lo tomo desde la siguiente web:

http://www.xtremetop100.com/captchasystem/captcha.php

No quiero saltarme el captcha
#166
Pues eso, me gustaría saber en que quedó si valió la pena las peticiones por parte de algunos usuarios de ese subforo junto con el moderador de el, Saludos
#167
PHP / Problema con PHP (librería curl)
4 Marzo 2012, 01:47 AM
Hola a todos tengo un modulo para mi web que tiene como propósito lo siguiente: El usuario debe introducir alguno de sus datos, además de eso deberá introducir en un textbox una captcha, esta captcha es externa a mi servidor y es sacada desde un sistema de votación. La idea es que a través del módulo ocurra lo siguiente:
Citar-el usuario introduce su ID de login
-el usuario introduce su Personaje
-el usuario introduce el captcha (este tomado desde un servidor externo de votaciones)

La idea es que cuando el usuario presione el botón enviar, a través de la librería curl se envíe una cabecera http header post al servidor externo para validar el voto en la página externa.

Todo funciona a la perfección excepto la cabecera post que no se envía:

la imagen del formulario es la siguiente:



en donde el captcha es tomado desde la página:
http://www.xtremetop100.com/in.php?site=1132331256



En otras palabras que automáticamente se valide el voto de la página http://www.xtremetop100.com/in.php?site=1132331256

He utilizado Live Http Headers para visualizar como trabaja el sistema de votos en el servidor externo. a continuación muestro una imagen de como trabaja.



Por lo que deduzco que debería enviar el contenido post mostrado en la imagen.

Pero no funciona, adjunto vote.php para ver en que falla:


Código (php) [Seleccionar]
<?php
include("secure.php");
include(
"config.php");

//Configurar votacion
$votehours "12";
$votecredits "10";
$votelink "http://www.mu-caos.cl";

// Obtiene imagen captcha
$img 'http://www.xtremetop100.com/captchasystem/captcha.php';


$connect mssql_connect($core['db_host'],$core['db_user'],$core['db_password']);
$db mssql_select_db($core['db_name'],$connect);
if(!
$db) die('<center>Conexion SQL fallida!</center>');

function 
vote()
{
global 
$votecredits;
global 
$votelink;
global 
$votehours;

$captcha_valude secure($_POST['captcha_valude']);
$character secure($_POST['character']);
$account secure($_POST['login']);
$data ='site=1132331256&word='.$_POST['captcha_valude'].'&submit=Vote+for+Mu+Caos';
check_inject();

$time 60 60 $votehours;
$timenow time();
$time2 $timenow $time;

$queryaccount mssql_query("Select * from MEMB_INFO where memb___id='$account'");
$accountcheck mssql_num_rows($queryaccount);

$querycharacter mssql_query("Select * from Character where Name='$character'");
$charactercheck mssql_num_rows($querycharacter);

$queryvote mssql_query("Select * from votereward where time>'$time2' and memb___id='$account'");
$votecheck mssql_num_rows($queryvote);

if(empty(
$account)) { echo"<font color='red'>Introduce tu ID!</font><br>"$error=1; }
elseif(empty(
$character)) { echo"<font color='red'>Introduce tu personaje!</font><br>"$error=1; }
elseif(empty(
$captcha_valude)) { echo"<font color='red'>Introduce las letras de la imagen!</font><br>"$error=1; }
elseif(
$accountcheck <= 0) { echo"<font color='red'>La ID ingresada no existe!</font><br>"$error=1; }
elseif(
$charactercheck <= 0) { echo"<font color='red'>El personaje introducido no existe!</font><br>"$error=1; }
elseif(
$votecheck >= 1) { echo"<font color='red'>Votaciones permitidas solo cada $votehours horas!</font><br>"$error=1; }

if(
$error != 1) {
$a mssql_query("INSERT INTO votereward (memb___id, time ) VALUES('$account','$timenow')");
$b mssql_query("Update Character set PCPoints = PCPoints+$votecredits WHERE Name='$character'");

// PRUEBA
$ch curl_init('http://www.xtremetop100.com/in.php?site=1132331256');
curl_setopt ($chCURLOPT_POST1);
curl_setopt ($chCURLOPT_POSTFIELDS$data);
curl_exec ($ch);
curl_close ($ch);


// PRUEBA
echo"<font color='green'>Votación realizada exitosamente!</font>";
echo
"<meta http-equiv=\"refresh\" content=\"5;url=$votelink\" />";
}
}

if(isset(
$_POST['submit'])) { vote(); }
?>

<br>Por cada voto recibiras <?php echo($votecredits);?> PCPoints!
<table border=0 cellspacing=5 cellpadding=0>
<td width='250'>
<form name="" method="post" action="">
<table width="100%" border="0" cellspacing="1" cellpadding="1">
<tr>
 <td width="70" height="28" align="center">Login ID:</td>
 <td>&nbsp;</td>
 <td><p>
   <input name="login" type="text" id="login" maxlength="10" />
 </p></td>
</tr>
<tr>
 <td height="20" align="center">Personaje:</td>
 <td>&nbsp;</td>
 <td><input name="character" type="text" id="character" maxlength="10" /></td>
</tr>
<tr>
<td>
<td align="center">
<td align="left"><div>

<?php echo '<IMG src="'.$img.'">';?>
<p>Inserta las letras de la imagen:</p>
<p><input type="text" id="captcha_valude" name="captcha_valude"></p>
 <input type="submit" class=button name="submit" value="Votar" />
 <input type="reset" class=button name="reset" value="Resetear" />
</div>
<td>&nbsp;</td>
</tr>
</table>
</form>
</div>
</td>
</table>


Desconozco de PHP, todo lo he encontrado indagando por Internet y con un poco de ayuda de yoya que me ha dado unas pequeñas pistas.

Yo creo que el fallo dentro del recuadro de comentario // prueba

Si me dijeran que debería agregar o modificar o en que estoy fallando se los agradecería mucho, es lo único que me falta para un proyecto que llevo realizando desde hace una buena cantidad de tiempo. Muchísimas gracias por leer

Saludos
#168
PHP / Problema con formulario de registro
25 Febrero 2012, 03:08 AM
Hola a todos, bueno les comento tengo un formulario prediseñado en mi página web para registrarse, se podría decir que funciona correctamente, pero tengo un pequeño problema en cuanto al registro de la web, al verificar si la ID o Mail existen, un script se encarga de esto y funciona bien pero es muy inestable, el script lo logré hacer funcionar gracias a EFEX, si el script no funciona me muestra un mensaje que dice failed me gustaría como hacer para que en ves de mostrarme el el mensaje failed lo vuelva a intentar. Desconozco de PHP, por eso acudo a su ayuda.


Adjunto un estracto de Register.php

Código (php) [Seleccionar]
<?

$get_config = simplexml_load_file('engine/config_mods/register_settings.xml');
if($get_config->active == '0'){
echo msg('0',text_sorry_feature_disabled);
}else{
$register_method = $get_config->method;

$verification_config = simplexml_load_file('engine/config_mods/human_verification.xml');
if($verification_config->human_verification_type == 'reCAPTCHA'){
$is_reCAPTCHA = '1';
require_once('engine/recaptchalib.php');
$privatekey = $verification_config->reCAPTCHA_private_key;
$resp = recaptcha_check_answer ($privatekey,$_SERVER["REMOTE_ADDR"],$_POST["recaptcha_challenge_field"],$_POST["recaptcha_response_field"]);
}



echo '
<script type="text/javascript">    
load_image= new Image(16,16);
load_image.src="template/'.$core['config']['template'].'/images/load.gif";

function Ajax(div,id, page, form, append, data){

   document.getElementById(div).innerHTML = \'<img src="template/'.$core['config']['template'].'/images/load.gif" width="16" height="16"> Please wait...\';
var veri = \'\';
if( typeof(data) == "string")
veri = data;
else
veri = $(form).serialize();
$.ajax({
  type: "POST",
  url: page,
  data: veri,
  error: function(html)
  {
<--------------------Aquí está el señor problema :B-------------------->
  alert("falied");
  },
  success: function(html)
  {
    if( typeof(append) == "boolean")
$(id).append(html);
else
$(id).html(html);
  }
 });
 return false;
}
</script>

<script type="text/javascript">
function cs_ua_a(){
if (document.sign_up_frm.userid.value.length < 4){
alert(\'User ID, 4-10 characters\n(letters and numbers only)\');
}else{
uss = document.getElementById(\'userid\').value;
url_p = "get.php?aA="+uss;
Ajax(\'c_uss\',\'#c_uss\',url_p, null, \'data=c_uss\');
}

}

function csm_uam_am(){
if (document.sign_up_frm.email_address.value.length < 2){
alert(\'Please enter an valid mail address \n(e.g: somebody@yahoo.com)\');
}else{
uss = document.getElementById(\'email_address\').value;
url_p = "get.php?aMl="+uss;
Ajax(\'c_mss\',\'#c_mss\',url_p, null, \'data=c_mss\');
}

}

function parse_inputs(){
if (document.sign_up_frm.userid.value.length < 4){
alert(\'User ID, 4-12 characters\n(letters and numbers only)\');
return false;
}

if (document.sign_up_frm.password.value.length < 6){
alert(\'Password, 6-12 characters\n(letters and numbers only, passwords are case-sensitive.)\');
return false;
}

if (document.sign_up_frm.confirm_password.value.length < 6){
alert(\'Confirm Password, 6-12 characters\n(letters and numbers only, passwords are case-sensitive.)\');
return false;
}
if (document.sign_up_frm.password.value != document.sign_up_frm.confirm_password.value){
alert(\'Passwords did not match.\');
return false;
}
';
if($get_config->pers_id_active == '1'){
echo 'if (document.sign_up_frm.pers_id.value.length < '.$get_config->pers_id_length.'){
alert(\'Please enter an valid Personal ID number \n(12 digits, numbers


Muchas gracias, Saludos

PD:Si tienen duda con el registro, adjunto la página para que corroboren:

http://mu-caos.cl/index.php?page_id=register
#169
Hola a todos, aquí nuevamente para los que me conocen y me han brindado su ayuda. Para los que no les comento que estoy haciendo un servidor de juego y he montado una web

CitarMe han ayudado a colocar un link a una imagen, a utilizar ?id= y que me mostrara un mensaje de texto.

Ahora tengo un problema muy difícil y analizando la web creo que es el único, creo que de alguna u otra manera tiene solución pero lamentablemente creo que es algo muy puntual que no está al alcance de mis conocimientos (desconozco de PHP).

Les comento el problema:
Ya montada la web prediseñada y posteriormente instalada. Todo funciona bien, incluyendo CHAT, Verificar si ID está disponible, Verificar si mail está disponible.

Pero al momento de cambiar el tema o skin funciona todo a la perfección excepto lo comentado con rojo queda pegado en loading (un .gif) y no muestra ningún resultado, por lo que creo que es alguna falla del SKIN. ya que si vuelvo nuevamente a elegir el tema que viene por defecto, funciona sin ningún problema.

Les dejo la web del chat para que visualicen el error:

http://mu-caos.cl/index.php?page_id=chat

el de register (verificar disponibilidad ID, Mail)
http://www.mu-caos.cl/index.php?page_id=register

#170
Bases de Datos / Incrementar datos de una columna
15 Febrero 2012, 22:30 PM
Hola a todos bueno tengo las siguientes columnas:

|ID|nombre|
1     juan
2     esteban
3     alfonso
4     felipe

como podría hacer para que ID aumente de +1 cada vez que se introduscan datos en una fila es decir que si introduzco un nombre después de felipe ID quede con 5?, Muchas gracias Saludos
#171
Desarrollo Web / Poner Link en una imágen.
12 Febrero 2012, 23:02 PM
Hola a todos, tengo el siguiente problema tengo una página web pre-diseñada que posee una imagen, me gustaría que esa imagen me direccionara por ejemplo a www.google.com (luego lo cambio). El problema es que no se como hacerlo, a ver si me dan alguna ayuda ya que soy un poco nulo en esto:

La imagen se ubica/posee el siguiente nombre: ../images/descargar.png

Intenté con lo que aparece en este link (Tutorial), ya que la idea es que quede como la primera imagen que muestra:
http://bluedogwebservices.com/css-trick-turning-a-background-image-into-a-clickable-link/

*Sospecho de lo que he puesto en rojo en las citas de los archivos.
<---No sé si se nota, pero he hecho mi esfuerzo máximo al no saber html, espero que sea de ayuda lo encontrado por mi. Espero su ayuda, gracias---->


CSS:
Citarbody, input {
   color:#190b00;
   background-color: #190b00;
   color:#FFF;
   font-family:Arial, Helvetica, sans-serif;
   font-size: 10px;
   }

a {
text-decoration: none;
font-family:Arial, Helvetica, sans-serif;
font-style:italic;
color:#f8d198;
}

a:hover { text-decoration: none;}
ol, ul { list-style: none; }
.fondo {
   background-image:url(../images/fondo.jpg);
   background-repeat:no-repeat;
   background-position:top;
}

.header {
   background-image:url(../images/header.png);
   background-repeat:no-repeat;
   background-position:top;
   height: 281px;
}

.menu-he {
   background-image:url(../images/menu-he.png);
   background-repeat:no-repeat;
   background-position:top;
   height: 121px;
   
}

.descargar-he {
   background-image:url(../images/fondo-descarga.png);
   background-repeat:no-repeat;
   background-position:top;
   height: 110px;
   margin-top: -25px;
}

.tmp_m_content {  margin-top: 5px; }
.tmp_m_content .tmp_right_title {  height:43px; width: 443px;  font:normal 18px/30px Georgia; color:#FFFFFF;   font-family:Arial, Helvetica, sans-serif; font-style:italic; background-image:url(../images/titulo.png); background-repeat:no-repeat; padding-top: 5px; }
.tmp_m_content .tmp_page_content { font:normal 12px/24px Arial, Helvetica, sans-serif; color:#ffffff; margin:5px; margin-left: }
.tmp_m_content .tmp_right_title_ann { background-color:#fff1dc; height:20px; position:relative; font:bold 15px/20px verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif; color:#FFFFFF; padding-left:15px; }
.tmp_m_content .tmp_page_content_ann { font:normal 12px/24px Arial, Helvetica, sans-serif; color:#ffffff; margin:5px; }
.ann_date { font:normal 11px/24px Arial, Helvetica, sans-serif; color:#8f4a0a;
}

.iN_title a{
font-size:14px;
text-decoration: none;
font-family:Arial, Helvetica, sans-serif;
font-style:italic;
color:#fff1dc;
}

.iN_title a:hover{
font-size:14px;
text-decoration: none;
font-family:Arial, Helvetica, sans-serif;
font-style:italic;
color:#f8d198;
}

.iN_date{
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size:10px;
color:#8f4a0a;
}
   
.contenido {
   width: 1000px;
   background-image:url(../images/contenido.png);
   background-position:top;
   background-repeat:no-repeat;
   }

#header-mu {
   width: 100%;
   background-image:url(images/medio.jpg);
   background-position:top;
   background-repeat:no-repeat;
   height:264px;
   }

.inicio {
   width: 55px;
   float:left;
   margin-left: 30px;
   margin-top: 25px;
   }
   
.anuncios {
   width: 80px;
   float:left;
   margin-top: 25px;
   margin-left: 25px;
   }

.registro {
   width: 73px;
   float:left;
   margin-top: 25px;
   margin-left: 29px;
   }
   
.rankeado {
   width: 76px;
   float:left;
   margin-top: 25px;
   margin-left: 29px;
   }
   
.descargar {
   width: 213px;
   height: 78px;
   float:left;
   margin-left: 8px;
   }
   
.tienda {
   width: 55px;
   float:left;
   margin-top: 25px;
   margin-left: 6px;
   }
   
.foro {
   width: 43px;
   float:left;
   margin-top: 25px;
   margin-left: 30px;
   }
   
.contacto {
   width: 83px;
   float:left;
   margin-top: 25px;
   margin-left: 35px;
   }
   
.sesion1 {
   width: 63px;
   float:left;
   margin-top: 25px;
   margin-left: 32px;
   }
   
#bg_2 {  height:82px; position:relative; z-index:99; }

.bg_2 a {  overflow:hidden; background-image:url(../images/menu-he2.jpg); display:inline; float:left; text-indent:-9999px; padding:0;  height: 67px; margin-top: 6px;}

.bg_2 .li1 { background-position:0 0; width:105px; height: 67px; margin-left: 7px;  }

.bg_2 .li2 { background-position:-105px 0; width:103px;  }

.bg_2 .li3 { background-position:-208px 0; width:103px; }

.bg_2 .li4 { background-position:-311px 0; width:103px;}

.bg_2 .li5 { background-position:-414px -0px; width:106px; }

.bg_2 .li6 { background-position:-520px 0px; width:107px;  }

.bg_2 .li1:hover { background-position:0 -67px;}

.bg_2 .li2:hover { background-position:-105px -67px;}

.bg_2 .li3:hover { background-position:-208px -67px;}

.bg_2 .li4:hover { background-position:-311px -67px;}

.bg_2 .li5:hover { background-position:-414px -67px;}

.bg_2 .li6:hover { background-position:-520px -67px;}

.login-formulario {
   background-image:url(../images/lo.png);
   background-position:center;
   height: 30px;
   
}
      
.slider {
   
   background-image:url(../images/slider.gif);
   background-position:center;
   background-repeat:no-repeat;
   height:155px;
   width: 487px;
   
   }
   
.rankingtop {
   
   background-image:url(../images/ranking.png);
   background-position:top;
   background-repeat:no-repeat;
   width:229px;
   height:414px;
   
   }
   
.separador {
   
   background-image:url(../images/separador.png);
   background-position:center;
   background-repeat:no-repeat;
   height:1px;
   
   }
   
.titulode {
   text-align: center;
   font-style: italic;
   color: #FFF;
   font-family: Arial, Helvetica, sans-serif;
   font-size: 12px;
   font-weight: bold;
   
}

.top5name {
   color: #af7d55;
   font-family: Verdana, Geneva, sans-serif;
   font-size: 10px;
   text-align: center;
}

.sobretop5 {
   text-align: center;
   color: #ff7e00;
   font-size: 10px;
   font-family: Verdana, Geneva, sans-serif;
}
   
.siguenos {
   margin-top:10px;
   margin-left: 4px;
   background-image:url(../images/siguenos.png);
   height: 46px;
   background-repeat:no-repeat;
   background-position:top;
   width: 229px;
}

#bg_siguenos {  height:17px; position:relative; z-index:99;}

.bg_siguenos a {  overflow:hidden; display:inline; float:left; text-indent:-9999px; padding:0; margin:0; height:32px;}

.bg_siguenos .si1 { background-position:0 0; width:31px; ; margin-left: 113px; margin-top: 6px;}
.bg_siguenos .si2 { background-position:-120px 0; width:31px; margin-left: 6px; margin-top: 6px;}
.bg_siguenos .si3 { background-position:-260px 0; width:31px; margin-left: 6px; margin-top: 6px;}

.bg_siguenos .si1:hover { background-position:0 -50px;}
.bg_siguenos .si2:hover { background-position:-120px -50px;}
.bg_siguenos .si3:hover { background-position:-260px -50px;}

.registroimg {
   margin-top:10px;
   margin-left: 12px;
   height: 46px;
   background-repeat:no-repeat;
   background-position:top;
   width: 237px;
}

#bg_registroimg {  height:45px; position:relative; z-index:99;}

.bg_registroimg a {  background:url(../images/registrate.png) no-repeat; overflow:hidden; display:inline; float:left; text-indent:-9999px; padding:0; margin:0; height:45px;}

.bg_registroimg .re1 { background-position:0 0; width:237px; height:45px;}

.bg_registroimg .re1:hover { background-position:0 -45px;}


.contenidooo {
   margin-top:5px;
   margin-left: 15px;
   background-image:url(../images/menu.png);
   height: 333px;
   background-repeat:no-repeat;
   
}

.tmp_left_cabezal { background-image:url(../images/line.png); background-position:bottom; background-repeat:no-repeat; width:263px; height:22px; margin-left: 32px; padding-left: 10px; margin-top:7px; color:#b9955b; font-family: Arial, Helvetica, sans-serif; font-size:14px;}
.tmp_left_menu { background-image:url(../images/list-menu.png);  margin-left: 78px; width: 220px; margin-top: 18px;  }
.tmp_left_menu a { color:#b9955b; font-family: Arial, Helvetica, sans-serif; font-size:12px; text-decoration:none; }
.tmp_left_menu a:hover {color:#af7d55; text-decoration:none; }
.tmp_left_menu ul {   list-style:none;}
.tmp_left_menu li.list_menu {   color:#b9955b;  background: url(../images/bullet.gif) no-repeat 1px ; margin-left:-17px; padding-left: 15px; height: 22px; }

.nuevo_login {
   color: #af7d55;
   font-family: Arial, Helvetica, sans-serif;
   font-size: 12px;
   text-decoration:none;
}

.nuevo_login a {
   color: #FFF;
   font-family: Arial, Helvetica, sans-serif;
   font-size: 12px;
   text-decoration:none;
}


.footer-he {
   background-image:url(../images/footer.png);
   background-repeat:repeat-y;
   background-position:top;
   height: 58px;
}

.creditos {
   font-family:"Lucida Sans Unicode", "Lucida Grande", sans-serif;
   color:#FFF;
   font-size: 10px;
   margin-left: -400px;
}

.login_field{
   background-color: transparent;
border:1px solid transparent;
height: 20px;
width: 175px;
font-size: 10px;
font-family:Verdana, Geneva, sans-serif;
color: #330000;
text-align:justify;
margin-left: 5px;
padding-left: 5px;
}

.lost {
   font-size: 9px;
   font-family: Verdana, Geneva, sans-serif;
   color: #330000;
   text-align:center;
}

.lost a{
   font-size: 9px;
   font-family: Verdana, Geneva, sans-serif;
   color: #330000;
   text-align:center;
   text-decoration:none;
}

.lost a:hover{
   font-size: 9px;
   font-family: Verdana, Geneva, sans-serif;
   color: #ffffff;
   text-align:center;
   text-decoration:none;
}

.banner_rotator{
   background-image:url(../images/banner.png);
   width: 560px;
   height: 90px;
   margin-top: 10px;
}

.banner_descarga{
   background-image:url(../images/descargar.png);
   width: 269px;
   height: 95px;
   margin-top: 7px;
   margin-left: 35px;
}

.contenido-he {
   background-image:url(../images/fondo-contenido.png);
   background-repeat:repeat-y;
   background-position:top;
   height: 110px;
}

.horario {
   color: #e2d681;
   font-family: Arial, Helvetica, sans-serif;
   font-size: 9px;
   font-weight: bold;
   width: 87px;
   height: 40px;
   margin-left: 80%;
   margin-top: 222px;
   }

.line-menu { background-image:url(../images/line-menu.jpg); background-position:top; background-repeat:no-repeat; height: 3px; }

fieldset{
background: #1e0f02;
border: 1px solid #8f4c0a;
font: bold 11px Arial, Helvetica, sans-serif;
color:#FFF;
}

legend{
background: #1e0f02;
border: 1px solid #8f4c0a;
font: bold 11px Arial, Helvetica, sans-serif;
margin-left: 5px;
}

ul#menu{
   margin:0;
   padding:0px 0px 0px 85px;
   list-style-type:none;
   width:auto;
   position:relative;
   display:block;
   height:38px;
   text-transform:uppercase;
   font-size:12px;
   font-weight:bold;
   background:transparent url("template/<?=$core['config']['template'] ?>/images/button_bg.jpg") repeat-x top left;
   font-family:Arial, Helvetica, sans-serif;
   
}

ul#menu li{
   display:block;
   float:left;
   margin:0;
   pading:0;
   height:38px;
}


ul#menu li a{
   display:block;
   float:left;
   color:#ffffcc;
   text-decoration:none;
   font-weight:bold;
   padding:10px 16px 0 10px;
   
   background:transparent url("template/<?=$core['config']['template'] ?>/images/sep.jpg") no-repeat top right;
   }


ul#menu li a:hover{
   background:transparent url("template/<?=$core['config']['template'] ?>/images/hover.jpg") no-repeat top right;
   color:#FFF;
   }
.style1 {color: #B53452}

#tmp_main { width:990px; margin:auto; background-color:#0E1819; border:1px #262E30 solid; padding-bottom:5px; }
.tmp_nav { background:url(template/<?=$core['config']['template'] ?>/images/nav_bg.jpg); width:976px; height:34px; margin:auto; margin-top:3px; margin-bottom:10px; }
.tmp_nav ul { margin-left:20px; }
.tmp_nav li { float:left; background:url(template/<?=$core['config']['template'] ?>/images/nav_mark.gif) no-repeat left top; padding-left:15px; padding-right:10px; height:34px; }
.tmp_nav .menu { color:#ddd; font:bold 14px Arial, Helvetica, sans-serif; line-height:34px; }
.tmp_nav .menu a { color:#ddd; font:bold 14px Arial, Helvetica, sans-serif; line-height:34px; text-decoration:none }
.tmp_nav .menu a:hover { color:#FC0; }
.tmp_nav li:hover { background:url(template/<?=$core['config']['template'] ?>/images/nav_hover_bg.gif) no-repeat left; }


.tmp_main_content { width:auto; margin:5px 5px 0 5px; background-color:#2F343A; }

.tmp_left_side { background-color:#1E2628;   padding-bottom:15px; padding-right: 10px; padding-left: 10px; }

.tmp_left_title { background:url(template/<?=$core['config']['template'] ?>/images/left_title_bg.gif); background-repeat:repeat-x; margin-top:5px; font:bold 16px/33px Arial, Helvetica, sans-serif; text-align:center; color:#fff }

.yellow  a{
color:#fc0;
text-decoration:none;
}

.yellow  a:hover{
color:#fffff;
text-decoration:none;
}

.configse  {
color:#ffffff;
text-decoration:none;
font-size:12px;
}

.configse  a{
color:#341d0f;
text-decoration:none;
font-size:12px;
}

.configse  a:hover{
color:#fffff;
text-decoration:none;
font-size:12px;
}

.tmp_advertise { margin-bottom: 20px; width:728px; height:90px; border:2px #6A5151 solid; }

#tmp_nav_header{ text-align:center; height:31px; background:url(template/<?=$core['config']['template'] ?>/images/nav_header_bg.gif) 0 0 repeat-x; font-family:Arial, Helvetica, sans-serif; font-size:11px;}
#tmp_nav_header_menu { width:990px; margin:0 auto; text-align:left; height:28px; padding:1px 0 2px 0; background:url(template/<?=$core['config']['template'] ?>/images/nav_header_bg.gif) 0 0 repeat-x; position:relative;z-index:9999;}



#welcome_stats{float:left; padding-left:5px;  color:#ded1c4; line-height:28px;}
#welcome_stats a {color: #ded1c4; text-decoration: underline;}
#welcome_stats a:hover {color: #ffffff; text-decoration: none;}

#tmp_header_menu{ float:right; padding-right:10px;}
#tmp_header_menu ul li { float:left; height:28px; line-height:28px; padding:0 10px; background:url(template/<?=$core['config']['template'] ?>/images/nav_header_hover.gif) right bottom no-repeat;}
#tmp_header_menu li a { color:#ded1c4; text-decoration: none;}
#tmp_header_menu li a:hover { color:#fff; text-decoration: underline;}   


.where_nav{
margin:4px; padding:2px;
font: 11px verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;
color: #ffffff;
}


/*
MUCore Css Start
*/
.where_nav a{
color: #ffffff;
text-decoration: underline;
}

.where_nav a:hover{
color: #ffffff;
text-decoration: none;
}

.iN_title{
font-size:17px;
font-weight:bold;

}

.iN_title_mirror{

font-size:17px;
font-weight:bold;
color:#6b533f;
}

.iN_description{
font:11px/14px Arial, Verdana, sans-serif;
color:#6b533f;

}

.iN_download_title{
font:bold 14px/18px arial; color:#af7d55;
}

.iN_download_cat{
font-size:17px;
font-weight:bold;
color:#ac5500;
font-family:Arial, Helvetica, sans-serif;
}

.iN_news_content{
font-family:Arial, Helvetica, sans-serif;
font-size:13px;
color:#af7d55;
margin:0px;
}

.iN_news_content a{
font-family:Georgia, "Times New Roman", Times, serif;
font-size:13px;
margin:0px;
text-decoration: underline;
}

.iN_news_content a:hover{
font-family:Georgia, "Times New Roman", Times, serif;
font-size:13px;
margin:0px;
text-decoration: none;
}

.iN_new_read_more{
color:#ffffff;
font: 10px Arial, Helvetica, sans-serif;
background: #8b0e0e;

padding: 1px;
}

.iN_new_read_more a{
color: #ffffff;
font-size: 10px;
}
.iRg_text{
color:#af7d55; font-family: Arial, Helvetica, sans-serif; font-size:12px;
}


.iRg_inf{
font: 11px fantasy;
color:#ffffff;
}

.iRg_inf a{
font: 11px fantasy;
text-decoration: underline;
}

.iRg_inf a:hover{
font: 11px fantasy;
text-decoration: none;
}

.iRg_gender{
font: 11px Arial, Helvetica, sans-serif;
color:#ffffff;
}

.iRg_input{
font: 11px Arial, Helvetica, sans-serif;
color:#ffffff;
}

.iRg_line{
background:url(template/<?=$core['config']['template']; ?>/images/inner_line.jpg); background-position:bottom; background-repeat:repeat-x;
font: 11px fantasy; color: #af7d55;
padding-bottom: 4px

}

.iRg_line_top{
background:url(../images/inner_line.jpg); background-position:top; background-repeat:repeat-x;
font: 11px fantasy; color: #af7d55;

}

.iR_func_status{
border: 1px solid #8f4c0a;
background: #341d00;
padding-left: 4px;
font-size: 11px;
}

.iR_func_status_lacking{
background: #8f4c0a;
padding: 1px;
padding-left: 3px;
padding-right: 3px;
color: #ffffff;
}


.iR_func_status_free{
background: #00FF00;
padding: 1px;
padding-left: 3px;
padding-right: 3px;
color: #000000;
}

.iR_func_status_free a{
font-size: 11px;
color: #000000;
}
.iRg_input{

background: #2d1700;
border:1px solid #542401;
height: 25px;
width: 126px;
color: #9f6640;
font-size: 10px;
font-family:Arial, Helvetica, sans-serif;
text-align:justify;
margin-left: 15px;
padding-left: 5px;
}



.iRg_terms_agree{
font:  12px Arial, Verdana, sans-serif;
}

.iRg_terms_agree a{
font:  12px Arial, Verdana, sans-serif;
text-decoration: underline;
}

.iR_rank{
background-color: #301a00;
font: bold 11px Arial, Helvetica, sans-serif; color: #af7d55;
}

.iR_stats{
font: 11px Helvetica, serif; color: #ffffff;
background-color: #341d00;
padding: 1px;
}

.iR_stats_2{
font: 11px Helvetica, serif; color: #ffffff;
background-color: #190b00;
border: 1px #8f4c0a solid;
padding: 1px;
color: #af7d55;
}




.iR_stats_bg{
background-color: #996600;

}



.iR_stats_level{
border: 1px solid #90490a;
font: 11px Arial, Helvetica, sans-serif; color: #af7d55;
background: #382000;
padding: 1px;
}

.iR_stats_reset{
border: 1px solid #90490a;
font: 11px Arial, Helvetica, sans-serif; color: #af7d55;
background: #361f00;
padding: 1px;
}



.iR_name{
font: bold 13px Arial, sans-serif; color: #ffffff;
}

.iR_class{
font: 12px Helvetica, sans-serif; color: #af7d55;
}

.iR_status{
font-size: 11px;
}

.iR_task{
font:  11px Georgia, "Times New Roman", Times, serif;
}

.iR_rank_type{
font: bold 16px Arial, sans-serif;
}

.iR_rank_type a{
font: bold 16px Arial, sans-serif;
text-decoration: none;
}

.iR_rank_type a:hover{
font: bold 16px Arial, sans-serif;
text-decoration: none;
color: #6b533f;
}



.iR_rank_type_sub{
font: 10px fantasy;
}

.iR_rank_type_sub a{
font: 10px fantasy;
text-decoration: none;
}

.iR_rank_type_sub a:hover{
font: 10px fantasy; color:#6b533f;
text-decoration: none;
}




.msg_success{
background: #c2ffaf;
border: 1px solid #cccccc;
padding: 4px;
padding-left: 33px;
margin-bottom: 6px;
margin-top: 6px;
background-image:url(template/<?=$core['config']['template'] ?>/images/success.gif);
background-repeat:no-repeat;
background-position: 10px;
font-size: 11px;
font-weight: bold;
color: #444444;
}

.msg_error{
background: #F9F2B9;
border: 1px solid #cccccc;
padding: 4px;

padding-left: 33px;
margin-bottom: 6px;
margin-top: 6px;
background-image:url(template/<?=$core['config']['template'] ?>/images/warning.gif);
background-repeat:no-repeat;
background-position: 10px;
font-size: 11px;
font-weight: bold;
color: #444444;
}


.chat_bg{
border: 1px solid #8f4c0a;
background: #1e0f02;
padding: 4px;
font-size: 11px;
color:#af7d55;
}

.chat_even{
background: #5b3005;
padding: 2px;
}

.chat_odd{
padding: 2px;
}


.warehouse_block{
border: 0px;
text-align: center;
background: url(template/<?=$core['config']['template'] ?>/images/warehouse_block.gif);
}

.warehouse_item_block {
border: 0px;
padding: 0px;
text-align: center;
background: url(template/<?=$core['config']['template'] ?>/images/warehouse_item_block.gif);
}

.warehouse_bg {
border: 0px;
padding: 0px;
text-align: center;
background: url(template/<?=$core['config']['template'] ?>/images/warehouse_bg.gif);
}

.item_name{
font: 12px Arial, sans-serif;
color: #ffffff;
font-weight: bold;
}

.item_dur{
font: 11px Arial, sans-serif;
color: #ffffff;
}

.item_requirement{
font: 11px Arial, sans-serif;
color: #ffffff;
}

.item_skill{
font: 11px Arial, sans-serif;
color: #ffffff;
}

.item_options{
font: 11px Arial, sans-serif;
color: #ffffff;
}

.iD_dashed{
border-top: #ffffff dashed 1px;
}

.downloads tr:hover{
background: #ffffff;
}


.curent_step{
background: #331c00; border: 1px solid #90490a;
padding: 2px;
font:bold 11px Arial;
color:#af7d55;
}

.step{
background: #190b00;
border: 1px solid #90490a;
padding: 2px;
font:bold 11px Arial;
color: #D4D4D4;
}

.hidden_password{
border: 1px solid #cccccc;
background: #ECECEC;
padding: 2px;
width: 200px;
color: #ECECEC;
}


.footer_font{
font:  normal 11px Tahoma, Calibri, Verdana, Geneva, sans-serif;
color: #ffffff;
}

.footer_font a{
padding-bottom:5px;
font:  normal 11px Tahoma, Calibri, Verdana, Geneva, sans-serif;
color: #af7d55;
text-decoration: none;
}

.footer_font a:hover{
font:  normal 11px Tahoma, Calibri, Verdana, Geneva, sans-serif;
color: #6b533f;
text-decoration: none;
}

.table_list{
background: #ffffff;
color: #000000;
border: outset 1px #DEE0E2;
}

.table_list .title{
background: #DFDFFF;
font: bold 11px tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;
padding: 2px;
padding-left: 4px;
color: #595959;
border: outset 1px #af7d55;
}

.table_list .even{
background: #ECECFF;
}

.table_list .content{
font: 11px tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;
padding: 2px;
padding-left: 4px;
}


#rss_feed{
margin-left: 0;
padding-left: 0;
list-style: none;
}

#rss_feed li
{
padding-left: 17px;
background-image: url(template/<?=$core['config']['template'] ?>/images/rss_icon.gif);
background-repeat: no-repeat;
background-position: 0;
}

#rss_feed li a{
text-decoration: none;
}

#rss_feed li a:hover{
text-decoration: underline;
}
.language_select{
margin-top: 4px;
}

.language_select a{
font: 11px Arial, Helvetica, sans-serif;
color: #ffffff;
text-decoration: none;
}

.language_select a:hover{
font: 11px Arial, Helvetica, sans-serif;
color: #ffffff;
text-decoration: underline;
}

.usercp_module{
font-weight:bold;
background-color:#000000;
color: #ffffff;
padding: 2px;
padding-left: 4px;
width: 140px;
}



.marco_contenido {
   width:90%;
}

index.php:
Citar<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<meta http-equiv="Content-Type"a content="text/html; charset=iso-8859-1">
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta name="author" content="PHPCore" />
<meta name="generator" content="MUCore 1.0.4" />
<meta name="keywords" content="news" />
<meta name="description" content="Global News" />
<?=build_header_seo(); ?>
<title><?=build_header_title(); ?></title>
<link href="template/<?=$core['config']['template'] ?>/css/estilo.css" rel="stylesheet" type="text/css" />
</head>
<body bgcolor="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
 <tr>
   <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
     <tr>
       <td class="fondo"><table width="1000" border="0" align="center" cellpadding="0" cellspacing="0" style="z-index:1;">
         
         
         <tr>
           <td width="1009" class="header"></td>
         </tr>
         <tr>
           <td valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0" class="menu-he">
             <tr>
               <td width="64%"><div class="bg_2">

   <a href="index.php" class="li1"></a>
   <a href="index.php?page_id=register" class="li2"></a>
   <a href="index.php?page_id=downloads" class="li3"></a>
   <a href="index.php?page_id=rankings" class="li4"></a>
   <a href="http://www.google.com" class="li5"></a>
   <a href="index.php?page_id=contact" class="li6"></a>
 </div></td>
               <td width="36%" valign="top">
               <?
        if($user_login == '1'){
           echo '<div class="tmp_left_login1">
           <ul>';
      $m_uss_row_ = get_sort('engine/cms_data/mods_uss.cms',',');
       $count_m_uss = 0;
      foreach ($m_uss_row_ as $tr){
         explode("¦",$tr);
         $count_m_uss++;
         if($tr[6] == '1'){
            if($tr[3] != ACCOUNTSETTINGS_CMS_USER){
               
            }
            
         }
      }
      echo ' </ul>
       </div>
       <table width="50%" border="0" align="left" style="margin-left: 50px; margin-top:20px;" cellpadding="0" cellspacing="4">
       <tr>
        <td align="left" class="configse"><a  href="'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.USER_CMS_PAGE.'&'.USER_GET_PAGE.'='.ACCOUNTSETTINGS_CMS_USER.'">'.link_account_settings.'</a></td>
        <td align="right" class="configse"><a  href="'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'=logout">'.link_log_out.'</a></td>
       </tr>
       </table>
      
       ';
        }else{
           echo '<form method="post" action="'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.LOGIN_CMS_PAGE.'" name="uss_login_form">
               <table width="350" border="0" cellpadding="0" cellspacing="0">
                 <tr>
                   <td width="51" height="12"></td>
                   <td width="195"></td>
                   <td width="11" rowspan="4"></td>
                   <td rowspan="4">
                   <input type="image" src="template/'.$core['config']['template'].'/images/ok.png" onclick="uss_login_form.submit();"></td>
                   </tr>
                 <tr>
                   <td>&nbsp;</td>
                   <td class="login-formulario"><input type="text" name="uss_id" maxlength="10" class="login_field" value="NOMBRE DE USUARIO" OnClick="this.value=\'\' "></td>
                   </tr>
                 <tr>
                   <td></td>
                   <td class="login-formulario"><input type="password" name="uss_password" class="login_field" value="CONTRASE&Ntilde;A" maxlength="12" OnClick="this.value=\'\'"><input type="hidden" name="process_login"></td>
                   </tr>
                 <tr>
                   <td>&nbsp;</td>
                   <td class="lost" valign="top"><a  href="'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.LOSTPASSWORD_CMS_PAGE.'" >Recuperar Contrase&ntilde;a</a> - <a  href="'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.REGISTER_CMS_PAGE.'">Registrate!</a></td>
                   </tr>
               </table>
               </form>';
        }
        ?>
     
               </td>
             </tr>
             <tr>
               <td><p>&nbsp;</p></td>
               <td>&nbsp;</td>
             </tr>
             </table>
             <table width="100%" border="0" cellpadding="0" cellspacing="0" class="descargar-he">
             <tr>
               <td width="4%" valign="top">&nbsp;</td>
               <td width="60%" valign="top"><div class="banner_rotator"></div></td>
               <td width="36%" valign="top"><div class="banner_descarga"></div></td>
             </tr>
             </table><table width="100%" border="0" cellpadding="0" cellspacing="0" class="contenido-he">
             <tr>
               <td width="4%" valign="top">&nbsp;</td>
               <td width="60%" valign="top"><div class="marco_contenido" align="left"><?
        if(CMS_NAVBAR == '1'){
           if(isset($_GET[LOAD_GET_PAGE])){
                    $l_load = file("engine/cms_data/pag_d.cms");
                    foreach ($l_load as $l_name){
                       $l_name = explode("¦",$l_name);
                       if($l_name[3] == $page_check_id){
                          $primary_l = $l_name[2];
                          break;
                       }

                    }
                 }
                 
                 if(isset($_GET[USER_GET_PAGE])){
                    $ti2_td = xss_clean(safe_input($_GET[USER_GET_PAGE],"_"));
                    $l2_load = file("engine/cms_data/mods_uss.cms");
                    foreach ($l2_load as $l2_name){
                       $l2_name = explode("¦",$l2_name);
                       if($l2_name[3] == $ti2_td){
                          $secondary_l = $l2_name[2];
                          break;
                       }
                    }
                 }
                 
                 if(!isset($_GET[LOAD_GET_PAGE])){
                                       #&gt;
                                       $title_p =  '<a  href="'.$core['config']['website_url'].'">'.$core['config']['websitetitle'].'</a>';
                                   }elseif  (isset($_GET[LOAD_GET_PAGE])){
                                       if(isset($_GET[USER_GET_PAGE])){
                                           $usercp_module_title =  str_replace($modules_text_tile,$modules_text_translate,$secondary_l);
$title_p =  '<a  href="'.$core['config']['website_url'].'">'.$core['config']['websitetitle'].'</a>  &gt; <a  href="'.$core['config']['website_url'].'/'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.$l_name[3].'">'.str_replace($menu_links_title,$menu_links_translated,$primary_l).'</a>  &gt; <a  href="'.$core['config']['website_url'].'/'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.$l_name[3].'&panel='.$l2_name[3].'">'.$usercp_module_title.'</a>';
                                       }else{ $title_p =  '<a  href="'.$core['config']['website_url'].'">'.$core['config']['websitetitle'].'</a>  &gt; <a  href="'.$core['config']['website_url'].'/'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.$l_name[3].'">'.str_replace($menu_links_title,$menu_links_translated,$primary_l).'</a>';}
                                   }
                 echo '
                 
                 ';
           
        }

if($page_check_id != ANNOUNCEMENTS_CMS_PAGE){
   require('engine/announcement_config.php');
if($core['ANNOUNCEMENT']['ACTIVE'] == '1'){
   $ann_file = array_reverse(file('engine/variables_mods/announcements.tDB'));
   $count_ann = '0';
   foreach ($ann_file as $ann){
      $ann = explode("¦",$ann);
      if($ann[3] > time()){
         $ann_found = '1';
         $ann_title = $ann[1];
         $ann_id = $ann[0];
;         break;
      }
   }
}
   if($ann_found == '1'){
      echo '
      <div class="tmp_m_content">
               <div  class="tmp_right_title">
                   <table width="97%" border="0" align="center" cellpadding="0" cellspacing="0">
                   <tr>
                     <td width="1%" >&nbsp;</td>
                     <td width="47"><img src="template/'.$core['config']['template'].'/images/punto.gif"></td>
                     <td>'.text_announcement.'</td>
                   </tr>
                   <tr>
                     <td colspan="3" class="line-menu"></td>
                   </tr>
                   </table>
                 
               </div>
               <div class="tmp_page_content">
                        <table cellpadding="0" cellspacing="0" border="0" width="100%">
                 <tr>
                 <td rowspan="3" align="left" width="60"><img src="template/'.$core['config']['template'].'/images/announcement.gif" width="38" height="38"></td>
                 <td align="left" style="padding-top: 2px; padding-bottom: 2px;"><a href="'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.ANNOUNCEMENTS_CMS_PAGE.'#announcement-'.$ann_id.'"><div class="iN_news_content">'.$ann_title.'</div></a></td>
                 <td align="right" class="ann_date">'.date('F j, Y ').'</td>
                 </tr>
                 <tr>
                 <td colspan="2"  align="left" style="background-image:url(template/'.$core['config']['template'].'/images/inner_line.jpg); height: 2px;"></td>
                 </tr>
                 
                 ';
      if($core['ANNOUNCEMENT']['AUTHOR'] == '1'){
         echo '<tr>
         <td colspan="2" align="right"><b>'.$core['config']['admin_nick'].'</b> (Administrator)</td>
         </tr>';
         
      }
      echo '</table></div>
</div>
                  ';
   }
}
        
        
   
$load_pages = file('engine/cms_data/pag_d.cms');
foreach ($load_pages as $pages_loaded){
   $pages_loaded = explode("¦",$pages_loaded);
   
   if($pages_loaded[3] == $page_check_id){
      $p_loaded_array = preg_split( "/\ /", $pages_loaded[5]);
      $p_l = '1';
      break;
   }
}
if($p_l == '1'){
$load_mods = file('engine/cms_data/mods.cms');
foreach ($load_mods as $mods_loaded){
   $mods_loaded = explode("¦",$mods_loaded);
   if(in_array($mods_loaded[0],$p_loaded_array)){
      $_c_id_m[] = $mods_loaded[0];
   }else {
      $_c_id_m[] = 'NULL';
   }
}
$co=0;
foreach ($p_loaded_array as $give){
   #echo $give;
   if(in_array($give,$_c_id_m)){
      foreach ($load_mods as $give_me_out){
         $give_me_out = explode("¦",$give_me_out);
         if($give_me_out[0] == $give){
            if($give_me_out[4] == '1'){
               if($_GET[LOAD_GET_PAGE] == USER_CMS_PAGE && isset($_GET[USER_GET_PAGE])){
                  $construct_title = $secondary_l;
               }else{
                  $construct_title = $give_me_out[3];
               }
            
               echo '<div class="tmp_m_content">
                <div  class="tmp_right_title">                    
                                    <table width="97%" border="0" align="center" cellpadding="0" cellspacing="0">
                   <tr>
                     <td width="1%" >&nbsp;</td>
                     <td width="47"><img src="template/'.$core['config']['template'].'/images/punto.gif"></td>
                     <td>'.htmlspecialchars(str_replace($modules_text_tile,$modules_text_translate,$give_me_out[3])).'</td>
                   </tr>
                   <tr>
                     <td colspan="3" class="line-menu"></td>
                   </tr>
                   </table>
               </div></div>
               <div class="tmp_page_content">';
               if($give_me_out[1] == '1'){
                  if(is_file("pages_modules/".$give_me_out[2]."")){
                     include('pages_modules/'.$give_me_out[2].'');
                  }else{
                     echo 'Unable to load module file, reason: not found.';
                  }
               }elseif ($give_me_out[1] == '0'){
                  if(is_file('engine/cms_data/cms_co/'.$give_me_out[0].'_cms.cms')){
                     include('engine/cms_data/cms_co/'.$give_me_out[0].'_cms.cms');
                  }else{
                     echo 'Unable to load module content, reason: not found.';
                  }
               }
               echo '</div> </div>';
            }
         }
      }
   }
}
}
?>
               
                 
                </div> </td>
               <td width="36%" valign="top"><?
        if($user_login == '1'){
           echo '<div class="tmp_left_menu">
           <ul>';
      $m_uss_row_ = get_sort('engine/cms_data/mods_uss.cms','¦');
       $count_m_uss = 0;
      foreach ($m_uss_row_ as $tr){
         explode("¦",$tr);
         $count_m_uss++;
         if($tr[6] == '1'){
            if($tr[3] != ACCOUNTSETTINGS_CMS_USER){
               echo '<li class="list_menu"><a  href="'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.USER_CMS_PAGE.'&'.USER_GET_PAGE.'='.$tr[3].'">'.str_replace($menu_links_title,$menu_links_translated,$tr[2]).'</a></li>';
            }
            
         }
      }
      echo ' </ul>
       </div>
      
       ';
        }else
        ?><div class="tmp_left_cabezal">MuOnline - Modulos</div><div class="tmp_left_menu">
        <ul><?
                 $m_row_ = get_sort('engine/cms_data/pag_d.cms','¦');
               #  echo $test[1][2][3];
                 foreach ($m_row_ as $li){
                #  explode("¦",$li);
                  switch ($li[7]){
                     case '0':
                        if($li[8] == '1'){
                           if($li[6] != '0'){
                              echo '<li class="list_menu"><a  href="'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.$li[3].'">'.str_replace($menu_links_title,$menu_links_translated,$li[2]).'</a></li>';
                           }
                     
                        }
                        break;
                     case '1':
                        switch ($li[11]){
                           case '1': $target = "_blank"; break;
                           case '0': $target = "_self"; break;
                        }
                        echo '<li class="list_menu"><a  href="'.$li[10].'"  target="'.$target.'">'.str_replace($menu_links_title,$menu_links_translated,$li[2]).'</a></li>  ';
                     
                     break;
                  }


                    
                 }
                 
        ?>
        </ul>
       </div></td>
             </tr>
             </table><table width="100%" border="0" cellpadding="0" cellspacing="0" class="footer-he">
             <tr>
               <td width="4%" valign="top">&nbsp;</td>
               </tr>
             </table><div align="center" class="creditos"><?=build_footer(),$XX= base64_decode('PGRpdiBhbGlnbj0iY2VudGVyIj48L2Rpdj4=');?></div>
            </td>
         </tr>
       </table></td>
     </tr>
   </table></td>
 </tr>
</table>
</body>

</html>

<script type="text/javascript" SRC="js/js_popup.js"></script>
#172
Programación General / Duda con Installshield
10 Febrero 2012, 22:09 PM
Hola a todos, estoy intentando crear un instalador con installshield, pero me surge una duda que me gustaría saber si es posible solucionarla, les cuento:

Durante la instalación Installshield nos da la posibilidad de poder mostrar imágenes, pero aquí el problema, la resolución; Si elijo resoluciones muy altas de imágenes en los netbook se ve solo una parte de ella, por lo que me gustaría saber si existe alguna forma de poder adaptar la resolución de acuerdo a la resolución de la imagen, Saludos
#173
Hola a todos, bueno poseo una aplicación en la cual hookeo una DLL más o menos de la siguiente manera (seudocodigo):

Push midll.dll
call LoadLibraryA
or eax,eax
je cerrar
jmp entry point
cerrar:
push 0ff
call ExitProcess

Carga muy bien, pero el problema que me surge es de que manera, que API podría llamar o que función podría realizar para que una vez ejecutada la aplicación verifique si está cargada.

La dll es para la detección de cheat's para un juego por lo que si una persona con pequeños conocimientos podría simplemente nopear desde push midll.dll hasta je cerrar y no cargaría la DLL (el proceso funcionaría correctamente, pero sin un "sistema de seguridad").

Mi idea es hacer un injerto que verifique si está cargada en memoria, pero ese es mi duda como y con qué API usarla?

INFO adicional: La DLL se conecta a un servidor para corroborar su integridad a través de CRC por lo que no me preocupa que alguien agregue una DLL con el nombre de midll.dll ya que sería detectada. Por lo que en palabras simples solo me gustaría saber de que manera el proceso puede verificar si la dll está cargada.

el seudocódigo sería así
injertar una función en donde el proceso pase seguidamente.
verificar si hay si la DLL está cargada y retomar normalmente.

Espero su ayuda.

Efectivamente eso es más ASM pero creo que se puede integrar a Ing inversa al ser un tema que involucra la seguridad

(si alguien se ha topado con un programa que haga algo parecido)

PD: Solución simple no compleja jeje


Saludos
#174
PHP / Ayuda con PHP (pequeña página)
7 Febrero 2012, 07:59 AM
Hola a todos bueno sinceramente desconozco de programación PHP pero necesito hacer algo que se que es muy fácil realizar, se que es algo puntual que me llevaría tener que aprender una gran cantidad de PHP siendo para mi incensario en este momento.

Les comento:

Tengo una página llamada hola.php y me gustaría que mostrara en el php lo que se escribe después de ?n= un ejemplo sería lo que está con rojo:

/hola.php?n=Hola

y que la página mostrara Hola (simple texto, no centrado)

la idea es que lo que se escriba a continuación de n= el .php me lo muestre como un simple texto en la misma página hola.php

(Introduciré solo textos)

Se que será sencilla para ustedes, Muchas gracias por su ayuda
#175
He creado un grupo es de suma importancia, espero que se unan e inviten a sus amigos:
https://www.facebook.com/events/194180564012664/?context=create

Por un Internet libre y sin censura!
#176
Programación General / Instrucción % en C++?
17 Enero 2012, 16:09 PM
Hola estoy siguiendo un libro de ASM pero ha aparecido un ejercicio de interpretación de C++ a ASM (desconozco de C++) pero tengo unas dudas con respecto al planteamiento del ejemplo, creo que hay un error de escritura del libro:

var4 = (var1 * -5) / (-var2 % var3);

Dentro de la conversión a ASM el % es considerado como una división (/) en C++ esto está bien planteado o debería haber un / en vez de %?

Muchas gracias
#177
Al ingresar por primera vez a un subforo que sea redirigido al post de reglas solo la primera vez.

pues eso
#178
Tutorial Russian Dolls crackme
Autor: Andrewl
información del crackme:http://crackmes.de
Autor del tutorial:UND3R
Objetivos: Realizar Keygen

Abrimos el crackme directamente, observaremos que nos informa el número de dígitos del serial:


Si introducimos un serial falso nos mostrará el siguiente mensaje:


Abrimos el crackme desde OllyDbg y veremos el siguiente Entry Point:


Buscamos referencias de texto dentro del crackme:


Notaremos la cadena de texto "Congratulations!", hacemos doble clic para dirigirnos hacia la dirección en donde es utilizada:


Vemos una instrucción PUSH, encargada de meter el puntero de la cadena de texto en el stack y luego una instrucción JMP SHORT que permite la utilización de la misma call hacia la API MessageBoxA permitiendo el ahorro de instrucciones:


Si subimos un poco veremos que para que el crackme nos muestre el mensaje de "Congratulations!" se deben cumplir ocho comparaciones. Si alguna de las ocho nos da como resultado cero (Activación de la bandera ZF) nos mostrará el mensaje equivalente al introducir un serial falso. Para obtener el mensaje de un serial correcto se debería cumplir las siguientes afirmaciones:

Citar00402D78   .  807C24 11 00  CMP BYTE PTR SS:[ESP+11],0
Stack SS:[0012FAC5]=01

00402D7F   .  807C24 14 00  CMP BYTE PTR SS:[ESP+14],0
Stack SS:[0012FAC8]=01

00402D86   .  807C24 13 00  CMP BYTE PTR SS:[ESP+13],0
Stack SS:[0012FAC7]=01

00402D8D   .  807C24 17 00  CMP BYTE PTR SS:[ESP+17],0
Stack SS:[0012FACB]=01

00402D94   .  807C24 16 00  CMP BYTE PTR SS:[ESP+16],0
Stack SS:[0012FACA]=01

00402D9B   .  807C24 15 00  CMP BYTE PTR SS:[ESP+15],0
Stack SS:[0012FAC9]=01

00402DA2   .  807C24 10 00  CMP BYTE PTR SS:[ESP+10],0
Stack SS:[0012FAC4]=01

00402DA9   .  807C24 12 00  CMP BYTE PTR SS:[ESP+12],0
Stack SS:[0012FAC6]=01

* (Otra manera sería invertir los nemónicos de instrucciones JE SHORT por JNE SHORT)

También vemos un CALL ESI llamativo ya que este podría ser el encargado de comprobar si el serial introducido corresponde a un serial válido, coloquemos un BP en él:


Iniciamos el crackme (F9) e introducimos un serial falso:


Notaremos que se ha detenido en nuestro BP:


Entramos al CALL ESI y veremos lo siguiente:


Traceamos algunas instrucciones hasta llegar a la instrucción XOR:


Si pasamos la instrucción XOR (F7), notaremos que han cambiado algunas instrucciones posteriores a JNZ SHORT. Esto se debe a una función de descifrado en donde el contenido de ESI es alterado producto de la operación booleana XOR entre [ESI] y 76, guardando el resultado en el operando de destino (dentro de ESI). Luego de eso es incrementado ESI para apuntar a las siguientes instrucciones y disminuido ECX, este segundo registro es utilizado como contador de bucle ya que luego de SUB ECX,1 hay un nemónico de instrucción de tipo salto condicional en donde salta a la instrucción XOR si el resultado de la instrucción SUB ECX,1 es distinto de cero:


Colocamos un BP a continuación de JNZ SHORT e iniciamos el crackme (F9):


Veremos una serie de instrucciones descifradas:


Quitamos el BP y traceamos (F7), notaremos las siguientes instrucciones encargadas de la validación del serial:
0FB648 03       MOVZX ECX,BYTE PTR DS:[EAX+3] ; mueve el cuarto valor del serial a ECX
83F9 6D         CMP ECX,6D                    ; lo compara con 6D (m)


En caso de que la comparación de como resultado la activación de la bandera Cero (ZF), se moverá dentro de EDX el byte 1:
MOV BYTE PTR DS:[EDX],1



Si miramos el valor de EDX en los registros de propósito general de 32 bits veremos que EDX apunta a una de las ocho direcciones que debe contener 1 byte para que el serial sea considerado como válido:


Si seguimos traceando (F7) notaremos una función encargada de cifrar las instrucciones previamente descifradas:


Seguimos traceando (F7), veremos nuevamente el procedimiento de descifrado:


Colocamos un BP a continuación de la instrucción JNZ SHORT:


Iniciamos nuevamente el crackme (F9) y notaremos que se repiten nuevamente los procedimientos:


podríamos resumirlo de la siguiente manera:
-descifra las instrucciones a ejecutar
-ejecuta las instrucciones descifradas encargadas de verificar el serial
-cifra las instrucciones previamente ejecutadas


(Lo más probable es que el programa cifre las instrucciones ejecutadas para evitar que al retornar del CALL ESI queden descubiertas todas las instrucciones de comprobación del serial, al igual que luego de introducir un serial si es dumpeado el ejecutable, quedarían expuestas las comprobaciones.)

Si seguimos traceando notaremos que siempre se repiten las mismas funciones:
0015E028    0FB648 03       MOVZX ECX,BYTE PTR DS:[EAX+3] ; mueve el cuarto valor del serial a ECX
0015E02F    83F9 6D         CMP ECX,6D                    ; lo compara con 6D (m)

0015E069    0FB648 02       MOVZX ECX,BYTE PTR DS:[EAX+2] ; mueve el tercer valor del serial a ECX
0015E070    83F9 37         CMP ECX,37                    ; lo compara con 37 (7)

0015E0AA    0FB648 03       MOVZX ECX,BYTE PTR DS:[EAX+3] ; mueve el cuarto valor del serial a ECX
0015E0B1    83F9 65         CMP ECX,65                    ; lo compara con 65 (e)

0015E0EB    0FB648 07       MOVZX ECX,BYTE PTR DS:[EAX+7] ; mueve el octavo valor del serial a ECX
0015E0F2    83F9 48         CMP ECX,48                    ; lo compara con 48 (H)

0015E12C    0FB648 03       MOVZX ECX,BYTE PTR DS:[EAX+3] ; mueve el cuarto valor del serial a ECX
0015E133    83F9 37         CMP ECX,37                    ; lo compara con 37 (7)

0015E16D    0FB648 00       MOVZX ECX,BYTE PTR DS:[EAX]   ; mueve el primer valor del serial a ECX
0015E174    83F9 37         CMP ECX,37                    ; lo compara con 37 (7)

0015E1AE    0FB648 01       MOVZX ECX,BYTE PTR DS:[EAX+1] ; mueve el segundo valor del serial a ECX
0015E1B5    83F9 55         CMP ECX,55                    ; lo compara con 55 (U)

0015E1EF    0FB648 01       MOVZX ECX,BYTE PTR DS:[EAX+1] ; mueve el segundo valor del serial a ECX
0015E1F6    83F9 64         CMP ECX,64                    ; lo compara con 64 (d)

0015E230    0FB648 04       MOVZX ECX,BYTE PTR DS:[EAX+4] ; mueve el quinto valor del serial a ECX
0015E237    83F9 47         CMP ECX,47                    ; lo compara con 47 (G)

0015E271    0FB648 02       MOVZX ECX,BYTE PTR DS:[EAX+2] ; mueve el tercer valor del serial a ECX
0015E278    83F9 37         CMP ECX,37                    ; lo compara con 37 (7)

0015E2B2    0FB648 01       MOVZX ECX,BYTE PTR DS:[EAX+1] ; mueve el segundo valor del serial a ECX
0015E2B9    83F9 55         CMP ECX,55                    ; lo compara con 55 (U)

0015E2F3    0FB648 07       MOVZX ECX,BYTE PTR DS:[EAX+7] ; mueve el octavo valor del serial a ECX
0015E2FA    83F9 6F         CMP ECX,6F                    ; lo compara con 6F (o)

0015E334    0FB648 05       MOVZX ECX,BYTE PTR DS:[EAX+5] ; mueve el sexto valor del serial a ECX
0015E33B    83F9 37         CMP ECX,37                    ; lo compara con 37 (7)

0015E375    0FB648 03       MOVZX ECX,BYTE PTR DS:[EAX+3] ; mueve el cuarto valor del serial a ECX
0015E37C    83F9 36         CMP ECX,36                    ; lo compara con 36 (6)

0015E3B6    0FB648 01       MOVZX ECX,BYTE PTR DS:[EAX+1] ; mueve el segundo valor del serial a ECX
0015E3BD    83F9 33         CMP ECX,33                    ; lo compara con 33 (3)

0015E3F7    0FB648 04       MOVZX ECX,BYTE PTR DS:[EAX+4] ; mueve el quinto valor del serial a ECX
0015E3FE    83F9 45         CMP ECX,45                    ; lo compara con 45 (E)

0015E438    0FB648 02       MOVZX ECX,BYTE PTR DS:[EAX+2] ; mueve el tercer valor del serial a ECX
0015E43F    83F9 50         CMP ECX,50                    ; lo compara con 50 (P)

0015E479    0FB648 02       MOVZX ECX,BYTE PTR DS:[EAX+2] ; mueve el tercer valor del serial a ECX
0015E480    83F9 36         CMP ECX,36                    ; lo compara con 36 (6)

0015E4BA    0FB648 05       MOVZX ECX,BYTE PTR DS:[EAX+5] ; mueve el sexto valor del serial a ECX
0015E4C1    83F9 39         CMP ECX,39                    ; lo compara con 39 (9)

0015E4FB    0FB648 05       MOVZX ECX,BYTE PTR DS:[EAX+5] ; mueve el sexto valor del serial a ECX
0015E502    83F9 49         CMP ECX,49                    ; lo compara con 49 (I)

0015E53C    0FB648 00       MOVZX ECX,BYTE PTR DS:[EAX]   ; mueve el primer valor del serial a ECX
0015E543    83F9 35         CMP ECX,35                    ; lo compara con 35 (5)

0015E57D    0FB648 02       MOVZX ECX,BYTE PTR DS:[EAX+2] ; mueve el tercer valor del serial a ECX
0015E584    83F9 7A         CMP ECX,7A                    ; lo compara con 7A (z)

0015E5BE    0FB648 01       MOVZX ECX,BYTE PTR DS:[EAX+1] ; mueve el segundo valor del serial a ECX
0015E5C5    83F9 6E         CMP ECX,6E                    ; lo compara con 6E (n)

0015E5FF    0FB648 03       MOVZX ECX,BYTE PTR DS:[EAX+3] ; mueve el cuarto valor del serial a ECX
0015E606    83F9 6A         CMP ECX,6A                    ; lo compara con 6A (j)

0015E640    0FB648 01       MOVZX ECX,BYTE PTR DS:[EAX+1] ; mueve el segundo valor del serial a ECX
0015E647    83F9 7A         CMP ECX,7A                    ; lo compara con 7A (z)

0015E681    0FB648 06       MOVZX ECX,BYTE PTR DS:[EAX+6] ; mueve el séptimo valor del serial a ECX
0015E688    83F9 57         CMP ECX,57                    ; lo compara con 57 (W)

0015E6C2    0FB648 05       MOVZX ECX,BYTE PTR DS:[EAX+5] ; mueve el sexto valor del serial a ECX
0015E6C9    83F9 4F         CMP ECX,4F                    ; lo compara con 47 (O)


Por lo que podríamos crear un script de ODbg encargado de almacenar todas las comparaciones que realiza. Al realizar comprobaciones de los datos obtenidos por el script, los serial ingresados eran considerados como incorrectos por lo que por lógica deberían haber más comparaciones que si se cumplen se introduce un byte 0, por lo que encontré funciones muy similares pero con la gran diferencia que si estas se cumplían en vez de poseer la instrucción MOV BYTE PTR DS:[EDX],1 a continuación de JNZ SHORT, contenían la instrucción MOV BYTE PTR DS:[EDX],0, a consecuencia de esto cree un script que en un documento de texto me mostrara la comparación junto con un SI o un NO en donde SI es introducido cuando la instrucción siguiente a JNZ SHORT es MOV BYTE PTR DS:[EDX],1 y un NO cuando la instrucción siguiente a JNZ SHORT es MOV BYTE PTR DS:[EDX],0

Script:
Código (asm) [Seleccionar]
VAR AUX
VAR FSERIAL
VAR SERIAL
WRT "log.txt","Log:"                                                 
INICIO:
TICND  "byte [eip]==75 && byte [eip+1]==0F7" 
BP eip+2
RUN
BC eip
TICND  "byte [eip]==8B && byte [eip+1]==55"
STI
CMP edx,0012FAC5
JE ENCONTRADO
CMP edx,0012FAC8
JE ENCONTRADO
CMP edx,0012FAC7
JE ENCONTRADO
CMP edx,0012FACB
JE ENCONTRADO
CMP edx,0012FACA
JE ENCONTRADO
CMP edx,0012FAC9
JE ENCONTRADO
CMP edx,0012FAC4
JE ENCONTRADO
CMP edx,0012FAC6
JE ENCONTRADO
JMP INICIO
ENCONTRADO: 
MOV FSERIAL,ecx
BUF FSERIAL
STR FSERIAL 
MOV SERIAL,[eip+2],1
BUF SERIAL
STR SERIAL
STI
ADD eip,2
CMP [eip],C6,1
JNE INICIO
CMP [eip+1],02,1
JNE INICIO
CMP [eip+2],01,1
JE SI
NO:
MOV AUX,"NO"
JMP CONTINUAR
SI:
MOV AUX,"SI"
CONTINUAR:
WRTA "log.txt",FSERIAL
WRTA "log.txt","=",""
WRTA "log.txt",SERIAL,""
WRTA "log.txt"," ",""
WRTA "log.txt",AUX,"" 
jmp INICIO


El script debe ser ejecutado de la siguiente forma:
1)colocar BP en CALL ESI
2)iniciar el crackme (F9)
3)introducir el serial: 12345678 (ya que nos dará la referencia de la posición del dígito que se está comparando)
4)Se detendrá en el BP se debe quitar y entrar dentro del CALL (001CFFE8    55              PUSH EBP)

El script debe ser detenido una vez que hemos presionado aceptar a la alerta generada por la API MessageBoxA del serial incorrecto.

Una vez terminado el script si abrimos log.txt (documento de texto creado por el script) veremos lo siguiente:

En la primera linea:
el cuarto carácter es comparado con m y si este se cumple mueve dentro de EDX el byte 1.

Ya que el script logea las comparaciones de manera secuencial, la lógica sería buscar desde abajo hacia arriba una comparación con SI y luego buscar hacia abajo la misma comparación con un NO, si se encuentra la comparación el dígito es inválido en caso contrario el dígito es válido, para optimizar la búsqueda utilizaremos Excel, seleccionamos todo el contenido de log.txt y lo pegamos dentro de una nueva hoja de Excel:


Nos dirigimos a Datos->Filtro:


En la ubicación A1 ("Log:") contendrá un botón:


Seleccionamos el botón y nos vamos a Filtros de texto-> Comienza por...:


He introducimos 1:


De esta forma Excel filtrará de manera secuencial todos los datos que comienza con 1, en otras palabras nos mostrará todas las comparaciones realizadas con el primer dígito:


Copiamos el contenido filtrado en un nuevo documento de texto, nos dirigimos hasta el final y comenzamos a buscar "SI" de la siguiente manera:

De manera lógica estamos buscando la última comparación válida del dígito 1

Ya encontrado el "SI" buscamos hacia abajo la igualdad válida para saber si es anulada por un "NO" (En este caso está a la vista, pero en los demás dígitos no son tan visibles las igualdades válidas que más abajo se ven afectadas por un "NO"):


Si no se encuentra la comparación hemos encontrado un dígito válido:

en caso contrario debemos volver al "SI" encontrado y buscar nuevamente "SI" hacia arriba ya encontrado el primer dígito se debe filtrar nuevamente en Excel pero esta vez por los que comienzan en 2 y repetir el procedimiento de búsqueda hasta encontrar los ocho dígitos.

Una vez encontrado los ocho dígitos al introducir el serial, el crackme nos mostrará el siguiente mensaje:


Ya con un serial válido podemos obtener un Keygen:
1)debemos introducir el serial válido.
2)EJ: CAaC5EEs.
3)Si queremos saber todas las posibilidades del primer dígito vamos introduciendo números desde el "0" al "9", luego letras mayúsculas desde la "A" a la "Z" y letras minúsculas desde la "a" a la "z".

Pero el mensaje del serial incorrecto nos es un poco molesto, por lo que podríamos borrarlo, nos dirigimos a la string: "sorry, try harder!":


y llenamos con instrucciones NOP (Not operand) y agregamos un JMP tal como lo muestra la imagen:


Guardamos los cambios y ya podremos obtener los dígitos válidos para cada posición del serial con mayor comodidad.

La lista completa de posibles combinaciones es la siguiente:
   1ºD   2ºD   3ºD   4ºD   5Dº   6Dº   7ºD   8ºD
VA 1     4     2     8     4     7     1     4
   C     A     a     C     5     E     E     s
         B                 D     F
         C                 J     H
         E                 Ñ     K
         J                 P     L
         K                 U     M
         M                 ñ     N
         Ñ                       Ñ
         O                       Q
         Q                       R
         R                       S
         V                       U
         Z                       V
         a                       W
         g                       X
         i                       Y
         k                       g
         m                       h
         q                       i
         s                       j
         y                       ñ
                                 o
                                 q
                                 t
                                 z


Keygen:
Para el Keygen he tenido que suprimir las letras Ñ y ñ en cuanto a la generación del serial debido a que estoy iniciándome en el lenguaje ASM y estoy utilizando procedimientos pre-diseñados por lo que desconozco como solucionarlo y como trabajar directamente con APIS por lo que el Keygen es muy simple, pero cumple con su finalidad, aquí el código de fuente:

Código (asm) [Seleccionar]
TITLE Keygen Russian Dolls (Keygen-Russian-Dolls.asm)
; Genera combinaciones de dígitos válidos para el crackme Russian Dolls
; Autor: UND3R
; Fecha: Miércoles 4 de enero de 2012
INCLUDE c:\masm32\include\Irvine32.inc
INCLUDELIB c:\masm32\lib\kernel32.lib
INCLUDELIB c:\masm32\lib\Irvine32.lib
INCLUDELIB c:\masm32\lib\User32.lib
.data
; en el arreglo SegundoDigito se ha omitido la letra Ñ
; en el arreglo QuintoDigito se ha omitido la letra Ñ y ñ
; en el arreglo SextoDigito se ha omitido la letra Ñ y ñ
PrimerDigito  BYTE 31h,"C"
SegundoDigito BYTE 34h,"A","B","C","E","J","K","M","O","Q","R","V","Z","a","g","i","k","m","q","s","y"
TercerDigito  BYTE 32h,"a"
CuartoDigito  BYTE 38h,"C"
QuintoDigito  BYTE 34h,35h,"D","J","P","U"
SextoDigito   BYTE 37h,"E","F","H","K","L","M","N","Q","R","S","U","V","W","X","Y","g","h","i","j","o","q","t","z"
SeptimoDigito BYTE 31h,"E"
OctavoDigito  BYTE 34h,"s"
Serial        BYTE 8 DUP(?)
Color         BYTE ?

.code
main PROC
    call GetTextColor              ; obtiene el color de texto y fondo de la consola
mov Color,al                   ; mue AL dentro del arreglo Color
    call Randomize                 ; inicializa el valor de la semilla para el procedimiento RandomRange
    call GenerarSerial
    call MostrarSerial
jmp main
main ENDP
GenerarSerial PROC
; Genera seriales válidos de manera aleatoria
; RECIBE:   NADA
; DEVUELVE: Serial válido en el arreglo sin inicializar "Serial"
;--------------------------------------------------------------------
mov eax,sizeof PrimerDigito    ; mueve a EAX el número de valores del arreglo
call RandomRange               ; genera números aleatorios desde 0 hasta EAX - 1
mov dl,[PrimerDigito+eax]      ; mueve a DL un valor aleatorio del arreglo "PrimerDigito"
mov [Serial],dl                ; mueve DL dentro del arreglo "Serial"

mov eax,sizeof SegundoDigito   ; mueve a EAX el número de valores del arreglo
call RandomRange               ; genera números aleatorios desde 0 hasta EAX - 1
mov dl,[SegundoDigito+eax]     ; mueve a DL un valor aleatorio del arreglo "SegundoDigito"
mov [Serial+1],dl              ; mueve DL dentro del arreglo "Serial"

    mov eax,sizeof TercerDigito    ; mueve a EAX el número de valores del arreglo
call RandomRange               ; genera números aleatorios desde 0 hasta EAX - 1
mov dl,[TercerDigito+eax]      ; mueve a DL un valor aleatorio del arreglo "TercerDigito"
mov [Serial+2],dl              ; mueve DL dentro del arreglo "Serial"

mov eax,sizeof CuartoDigito    ; mueve a EAX el número de valores del arreglo
call RandomRange               ; genera números aleatorios desde 0 hasta EAX - 1
mov dl,[CuartoDigito+eax]      ; mueve a DL un valor aleatorio del arreglo "CuartoDigito"
mov [Serial+3],dl              ; mueve DL dentro del arreglo "Serial"

mov eax,sizeof QuintoDigito    ; mueve a EAX el número de valores del arreglo
call RandomRange               ; genera números aleatorios desde 0 hasta EAX - 1
mov dl,[QuintoDigito+eax]      ; mueve a DL un valor aleatorio del arreglo "QuintoDigito"
mov [Serial+4],dl              ; mueve DL dentro del arreglo "Serial"

mov eax,sizeof SextoDigito     ; mueve a EAX el número de valores del arreglo
call RandomRange               ; genera números aleatorios desde 0 hasta EAX - 1
mov dl,[SextoDigito+eax]       ; mueve a DL un valor aleatorio del arreglo "SextoDigito"
mov [Serial+5],dl              ; mueve DL dentro del arreglo "Serial"

mov eax,sizeof SeptimoDigito   ; mueve a EAX el número de valores del arreglo
call RandomRange               ; genera números aleatorios desde 0 hasta EAX - 1
mov dl,[SeptimoDigito+eax]     ; mueve a DL un valor aleatorio del arreglo "SeptimoDigito"
mov [Serial+6],dl              ; mueve DL dentro del arreglo "Serial"

mov eax,sizeof OctavoDigito    ; mueve a EAX el número de valores del arreglo
call RandomRange               ; genera números aleatorios desde 0 hasta EAX - 1
mov dl,[OctavoDigito+eax]      ; mueve a DL un valor aleatorio del arreglo "OctavoDigito"
mov [Serial+7],dl              ; mueve DL dentro del arreglo "Serial"
ret

GenerarSerial ENDP
MostrarSerial PROC
    mov ecx,8                      ; establece ECX = 8
    mov esi,0                      ; establece ESI = 0
    L2:
    mov eax,16                     ; establece EAX = 16
    call RandomRange               ; Genera un número aleatorio entre 0 y EAX - 15
cmp eax,0                      ; compara EAX con 0
je L2                          ; si EAX = 0 se dirige a la etiqueta L2 (Evita un texto negro junto con un fondo de igual color)
call SetTextColor              ; Cambia el color de texto y de fondo de la consola, de acuerdo al valor de AL
    L1:
mov al,[Serial+esi]            ; mueve los dígitos del arreglo "Serial" a AL
call WriteChar                 ; escribe un dígito del arreglo "Serial" en la consola
inc esi                        ; aumenta en uno esi
loopd L1                       ; decrementa ECX y si ECX no es cero se dirige a la etiqueta L1
call Crlf                      ; desplaza el cursor abajo, hacia la derecha
mov al,[Color]                 ; mueve el contenido del arreglo Color a AL
call SetTextColor              ; Cambia el color de texto y de fondo de la consola, de acuerdo al valor de AL
call WaitMsg                   ; se espera que el usuario presiona alguna tecla para continuar
call Clrscr                    ; limpia el contenido de la consola
ret

MostrarSerial ENDP
END main


En el cada vez que presionemos una tecla nos mostrará seriales distintos:


IMPORTANTE:
Si el serial es copiado directamente y no es introducido de manera manual o ni si quiera un dígito, el crackme lo considera como inválido pudiendo ser este verdadero.

UND3R




Pack de descarga:
-Crackme modificado sin el mensaje de serial incorrecto
-Código de fuente Keygen .asm
-Seriales correctos.txt
-Crackme
-Keygen
-Script
-log.txt

LINK: http://www.mediafire.com/?nxlnml8nx4i8dvb
#179
pues eso ya que trae un botón que dice borrar datos repetidos, pero no considera las mayúsculas y minúsculas

#180
Hola a todos, bueno estoy buscando la forma de poder eliminar las palabras repetidas de un .txt

buscando por Internet encontré el siguiente código que funciona casi a la perfección:
Código (bash) [Seleccionar]
echo off

set /a x=1

for /f "tokens=1 delims=" %%a in (token4.txt) do (
rem echo %%a
echo %%a > %%a.test
)

for /f "tokens=* delims= " %%a in ('dir /B "*.test"') do (
echo %%a>>semifinish.txt
)

echo  > finish.txt

for /f "tokens=1,2 delims=." %%a in (semifinish.txt) do (

echo %%a >>finish.txt
rem echo %%b

rem echo %%p

)

for /f "tokens=* delims= " %%a in ('dir /B "*.test"') do (
del "%%a"
)

del semifinish.txt


Si en token4.txt tiene:
1
1
2
3
4
4
5
6


me queda un finish.txt de esta manera:
1
2
3
4
5
6


Pero me gustaría hacerle una modificación para que borrara los dos números que se repitieron es decir que usando el mismo ejemplo anterior me devolviera:
2
3
5
6


En palabras simples borrar ambas palabras o números repetidos.

Espero su ayuda, muchas gracias