30 de enero de 2009

Recuperar archivos eliminados

Cayó en mis manos una memoria USB de 2 GB con el sistema de particiones dañado y por ende los archivos inaccesibles. Anteriormente, en una ocasión había recuperado archivos eliminados accidentalmente de una USB con el programa PC Inspector smart recovery desde Windows. Así que fue lo primero que probé pero dicho programa solo recuperaba imágenes. Así que me decidí a probar las herramientas libres forenses disponibles para GNU/Linux.

Foremost

A continuación los pasos que seguí para recuperar los archivos con foremost:

Instalación:

# aptitude install foremost

Se genera una imagen de la unidad de disco de la cual se quiere recuperar información antes de realizar cualquier acción:

$ dd if=/dev/sdc1 of=/ruta/de/la/imagen.dd

Luego ejecutamos lo siguiente para recuperar todos los tipos de archivos posibles soportados por foremost:

$ foremost -t all -i /ruta/de/la/imagen.dd

Para recuperar sólo documentos, hojas de calculo, presentaciones e imágenes se ejecuta la siguiente orden:

$ foremost -vd -t ole,zip,jpeg -i /ruta/de/la/imagen.dd

Con la opción -t se especifican los tipos de formatos que se desean recuperar. ole se refiere a archivos (xls, doc, ppt, etc) de Office. zip se refiere a archivos de OpenOffice y Office 2007.

En la ruta de donde se ejecuto la orden anterior se creará un directorio llamado "output" con los archivos recuperados separados por tipo de archivos.

Para más información ejecutar:

$ man foremost


Testdisk

Otra herramienta poderosa para recuperación de datos es testdisk. Permite recuperar particiones perdidas y/o volver discos no booteables a booteables nuevamente. Soporta múltiples sistemas de archivos entre ellas: Fat16, Fat32, NTFS, Ext2, Ext3, etc. Testdisk incluye una herramienta llamada photorec que es usada para recuperar archivos eliminados o perdidos por formateo de una unidad.

A continuación los pasos a seguir para recuperar archivos eliminados usando photorec:

Opcionalmente, puede generarse una imagen de la unidad de donde se desea recuperar los archivos.

Instalación de testdisk:

# aptitude install testdisk

Se ejecuta la siguiente orden para recuperar los archivos de un disco sin generar una imagen:

# photorec /d /algun/lugar/

Si se generó una imagen de la unidad, se ejecuta la siguiente orden:

# photorec /d /algun/lugar/ /ruta/de/la/imagen.dd

"/algun/lugar/" es la ruta donde se guardarán los archivos recuperados.

Se ejecutará el programa, donde hay que seleccionar el disco de donde se desean recuperar los archivos, posteriormente el tipo de partición (normalmente [Intel ] Intel/PC partition) luego la partición especifica de donde se encontraban los archivos, el tipo de partición y si se desea buscar el toda la partición o solo en el espacio disponible.

Si se desea sólo recuperar determinados tipos de archivos, se puede modificar los tipos de archivos (File Opt) que se desean recuperar. Si se desean recuperar archivos de OpenOffice, MSOffice 2007 y versiones anteriores hay que seleccionar los formatos doc y zip.

Después de unos minutos los archivos serán recuperados.

Para más información ejecutar:

# man photorec

O leer la documentación oficial que incluye una guia paso a paso.

Otras aplicaciones

Hay más aplicaciones que sirven para este propósito en entornos GNU/Linux, a continuación listo algunas:
- Testdrive
- Autopsy (la probe pero no logre entenderla)
- Magicrescue
- Scalpel
- Tct

28 de enero de 2009

Abanq: Importe con letra en las facturas

Por default en el campo "texto" de la tabla "reciboscli" se almacena la cantidad con letra, pero la manera en que es generada no funciona para México por lo que hay que modificarse. Las modificaciones a realizar son las siguientes:

En el script "tesoreria/scripts/flfactteso.qs"

Se agrega el siguiente código en la función "oficial_generarReciboCli":
/* inicio del código agregado. */
// declaración de variables
var redondeado:Number=0;
var centavos:Number=0;
var conletra:String;
var totalconletra:String;
var conletra = util.enLetra(importe); // Cantidad con numero de la parte entera
redondeado = Math.round(importe); // redondea la cantidad al numero entero mas próximo para conocer centavos

if (redondeado < importe){
centavos = importe - redondeado;
centavos = centavos * 100;
}
if (redondeado > importe) {
centavos = redondeado - importe;
centavos = centavos * 100;
}
if (centavos == 0)
{
totalconletra = conletra + " PESOS " + centavos + centavos + "/100 M.N.";
}
else{
totalconletra = conletra + " PESOS " + centavos + "/100 M.N.";
}
/*
Hubiera sido mas sencillo obtener los decimales con util.partDecimal(importe),
pero al usarlo devolvía una bonita violación de segmento:
// var centavos:Number = util.partDecimal(importe);
*/
/* fin del código agregado. */


En la misma función un poco más abajo se modifica:
setValueBuffer("texto", util.enLetraMoneda(importe, divisa));
Por:
setValueBuffer("texto", totalconletra.upper()); /* se usa upper para que muestre el texto mio en mayúscula.*/

En el archivo "informes/queries/i_facturascli.qry"

Se cambia:
<tables>empresa,facturascli,lineasfacturascli,albaranescli</tables>
Por:
<tables>empresa,facturascli,lineasfacturascli,albaranescli,reciboscli </tables>

En las etiquetas select del mismo archivo se agrega el campo "reciboscli.texto" y en las etiquetas from se cambia:
< from >
empresa,facturascli INNER JOIN lineasfacturascli ON facturascli.idfactura = lineasfacturascli.idfactura
LEFT OUTER JOIN albaranescli ON albaranescli.idalbaran = lineasfacturascli.idalbaran
</from>


Por:
< from >
empresa,facturascli INNER JOIN lineasfacturascli ON facturascli.idfactura = lineasfacturascli.idfactura
INNER JOIN reciboscli ON reciboscli.idfactura = facturascli.idfactura
LEFT OUTER JOIN albaranescli ON albaranescli.idalbaran = lineasfacturascli.idalbaran
</from>


En el archivo "informes/reports/i_facturascli.kut"

Se manda llamar el campo "reciboscli.texto":
<CalculatedField BackgroundColor="255,255,255" BorderColor="0,0,0"
BorderStyle="0" BorderWidth="1" CalculationType="5"
CommaSeparator="0" Currency="32" DataType="0"
DateFormat="11" Field="reciboscli.texto" FontFamily="Verdana"
FontItalic="0" FontSize="10" FontWeight="50"
ForegroundColor="0,0,0" HAlignment="0" Height="20"
NegValueColor="0,0,0" Precision="0" Text="[reciboscli.texto]"
VAlignment="1" Width="410" WordWrap="0"
X="98" Y="28" />


27 de enero de 2009

Configuración de impresoras en GNU/Linux

Aunque en la actualidad la gran mayoría de las impresoras son compatibles con GNU/Linux, es recomendable estar completamente seguro de ello y verificarlo antes de comprar una. Esto se puede comprobar en "http://www.linuxfoundation.org/en/OpenPrinting". Una vez que sabemos que es compatible y el driver que utiliza se procede a comprarla.

En este caso se va a configurar una impresora Laser Samsung ML-2240 con los drivers que vienen incluido en el CD de la impresora.

Configuración de la impresora localmente mediante su CD

A continuación los pasos:
- Instalar cups:
# aptitude install cups
- Insertar CD
- Montarlo (si no se monta automáticamente) y ubicarse en el directorio Linux:
# cd /media/cdrom0/Linux
- Iniciar la instalación:
# sh install.sh
- Seguir las instrucciones

- Una vez finalizado estará configurada la impresora. Al acceder con en el navegador a "http://localhost:631" se puede configurar y administrar la impresora de manera avanzada.


Configuración de la impresora localmente mediante CUPS

Cups (Common Unix Printing System) es una herramienta web (http://localhost:631) para la administración y configuración de impresoras permitiendo agregar, eliminar, configurar, compartir impresoras, administrar trabajos de impresión, entre muchas otras cosas. Es la herramienta principal para estos menesteres. Cuando se realicen las modificaciones pedirá el password de root del equipo para almacenar las modificaciones en "/etc/cups/cupsd.conf".

# aptitude install cups cups-client cups-common

Desde cups se puede agregar impresoras, pero antes de agregarla hay que instalar el paquete (si no esta instalado) que contiene el Driver o controlador. Si no se sabe el controlador que usa hay que averiguarlo en "http://www.linuxfoundation.org/en/OpenPrinting".

Para agregar una impresora mediante cups hay que acceder a "http://localhost:631" mediante un navegador, en el Menú "Administración" en la opción "Añadir impresora". Se elige un nombre (el más importante y será el usado por las aplicaciones para imprimir), ubicación (descripción de la ubicación) y descripción (de la impresora). Luego se elige el tipo de conexión (aparecerá automáticamente la impresora conectada con su conexión) pudiendo elegir AppSocket/HP jetDirect (protocolo usado por impresoras HP JetDirect), LPT1, USB, http, ipp (a través de otro servidor cups o usado por una Impresora con tarjeta de red), samba, entre otros. Se elige el controlador; Si no está el controlador en la lista se puede proporcionar el archivo ppd de la impresora obtenido del CD de la impresora o descargado de la web. Finalmente se configura la "URI de la conexión".


Configuración de impresoras compartidas

La compartición de impresoras se puede realizar de varias maneras. Aquí explico algunas.

Mediante cups (localhost:631) en el server y en el cliente

Se requiere instalar cups en el cliente y en el server:
# aptitude install cups

- En el server de impresión (donde esta conectada la impresora) en la pestaña "Administración" se habilita la opción "Compartir impresoras públicas conectadas a este sistema". Desde la pestaña "Impresoras", seleccionando la impresora instalada se habilita la opción "Publicar Impresora".
- En el cliente en la pestaña "Administración" se habilita la opción "Mostrar impresoras compartidas por otros sistemas", se guardan los cambios y en unos momentos aparecerá configurada la impresora pudiéndose corroborar desde la pestaña "Impresoras". La impresora tendrá un "URI de la conexión" del tipo "ipp://192.168.1.1:631/printers/NombreImpresora"

Mediante samba

- En el server instalar samba (aptitude install samba) y en "/etc/samba/smb.conf" en la sección printers ponemos el parámetro "public" como "yes" para compartir la impresora sin necesidad de password o "no" para compartir con previa autenticación:
[printers]
comment = Impresoras
browseable = no
path = /var/spool/samba
printable = yes
public = yes
create mask = 0700


Para autenticarse con usuario, se agrega el usuario sin shell al sistema, se le asigna password en el sistema y para samba:
# useradd -s /sbin/nologin usuario
# passwd usuario
# smbpasswd -a usuario


- En los clientes Unix a través de cups se agrega una impresora cuyo tipo de conexión sea "samba" y como URI de la conexión "smb://UsuarioSmb:password@equipo_con_la_impresora/nombreImpresora". Para un dominio el URI de la conexión es "smb://UsuarioSmb:password@DOMINIO/equipo_con_la_impresora/nombreImpresora"

- En un cliente WindowsXP se accede a "\\192.168.1.1\nombreImpresora", se le da doble clic a la impresora y se siguen las instrucciones en pantalla para instalarla. Si el parámetro "public" esta como "no", cuando quiera imprimir primeramente deberá loguearse con el usuario creado accediendo a "\\192.168.1.1" y luego mandar imprimir.

Configurar impresoras con su propia tarjeta de red e IP
Se agrega en el cliente la impresora a través de CUPS eligiendo como protocolo "IPP" y como tipo de URI de conexión "ipp://192.168.1.1/nombreImpresora" o "http://192.168.1.1:631/nombreImpresora".


Impresoras HP
Si la impresora a configurar es HP hay que instalar los siguientes paquetes:
- hp-setup (herramienta de configuración)
- hplip (drivers)
- hpijs (drivers)

Luego, desde consola como administrador, ejecutar:
# hp-setup

Seguir las instrucciones en pantalla.


Otros paquetes o aplicaciones relacionados con impresoras

foomatic
Foomatic es un conjunto de controladores y herramientas de impresión para muchas impresoras. Estos controladores pueden usarse para agregar una impresora desde Cups, pero foomatic trae una aplicación gráfica llamada foomatic-gui (para Gnome) que permite agregar y administrar impresoras.

kdeprint
Es un administrador de impresoras para KDE parecido a foomatic-gui pero con más opciones.

ghostscript
Trae una gran cantidad de controladores de impresoras.

gutenprint
Trae controladores para muchas impresoras. Estos controladores están especialmente diseñados para realizar impresiones con GIMP obteniendo muy buenos resultados en las impresiones de imágenes.

printconf
Configura automáticamente impresoras USB y paralelo con CUPS


NOTA: Las impresoras agregadas con cualquier aplicación serán visibles desde cups.


Enlaces de interés
http://www.cups.org
http://www.linuxfoundation.org/en/OpenPrinting (antes linuxprinting.org)
http://localhost:631
http://www.scribd.com/doc/2371017/Todo-Linux-78-Iniciacion

Abanq: Más información

Terminal de Punto de Venta (TPV)

Este módulo se usa para realizar ventas con una terminal de punto de venta. Se accede a través del "Area de Facturación". Lo primero que hay que hacer es configurar los "Datos generales" (Cliente de facturación, Formas de pago, etc) accesibles desde el menú "Principal". Luego hay que agregar los "Agentes de TPV" que serán las personas que realizarán las ventas y se crea el "Punto de venta".

Una vez configurada la TPV, las ventas se realizan desde la opción "Comandas" del menú "Principal".

El arqueo se usa para controlar el dinero que existe en la caja permitiendo retirar dinero.


Exportar/Respaldar Tablas, Módulos, etc

Desde el Area "Sistema" en el modulo "Datos" se realizan estas tareas. Para exportar o importar datos creados en abanq se usa el menú "Datos Facturalux" permitiendo exportar tablas, módulos o todo. El menú "Datos Externos" se usa para importar archivos realizados en winomega, contaplus, facturaplus u otros archivos csv.

Se puede, por ejemplo, exportar las listas de control de acceso desde "Datos Facturalux" en la opción "Exportar Módulos". Luego se crea el proceso de exportación especificándole la ruta donde se almacenará y el nombre del modulo a exportar.

Hay que recordar que también se puede exportar la base de datos usando el comando mysqldump:
$ mysqldump -u usuario -p --opt base_de_datos > base_de_datos.sql


Evitar que se guarde en el disco duro el password del último usuario que se conecta en abanq

En cada maquina hay que editar el archivo "$HOME/.qt/facturaluxrc" y dejar el blanco las entradas DBA/password y DBA/username, luego darle permisos de solo lectura al archivo.