miércoles, 19 de junio de 2013

0 Comentarios
Publicado en Lista, Artículo, Negocios

Como aumentar velocidad de arranque de Windows xp


Memoria - Cuanto de memoria RAM y memoria virtual en el PC


¿Cuánta memoria RAM instalar en el PC? 
¿Cuánta memoria RAM reservar? 

Todo depende del sistema operativo y del uso que se le dé al PC. 

Cuanto mayor sea el tamaño de la memoria, mayor será el rendimiento del equipo. 
Sin embargo, instalar más de 512 MB (ó 1024 para un sistema reciente) sólo será provechoso si utilizas programas 3D exigentes en recursos (juegos, edición de video, programas de creación, etc.). 

Los siguientes son valores mínimos dados a título informativo. 
Estos valores pueden variar en función del procesador y de los periféricos instalados. 

SO: Windows XP 
Uso: Ofimática + navegación en internet 
RAM: 256 MB mini, 512 MB para el uso simultaneo de varias aplicaciones. 

SO: Windows XP 
Uso: Juegos en 3D medianamente exigentes en recursos, tratamiento de imágenes corrientes (foto) 
RAM: 512 MB mini 

SO: Windows XP 
Uso: Juegos en 3D recientes, edición de video. 
RAM: 1024 MB mini. 

SO: Windows 2000 pro 
Uso: Ofimática + navegación en internet 
RAM: 192 MB mini, 256 MB para el uso simultaneo de varias aplicaciones. 

SO: Windows 2000 pro 
Uso: Juegos en 3D medianamente exigentes en recursos, tratamiento de imágenes corrientes (foto) 
RAM: 256 à 384 MB. 

SO: Windows 2000 pro 
Uso: Juegos en 3D recientes, edición de video. 
RAM: 512 MB mini 

SO: Windows 98, 95 y NT 4.0 
Uso: Ofimática + navegación en internet 
RAM: 64 MB mini, 128 MB para el uso simultaneo de varias aplicaciones. 

SO: Windows 98, 95 y NT 4.0 
Uso: Juegos en 3D medianamente exigentes en recursos, tratamiento de imágenes corrientes (foto) 
RAM: 256 a 384 MB. 

Idealmente, fijaremos el tamaño de la memoria virtual en 1,5 veces la cantidad de RAM instalada. 
Para fijar el tamaño de la memoria virtual, ir a: 

Inicio > Panel de control > Sistema > Opciones avanzadas 
En “Rendimiento”, hacer clic en “Configuración” 
Ir a “Opciones avanzadas” 
En “Memoria Virtual”, hacer clic en “Cambiar” 
Definir el tamaño de memoria viva sobre un disco veloz que disponga de suficiente espacio libre, en función de los criterios siguientes: 
Tamaño inicial = 1,5 veces la cantidad de RAM instalada. 
Tamaño máximo = 2 veces el tamaño inicial. 


Windows - Limpieza de las DLL cargadas en memoria


Windows conserva en memoria las librerías (DLL) que se han utilizado recientemente a fin de acelerar significativamente el inicio de las aplicaciones la próxima vez que sean ejecutadas. 

Sin embargo, estas librerías consumen espacio en memoria. Por lo que si deseas favorecer la cantidad de memoria disponible, puedes forzar la liberación de memoria después de su uso, para ello deberás modificar una clave del registro del sistema: 

Método 1:

  • Haz clic en “Inicio”, luego en "Ejecutar".
  • En la ventana que aparece, escribe regedit:


  • En la ventana Editor del Registro, desplazate en el árbol de directorios y posiciónate en:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer


  • Crea un valor DWORD:


  • Dale el nombre de AlwaysUnloadDll.
  • Asígnale el valor 1 (haz clic derecho sobre el nombre del valor, selecciona Modificar) luego pulsaAceptar:




Método 2:

  • Abre un documento en notepad (bloc de notas) y pega las líneas siguientes:


REGEDIT4 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer] 

"AlwaysUnloadDll"=dword:00000001
  • Haz clic en Archivo luego en Guardar como.
  • Dale un nombre al archivo (por ejemplo: sup-dll-memoria) y agrégale la extensión .reg.


  • Guarda este archivo en el escritorio y ciérralo.
  • Ve al escritorio y haz doble clic en este archivo cuyo icono debería ahora parecerse a esto :

  • En la ventana que aparece, acepta la fusión en el registro, haciendo clic en Si.

Windows - Activar el Ultra DMA


El ultra DMA, a veces denominado UDMA, funciona de tal modo que permite optimizar al máximo la interfaz ATA (discos duros IDE). 

Por defecto no siempre se encuentra activo en entornos Windows 2000 / XP. Antes que nada asegúrese de que su disco soporta el Ultra DMA 66 y que se encuentra conectado al controlador IDE por una cable de cinta de 80 hilos (necesarios en el caso del UltraDMA66)

Para activar el Ultra DMA, abra el editor de registro del sistema (Inicio / ejecutar / regedit

Posiciónese sobre : 
HKEY_LOCAL_MACHINE / System / CurrentControlSet / Control / Class / {4D36E96A-E325-11CE-BFC1-08002BE10318} / 0000 

Cree una clave DWORD llamada "EnableUDMA66" y asígnele el valor "1" 

El Ultra DMA será tomado en cuenta en el próximo inicio del sistema. 

Sin embargo, en caso de varios errores repetidos, puede suceder que Windows XP no reconozca más el canal IDE principal como Ultra DMA si no como modo PIO. En este caso, el acceso al disco será mucho más lento, lo que perjudica el rendimiento global del sistema. 

Para solucionar este problema, siga el procedimiento siguiente que consiste en desinstalar el driver para que Windows XP pueda reinstalarlo: 

- Haga clic con el botón derecho en Mi PC, luego clic en Propiedades 
- En la pestaña Hardware, pulse el botón Administrador de dispositivos 
- Busque y despliegue la línea Controladores ATA/ATAPI IDE
- Haga clic con el botón derecho en Canal IDE Principal y seleccione Desinstalar
- Reinicie el ordenador para que las modificaciones sean tomadas en cuenta. 

Windows - Optimizar Windows XP


Aumentar la velocidad de arranque de Windows con Bootvis

Si su ordenador demora mucho en arrancar, es posible mejorar la velocidad de carga optimizando el proceso de boot. 

Microsoft ofrece una herramienta llamada "BootVis" que permite optimizar la velocidad de carga de Microsoft Windows. 

Para lanzar la optimización, haga clic en el menú "Trace" luego seleccionar la opción "Next boot + Driver". Bootvis le propondrá reiniciar el ordenador. 

Luego del reinicio, Bootvis se ejecuta automáticamente y nos muestra una serie de estadísticas, en forma de gráficos, de las actividades del ordenador durante el arranque. 



Es posible optimizar las tareas efectuadas durante el arranque. Para esto, hacer clic en el menú "Trace" y seleccionar la opción "Optimize System". 


Aumentar la velocidad de Windows XP


ZN Soft Optimizer XP

Zn Soft Optimizer XP permite aumentar la velocidad general de Windows XP. Podrá apreciar su eficacia durante el arranque del sistema, la ejecución de una aplicación, y en la fiabilidad y estabilidad del sistema. 
Sin embargo, recomiendo hacer antes una copia de seguridad del registro del sistema. (¡Más vale prevenir que lamentar!). Para esto, en el menú Inicio / Ejecutar, escribir “regedit” (sin comillas) luego hacer clic en Archivo==>Exportar. 

Aumentar la velocidad de acceso al disco

La mayoría de sistemas operativos actuales utilizan sistemas de archivos con funciones avanzadas como: gestión de permisos, Journaling, etc. 

Los sistemas de archivos NTFS (Windows) y ext3 (Linux) actualizan la fecha de la última vez que se ha accedido a un archivo. 

A pesar de ser muy práctico para saber cuando se ha utilizado un archivo, cada vez que accedamos a un archivo habrá… ¡una escritura en disco! 

Desde el punto de vista del rendimiento, esto es demasiado . 

Sin embargo, es posible deshabilitar esta funcionalidad, a menos que se tenga necesidad de utilizarla (servidores seguros, seguimiento, etc.). 
Algunos especialistas del cíirculo de Linux estiman que se puede ganar hasta un 10% en el rendimiento del disco 

Bajo Windows 2000/XP/2003/Vista (NTFS únicamente)

Abre el editor del registro del sistema (regedit), ve a:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem 
y crea la variable (clic-derecho, nuevo, valor DWORD): NtfsDisableLastAccessUpdate 
con valor 





La modificación tendrá efecto inmediatamente. 

Pequeños trucos


Desactivar el servicio de indexación

El servicio de indexación es un gran consumidor de recursos. 
Para desactivarlo:
  • Inicio / Ejecutar
  • Escribir “services.msc” (sin comillas)
  • Hacer clic con el botón derecho en “servicio de indexación” y seleccionar Propiedades
  • En “Tipo de inicio”, seleccionar “Desactivar”
  • Hacer clic en aplicar, luego en OK


                             

domingo, 12 de mayo de 2013

0 Comentarios
Publicado en Lista, Artículo, Negocios

Reparar sectores dañados del disco duro con gnu/linux


En esta ocasion les quiero compartir una linea de comando que puedes ejecutar en la consola de gnu/linux para recuperar los sectores dañados de tu disco duro, si como lo lees RECUPERAR LOS SECTORES DAÑADOS,  dandole una mejor vida a tu disco duro y sin necesidad de usar el hdd regenerator, asi que si tienes por ahi algun disco duro muerto, no lo botes, dale un segundo  aire con esta linea de codigo, a continuacion se las muestro:


Como lo ya acostumbrado, abrimos una terminal, nos logueamos y escribimos:

[BASH]# badblocks -s -v -n -f /dev/sdb1

En mi caso, el disco duro “externo” esta en la direccion “/dev/sdb1";, la dirección en la que se encuentra el disco duro, puede variar.

Los simbolos:

“-s”, significa que nos muestra el proceso de escaneo del disco, mostrandonos los sectores ya checados.

“-v”, m//odo verbose

“-n”, nos pone en modo no destructivo, esto es que se recuperaran los sectores dañados y la informacion en el disco duro no sera dañada o eliminada.

“-f”, repara los sectores dañados.


martes, 19 de marzo de 2013

0 Comentarios
Publicado en Lista, Artículo, Negocios

Tutoriales para Joomla

Les dejo unos vídeo tutoriales muy buenos sobre el uso de Joomla. Espero les sirva a todos.

----------------------------------------------------------------------------
Continuar con las siguientes partes.




sábado, 16 de marzo de 2013

0 Comentarios
Publicado en Lista, Artículo, Negocios

Habilitando VNC server en Red Hat, Fedora, CentOS


Habilitando VNC server en Red Hat, Fedora, CentOS
Estas pruebas las realice con la nueva versión de Red Hat 6 y funcionan con versiones anteriores.  Estaremos instalando vnc-server para acceder desde una máquina de Windows usando el vnc-client.
Que es VNC? El servicio de vnc-server nos permite acceder el equipo de forma gráfica con valores predeterminados para ese usuario usando el vnc-client.
Primero veamos qué servicios tenemos ya instalados y cuales tenemos que instalar, el siguiente comando nos muestra que paquetes están disponibles:
axel@bigwig:$ yum list all | grep vnc
tigervnc-server.x86_64 1.0.90-0.10.2010011
gtk-vnc.i686 0.3.10-3.el6
gtk-vnc.x86_64 0.3.10-3.el6
gtk-vnc-python.x86_64 0.3.10-3.el6
tigervnc.x86_64 1.0.90-0.10.20100115

Como solo queremos instalar la versión server para poder entrar desde una máquina de Windows usando la versión cliente de vnc.
Instalamos el paquete tigervnc-server.
axel@bigwig:$ yum –y install tigervnc-server
--> Finished Dependency Resolution
Dependencies Resolved
===================================================================================== Package Arch Version Repository Size
=====================================================================================
Installing:
tigervnc-server x86_64 1.0.90-0.10.20100115svn3945.el6 Packages 1.0 M
Transaction Summary
=====================================================================================Install 1 Package(s)
Upgrade 0 Package(s)
Installed:
tigervnc-server.x86_64 0:1.0.90-0.10.20100115svn3945.el6
Vamos a configurar uno de nuestros usuarios para que tenga acceso vía grafica usando vnc-server.
Editamos el archivo /etc/sysconfig/vncservers.
axel@bigwig:$ vi /etc/sysconfig/vncservers
Adentro de ese archivo añadimos las siguientes entradas al final del archivo:
VNCSERVERS=”1:axel”
VNCSERVERARGS[1]=”-geometry 1024×768″
Puedes agregar más entradas para otros usuarios, asegúrate que el numero varié, por ejemplo dos usuarios no pueden usar el mismo puerto :1.
En una terminal iniciado como el usuario que va a tener acceso vía vnc, en nuestro ejemplo será el usuario “axel”, escribe el comando vncserver.
axel@bigwig:$ vncserver
You will require a password to access your desktops.
Password:
Verify:
New 'rhel6.example.com:1 (axel)' desktop is rhel6.example.com:1
Creating default startup script /home/axel/.vnc/xstartup
Starting applications specified in /home/axel/.vnc/xstartup
Log file is /home/axel/.vnc/rhel6.example.com:1.log
Nota como empezó el servicio en el Puerto 1 que especificamos en el archivo de configuración.
Si estas usando une  versión previa a RHEL 5 tienes que editar el archivo ~/.vnc/xstartup, tienes que remover el símbolo # de las siguientes entradas y seguir con las instrucciones del blog.
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
A continuación tenemos que apagar el servicio de vnc:
axel@bigwig:$ vncserver -kill :1
Killing Xvnc process ID 3835
Entrar como usuario “root” y arrancar el servicio de vncserver y hacerlo persistente durante reinicios del equipo:
username@bigwig:$ service vncserver start ; chkconfig vncserver on
Starting VNC server: 1:axel
New 'rhel6.example.com:1 (axel)' desktop is rhel6.example.com:1
Starting applications specified in /home/axel/.vnc/xstartup
Log file is /home/axel/.vnc/rhel6.example.com:1.log
[ OK ]
Tenemos que instalar una version de vnc-client en nuestra maquina de windows. Puedes bajar tu preferida, para este ejemplo estare usando el cliente tightvnc para Windows de aquí:
Una vez instalado el cliente de vnc vamos a proceder a entrar usando la dirección de IP y el puerto que le dimos a nuestro usuario, en nuestro caso es “axel”.
Entra la contraseña que fijaste con el comando vncserver.
Una vez adentro este es el resultado:

-------------------------------------------------------------------------------------------------------------------------------

0 Comentarios
Publicado en Lista, Artículo, Negocios

¿Cómo instalar Symfony2 en Fedora 18?


De todos es sabido que una distribución Linux como Fedora es el sistema operativo óptimo para cualquier servicio que requiera de Apache+Mysql+PHP, y mucha gente que sólo está habituada a Windows tiene ciertos “temores” (ver FUD), así que supongo que más de uno necesitará saber cómo poner en marcha un Symfony2 sin los problemas de configuración típicos de una distribución Linux.
A continuación describiré los pasos necesarios para instalar un proyecto Symfony (v2.1.4) en un Fedora18 (cuando escribo este artículo, Fedora 18 está en su versión Beta, pero supongo que nada de lo descrito aquí cambiará en la versión Final)
La instalación incluye Apache, Mysql, Phpmyadmin, Git, y todas las librerías necesarias para su correcto funcionamiento.
Si bien la configuración de Apache daría para mucho más de lo que puede entrar en este artículo, he optado por realizar la instalación en el directorio de usuario (/home/usuario/sites/s2test) , no como la más propicia para Producción, sino la más sencilla para usuarios que se están iniciando en Linux y en Symfony2

Instalar Apache en Fedora 18

$ sudo yum install httpd
$ sudo chkconfig httpd on
$ sudo service httpd start


Instalar Mysql-Server

$ sudo yum install mysql-server mysql
$ sudo service mysqld start
$ sudo chkconfig  mysqld on
$ sudo mysql_secure_installation
Este último comando establecerá la contraseña del usuario root, y prepara el Mysql tras la instalación

Instalar PHP

$ sudo yum install php php-mysql php-pecl-apc php-gd php-intl php-xml php-process php-pecl-xdebug
También es necesario especificar la zona horaria (ver valores posibles ) en un archivo de configuración en el directorio /etc/php.d
Editamos un nuevo archivo:
sudo gedit /etc/php.d/timezone.ini
[Date]
; Defines the default timezone used by the date functions
date.timezone = "Europe/Madrid"
y reiniciamos el servicio Apache
 $ sudo service httpd restart

Instalar PHPMYADMIN

$ sudo yum install phpmyadmin
$ sudo service httpd restart
El PhpMyAdmin estará disponible en http://localhost/phpmyadmin (usuario: root, contraseña: la que hemos establecido antes)

Instalar GIT

$ sudo yum install  git

Instalar Symfony2

 >$ cd ~
~>$ mkdir sites
~>$ cd sites
~/sites>$ curl -s https://getcomposer.org/installer | php
~/sites>$ php composer.phar create-project symfony/framework-standard-edition s2test 2.1.4
~/sites>$ cd s2test
~/sites/s2test>$ php ../composer.phar update
~/sites/s2test>$ setfacl -R -m u:apache:rwx -m u:`whoami`:rwx app/cache app/logs
~/sites/s2test>$ setfacl -dR -m u:apache:rwx -m u:`whoami`:rwx app/cache app/logs
~/sites/s2test>$ sudo ln -s ~/sites/s2test/web /var/www/html/s2test
~/sites/s2test>$ sudo setfacl -m u:apache:x /home/`whoami`

Configurar SELINUX

SELINUX es el gestor de las políticas de seguridad de Linux que nos puede impedir que el servicio Apache acceda a un directorio de usuario, o que no pueda escribir correctamente en los directorios app/cache y app/logs
Por ello tenemos dos opciones:
  1. Deshabilitar SELINUX; Es una opción, aunque para aquellos que gusten de la seguridad en sus sistemas no es la más apropiada. Podéis deshabilitar SELINUX siguiendo este tutorial
  2. Si gustais de la protección de SELINUX, estos son los comandos que debéis escribir para permitir que el servicio Apache acceda en Lectura/Escritura a los directorios de nuestro proyecto:
~/sites/s2test>$ sudo setsebool -P httpd_enable_homedirs true
~/sites/s2test>$ sudo setsebool -P httpd_read_user_content true
~/sites/s2test>$ sudo setsebool allow_httpd_anon_write true
~/sites/s2test>$ sudo chcon -t chcon -t public_content_rw_t app/cache
~/sites/s2test>$ sudo chcon -t chcon -t public_content_rw_t app/logs
Tras esto, podemos comprobar en http://localhost/s2test/config.php que nos muestra la pantalla de bienvenida de Symfony


viernes, 15 de marzo de 2013

0 Comentarios
Publicado en Lista, Artículo, Negocios

Arister 4

Aquí les traigo el Artisteer 4, el mejor "pro"grama de diseño.

Descargan el Artisteer 4 de la pagina oficial y lo instalan normalmente. 
Extraen el archivo .rar que descargarán que dice parche y lo que resulta de la extracción lo copian, vamos al icono del artisteer en el escritorio>clic derecho sobre él>seleccionamos:"abrir la ubicación del archivo"> clic en un espacio  y pegan ahí lo que habiamos copiado antes. en el cartel emergente le dan a "Remplazar">cierran>abren Artister 4 y me cuentan.

Aristeer 4

Parche

martes, 19 de febrero de 2013

0 Comentarios
Publicado en Lista, Artículo, Negocios

Presentaciones de la materia de Taller de Ingeniería de Software

viernes, 1 de febrero de 2013

0 Comentarios
Publicado en Lista, Artículo, Negocios

Unidad I de Telecomunicaciones

Buena tarde compañeros. Les dejo el link de la presentación de la primera unidad de la materia.


0 Comentarios
Publicado en Lista, Artículo, Negocios

Presentaciones de Taller de Ingeniería de Software

Les presento a continuación las 2 presentaciones de la materia.

Iso 12207                             Unidad I

Espero les sirvan para el desarrollo de la misma.



jueves, 20 de diciembre de 2012

0 Comentarios
Publicado en Lista, Artículo, Negocios

Crack para BIOS bloqueada de laptop DELL


 

 Hola compañeros. Hace unos días me encontré con un gran problema cuando quise "meterle mano" a una laptop DELL Latitude D620, la BIOS estaba bloqueada y fue un gran problema encontrar la solución. Por suerte, existe el código para ingresarlo en consola en linux y poder descifrar la contraseña.

 El código se ingresa en una hoja de texto y guardarlo como dell.c El código es el siguiente: 

#include <stdio.h>
#include <string.h>
#include <time.h>
#define mystr "My own utility. Copyright (C) 2007-2010 hpgl, Russia"
#define allow595B
#define allowA95B
#define allow2A7B
#define fSVCTAG 0
#define fHDDSN 1
#define fHDDold 2
#define t595B 0
#define tD35B 1
#define tA95B 2
#define t2A7B 3
#ifdef allow595B
#define f595B
#endif
#ifdef allowA95B
#define f595B
#endif
#ifdef allow2A7B
#define f595B
#endif
char bSuffix[]="595BD35BA95B2A7B";
char scancods[]="\00\0331234567890-=\010\011qwertyuiop[]\015\377asdfghjkl;'`\377\\zxcvbnm,./";
char encscans[]={0x05,0x10,0x13,0x09,0x32,0x03,0x25,0x11,0x1F,0x17,0x06,0x15, \
0x30,0x19,0x26,0x22,0x0A,0x02,0x2C,0x2F,0x16,0x14,0x07,0x18, \
0x24,0x23,0x31,0x20,0x1E,0x08,0x2D,0x21,0x04,0x0B,0x12,0x2E};
#ifdef allow2A7B
char chartabl2A7B[72]="012345679abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0";
#endif
unsigned int MD5magic[64]={
0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee,
0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501,
0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be,
0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821,
0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa,
0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8,
0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed,
0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a,
0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c,
0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70,
0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x4881d05,
0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665,
0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039,
0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1,
0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1,
0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391};
unsigned char inData[23],outData[16];
char buf1output[32], buf1input[20];
char bug4;
void calcsuffix(char bfunc, char btype, char *outbuf);
void initData(void) {
*(int *)(&outData[0]) =0x67452301;
*(int *)(&outData[4]) =0xEFCDAB89;
*(int *)(&outData[8]) =0x98BADCFE;
*(int *)(&outData[12])=0x10325476;
}
typedef int (encfuncT1) (int num1, int num2, int num3);
#ifdef f595B
int enc0F2(int num1, int num2, int num3) {return (((~num3 ^ num2) & num1) ^ ~num3);}
int enc0F4(int num1, int num2, int num3) {return (( ~num2 ^ num1) ^ num3); }
int enc0F5(int num1, int num2, int num3) {return (( ~num1 | ~num3) ^ num2); }
#endif
int enc1F2(int num1, int num2, int num3) {return ((( num3 ^ num2) & num1) ^ num3);}
int enc1F4(int num1, int num2, int num3) {return (( num2 ^ num1) ^ num3); }
int enc1F5(int num1, int num2, int num3) {return (( num1 | ~num3) ^ num2); }
int encF3 (int num1, int num2, int num3) {return ((( num1 ^ num2) & num3) ^ num2);}
typedef int (encfuncT2)(encfuncT1 func, int num1, int num2, int num3, int key);
int enc1F1 (encfuncT1 func, int num1, int num2, int num3, int key)
{
return func(num1,num2,num3)+key;
}
#ifdef f595B
int enc0F1 (encfuncT1 func, int num1, int num2, int num3, int key)
{
return func(num1,num2,num3)-key;
}
#endif
unsigned int rol(unsigned int t, int bitsrot)
{
return (t >> (32-bitsrot)) | (t << bitsrot);
}
void blockEncodeF(int *outdata, int *encblock, encfuncT2 func1,
encfuncT1 func2, encfuncT1 func3, encfuncT1 func4, encfuncT1 func5 )
{
char S[4][4] = {{ 7, 12, 17, 22 },{ 5, 9, 14, 20 },{ 4, 11, 16, 23 },{ 6, 10, 15, 21 }};
int A,B,C,D,t,i;
A=outdata[0];
B=outdata[1];
C=outdata[2];
D=outdata[3];
for (i=0;i<64;i++) { t=MD5magic[i]; switch (i>>4) {
case 0: t=A+func1(func2,B,C,D, t+encblock[(i) & 15]); break;
case 1: t=A+func1(func3,B,C,D, t+encblock[(i*5+1) & 15]); break;
case 2: t=A+func1(func4,B,C,D, t+encblock[(i*3+5) & 15]); break;
case 3: t=A+func1(func5,B,C,D, t+encblock[(i*7) & 15]); break;
}
A=D; D=C; C=B; B+=rol(t,S[i>>4][i&3]);
};
outdata[0]+=A;
outdata[1]+=B;
outdata[2]+=C;
outdata[3]+=D;
}
void blockEncode(char *outdata, int *encblock, char btype) {
if (btype==tD35B)
blockEncodeF((int *)outdata,encblock,enc1F1,enc1F2,encF3,enc1F4,enc1F5);
#ifdef f595B
else
blockEncodeF((int *)outdata,encblock,enc0F1,enc0F2,encF3,enc0F4,enc0F5);
#endif
}
void encode(char *inbuf,int cnt,char btype) {
int encBlock[16];
char *ptr;
initData();
memcpy(encBlock,inbuf,cnt);
ptr=&((char *)encBlock)[cnt];
*ptr++=0x80;
memset(ptr,0,64-1-cnt);
encBlock[16-2]=((unsigned int)cnt << 3);
blockEncode(outData,encBlock,btype);
}
void psw(char bfunc, char btype, char *outbuf) {
int cnt,i,lenpsw,r;
if (bfunc==fHDDold) {
memcpy(inData,buf1input,11);
// calcsuffix(bfunc,btype,outbuf);
for (cnt=0;cnt<8;cnt++) outbuf[cnt]= scancods[ outbuf[cnt] ]; } else { memset(inData,0,sizeof(inData)); if (bfunc==fSVCTAG) cnt=7; else cnt=11; if ((bfunc==fHDDSN) && (btype==tA95B)) memcpy(inData,&buf1input[3],cnt-3); else memcpy(inData,buf1input,cnt); if (btype==t595B) memcpy(&inData[cnt],&bSuffix[0],4); else if (btype==tD35B) memcpy(&inData[cnt],&bSuffix[4],4); else if (btype==tA95B) memcpy(&inData[cnt],&bSuffix[0],4); else if (btype==t2A7B) memcpy(&inData[cnt],&bSuffix[12],4); cnt += 4; inData[cnt] = inData[4] & 0x1F; inData[cnt+1] = ((inData[4] >> 5) | (((inData[3] >> 5) | (inData[3] << 3)) & 0xF1) & 0x1F); inData[cnt+2] = ((inData[3] >> 2) & 0x1F);
inData[cnt+3] = (inData[3] >> 7) | ((inData[2] << 1) & 0x1F); inData[cnt+4] = (inData[2] >> 4) | ((inData[1] << 4) & 0x1F); inData[cnt+5] = (inData[1] >> 1) & 0x1F;
inData[cnt+6] = (inData[1] >> 6) | ((inData[0] << 2) & 0x1F); inData[cnt+7] = (inData[0] >> 3) & 0x1F;
for (i=cnt;i<8+cnt;i++) {
r = 0xAA;
if (inData[i] & 1)
r ^= inData[4];
if (inData[i] & 2)
r ^= inData[3];
if (inData[i] & 4)
r ^= inData[2];
if (inData[i] & 8)
r ^= inData[1];
if (inData[i] & 16)
r ^= inData[0];
inData[i] = encscans[r % sizeof(encscans)];
}
cnt = 23;
encode(inData,cnt,btype);
r = outData[0] % 9;
lenpsw = 0;
for (cnt=0;cnt<16;cnt++) {
if ((r <= cnt) && (lenpsw<8)) { buf1output[lenpsw++] = scancods[encscans[outData[cnt] % sizeof(encscans)]]; } } } } int main(int argc, char *argv[]) { unsigned char len,len1,bfunc,eol=1,echo=0, *minus,s2[20]; signed char btype; int argn=0; if (argc>1)
echo=1;
if (!echo)
fputs("" mystr "\n" \
"Short service tag should be right padded with '*' up to length 7 chars\n" \
"HDD serial number is right 11 chars from real HDDSerNum left padded with '*'\n" \
"Some BIOSes has left pad HDD serial number with spaces instead '*'\n",stdout);
while (!feof(stdin)) {
if ((argc<=1) && argn) break; fputs("Input: #",stdout); if (argc>1) {
strncpy(buf1input,argv[++argn],sizeof(buf1input));argc--;
}
else {
if (!eol) while (!feof(stdin) && (fgetc(stdin)!='\n')); eol=0;
if (fgets(buf1input,16+1+1,stdin)==NULL) {
if (echo) fputs("\n",stdout);
break;
}
}
len=strlen(buf1input);
if (len && (buf1input[len-1]=='\n')) {len--;eol=1;buf1input[len]=0;}
if (echo) {fputs(buf1input,stdout);fputs("\n",stdout);}
minus=strchr(buf1input,'-');
if (len==11) {
if (minus!=NULL) {
fputs("- Incorrect input\n",stdout);
continue;
}
bfunc=fHDDold;
fputs("By HDD serial number for older BIOS: ",stdout);
} else {
if (len==0) break;
if (minus==NULL) {
fputs("- No BIOS type found in input string, must be followed by -595B and other registered\n",stdout);
continue;
}
len1=minus-(unsigned char*)buf1input;
btype=-1;
#ifdef allow595B
if (strncmp(&buf1input[len1+1],&bSuffix[0],4)==0) btype=t595B;
else
#endif
if (strncmp(&buf1input[len1+1],&bSuffix[4],4)==0) btype=tD35B;
else
#ifdef allowA95B
if (strncmp(&buf1input[len1+1],&bSuffix[8],4)==0) btype=tA95B;
else
#endif
#ifdef allow2A7B
if (strncmp(&buf1input[len1+1],&bSuffix[12],4)==0) btype=t2A7B;
#endif
if (btype<0) {
fputs("- Invalid service tag in input string, allowed only -D35B and other registered\n",stdout);
continue;
}
struct tm *time1; time_t timer1=time(NULL);
time1=gmtime(&timer1);
strftime(s2,sizeof(s2),"%d.%m.%Y %H:%M",time1);
fputs(s2,stdout);
fputs(" DELL ",stdout);
if (len1==7) {
bfunc=fSVCTAG;
fputs("service tag: ",stdout);
fputs(buf1input,stdout);
} else
if (len1==11) {
bfunc=fHDDSN;
fputs("HDD serial number: ",stdout);
fputs(buf1input,stdout);
}
else {
fputs("- Incorrect input, must be 7 chars service tag or 11 chars HDD serial number\n",stdout);
continue;
}
}
psw(bfunc,btype,buf1output);
fputs(" password: ",stdout);
fputs(buf1output,stdout);
if (bug4) fputs(" !bug4 warning - password may not work!",stdout);
if (btype==t595B) if (bfunc==fSVCTAG) { //to check if A95B bug
char mpw1[20];
strcpy(mpw1,buf1output);
psw(bfunc,tA95B,buf1output);
if (strcmp(mpw1,buf1output)!=0) {
fputs(" passwordA95B: ",stdout);
fputs(buf1output,stdout);
}
}
fputs("\n",stdout);
}
return 0;
}
 Lo siguiente que debemos hacer es teclear lo siguiente en consola:
sudo nano dell.c
Después debemos compilar el archivo:
sudo gcc -dell dell.c
Ahora, simplemente corremos el programa
./dell.c
Una vez ejecutado el programa, nos pedirá el código que nos muestra la pantalla del bloqueo de nuestra laptop DELL.