Thursday, March 13, 2014

¿Que es AppMethod?

Appmethod es una versión de C++ Builder y Delphi enfocada al desarrollo multiplataformas que no es compatible con las versiones de delphi anteriores a XE2 ya que todas las aplicaciones programables utilizan el framework "FireMonkey".

¿Que es Firemonkey?
Firemonkey es un Framework especializado para multiplataformas que utiliza librerías que le permiten al código escrito y diseñado en él, ser compilado para diversas plataformas (Windows, MacOS, Android y IOS) en código nativo sin utilizar máquinas virtuales.

¿Cúal es la diferencia entre AppMethod y RAD Studio?
Rad Studio incluye muchas mas opciones para el desarrollador que AppMethod, AppMethod es recomendado para el programador cuyo objetivo sea las aplicaciones pequeñas

Wednesday, March 12, 2014

Como hacer update de una aplicación en windows en general

Una opción al problema de actualizar el programa que desarrollamos es utilizar una plataforma de creación de instalador llamada Innosetup http://www.jrsoftware.org/isinfo.php


Innosetup es gratuita, soporta todas las versiones de windows y aún mejor su código fuente esta disponible en Delphi.

Esta solución es válida para todos aquellos que no deseen programar la suya propia o deseen algo completo en poco tiempo.

Tuesday, March 11, 2014

Delphi y Bluetooth

Un muy buen ejemplo de una aplicación Bluetooth con Delphi es ésta aplicación creada por
Björn Hansen
https://www.youtube.com/watch?v=vesPd5WvykA

Utiliza Bluetooth para conectarse a un sistema de iluminación e ilustra las facilidades de Delphi para conectarse a dispositivos Bluetooth

Como definir código para diferentes plataformas

Otra pregunta muy popular ha sido el ¿como utilizo una parte de código solamente para
un plataforma en Delphi?

Muy sencillo:

utilizando el condicional $ifdef como este ejemplo:
  {$DEFINE DEBUG}
  {$IFDEF Android}
         Writeln('Código para android.'); 
         // Este código se ejecuta si la plataforma es android.
  {$ELSE}
         Writeln('Codigo para cualquier otra plataforma.');   
         // Este código se ejecuta si la plataforma no es android.
  {$ENDIF} 
 
De ésta manera tenemos código opcional para las diferentes opciones 
de plataformas que tengamos y más puesto que podemos discriminar entre 
diferentes procesadores para código optimizado
 
Pueden encontrar el cuadro completo de opciones aca:
http://docwiki.embarcadero.com/RADStudio/XE5/en/Conditional_compilation_%28Delphi%29
 

Friday, March 7, 2014

Como actualizar nuestro programa en Delphi automáticamente

Ayer me llegó ésta pregunta y en el momento me pregunté si Embarcadero tenía un componente para hacerlo automágicamente, la respuesta es:   nosotros tenemos que programarla.

Pero lo bueno es que hay varias técnicas para hacerlo y existe una lógica para que deba ser programado por nosotros los desarrolladores, cuando el mismo código fuente funciona para plataformas autoactualizables como las móviles, hacer un componente de éste tipo es redundante.

Las técnicas dependen del estilo de programación que utilicemos, por ejemplo si tenemos un solo programa ejecutable ejemplo: un sólo archivo ".exe" debemos pensar en crear un pequeño programa de tipo "loader" que sea el que se ejecute previamente, revise la versión en nuestro sitio y sobrescriba el archivo principal.

Si utilizamos archivos .dll y nuestro programa está bien diseñado como para que las actualizaciones solo necesiten reescribir el dll, sólo necesitaríamos escribir la rutina en nuestra aplicación principal.

Aqui adjunto algunos ejemplos de rutinas que pueden ser utilizadas:

Este algoritmo reescribe nuestro programa a un .bak para poder descargar una nueva versión

EXE:=ParamStr(0);
BAK:=ChangeFileExt(EXE,'.BAK');
IF FileExists(BAK) THEN DeleteFile(BAK);
<If Update Available and ready for download>
  RenameFile(EXE,BAK);
  <Save downloaded file as EXE>
  <Execute EXE>
  ExitProcess(0) 
<End>

Aqui una muestra de código para ejecutar ésta idea

If strtoint(versionweb) > strtoint(versionlocal) Then
  begin
  Showmessage('Existe una nueva actualizacion
disponible...');
  Data := TMemoryStream.Create;
  IdHTTP2.Get('http://servidor.com/prog.exe',Data);
  Data.SaveToFile('prog.e_e');
  data.Free;

  content :=  'DIM WshShell, resultado'#10#13'Set
WshShell = WScript.CreateObject ("WScript.Shell")'#10#13+
              'resultado = Msgbox("Se va a realizar
una actualizacion al
tarificador...",64,"AutoUpdater")'#10#13+
              'WshShell.Run "%windir%\System32\cmd.exe
/C del /Q prog.exe ",0,true'#10#13+
              'WshShell.Run "%windir%\System32\cmd.exe
/C move prog.e_e prog.exe",0,true'#10#13+
              'resultado = Msgbox("Se realizo proceso
de actualizacion.",64,"AutoUpdater")'#10#13+
              'WshShell.Run "prog.exe"'#10#13+
              'WshShell.Run "%windir%\System32\cmd.exe
/C del /Q update.vbs",0,true'#10#13+
              'WScript.Quit()';

  Stream := TFileStream.Create('update.vbs', fmCreate);
  Stream.WriteBuffer(Pointer(content)^, Length(content));
  Stream.Free;

 
ShellExecute(Form1.Handle,nil,PChar('update.vbs'),'','',SW_SHOWNORMAL);
//  WinExec ('', 0);
  Application.ShowMainForm := False;
  Application.Terminate;
  end;

Raúl Morales Víquez raul.morales.víquez@hotmail.com / http://informatica-raulmorales.blogspot.com
Consultor en informática e Instructor, certificado en Seguridad Informática, Graduado en la Universidad Latina de Costa Rica con más de 10 años de experiencia en diversas áreas de cultura organizacional en empresas multinacionales.

Wednesday, March 5, 2014

Criptomonedas, Moneda del Futuro?

¿Que es una criptomoneda?


Mucho se ha hablado de las criptomonedas, cosas buenas y malas, pero lo cierto es que llenan una necesidad de la sociedad moderna.

Existen muchas criptomonedas, aunque la más famosa y valiosa es sin lugar a dudas el bitcoin, existen criptomonedas privadas ligadas a empresas de transferencia de dinero y existen criptomonedas públicas, se puede ver una lista completa en http://www.coinwarz.com/cryptocurrency, las cuales son utilizadas en diversos sitios como opciones al bitcoin.

¿Cómo se determina el valor de una criptomoneda?

La criptomoneda es un certificado de seguridad con un número de "dueño" que por acuerdo general tiene un valor flotante, su comportamiento es muy parecido a un título negociable o las acciones de una compañía, su valor crece o decrece de acuerdo a varios factores como:
  • demanda: como todo bien de mercado entre más personas la compren mayor será su valor
  • confianza: como cualquier título valor, cuando alguna empresa que se dedica a la comercialización de criptomonedas sufre un robo o pérdidas, la criptomoneda pierde valor ante el público.
  • aceptación: toda moneda es tan valiosa como su capacidad de ser convertida es productos, servicios o en otro tipo de moneda.
¿Qué necesito para tener una billetera de criptomonedas?

La evolución a criptomoneda exige de las personas una nueva forma de actuar con respecto a la seguridad de su dinero, necesitan informarse sobre las llaves públicas y privadas que rigen la seguridad de sus cuentas, por ejemplo, muchas personas utilizan la billetera de criptomoneda en el celular, pero si guardan las llaves privadas en el mismo teléfono existen maneras de copiarlas y obtener acceso a su billetera.

Para explicarme mejor, la billetera de criptomoneda es una larga línea de caracteres que lo identifica a usted, y es generada y registrada por el programa con el que decida guardar sus criptomonedas, el acceso a su billetera se da en dos partes, para depositar y saber que existe, se envía lo que se llama una llave pública que identifica su cuenta, y para hacer cambios y accesar los fondos se necesita un acceso privilegiado que se escribe en un archivo llamado llave privadael que tenga una copia de su llave privada tiene acceso a su billetera.

¿Quién controla los movimientos de dinero?

La respuesta a ésta pregunta es interesante, todos los movimientos de dinero son públicos, existe un archivo que crece y es mantenido por las computadoras que específicamente se dedican a validar éstos movimientos.
Existe un proceso que es vital para las criptomonedas, el "mineo" o "mining", éste proceso significa utilizar los recursos de procesamiento de la computadora para validar una cadena de transacciones, el premio por utilizar la computadora para éste proceso es un paquete de criptomonedas nuevas en nuestra cuenta.
En pocas palabras todas las computadoras dedicadas al "mining" controlan los movimientos de su cuenta, haciendo el proceso de hackeo difícil si no imposible, el diseño del proceso de mineo hace muy difícil el falsificar una transacción.

¿Es ilegal tener bitcoins?

No es ilegal el tener bitcoins en ningún país del mundo hasta ahora, incluso varios gobiernos estudian la posibilidad de cargar impuestos a las ganancias en ésta moneda.
La anonimidad de las billeteras virtuales ha impulsado a personas inescrupulosas a utilizar varios tipos de criptomonedas en sus pagos por sus productos y servicios ilegales, pero las criptomonedas en sí no son ilegales.

Raúl Morales Víquez
raul.morales.víquez@hotmail.com / http://informatica-raulmorales.blogspot.com
Consultor en informática e Instructor, certificado en Seguridad Informática, Graduado en la Universidad Latina de Costa Rica con más de 10 años de experiencia en diversas áreas de cultura organizacional en empresas multinacionales.



Sunday, March 2, 2014

Ingeniería Social, el punto débil de cualquier organización

Ingeniería Social, el punto débil de cualquier organización


Hoy en día es común el recibir correos de príncipes africanos que sólo necesitan nuestra información bancaria para salvar sus millones a cambio de una comisión o de loterías de internet que sólo requieren de $200 de impuesto para que nos envía $4 millones de dólares, pero ¿cuantas personas cayeron ante estos engaños?, ¿Cuánta gente sigue cayendo?
El robo de información de la empresa Kickstart, la empresa que ha conseguido capital para las nuevas empresas a través de internet, no fue algo inesperado, por lo menos no para los profesionales de seguridad, sino algo que era de esperarse luego de los grandes robos contemporáneos.
Sony y Target son empresas aún más grandes que han sufrido ataques informáticos en los últimos años, la seguridad informática es algo que ni siquiera es prioridad para los programadores y gerentes de empresas, es sólo otro gasto ¿verdad?, pero cuando pasa algo como esto uno no duda en preguntarse, ¿no es un error lógico y fácil de evitar?
La verdad, difícil de tragar, es que la culpa es nuestra como usuarios, ¿cuántos de nosotros leen los términos de licencia de un programa, o le encargamos a un abogado a que lo haga y nos los explique?, ahora bien ¿cuántos leemos siquiera lo que nos piden en las pantallas emergentes?, ¿cuándo es mejor presionar “cancelar” que presionar “ok”?
Hace poco me llegó un correo que fue novedoso, me guio a una página igual a paypal, una página muy conocida de pago con tarjeta de crédito, y me alarmó mostrándome un cargo al que yo no había accedido, siendo honesto yo ya sospechaba algo raro por el comportamiento de la página, ya que todos los links me pedían “resetear” la cuenta antes de darme más información e insistían en que debía “refrescar” los datos de tarjeta de crédito, ¡Alerta! Las páginas reales te dan la información una vez que uno se autentica, no le piden más datos hasta que uno intente cambiar algo y le informan de lo que pasa sin tener que autenticarse varias veces.

¿Cómo reconocer una página falsa de una real?

1.       Revise el campo de dirección: Las páginas falsas utilizan nombres de dominio alternos o de países diferentes como http://Bancogeneral.freewebs.com o http://Bancogeneral.com.ru
2.       Los enlaces van todos hacia un mismo destino: rara vez los artistas del engaño dedican mucho tiempo en la creación de páginas falsas así que para ahorrar tiempo envían todos los enlaces de la página a obtener su información
3.       Exigen más información de la necesaria para acceder: por lo general estos artistas son muy ambiciosos y apuestan a obtener toda su información de una sola vez

Recuerde

1.       Siempre acceda a sus páginas financieras escribiendo la dirección directamente, nunca desde un enlace.
2.       Si sospecha que entró a una página falsa, ¡Cambie su clave!
3.       Si recibe un email sospechoso, envíelo a la oficina de seguridad informática de su empresa financiera
4.       Elija empresas financieras que tengan oficinas de seguridad informática.

¿Qué es ingeniería social?

El tema de la ingeniería social es utilizar las habilidades sociales de una persona o grupo para obtener información, esto se da a través de:
·         Llamadas telefónicas: Cuando el “administrador del sistema” ocupa su clave para hacer un mantenimiento de su cuenta, los administradores tienen control absoluto del sistema y no requieren de claves para respaldar su correo electrónico.
·         Correos electrónicos: ahora es posible el esconder virus en fotos y archivos de música que se vuelven indetectables para muchos antivirus, solo abra los archivos que vienen de fuentes fidedignas.
·         Acceso físico: hay miles de tipos de dispositivos electrónicos diseñados para copiar y rastrear información.

Recuerde, conforme la empresa es más grande, la información es más valiosa.

El método de defensa de las empresas pequeñas que les permite mantener cero o muy poco presupuesto en seguridad es que el costo de violar su seguridad es más alto que la ganancia potencial, esto no se da en empresas cuya base de datos incluya información sensible de funcionarios de otras empresas o gobierno.
El error de muchas empresas es minimizar el valor de sus activos, es recomendable invertir entre el 20% y el 30% de sus ganancias en diversos dispositivos de seguridad y respaldo para su información.
Ahora siempre va a existir un límite entre lo aceptable y lo inverosímil, un juego de espías es muy poco probable conforme es una pequeña empresa, pero en una gran empresa con negocios de millones de dólares, los micrófonos y cámaras espías no son gran inversión contra la ganancia potencial.

Defiéndase de la Ingeniería Social

La ingeniería social depende del desconocimiento de sus empleados del valor de lo que hacen y de la información  recabada por parte de los intrusos, la manera más fácil de defenderse es negativizar ésta ecuación.
Sus empleados deben conocer el valor de la información interna de la compañía y no revelarla a personas externas, sus mercadólogos deben ser expertos en el arte de revelar información que atraiga a sus clientes y posibles inversores, pero que sea inútil a personas que deseen hacerle daño a su compañía.
Sus auditorías de  seguridad deben apoyar a sus empleados dándoles herramientas para bloquear fugas de información y reiterándoles el valor de su actividad y su valor en la empresa.
Recuerde el 75% de los ataques (maliciosos y accidentales) dentro de cualquier empresa son causados por sus mismo empleados.
Raúl Morales Víquez
raul.morales.víquez@hotmail.com / http://informatica-raulmorales.blogspot.com
Consultor en informática e Instructor, certificado en Seguridad Informática, Graduado en la Universidad Latina de Costa Rica con más de 10 años de experiencia en diversas áreas de cultura organizacional en empresas multinacionales.


Exploring the Differences between Red-Teaming and Blue-Teaming in Cybersecurity: Why Red-Teaming is Sexier; but Blue-Teaming is More Crucial

When it comes to cybersecurity, there are two teams that often get confused: redteams and blueteams. Redteams are the hackers, the ones w...