Underc0de

Programación Scripting => Batch - Bash => Mensaje iniciado por: Xa0s en Junio 10, 2010, 11:13:45 AM

Título: [Analisis] Conexion_Save (By: Javi)
Publicado por: Xa0s en Junio 10, 2010, 11:13:45 AM
Este post fue hecho por el usuario Boogeyman en un viejo foro mio. El codigo es de Javi, el analisis del mismo es de Boogeyman.

@echo off
color 8a
title Guardar conexiones activas:. v 1.01                                                                    Por Javi
:Alfa
cls
echo.
echo Pulse una tecla para guardar todas las conexiones . . .
pause >nul
set horainicio=%TIME%
cls
echo %DATE% --- %TIME% ------------------------------------------- > Conexiones.txt
echo ------------------------------------------------------------- >> Conexiones.txt
netstat -a >> Conexiones.txt
echo [========                        ] 25%%
echo ------------------------------------------------------------- >> Conexiones.txt
netstat -a -n >> Conexiones.txt
cls
echo [================                ] 50%%
echo ------------------------------------------------------------- >> Conexiones.txt
netstat -a -b -n >> Conexiones.txt
cls
echo [========================        ] 75%%
echo ------------------------------------------------------------- >> Conexiones.txt
ipconfig /all >> Conexiones.txt
cls
echo [================================] 100%%
echo ------------------------------------------------------------- >> Conexiones.txt
For /f "tokens=14 skip=5" %%x IN ('ipconfig') Do set ip=%%x
echo .
echo ..
echo ...
echo ....
echo Conexiones momentaneas guardadas exitosamente . . .
echo Configuraciones guardadas exitosamente . . . . . . .
echo Ambos se encuentran guardadas en el mismo directorio
echo que este programa (Conexiones.txt) . . . . . . . . .
echo Escaneo iniciado a la/s %horainicio% y finalizado a
echo la/s %TIME% - - Fecha: %DATE%
echo Su IP privado es: %ip%
pause
:Menu
cls
echo.
echo 1- Repetir
echo.
echo 2- Salir
echo.
echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
echo Í                        Í
echo Í       » J@vi           Í
echo Í                        Í
echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
echo.
set /p var=
if %var%==1 goto :Alfa
if %var%==2 exit
if %var% GTR 2 goto :Error
:Error
cls
echo Error!
pause >nul
goto :Menu
exit


Ahora vamos por partes, primero el encabezado del programa:

@echo off
color 8a
title Guardar conexiones activas:. v 1.01


1- El "@echo off" sirve para desactivar el eco del comando. Con esto conseguimos que no ponga en cada comando de dónde proviene y lo que está ejecutando.

2- Con el comando "color" se consigue cambiar el color del cmd. Los números y letras sirven para hacer diferentes combinaciones. Para más información teclea color/? en el cmd. En este caso se crearían letras verdes sobre un fondo negro.

3- El comando "title" cambia el título del programa por lo que venga después. En este caso "Agenda"

:Alfa
cls
echo.
echo Pulse una tecla para guardar todas las conexiones . . .
pause >nul
set horainicio=%TIME%
cls


1- Crea la recepción ":start" que después se llegará a ella a través del comando "goto". Así: "goto start"
2- "cls" sirve para borrar todas las letras que haya en el cmd.
3- "echo." sirve para saltarse un renglón y "echo" sirve para mostrar mensajes. Con él se pueden hacer menús bonitos.
4- "pause>nul" sirve para pausar el intérprete sin mostrar ningún mensaje, ya que "pause" a solas muestra el mensaje de: "Pulse una tecla para continuar"

5- Ahora, gracias al comando "set" establece la variable "horainicio" y se le asigna el contenido "%time%", que para quien no lo sepa, es una variable que muestra la hora exacta del momento en que se usó.

6- Borra la pantalla.

echo %DATE% --- %TIME% ------------------------------------------- > Conexiones.txt
echo ------------------------------------------------------------- >> Conexiones.txt
netstat -a >> Conexiones.txt
echo [========                        ] 25%%
echo ------------------------------------------------------------- >> Conexiones.txt
netstat -a -n >> Conexiones.txt
cls
echo [================                ] 50%%
echo ------------------------------------------------------------- >> Conexiones.txt
netstat -a -b -n >> Conexiones.txt
cls
echo [========================        ] 75%%
echo ------------------------------------------------------------- >> Conexiones.txt
ipconfig /all >> Conexiones.txt
cls
echo [================================] 100%%
echo ------------------------------------------------------------- >> Conexiones.txt
For /f "tokens=14 skip=5" %%x IN ('ipconfig') Do set ip=%%x


Vale, esta es la parte de mucho código y pocas nueces. Si o dais cuenta, menos una o dos cosas distintas, es todo igual.

1- Muestra un mensaje en el que figura la fecha y la hora exacta y lo redirecciona a un archivo que crea gracias al símbolo ">" llamado "Conexiones.txt". Después redirecciona un montón de renglones.

2- El comando "netstat" sirve para que aparezcan en pantalla el estado de las conexiones. El atributo "-a" muestra todas las conexiones y puertos de escucha de tu PC. Después lo redirecciona a "Conexiones.txt"

3- Las tres líneas siguientes hacen lo mismo que antes, sólo que está vez se le añade a "netstat" el atributo "-n", que muestra número de puertos y direcciones en formato numérico. Por lo que ya se descartan todas las direcciones con letras.

4- En las tres líneas siguientes hace otra vez lo mismo. Pero está vez se le añade otro atributo más, el atributo "-b". Este sirve para mostrar el ejecutable que pertenezca a la creación de cada conexión o puerto de escucha. Esto es posible que no funcione en algunos orenadores, pero en cualquier caso, es para eso. (Todo redireccionado a "Conexiones.txt"

5-Ahora, hace lo mismo que antes con una pequeña excepción. En vez de "netstat + atributo" usa "ipconfig". Que cómo se puede deducir sirve para "configuración ip". Este comando muestra todo sobre tu IP. Y su atributo "/all" sirve para mostrar información detallada. Redirecciona esto a "Conexiones.txt"

6- Lo mismo menos el comando "for". Este comando es el más poderoso de todos los del Shell Scripting Batch. Y es muy difícil de entender si no lo sabes, una vez lo entiendes te parece poca cosa. Vamos paso a paso con su estructura.
"For /f "tokens=14 skip=5" %%x IN ('ipconfig') Do set ip=%%x"
"for" es el comando. El atributo "/f" sirve para buscar algo en algún archivo o comando, entre otras cosas. Con "tokens" se saltan 14 palabras, y con skip 5 líneas desde el inicio del programa/comando. "%%x" es el nombre de la variable con la que llamaremos a la operación. "in" sirve para decir en dónde vas a usar el comando, en este caso en el comando "ipconfig". "do" es lo que se pone antes de las órdenes; y lo que viene a continuación son las órdenes. En este caso guardaría la variable "ip" cómo resultado de la operación "%%x". En resumen, obtendría información del comando ipconfig y la guardaría como una variable.

echo .
echo ..
echo ...
echo ....
echo Conexiones momentaneas guardadas exitosamente . . .
echo Configuraciones guardadas exitosamente . . . . . . .
echo Ambos se encuentran guardadas en el mismo directorio
echo que este programa (Conexiones.txt) . . . . . . . . .
echo Escaneo iniciado a la/s %horainicio% y finalizado a
echo la/s %TIME% - - Fecha: %DATE%
echo Su IP privado es: %ip%
pause


1- Mensajes de puntitos y letras.
2- Las variables muestran su contenido si se ponen entre porcentajes.
3- Muestra tú IP privada gracias a que antes la ha almacenado con el "for".
4- Pausa con el mensajito.

:Menu
cls
echo.
echo 1- Repetir
echo.
echo 2- Salir
echo.
echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
echo Í                        Í
echo Í       » J@vi           Í
echo Í                        Í
echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
echo.
set /p var=
if %var%==1 goto :Alfa
if %var%==2 exit
if %var% GTR 2 goto :Error


1- Recepción ":Menu"
2- Borra la pantalla.
3- Renglón en blanco, mensaje, renglón en blanco, mensaje y renglón en blanco.
4- Aunque nosotros veamos un montón de "Í", lo que se ve en "batch" es un bonito cuadro con el nombre del autor dentro.
5- Renglón en blanco.
6- Gracias al atributo "/p" le asigna el contenido que tú escribas a continuación a la variable "var"
7- El comando "si condicional" elabora una condición, si se cumple ejecuta lo que haya a continuación. Si no se cumple, recurre al "else".

:Error
cls
echo Error!
pause >nul
goto :Menu
exit


1- Recepción.
2- Borra la pantalla.
3- Mensaje de error.
4- Pausa nula.
5- Va hacia ":Menu"
6- Sale del programa.

*Conclusión: Es un programa que sirve para obtener datos privados de otro usuario.

Espero que hayan aprendido; cualquier duda no duden en posteearla.

Saludos