Páginas

02 agosto, 2011

Normas ISO/IEC - Estandar 80000: Prefijos decimales y binarios del sistema internacional (Megabyte (MB) - Mebibyte (MiB))

Últimamente he estado dándole vueltas a los prefijos decimales y binarios, las formas de medir la información de datos, transferencia, procesamiento y almacenamiento.

Conceptos a tener en cuenta

  • bit: unidad mínima que maneja una computadora. Se trata de un uno o un cero.
  • byte (B): es un conjunto de 8 bits y representa un caracter.
  • bps: (bits por segundo) unidad de medida de transferencia de información.
  • bytes/s (B/s): (bytes por segundo) unidad de medida de transferencia de información en byte por segundo (un caracter por segundo).

Diferenciar entre el sufijo bit o byte

Por ejemplo con el prefijo "Mega" y sufijo "byte" = Megabyte.
  • Almacenamiento de datos.
  • Transferencia entre dispositivos o componentes del sistema.
  • Procesamiento de datos dentro del equipo.
Pero cuando hablamos de comunicaciones, transferencia de ficheros en internet, conexiones ADSL, etc. Estaríamos hablando con el sufijo bit = Megabit

Por ejemplo un Megabyte (MB), que sería 106 = 1.000.000 (decimal) es decir 220 = 1.048.576 bits (binario). Pero lo correcto en este caso si nos referimos a la cantidad binaria, sería decir Mebibyte (MiB). Ya que estamos utilizando cantidades con potencias de base 2 y no de 10.

Expresiones como "tres megabytes" han sido abreviados incorrectamente como 3M y el prefijo deviene o se fue transformando en sufijo. 

La diferencia entre binario y decimal parece pequeña, pero esto puede generar varios problemas.
El uso incorrecto de los prefijos del Sistema Internacional (SI) (con base 10) se utilizan como si fueran prefijos binarios (con base 2), debido a la causa de serias confusiones.

Los prefijos binarios corresponden a números similares, aunque diferentes, de los factores decimales indicados en el Sistema Internacional de Unidades. Los primeros son potencias de base 2, mientras que los prefijos del SI son potencias de 10.

Figura 1: Prefijos binarios y valores.

Notaciones de los fabricantes respecto a las capacidades de un producto (CD, DVD, USB, SSD, HDD, etc.). El uso binario sembró la confusión: 1024 no es 1000.

Los fabricantes de dispositivos de almacenamiento habitualmente usan los prefijos decimales del SI, por lo que un disco duro de 30 GB tiene una capacidad aproximada de 28*230 bytes, lo que serían 28 GiB (gibibytes).

Esto lleva a la confusión de que cuando compramos un disco duro, por ejemplo, de 500GB los fabricantes hacen esta notación al producto basándose en potencias de base 10 de modo que 1GB = 1000MB. Cuando en realidad 1GB = 1024 MB, si tratamos la representación de la información en base 2, los que los equipos interpretan la forma binaria.

De este modo los fabricantes emplean el sistema decimal para la representación de la capacidad en el que 1 GB = 1.000.000.000 bytes (10^9), mientras que el sistema operativo (que opera en binario) interpreta la información como 1 GB = 1.073.741.824 bytes (2^30), por tanto veríamos en nuestro sistema operativo 465,66 GB.

Este cálculo sería de la siguiente forma. Utilizando el ejemplo de 500GB.
  • 500.000.000.000 bytes / 1024 = 488.281.250 KB
  • 488.281.250 KB / 1024 = 476.837,15 MB
  • 476.837,15 MB / 1024 = 465,66 GB
Aunque realmente el prefijo correcto sería: 465,66 GiB (GibiBytes) que equivaldrían a: 500 GB (GigaByte). 
Aunque es verdad que unos muy pocos Megabytes (3 MB a 4 MB aprox.) son ocupados para el acceso al disco, sistema de ficheros y de más.

Sin embargo en las comunicaciones se usa de forma diferente ya que tratan información NO de capacidad de almacenamiento, si no de transmisión de datos: una conexión de 1 Mbit/s transfiere 106 bits por segundo.

Norma ISO/IEC

  • IEC: International Electrotechnical Commission - Comisión Electrotécnica Internacional.
  • ISO: International Organization for Standardization - Organización Internacional para la Estandarización.
En 1999 la IEC publicó una norma que fue aprobada en 1998 donde introdujo los prefijos kibi, mebi, gibi, tebi, pebi, exbi, etc. para ser utilizado en la especificación de los múltiplos binarios de un cantidad de información. El nombre "bi" es una abreviatura que proviene de las dos primeras letras "binary" (binario). La IEC también aclara que, los prefijos del SI sólo tienen su potencia en base 10 si no que tienen una potencia en base 2.

Figura 2: Prefijos, simbología y significados.

Como podremos observar en esta imagen. Ya se utilice los prefijos: Kibi, Mebi, Gibi, etc. los sufijos bit o byte se conservan y se utilizan igual según los estándares, el estándar ISO/IEC 80000.
Ya que utilizar los sufijos bit o byte simplemente se tienen que diferenciar en el uso de estos, según de lo que se esté hablando. Como ya mencioné en el apartado: "Diferenciar entre el sufijo bit o byte".

En el año 2006 esta convención de nombres ya empezó a ser utilizada por algunos sistemas operativos como GNU/Linux, aunque todavía no ha ganado amplia difusión en otros medios.

Las normas ISO 31 y IEC 60027 están en el presente 2011, siendo revisadas por las dos organizaciones de estandarización en colaboración. El estándar revisado y armonizado se conoce como ISO/IEC 80000, Cantidades y Unidades (en inglés, ISO/IEC 80000, Quantities and Units), y define el Sistema Internacional de Magnitudes; ya se ha publicado, en marzo del 2008, la parte 13 (Information science and technology) que incorpora los prefijos binarios del IEC.

Estándar IEEE

El IEEE (Institute of Electrical and Electronics Engineers - Instituto de Ingenieros Eléctricos y Electrónicos) ha aceptado el uso de los prefijos binarios bajo el estándar IEEE 1541 publicado en el año 2002 y elevado a estándar de uso completo en el año 2005.

Las recomendaciones dadas en el IEEE 1541 son unidades usadas para hacer referencia a cantidades usadas en la electrónica digital y en la computación:
  • bit (símbolo b), un dígito binario.
  • byte (símbolo B), submúltiplo del tamaño de palabra de un microprocesador compuesto por un grupo de bits adyacentes (usualmente, pero no necesariamente, de ocho bits).
  • Octeto (símbolo o), un grupo de ocho bits. un octeto es la traducción al término francés octet que es el usado por el estándar.
Prefijos para indicar los múltiplos binarios de las unidades antes mencionadas:
  • kibi- (símbolo KiB), 210 = 1.024 bytes
  • mebi- (símbolo MiB), 220 = 1.048.576 bytes
  • gibi- (símbolo GiB), 230 = 1.073.741.824 bytes
  • tebi- (símbolo TiB), 240 = 1.099.511.627.776 bytes
  • pebi- (símbolo PiB), 250 = 1.125.899.906.842.624 bytes
  • exbi- (símbolo EiB), 260 = 1.152.921.504.606.846.976 bytes
Los prefijos del "Sistema Internacional" no se usan para indicar múltiplos binarios.

Como ya mencionara anteriormente, pero vuelvo a decir, la parte bi del prefijo viene de la palabra binario, por ejemplo, kibibyte significa un "kilobinary byte" (kilobyte binario) que son 1.024 bytes.

La K en mayúscula para el símbolo "Kibi-" mientras que la letra para el prefijo análogo en el Sistema Internacional kilo- es una k en minúscula, la K en mayúscula ha sido seleccionada para dar consistencia con otros prefijos y con el uso extendido y erróneo del prefijo del SI (como en "KB").

El IEEE 1541 está estrechamente relacionado con la Enmienda 2 al Estándar IEC Internacional IEC 60027-2 pero con la diferencia que este último usa el símbolo bit para el bit.

Luego llegan los múltiplos, la "k" de kilo. Aquí hay algunas confusiones, en un principio, por practicidad y rapidez de cálculo podríamos decir:
15 kbytes equivale a 15.000 bytes. Por lo tanto para pasar de una a otra se multiplica o divide por 1000 respectivamente.
Pero si queremos ser estrictos, en computación (y sólo en computación) 1 kb (kilobyte) equivale a 1024 bytes. O sea, la k equivale a 1024 y no a 1000 como en otras medidas.
  • 1000 bits = 1 kbits (kilo bit)
  • 1000 bps (bits por segundo) = 128 bytes/s = 0.125 KB/s (kilobyte por segundo)
  • 1024 bytes = 1 KB (kilobytes)
  • 1024 bytes/segundo = 1 KB/s (1 kb por segundo)
  • 1024 KB = 1 MB (megabyte)
  • 1024 KB/s = 1 MB/s (un megabyte por segundo)
Figura 3: Comparativa del antiguo estándar y el estándar IEC.

Los proveedores de internet hablan de velocidades de bajada de 64 kbps, 128 kbps, 256 kbps, 512 kbps, 1 mega (1024 kbps), 2 megas (2049 kbps), 5 megas, 10 megas, 20 megas, etc. (o sea, lo expresan en bits por segundo). Pero tanto en Internet Explorer y otros navegadores web como en programas de descargas y en Internet en general, se habla en KB (que es, en definitiva, lo que ocupa un archivo) y en KB/s (kilobyte por segundo); por lo tanto, es interesante saber de cuánto es la velocidad de bajada expresada en KB por segundo. Esto puede traer confusión a los usuarios no expertos pues podrían pensar que bajarían 1 megabyte de información por segundo, pero en realidad bajan 1 megabit de información en un segundo.

En principio es más conveniente saber la velocidad de descarga (y de subida) de la conexión en KB/s, pues es más fácil entenderlo. Si, por ejemplo, un archivo se está descargando a 25 KB/s, sabremos que se están descargando 25 mil caracteres del archivo por segundo (y más precisamente, 25600 caracteres).

Ahora las conversiones entre bps y bytes/s.
Como en general no necesitamos demasiada precisión, tomaremos el camino más fácil, y la "k" corresponderá a 1000 y no a 1024.

Conversiones entre bps y bytes/s

Supongamos que tenemos una conexión de 128 kbps o 128.000 bps.

8 bps -----------> 1 byte/s
128.000 bps ---> X bytes/s

X = (128.000 bps x 1 byte/s ) / 8 bps = 16.000 bytes/s = 16 KB/s

Se estarán bajando unos 16 mil caracteres por segundo.

¿Por qué hay dos sistemas de medir la velocidad?

Hay varias razones. En el caso de la conexión a Internet, sin duda la mejor forma de medirla es por KB/s (kilobytes por segundo), pues estamos tratando siempre con archivos formados por caracteres (1 byte) y recordemos que un caracter está formado por 8 bits. Pero hay casos en que la transmisión es serial (bit por bit) y la información no necesariamente está "empaquetada" en caracteres de 8 bits.
También hay empresas que se aprovechan de la confusión generada por los kbps y los KB/s para su beneficio.

Saludos!

01 julio, 2011

Restablecer la password de cualquier tipo de cuenta de usuario local de Windows

Con esto se podrá recuperar la contraseña de los usuarios registrados en un equipo local sin necesidad obviamente de entrar en el sistema, de manera que no se tenga que introducir la clave anterior para restablecer una nueva passw, de modo que genera una nueva contraseña para el usuario en la que seleccionemos, incluido administradores locales. Así también como el poder manipular otras configuraciones adicionales.

Figura 1: Iniciando consola de recuperación de passwords antes de iniciar sesión en el sistema.

Esto es un pequeño hack que funciona en todas las versiones de Windows hasta la fecha.
Me imagino que la razón de que Microsoft permita esto es simplemente administrativa, por si algún usuario que solo tenga una cuenta y cambia la password y se llega a olvidar de ella, pueda iniciar sesión con una nueva clave y acceder al sistema.

Ya que un sistema operativo Windows siempre y cuando siga cumpliendo estos dos requisitos:
  • Funcionalidad por defecto de las stickykeys (sethc.exe), con pulsación de 5 veces seguidas en la tecla mayus. O el uso de la lupa de Windows (magnify.exe).
  • Se pueda acceder a las consolas .msc: lusrmgr.msc o de "netplwiz".
Una forma de evitar esto y añadir un obstáculo más de seguridad, sería establecer una contraseña al acceso de la BIOS, para no poder realizar bootstrap a un USB o CD/DVD, también sería aconsejable si la BIOS lo permite deshabilitar la opción de hacer booting con "medios extraíbles desmontables" (USB) y lo mismo con la lectora/grabadora CD/DVD. Y ya si somo muy paranoicos a parte de la password para el acceso y configuración a la BIOS, establecer otra aún a un nivel más bajo o anterior que sería establecer otra antes de que el equipo realice el POST (Power On Self Test) de arranque (esto también si la configuración de la BIOS lo permite).

En este tutorial voy intentar explicar todos los pasos al detalle a seguir y definir comando básicos, con el fin de que cualquier usuario pueda entenderlo.

[1] - Arrancamos el PC y booteamos el Live DVD/USB de instalación de Microsoft Windows (nos valdría cualquier versión sería lo mismo. Simplemente tendremos que tener acceso a una "Consola de recuperación").


Una vez se nos carga el Live DVD/USB de la instalación de Windows, y accedemos a la primera ventana del asistente de instalación.

Pulsamos en 'Siguiente' -> Reparar el equipo -> esperamos que se carguen las 'opciones de recuperación de sistema' -> pulsamos en 'Siguiente' -> se nos mostrará una nueva ventana en la que elegimos la opción "Símbolo del sistema".


Figura 2: Siguiente en el asistente de instalación de Windows.
Figura 3: Sección "Reparar el equipo" en el asistente de instalación de Windows.
Figura 4: Opciones de recuperación del sistema.
Figura 5: Símbolo de sistema, como opción de recuperación del sistema.

[2] - Cuando se nos muestra la ventana de símbolo del sistema, ejecutada por defecto como Administrador local.

Listamos las unidades disponibles.

wmic logicaldisk get name
Trabajamos sobre el disco local del sistema C:\.
C:
cd \windows\system32
ren sethc.exe sethc.ejm
copy cmd.exe sethc.exe
exit
Después de cada instrucción, para la confirmación presionamos la tecla Enter.


Figura 6: Renombrando fichero sethc por una consola cmd.

sethc.exe: Fichero ejecutable que hace llamada a las StickyKeys (teclas pegajosas o teclas espeiales), esta lo que hace es que cuando, por ejemplo, pulsamos la tecla "Shift" (mayusculas, derecha o izquierda) del teclado 5 veces seguidas, nos salga una ventana que nos permite activar o desactivar dichas teclas.
 

cmd.exe: Fichero ejecutable que hace llamada al Símbolo del sistema de Windows

C: Entramos en la unidad c: por defecto, o la letra que tengamos asignada al disco local donde almacenemos la instalación de Windows.
 

cd: Entramos en los directorios de del disco local especificados, que en este caso es donde se encuentras los ficheros en los que haremos las modificaciones necesarias.
 

ren: Básicamente lo que se está haciendo es, renombrar, cambiándole la extensión, al fichero original 'sethc.exe' por 'sethc.ejm'. Por que ejm?, es indiferente podemos poner lo que queramos, siempre que no supere las 3 letras de extensión. Elegí: ejm (ejemplo) "por poner algo". Pero como ya digo esto no tiene relavancia, simplemente se hace para que no se tenga concordancia cuando posteriormente se copie la cmd.exe por sethc.exe.
 

copy: Después se copia la cmd.exe por sethc.exe, como sethc.exe lo habíamos renombrado a sethc.ejm el fichero sethc.exe no existe, supuestamente. Entonces lo que hacemos es crear una cmd.exe original pero con el nombre sethc.exe. De este modo, se conseguiría que cuando llamemos a las StickyKeys, se nos abra un Símbolo del sistema (CMD).
 

exit: Salimos del símbolo del sistema.

[3] - Una vez acabado el paso 2, reiniciamos el PC en el botón "Reiniciar" en la ventana de 'Opciones de recuperación del sistema'. 


Iniciamos el equipo sin bootear el Live DVD/USB de instalación de Windows, es decir que lo inicializamos de manera normal.

[4] - En la pantalla de bienvenida, pulsamos 5 veces seguidas la tecla "Shift" izquierda o derecha, nos funcionará igual.
 

Se nos abrirá el cmd.exe o Símbolo del sistema de Windows.
control userpasswords2
También podríamos usar netplwiz, es lo mismo y nos llevaría a la misma ventana gráfica.
Sería lo mismo. La diferencia (creo recordar...) está en que netplwiz era el fichero que abría y daba acceso a dicha ventana de control de cuentas de usuario en sistemas Windows NT y 2000, este aún se conserva en Windows XP, Vista y 7. Aunque añadieron una segunda vía de acceso: control userpasswords2, que es exactamente lo mismo.

[5] - Se nos abrirá la ventana de 'Cuentas de usuario', si no apareciese en ese momento en la pantalla de bienvenida, reiniciamos y volvemos a realizar el paso 4 y no tendrá que aparecer. 

Pues en esta ventana podremos restablecer la contraseña del usuario que seleccionemos. En este ejemplo, se trata de una cuenta tipo Administrador con el nombre de usuario "1loiswin7". Una vez seleccionamos el usuario podemos pulsar en el botón "Restablecer contraseña" he introducir la contraseña nueva sin necesidad de que nos pregunta la contraseña que hubiese anteriormente.
'Aplicamos' y 'Aceptamos' los cambios. (O simplemente 'Aceptar' sería lo mismo).



Figura 7: Iniciada consola con las StickyKeys y restableciendo passw de administrador de Windows.

Aunque en la captura de pantalla de arriba no muestro la ficha o pestaña "Opciones avanzadas" de la ventana 'Cuentas de usuario', en esta podremos elegir una cuenta de usuario de tipo 'limitada' y cambiarla por una de tipo 'Administrador' o viceversa, así como también agregar dicho usuario seleccionado a un grupo local que hubiéramos creado previamente o los incluidos por defecto del sistema, esto solo para Windows XP. En Windows Vista o 7 veremos otro aspecto similar en el que podremos administrar las contraseñas de la base de datos local SAM de Windows y entrar en la ventana 'Usuario y grupos locales' (lusrmgr.msc) con la cual también podremos realizar lo mismo que en Windows XP.

[6] - Y por último iniciamos sesión en el sistema con el nombre de usuario y contraseña que restablecimos. Y ya estaremos dentro, para hacer las modificaciones necesarias, así como cambiar a una nueva contraseña o lo que fuese.


Reinvertir los cambios 

[7] - Como paso final dejaremos o restableceremos los ficheros modificados (sethc y cmd) a su estado original o default. 

Para ello una vez que estamos ya dentro del sistema ejecutamos un "Símbolo del sistema" como administrador. Para ello, vamos a:
Inicio -> Todos los programas -> Accesorios -> y botón derecho en 'Símbolo de sistema' -> Ejecutar como administrador.

 
Si tenemos activado el UAC (User Account Control) de Windows, nos saldrá una ventana informativa 'Control de cuentas de usuario', que nos preguntará si deseamos que se hagan cambios en el sistema, le decimos que si.

Una vez abierto el CMD y estar situados en la ubicación:
C:\Windows\System32

En el caso de no estarlo, escribimos en el CMD:

C:
cd windows\system32
Una vez estemos en dicho direcctorio (lo cual por defecto lo está, si ejecutando el CMD con privilegios administrativos) simplemente tendríamos que escribir en el CMD:
del sethc.exe
ren sethc.ejm sethc.exe
exit
Figura 8: Restableciendo el orden de los ficheros renombrados anteriormente.

del: Borra ficheros y direcctorios, en este caso borraría el fichero sethc.exe.
 

ren y exit: renombra y salir de la CMD.

Lo que se está haciendo, es borrar el fichero sethc.exe que es una copia del cmd.exe original. Después renombramos el fichero sethc.ejm a sethc.exe, el sethc.ejm que es el fichero del sethc original. Por lo tanto, lo dejamos como estaba para que a la hora de llamar a la ejecución de las StickyKeys este se ejecute correctamente.
Y con la copia del cmd borrada y el fichero del sethc en su estado original, daremos por acabado la configuración.


Espero que este tutorial ayude aquell@s usuari@s, que no recuerdan su contraseña y de este modo haya una solución al problema. Y no utilizar este pequeño hack maliciosamente...

Saludos!

Entradas Populares