24 Sep 2016

contadorDev002



¡esto marcha!: El contador, contando... to be continued.

21 Sep 2016

Como guardar un archivo .xml "solo por un espacio de tiempo limitado" usando windows

Hace poco me encontré en la tesitura de necesitar repetir un determinado comando -para el caso consistente en descargar y copiar un archivo de mi red local LAN, usando el siguiente archivo que pude masacrar de no recuerdo bien quién o qué fuentes en una de esas derivas existenciales que realizo en cada búsqueda abstracta de soluciones realistas por el internet.

En este caso mi difusa idea era guardar la emisión de un archivo llamado data.xml (que emite un dispositivo de esos que llaman IoT (o internet de las cosas)) pero solo por un rato (un log tan grande petaría mi sistema sin dudas, como bien me indicó un experto amigo). En resumen: Obtener el archivo (que en el mismo aparato se refresca cada segundo) cada cierto tiempo, y guardarlo ese mismo cierto tiempo y no mas. 

El archivo que realiza la primera función se llama getData.vbs (lo puedes repicar en el bloc de notas y guardar con dicha extensión) y es un equivalente al famoso comando get para linux. VBScript es un lenguaje para máquinas que corren windows.

' Set your settings
    strFileURL = "http://ipDeRedLocal/data.xml"
    strHDLocation = "C:\lugarDondeguardarArchivo\data.xml"

' Fetch the file
    Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")

    objXMLHTTP.open "GET", strFileURL, false
    objXMLHTTP.send()

If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1 'adTypeBinary

objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0    'Set the stream position to the start

Set objFSO = Createobject("Scripting.FileSystemObject")
If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
Set objFSO = Nothing

objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End if

Set objXMLHTTP = Nothing

Así pues con este archivo creado y asimismo creando otro de nombre watch.bat (que emula el también famoso comando watch de linux) que diga:

@ECHO OFF
:loop
  cls
  %*
  timeout /t 30

goto loop
Ahora tenemos todo listo para el happening. 30 es el tiempo del loop en segundos. Una vez hecho todo esto, abrimos la consola en Inicio -> Ejecutar -> cmd y nos ubicamos en la carpeta donde creamos estos dos archivos, tecleando: 

cd C:\lugarDondeguardarArchivo\

Posteriormente lo ponemos a funcionar mediante las palabras mágicas:

watch getData.vbs

Si todo va bien el proceso se iniciará ad infinitum. ¿Y todo esto para qué? Se preguntarán algunos... Pues la verdad no sé exactamente que utilidad tiene. Eso si, el archivo, que en este caso concreto se sobreescribe una y otra vez en el tiempo, está disponible para que terceros (personas, máquinas,programas) extraigan información, la procesen y la analicen, incluso quizás creen un log con los datos que prefieran, dejando el resto de información perderse en la noche de los tiempos

...no se, voladas de la mente, supongo. Por si a alguno le sirve de algo, a mi me recuerda que una vez precisé estas lineas de código. ¡Saludos!

¿Qué sucede dentro de una base de datos? - SQL y el mundo que te rodea

En el canal de youtube de HackersSecurity encontramos una magistral conferencia de la defcon17 (anda que no ha llovido desde entonces) impartida por Joe McCray titulada Advanced SQL Injection en la que se ilustra a los ignorantes como yo acerca de lo que se puede llegar a pedir a una base de datos SQL, aportando pinceladas ilustrativas e inspiradoras acerca de la historia de esta tecnología, el presente y como no el futuro (al menos el mas cercano).

Una exposición que muestra, por un lado la vulnerabilidad constante que sobre las bases de datos centralizadas siempre pesa cual espada de Damócles. Si no me parece haber entendido mal, este señor pudo o no mover dinero en una base de datos de mas de 17 millones de dolares, o algo así; y por el otro lado también nos ilustra sobre como esta tarea -antaño mucho menos automatizada y tediosa, hoy en día menos intuitiva y humana (quizás)- es un constante lugar de encuentro entre máquinas y/o personas al mas alto nivel tecnológico, presente que define literalmente la forma del futuro.

Y si la posibilidad de distribuir y descentralizar las bases de datos es el futuro (y por lo tanto no el presente), el mundo que hoy en día conocemos esta regido -prácticamente en su totalidad- por las bases de datos centralizadas y conectadas por internet, es decir, el presente. Y ahí es donde parece ser que sucede la actualidad. Insisto: Parece ser.

Disfrute usted de la charla, si se anima a verla: