Sunteți pe pagina 1din 20

Instituto Tecnolgico Superior de Guanajuato

"USB Switch: Modificar permisos de escritura en discos removibles"

Elaborado por:
Cruz Gmez Daniel Salomn
Dreamylation@gmail.com
https://github.com/Dreamylation

Sistemas Operativos
"3A"

09 de octubre del 2015

INTRODUCCIN
Hoy en da, es muy comn el ir a un ciber-caf y conectar nuestro dispositivo USB
para despus recibir la sorpresa de que ya se infect de un virus, incluso cuando
menos lo esperamos de las mquinas que menos esperamos suele pasar, vivir con
esta incertidumbre es motivo de preocupacin y ms an si nuestro USB posee
informacin o datos valiosos.
Slo basta con conocer que parte del registro de windows modificar para bloquear el
acceso de escritura a nuestra USB y de esta manera evitar que un virus modifique
nuestros archivos.
Es posible desactivar de forma manual los permisos de escritura en unidades
extrables, lo que el software de esta prctica hace, es de manera automtica y con
el consentimiento del usuario, agrega al registro la llave necesaria para bloquear la
escritura en cualquier disco extrable, sin embargo, se recomienda nicamente
insertar el USB con el software al PC infecta para primero bloquear el permiso y
despus insertar la USB que ser utilizada.

II. OBJETIVO
A travs de un software creado, cambiar los permisos de escritura en unidades
extrables tales como USB, HDD externos, etc. El software modificar y de ser
necesario crear una llave en el registro del sistema para lograr tal fin.

III. MARCO TERICO

El registro de Windows
El registro es una base de datos en Windows que contiene informacin
importante acerca del hardware del sistema, programas instalados y
configuraciones, perfiles de cada cuenta de usuario, etc.
Normalmente no es necesario hacer cambios manuales al registro ya que los
programas y aplicaciones lo hacen de forma automtica. Un incorrecto
cambio de valores en el registro puede llevar a la inutilizacin del sistema.
El registro posee una poltica para el uso de dispositivos extrables llamada
StorageDevicePolicies, en la cual se pueden cambiar los permisos de
escritura, lectura y control total de los dispositivos extrables; la llave que se
encarga de dichos permisos se llama WriteProtect la cual es de tipo DWORD
(32 bits).
Qt 5.5 (IDE)
Qt es un entorno de desarrollo multi-plataforma para PC de escritorio,
sistemas embebidos y mviles. La plataforma est escrita en C++ y se utiliza
un preprocesador llamado MOC (Meta-Object Compiler) para introducir
caractersticas como las seales y los slots. Qt posee la capacidad de
generar widgets o formas a travs de su librera QtQuick, lo cual lo convierte
en una excelente plataforma para desarrollar software.

IV. METODOLOGA
1. Abrir Qt 5.5 y crear un nuevo projecto (Qt Widget 2) y darle un nombre al
proyecto.
2. Ir a MainWindows.UI para crear la interface.
a. Extender el widget base hasta obtener el tamao deseado.

b. Buscar en la caja de widgets a la izquierda el widget de Graphics View,


arrastrarlo y extenderlo de tal manera que el widget principal y el
Graphics View tengan el mismo tamao.
c. Busca el widget de Push Button, arrastrar dos de ellos encima de los
dems widgets. Asignarle un nombre a ambos botones.
3. Agregar libresras al archivo mainwindow.cpp.
4. Crear las seales para ambos botones.
a. Clic derecho al primer botn y seleccionar go to slot; agregar la
instruccin para deshabilitar escritura.
b. Hacer lo mismo para el segundo botn.
5. Crear la funcin startup para mostrar datos de las unidades removibles en el
sistema.
6. Agregar funcin dentro de un Timer en el constructor de la clase para que la
funcin se ejecute cada 5 segundos.

V. MATERIAL Y COMPONENTES EMPLEADOS


Hardware

Custom PC (AMD FX 4150, W 10).

Software

Qt 5.5 (IDE)
CMD Windows 10

Libreras usadas

QProcess
Clase para ejecutar programas externos y conmunicarse con elllos (usado
para ejcutar REG ADD).

QFile
Clase que provee una interface para leer desde y escribir a archivos.

QTextStream
Clase que provee una conveniente interface para leer y escribir texto.

QMessageBox
Clase que porvee una caja de dilogo para informar o preguntar al usuario y
recibir una respuesta.

QTimer
Clase que provee temporizadores repetitivos.

cstdlib
Clase de la librera standard de C (usada para acceder a System)

VI. DESARROLLO
Abrir Qt Creator -> new Project -> Applications -> Qt Widget Application.
De esta forma crearemos un nuevo projecto basado en Widgets, le damos un
nombre al proyecto y le damos todas las opciones por defecto.

1.- Crear nuevo projecto de widgets.

Una vez creado el pryecto, ir a la carpeta Forms y abrir el archivo mainwindows.ui,


este es el editor de formas para crear ventanas y botones.

2.-Abrir mainwindows.ui.

En el editor de formas, expandimos el widget principal hasta que la ventana tenga el


tamao deseado, buscamos el widget Graphics view en la caja de widgets de la
izquierda y lo arrastramos sobre el widget principal, Graphics View nos permite

insertar una imagen que cubra todo el widget; expandimos el Graphics View hasta
que abarque todo el widget principal. Para agregar una imagen de fondo, bastan con
ir a la propiedad de

style sheet en la caja de propiedades del Graphics View

ubicado en la parte inferior derecha.


Agregamos 2 botones con el widget de Push Button.

3.- Editor de formas.

Editamos el texto mostrada por los botones accediendo a su propiedad Text en la


caja de propiedades.

4.- Editar texto mostrado.

Accedemos al archivo mainwindows.cpp y agregamos las libreras necesarias:

#include
#include
#include
#include
#include
#include

"QProcess"
"QFile"
"QTextStream"
<cstdlib>
"QMessageBox"
<QTimer>

5.- Agregamos libreras a utilizar.

Volvemos al editor de formas y damos clic derecho en uno de los botones que
creamos, seleccionamos go to slot..

6.- go to slot.

El go to slot nos permite crear un slot nuevo que funcionar como un evento que se
ejecutar cuando dicho botn sea oprimido. Dentro de esta funcin colocamos el
cdigo para deshabilitar la escritura en unidades extrables.

void MainWindow::on_habilitar_clicked()
{
QProcess::execute ("REG ADD
HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\StorageDevicePolici
es /v WriteProtect /t REG_DWORD /d 1 /f");
QMessageBox::information(0, "Escritura Deshabilitada",
QString("Escritura Deshabilitada"));

}
Nuestra funcin llama al mtodo execute de la clase QProcess la cual permite
executar comandos de consola, el comando que ejecutamos es
REG ADD
Este comando nos permite agregar una llave nueva al registro.
El parmetro:
HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\StorageDevic
ePolicies
Agregar la llave en esa localizacin.
/v WriteProtect /t REG_DWORD /d 1
Esta parte crear una llave de nombre WriteProtect con tipo de dato REG_DWORD
y valor 1.
Finalmente, el parmetro /f, nos permite ejecutar la orden sin necesitar permisos
del usuario.

El siguiente comando es:


QMessageBox::information
El cual es una librera de Qt para presentar cuadros de mensajes al usuario. Recibe
tres parmetros: puntero a evento, nombre de la ventana de mensaje, mensaje a

presentar. Este ltimo debe estar en formato Qstring, por ello realizamos una
conversin explcita.

7.- Agregamos los eventos al primer botn.

Hacemos lo mismo para el otro botn con la nica diferencia que la llave ser
creado con valor 0.

8.- Se hace lo mismo para el otro botn.

Creamos una funcin Startup que nos servir para mostrar la informacin de los
dispositivos extrables.
void MainWindow::startup()
{
system("wmic logicaldisk where drivetype=2 get deviceid, volumename,
description > %SystemDrive%\\data.txt");
QFile file("C:\\data.txt");
if (!file.open(QIODevice::ReadOnly))
{
QMessageBox::information(0, "error", file.errorString());
}
QTextStream in(&file);
QString line = in.readAll();
ui->textEdit->clear();
ui->textEdit->setText(line);

}
La funcin System nos permite llamar la consola de Windows y ejecutar un
comando, en este caso el comando es wmic logicaldisk. El cual presenta
informacin de todos los dispositivos de almacenamiento conectados, sin embargo
nosotros slo queremos mostrar unidades extrables, por lo cual agregamos los
siguientes parmetros:
where drivetype=2 get deviceid, volumname, description
Esto filtra los dispositivos a unidades extrables.
La ltima parte de los parmetros nos permite almacenar los datos arrojados por el
comando y guardarlos en una ubicacin y archivo especfico.
QFile file

Crea un archivo propio de Qt con el nombre de data.txt.

La siguiente instruccin nos permite abrir el archivo, en caso que el archivo no


exista o est corrupto nos arrojar un mensaje diciendo que el archivo no existe.
if (!file.open(QIODevice::ReadOnly))
{
QMessageBox::information(0, "error", file.errorString());
}

Finalmente las ltimas instrucciones:


QTextStream in(&file);
QString line = in.readAll();
ui->textEdit->clear();
ui->textEdit->setText(line);

Hacen un parse de tipo de datos, primero creamos una corriente de texto con
QTextStream usando como base el archivo que creamos con QFile. Despus
leemos cada lnea del archivo y la convertimos a un string de Qt con la lnea:
QString line = in.readAll();

Las ltima lneas nos ayudan a mostrar el texto en un cuadro de texto.

9.- Agregamos funcin Startup.

Finalmente, llamamos a la funcin desde el constructor de la clase principal y


hacemos el llamado dentro de un temporizador para que la informacin se actualize
cada 5 segundos.
startup();
QTimer *timer = new QTimer(this);
connect (timer, SIGNAL(timeout()), this, SLOT(startup()) );

timer->start(5000);
Se hace un primer llamado a la funcin startup y despues se crea un temporizador
el cual se conecta a la funcin; se inicializa el temporizador en 5000ms.

10.- Temporizador.

VIII. CONCLUSIONES
Usando el editor de registro de Windows ya sea de forma manual o a travs de la
consola, podemos modificar diversos permisos que puedan incrementar nuestro
nivel de seguridad, sin embargo, existen diversos virus que trabajan desde el
registro haciendo la tarea de restaurar nuestra PC aun ms ardua. Por ello se
recomienda deshabilitar el acceso al registro a cualquier programa que el usuario no
haya dado permisos.
Cuando se trabaja con software, a lo largo de la historia de Windows se ha
empezado a ver cierto problema o inconveniente, y eso es el nivel de permisos que
el sistema le da a aplicaciones de terceros. En este caso, es completamente
necesario que el usuario ejecute el programa en modo administrador, ya que de otra
manera los comandos de consola no se ejecutarn con el nivel de permisos
necesario como para editar el registro o crear archivos en la raz del sistema.

IX. BIBLIOGRAFA

Microsoft(2015), What is a registry?, windows.microsoft.com, Recuperado el


08/10/2015,URL: http://windows.microsoft.com/en-us/windows/what-isregistry-editor#1TC=windows-7

Microsoft Support(2015), How to add, modify, or delete registry subkeys and


values by using a .reg file, support.microsoft.com, Recuperado el 08/10/2015,
URL: https://support.microsoft.com/en-us/kb/310516

Qt Documentation (2015), Qt Documentation, doc.qt.io, Recuperado el


08/10/2015, URL: http://doc.qt.io/

S-ar putea să vă placă și