@echo off
rem ==========================================================================
rem OFGNetstat v1.0 (12-04-2007)
rem
rem DETALLES:
rem
rem   Muestra una lista en formato HTML de las conexiones activas.
rem   Basado en el comando "NETSTAT.EXE".
rem
rem
rem PROGRAMADO POR:
rem
rem   Óscar Fernández González a.k.a. Osc@rNET
rem
rem   http://www.ofgsoftware.com  (postmaster@ofgsoftware.com)
rem
rem
rem LICENCIA:
rem
rem   El modelo de desarrollo que sigue este programa es de "Software Libre".
rem   Puede ser usado, copiado, estudiado, modificado y redistribuido
rem   libremente.
rem
rem   Si haces alguna modificación o mejora, agradecería de tu parte que
rem   me la mandases e hicieras una mención sobre el origen del código,
rem   citando mí nombre y sitio Web, aunque no estás obligado a ello.
rem
rem
rem SOPORTE:
rem
rem   Osc@rNET no ofrece ningún tipo de soporte sobre este Software; se
rem   suministra "TAL CUAL" y sin garantías de ninguna especie.
rem
rem ==========================================================================



rem --------------------------------------------------------------------------
rem DEFINICION DE VARIABLES
rem --------------------------------------------------------------------------

setlocal

set _Opcion=

set _HTMLFile=%TEMP%\%RANDOM%.html
set _Netstat=%windir%\system32\netstat.exe
set _IE=%ProgramFiles%\Internet Explorer\iexplore.exe
set _MF=%ProgramFiles%\Mozilla FireFox\firefox.exe
set _NE=%ProgramFiles%\Netscape\Netscape\Netscp.exe

set _ProgramName=OFGNetstat
set _ProgramVersion=v1.0 (12-04-2007)
set _ProgramLicense=[Software Libre]
set _ProgramCopyright=Programado por Osc@rNET - http://www.ofgsoftware.com
set _ProgramTitle=%_ProgramName% %_ProgramVersion% %_ProgramLicense%



rem --------------------------------------------------------------------------
rem INICIO
rem --------------------------------------------------------------------------

:Inicio

color 17
cls
echo %_ProgramTitle%
echo %_ProgramCopyright%
echo.
echo Muestra una lista en formato HTML de las conexiones activas.
echo Basado en el comando "NETSTAT.EXE".
echo ________________________________________________________________________________



rem --------------------------------------------------------------------------
rem COMPROBAR CREACION DE ARCHIVO TEMPORAL HTML
rem --------------------------------------------------------------------------

:Comprobar_HTMLFile

echo OK > %_HTMLFile%
del %_HTMLFile% > nul

if not exist %_HTMLFile% goto Comprobar_HTMLFile_FIN

echo ERROR:  ¡Ejecución abortada¡
echo.
echo ¡No se puede crear el archivo temporal "%_HTMLFile%"!
echo.
echo.
echo.
echo PULSE UNA TECLA PARA SALIR...
pause > nul
goto FIN

:Comprobar_HTMLFile_FIN



rem --------------------------------------------------------------------------
rem COMPROBAR COMANDO "NETSTAT.EXE"
rem --------------------------------------------------------------------------

:Comprobar_Netstat

if exist "%_Netstat%" goto Comprobar_Netstat_FIN

echo ERROR:  ¡Ejecución abortada¡
echo.
echo ¡No existe el comando "%_Netstat%" en el sistema!
echo.
echo.
echo.
echo PULSE UNA TECLA PARA SALIR...
pause > nul
goto FIN

:Comprobar_Netstat_FIN



rem --------------------------------------------------------------------------
rem COMPROBAR NAVEGADORES DISPONIBLES EN EL SISTEMA
rem --------------------------------------------------------------------------

:Comprobar_Navegadores

if exist "%_IE%" (set _HTMLViewer=%_IE%) & (goto Comprobar_Navegadores_FIN)
if exist "%_MF%" (set _HTMLViewer=%_MF%) & (goto Comprobar_Navegadores_FIN)
if exist "%_NE%" (set _HTMLViewer=%_NE%) & (goto Comprobar_Navegadores_FIN)

echo ERROR:  ¡Ejecución abortada¡
echo.
echo ¡No existe un navegador de internet compatible en el sistema!
echo.
echo ^* Internet Explorer (no existe):
echo            %_IE%
echo.
echo ^* Mozilla FireFox (no existe):
echo            %_MF%
echo.
echo ^* Netscape (no existe):
echo            %_NE%
echo.
echo.
echo.
echo PULSE UNA TECLA PARA SALIR...
pause > nul
goto FIN

:Comprobar_Navegadores_FIN



rem --------------------------------------------------------------------------
rem MENU GENERAL
rem --------------------------------------------------------------------------

:Menu_General

echo                            - MENU GENERAL -
echo.
echo                    [1] Informe sobre Conexiones (IP's).
echo                    [2] Informe sobre Conexiones (Nombres).
echo                    [3] Salir.
echo.
echo.
set /p _Opcion=         Selecciona una opción:

if "%_Opcion%"=="1" goto Generar_Informe
if "%_Opcion%"=="2" goto Generar_Informe
if "%_Opcion%"=="3" goto FIN

goto Inicio



rem --------------------------------------------------------------------------
rem GENERAR INFORME
rem --------------------------------------------------------------------------

:Generar_Informe

echo ________________________________________________________________________________
echo Generando informe.  Espere un momento, por favor...
echo.
set _RETURN=:Volver_HTML_Head
goto HTML_Head

:Volver_HTML_Head

echo ^<body^> >> %_HTMLFile%
echo ^<div align="center" class="titulo"^>%_ProgramTitle%^</div^> >> %_HTMLFile%
echo ^<div align="center" class="subtitulo"^>Programado por ^&Oacute;scar Fern^&aacute;ndez Gonz^&aacute;lez a.k.a. Osc@rNET^</div^> >> %_HTMLFile%
echo ^<div align="center" class="subtitulo"^>^<a href="http://www.ofgsoftware.com" target="_blank"^>http://www.ofgsoftware.com^</a^>^</div^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%

if "%_Opcion%"=="1" goto Informe1
if "%_Opcion%"=="2" goto Informe2



rem --------------------------------------------------------------------------

:Informe1

echo ^<div align="center" class="subtitulo"^>^<u^>INFORME SOBRE CONEXIONES^</u^>^</div^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%
echo ^<table align="center" border="0" bgcolor="#949E9C" cellpadding="0" cellspacing="1"^> >> %_HTMLFile%
echo    ^<tr bgcolor="#CCCCCC"^> >> %_HTMLFile%
echo            ^<td align="center" nowrap="nowrap"^>^<strong^>PROTOCOLO^</strong^>^</td^> >> %_HTMLFile%
echo            ^<td align="center" nowrap="nowrap"^>^<strong^>DIRECCI^&Oacute;N^<br /^>LOCAL^</strong^>^</td^> >> %_HTMLFile%
echo            ^<td align="center" nowrap="nowrap"^>^<strong^>DIRECCI^&Oacute;N^<br /^>REMOTA^</strong^>^</td^> >> %_HTMLFile%
echo            ^<td align="center" nowrap="nowrap"^>^<strong^>P.I.D.^</strong^>^</td^> >> %_HTMLFile%
echo            ^<td align="center" nowrap="nowrap"^>^<strong^>ESTADO^</strong^>^</td^> >> %_HTMLFile%
echo    ^</tr^> >> %_HTMLFile%

for /f "usebackq tokens=1-5 skip=4" %%A in (`netstat -a -n -o`) do ((

        echo    ^<tr bgcolor="#EBEBEB"^> >> %_HTMLFile% ) & (

        echo            ^<td align="center" nowrap="nowrap"^>%%A^</td^> >> %_HTMLFile% ) & (
        echo            ^<td align="center" nowrap="nowrap"^>%%B^</td^> >> %_HTMLFile% ) & (
        echo            ^<td align="center" nowrap="nowrap"^>%%C^</td^> >> %_HTMLFile% ) & (

        if not "%%E"=="" ((

                echo            ^<td align="center" nowrap="nowrap"^>%%E^</td^> >> %_HTMLFile% ) & (
                echo            ^<td align="center" nowrap="nowrap"^>%%D^</td^> >> %_HTMLFile% )

        ) else ((

                echo            ^<td align="center" nowrap="nowrap"^>%%D^</td^> >> %_HTMLFile% ) & (
                echo            ^<td align="center" nowrap="nowrap"^>-o-^</td^> >> %_HTMLFile% )

        )) & (

        echo    ^</tr^> >> %_HTMLFile%))
)

echo ^</table^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%

goto Fin_Informe



rem --------------------------------------------------------------------------

:Informe2

echo    ^>^> Resolviendo nombres.  Esto puede tardar unos minutos...
echo.

echo ^<div align="center" class="subtitulo"^>^<u^>INFORME SOBRE CONEXIONES^</u^>^</div^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%
echo ^<table align="center" border="0" bgcolor="#949E9C" cellpadding="0" cellspacing="1"^> >> %_HTMLFile%
echo    ^<tr bgcolor="#CCCCCC"^> >> %_HTMLFile%
echo            ^<td align="center" nowrap="nowrap"^>^<strong^>PROTOCOLO^</strong^>^</td^> >> %_HTMLFile%
echo            ^<td align="center" nowrap="nowrap"^>^<strong^>DIRECCI^&Oacute;N LOCAL^</strong^>^</td^> >> %_HTMLFile%
echo            ^<td align="center" nowrap="nowrap"^>^<strong^>DIRECCI^&Oacute;N REMOTA^</strong^>^</td^> >> %_HTMLFile%
echo            ^<td align="center" nowrap="nowrap"^>^<strong^>P.I.D.^</strong^>^</td^> >> %_HTMLFile%
echo            ^<td align="center" nowrap="nowrap"^>^<strong^>ESTADO^</strong^>^</td^> >> %_HTMLFile%
echo    ^</tr^> >> %_HTMLFile%

for /f "usebackq tokens=1-5 skip=4" %%A in (`netstat -a -o`) do ((

        echo    ^<tr bgcolor="#EBEBEB"^> >> %_HTMLFile% ) & (

        echo            ^<td align="center" nowrap="nowrap"^>%%~A^</td^> >> %_HTMLFile% ) & (
        echo            ^<td align="center" nowrap="nowrap"^>%%~B^</td^> >> %_HTMLFile% ) & (
        echo            ^<td align="center" nowrap="nowrap"^>%%~C^</td^> >> %_HTMLFile% ) & (

        if not "%%E"=="" ((

                echo            ^<td align="center" nowrap="nowrap"^>%%E^</td^> >> %_HTMLFile% ) & (
                echo            ^<td align="center" nowrap="nowrap"^>%%D^</td^> >> %_HTMLFile% )

        ) else ((

                echo            ^<td align="center" nowrap="nowrap"^>%%D^</td^> >> %_HTMLFile% ) & (
                echo            ^<td align="center" nowrap="nowrap"^>-o-^</td^> >> %_HTMLFile% )

        )) & (

        echo    ^</tr^> >> %_HTMLFile%))
)

echo ^</table^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%

goto Fin_Informe



rem --------------------------------------------------------------------------

:Fin_Informe

echo ^<div align="center" class="detalle"^>^<i^>^*Informe generado en la computadora "%COMPUTERNAME%" por el usuario "%USERDOMAIN%\%USERNAME%" a las %TIME% del %DATE%^</i^>^</div^> >> %_HTMLFile%
echo ^</body^> >> %_HTMLFile%
echo. >> %_HTMLFile%
echo ^</html^> >> %_HTMLFile%

echo ¡Informe generado correctamente!.
echo.
echo NOTA: Para regresar al menú cierre la ventana del informe (navegador).

"%_HTMLViewer%" %_HTMLFile%
del %_HTMLFile% > nul

goto Inicio



rem --------------------------------------------------------------------------
rem IMPRIMIR CABECERA HTML
rem --------------------------------------------------------------------------

:HTML_Head

echo ^<!DOCTYPE html > %_HTMLFile%
echo        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" >> %_HTMLFile%
echo                "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"^> >> %_HTMLFile%
echo. >> %_HTMLFile%
echo ^<html xmlns="http://www.w3.org/1999/xhtml"^> >> %_HTMLFile%
echo. >> %_HTMLFile%
echo ^<head^> >> %_HTMLFile%
echo. >> %_HTMLFile%
echo ^<title^>%_ProgramTitle%^</title^> >> %_HTMLFile%
echo. >> %_HTMLFile%
rem charset=iso-8859-1
rem echo ^<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /^> >> %_HTMLFile%
echo. >> %_HTMLFile%
echo ^<style type="text/css"^> >> %_HTMLFile%
echo ^<!-- >> %_HTMLFile%
echo body { >> %_HTMLFile%
echo    background-color: #ECE9D8; >> %_HTMLFile%
echo    margin: 20px; >> %_HTMLFile%
echo    font-family: Verdana, Arial, Helvetica, sans-serif; >> %_HTMLFile%
echo    font-size: 11px; >> %_HTMLFile%
echo    color: #185184; >> %_HTMLFile%
echo } >> %_HTMLFile%
echo. >> %_HTMLFile%
echo td { >> %_HTMLFile%
echo    padding: 5px; >> %_HTMLFile%
echo } >> %_HTMLFile%
echo. >> %_HTMLFile%
echo .titulo { >> %_HTMLFile%
echo    font-family: Verdana, Arial, Helvetica, sans-serif; >> %_HTMLFile%
echo    font-size: 16px; >> %_HTMLFile%
echo    font-weight: bold; >> %_HTMLFile%
echo    color: #0046D5; >> %_HTMLFile%
echo } >> %_HTMLFile%
echo. >> %_HTMLFile%
echo .subtitulo { >> %_HTMLFile%
echo    font-family: Verdana, Arial, Helvetica, sans-serif; >> %_HTMLFile%
echo    font-size: 12px; >> %_HTMLFile%
echo    font-style: italic; >> %_HTMLFile%
echo    font-weight: bold; >> %_HTMLFile%
echo    color: #0046D5; >> %_HTMLFile%
echo } >> %_HTMLFile%
echo. >> %_HTMLFile%
echo .detalle { >> %_HTMLFile%
echo    font-family: Verdana, Arial, Helvetica, sans-serif; >> %_HTMLFile%
echo    font-size: 10px; >> %_HTMLFile%
echo    color: #185184; >> %_HTMLFile%
echo } >> %_HTMLFile%
echo ^--^> >> %_HTMLFile%
echo ^</style^> >> %_HTMLFile%
echo. >> %_HTMLFile%
echo ^</head^> >> %_HTMLFile%
echo. >> %_HTMLFile%

goto %_RETURN%



rem --------------------------------------------------------------------------
rem FIN
rem --------------------------------------------------------------------------

:FIN

endlocal
color
cls