the Stuxnet computer worm

When first discovered in 2010, the Stuxnet computer worm posed a baffling puzzle. Beyond its sophistication loomed a more troubling mystery: its purpose. Ralph Langner and team helped crack the code that revealed this digital warhead’s final target. In a fascinating look inside cyber-forensics, he explains how — and makes a bold (and, it turns out, correct) guess at its shocking origins.

Ralph Langner’s Stuxnet Deep Dive is the definitive technical presentation on the PLC attack portion of Stuxnet. He did a good job of showing very technical details in a readable and logical presentation that you can follow in the video if you know something about programming and PLC’s.

The main purpose of Ralph’s talk was to convince the audience with “100% certainty” that Stuxnet was designed specifically to attack the Natanz facility. He does this at least four different ways, and I have to agree there is no doubt.

Ralph Langner is a German control system security consultant. He has received worldwide recognition for his analysis of the Stuxnet malware.

  • Stuxnet worm hits Iranian centrifuges – from mid-2009 to late 2010
  • Iran complains facilities hit by Stars malware – April 2011
  • Duqu trojan hits Iran’s computer systems – November 2011
  • Flame virus targets computers in PCs across the Middle East, including Iran and Israel – June 2012
  • Iran says Stuxnet worm returns – December 2012

Continue reading “the Stuxnet computer worm”

eXtreme Programming

Extreme Programming: A gentle introduction.40 % análisis y diseño5 % codificación30 % pruebas y soporte25 % más análisis, diseño, pruebas, y soportePero….5% de los programadores (o menos) hacen 95% del trabajo (o más)Un programador es producti…

diagrama xtrem programming

Extreme Programming: A gentle introduction.

40 % análisis y diseño

5 % codificación

30 % pruebas y soporte

25 % más análisis, diseño, pruebas, y soporte

Pero….

5% de los programadores (o menos) hacen 95% del trabajo (o más)

Un programador es productivo alrededor de 2 a 4 horas diarias en promedio. Por eso los beneficios de programación en pares en realidad no implican un costo en productividad. Antes al contrario, probablemente un equipo de 2 de programadores trabajando bajo el esquema de programación extrema sea 2 a 3 veces más productivo que los mismos programadores trabajando de manera aislada.

El enfasis en diseño y pruebas es simplemente una realidad del ciclo de desarrollo:

  • Un defecto en codificación es un defecto, aunque corregirlo puede generar más defectos.
  • Un error en la fase de diseño produce más de 10 defectos en código
  • Un error en la fase de levantamiento de requerimientos produce más de 100 defectos en código

Referencias:

http://www.objectmentor.com/resources/articles/ObjectiveView3.pdf

the Stuxnet computer worm

When first discovered in 2010, the Stuxnet computer worm posed a baffling puzzle. Beyond its sophistication loomed a more troubling mystery: its purpose. Ralph Langner and team helped crack the code that revealed this digital warhead’s final target. In a fascinating look inside cyber-forensics, he explains how — and makes a bold (and, it turns out, correct) guess at its shocking origins.

Ralph Langner’s Stuxnet Deep Dive is the definitive technical presentation on the PLC attack portion of Stuxnet. He did a good job of showing very technical details in a readable and logical presentation that you can follow in the video if you know something about programming and PLC’s.

The main purpose of Ralph’s talk was to convince the audience with “100% certainty” that Stuxnet was designed specifically to attack the Natanz facility. He does this at least four different ways, and I have to agree there is no doubt.

Ralph Langner is a German control system security consultant. He has received worldwide recognition for his analysis of the Stuxnet malware.

  • Stuxnet worm hits Iranian centrifuges – from mid-2009 to late 2010
  • Iran complains facilities hit by Stars malware – April 2011
  • Duqu trojan hits Iran’s computer systems – November 2011
  • Flame virus targets computers in PCs across the Middle East, including Iran and Israel – June 2012
  • Iran says Stuxnet worm returns – December 2012

Continue reading “the Stuxnet computer worm”

SmartDraw Software

On Sat, Jul 21, 2012 at 12:20 AM, SmartDraw Software <donotreply@smartdraw.com> wrote:

SmartDraw

Develop a Strategic Plan in One Hour

If you’ve been putting off developing a written strategic plan for your business, don’t worry. You aren’t alone. According to one survey, about 90% of businesses have no strategic plan.

So, do you need one?

Yes, if you want to greatly increase your chances of success. Highly successful enterprises not only have a strategic plan, but they review and update it on a regular basis and follow it religiously.

Is it different from a business plan?

Yes, a strategic plan answers the question why while a business plan is a blueprint forhow. It is a big-picture, forward-thinking approach to a company’s reason for being.

What do you mean, 'we never got around to developing a strategic plan'? Copyright by The Cartoon Bank
“What do you mean, ‘we never got around to developing a strategic plan’?”
Buy SmartDraw now and save $100 for a limited time.

Buy SmartDraw

It needs to address very specific questions:

  • What is our company’s vision?
  • What is our mission?
  • Who are our customers and what exactly do they want to buy?
  • Who are our competitors and how do we stack up against them?
  • What are the agents of change that will affect our customers and our competitors in the future?
  • Are we able to meet our customers’ needs today? Are we prepared for future change?
  • What are we best at doing?
  • Is it consistent with our mission?
  • Is everything we do aligned with our vision?

I know my business needs a Strategic Plan, but who has the time to do it?

As with anything worthwhile, a good strategic plan does take time. But most of what goes into a strategic plan are things you already know. The main thing is to get the process started.

Because you’re busy, you need a strategic plan format that is efficient, flexible and interactive. Strategic planning is an ongoing process, so the format must allow for information to be captured, shared, and updated in real time.

The One-Hour Strategic Plan

To get a very basic strategic plan developed within a sixty-minute timeframe, you need to be prepared to maximize the time allotted. For the best results, take the following steps in advance:

  1. Make sure that the key people who guide your company’s direction are present. If your organization comprises only you or a couple of business partners, you might want to invite one or more people whose business acumen you respect to join.
  2. Outline your meeting and share your agenda with all participants in advance. Let them know you’ll be seeking their input and ask them to be ready to contribute.
  3. Use a conference room with a projector so you can build your strategic planning document in real time. If attendees are remote, use an online meeting platform such as WebEx® or GoToMeeting®.
  4. Watch your time and stick with your agenda. Avoid getting into too much detail – limit this meeting to big-picture thinking. Details can be added later.

Begin with a Written Agenda

We’ve created an agenda for our meeting using a SmartDraw mind map, shown below. The five major topics of discussion are indicated and we’ve set a time limit for each one. This agenda will be emailed to each attendee in advance of the meeting and will be ready on our projector when they arrive.

SmartDraw has the automation and ease of use to allow your entire team to quickly create ALL of the visuals required for smart and effective strategic planning.

Vision and Mission

Your company may already have vision and mission statements. If so, you should evaluate them to make sure they are still appropriate and make changes as necessary.

These are very important components and may require more than 15 minutes of discussion. But keep to your purpose–to create a basic strategic plan in an hour. You can always go back later and make additions or changes to it.

Goals

The next major area is discussion of goals. Because of our self-imposed time limit, we have allocated only 10 minutes for discussion of goals. This demands that the discussion be kept to only the most important of our company’s goals. For Acme Printing, three major goals were indentified, one of which has three subcategories.

As shown below, we are transforming our agenda document into a strategic plan. We have now added our major goals along with vision and mission statements.

SWOT Analysis

To have an effective strategic plan, it’s important to be brutally honest about your company and its competitive environment. Only through a realistic assessment of these areas can you develop a valid plan for your organization’s future.

In performing this analysis, you may indentify areas of weakness that need to be either improved or eliminated. Perhaps your company has unique strengths that are not being fully utilized. Shifting conditions in the economy or your specific industry may be revealing opportunities you should pursue or threats that need to be hit head on or avoided entirely.

As we work through our SWOT analysis we continue building our mind map in real time and now have a visual that looks like this.

Final Step: Formulate a Strategy

We now have the basic framework needed to move into the final phase of the strategy plan. For Acme Printing, this will involve outlining an operating plan. Because the operating plan includes a number of items, we linked it to a new visual, shown below.

Thanks to the power of SmartDraw, we have created the basic framework of a strategic plan for Acme Printing during the course of a one-hour meeting.

You’ll note that the visuals created are very easy to read and understand. The information flows from left to right and from top to bottom, just as we are trained to read.

Using visuals for communicating information is as much as six times more effective than using words alone. So not only are these visuals easy to create and read, they also offer your audience a considerably higher rate of comprehension.

While these are reasons enough to use SmartDraw to help you develop your strategic plan, we’ve only scratched the surface of what a great visual processor can to for your company.

Implementation and Progress Tracking

The mind map above showing your operating plan can be converted into a project chart simply by changing the view. Clicking this icon allows you to turn your strategic plan into a working document showing timelines and also allowing tasks to be assigned to individuals.

In the project view, you can form a clear plan with dates and responsibilities.

This visual operating plan document serves a dual purpose:

  1. The mind map view clearly shows the relationship of near term objectives to strategic goals and is a very effective way of communicating the essence of the strategy to the entire company.
  2. The project view allows management to track and manage the work being done to implement the plan.

Not only have you created a strategic plan, but you now have transformed it into a working plan with tangible tasks, assignments and deadlines.

A Roadmap to Success – in One Hour

Unfortunately, too many business people are overwhelmed by the seemingly complex nature of the strategic planning process. The bottom line is twofold: get started and keep it simple. An hour-long strategic planning meeting, capturing information in real time, allows you to build the framework your business needs to succeed. The best way to do that is with visual strategic planning using SmartDraw.

Why SmartDraw?

One-Click Microsoft Office® Integration

Insert visuals in Word®, Excel®, and PowerPoint® documents with one click. SmartDraw is also SharePoint® enabled and imports Visio® files.

Automatic Formatting

Click simple commands and SmartDraw builds your visual for you, automatically. Add or remove a shape and SmartDraw realigns and arranges all the elements so that everything looks great. You don’t need to be able to draw to use SmartDraw.

Quick-Start Templates

Dozens of professionally-designed strategic planning examples make you instantly productive. Simply choose the applicable template and customize it to suit your needs.

Get Started Now

Visual strategic planning for your company’s success is only a click away. Discover for yourself the powerful benefits of SmartDraw. Buy SmartDraw now and save $100!

Now that you’re part of the SmartDraw community we invite you to keep in touch with us on your favorite social networks.

SmartDraw Blog Facebook Twitter LinkedIn YouTube SlideShare GooglePlus

Buy and save $100 for a limited time.

Save $100
Buy SmartDraw

White Paper

To read more about how to do strategic planning with SmartDraw,download this white paper .

Watch Video
To watch a video showing how to do a SWOT diagram for strategic planning with SmartDraw,
click here.
Contact Us
If you prefer to contact one of our product specialists,
click here.

You control the e-mail you get from SmartDraw Software: Unlist

SmartDraw Software, LLC | 9909 Mira Mesa Blvd. | San Diego, CA 92131 | USA

GoToMeetingTM is a registered trademark of Citrix Online, LLC
WebExTM is a registered trademark of Cisco Systems, Inc.

Office®, Word®, Excel®, PowerPoint®, SharePoint®, and Visio® are registered trademarks of Microsoft® Corporation.

All Rights Reserved. © 2012 SmartDraw, LLC

.NET Compact Framework 2.0

OpenNETCF.org es un repositorio de información y código fuente sobre Microsoft .NET Compact Framework. OpenNETCF.org empezó como un proyecto de código abierto para extender la funcionalidad de .Net 1.x. A partir del Smart Device Framework 2.0 el c

OpenNETCF.org es un repositorio de información y código fuente sobre Microsoft .NET Compact Framework. OpenNETCF.org empezó como un proyecto de código abierto para extender la funcionalidad de .Net 1.x. A partir del Smart Device Framework 2.0 el código fuente dejo de ser libre.

En el mismo sito de Microsoft hay referencias a ejemplos de aplicaciones móviles que usan las extensiones de OpenNETCF.

El articulo Building a Wi-Fi Discovery Application with the .NET Compact Framework 2.0 explica a detalle una aplicación que usa estas librerías e incluye código fuente. Es un buen ejemplo para empezar a ver el ciclo complete de una aplicación móvil no trivial.

La solución de muestra incluye dos proyectos. La aplicación en si, y el código fuente OpenNETCF referenciado en la misma. Al construir la solución en Visual Studio 2005 se marcan warnings pero los proyectos se construyen con éxito. Se puede probar la aplicación en una Pocket PC 2003. Si la tarjetea de WiFi esta desactivada la aplicación genera una excepción. No es una aplicación de grado comercial pero es una buena referencia de lo que se puede hacer.

El articulo Deploying .NET Compact Framework 2.0 Applications with .cab and .msi Files continua con este ejemplo y explica como hacer un proyecto de instalación.

En un proyecto para aplicaciones inteligentes, cada archivo se marca con una acción de generación que se define en la ventana Propiedades del modo siguiente:

  • Un archivo marcado como Compile, valor predeterminado para todos los archivos y formularios de código, compilará los archivos en el ensamblado resultante.
  • Un archivo marcado como Content permite el empaquetado del archivo en el archivo .cab y su implementación en el proyecto. Asimismo, resulta útil para la implementación de archivos de configuración XML y bases de datos SQL Server CE.
  • Un archivo marcado como None simplemente se ignora. Esta acción resulta útil para incluir documentación en el proyecto, como diagramas de Visio que no se deben implementar.
  • Un archivo marcado como Embedded Resource se incluye en el ensamblado ejecutable como un recurso. Esta acción permite que el código escrito extraiga el recurso mediante programación. Asimismo, resulta eficaz para empaquetar imágenes y archivos de secuencias de comandos que se pueden utilizar posteriormente en la aplicación.

Antes de pasar a construir la aplicación para dispositivos inteligentes y crear los archivos .cab para la implementación, no se debe olvidar cambiar el modo de generación del proyecto de depuración a liberación. Esto reducirá el tamaño del ejecutable en el dispositivo (hecho importante en el caso de los dispositivos inteligentes de almacenamiento restringido) y aumentará la velocidad de ejecución.

Para hacer un proyecto de instalación automatica es necesario efectuar los siguientes pasos:

1. Crear archivos .cab para cada dispositivo donde va a correr la aplicación. Un .cab de instalación puede contener un archivo setup.dll con código no administrado, y por eso se requiere un .cab diferente para cada familia de procesadores. Si la aplicación no requiere de este archivo, entonces un solo .cab es suficiente.

2. Agregar los archivos y entradas de registro de la aplicación a los .cab

3. Proveer el código de acciones especiales a ejecutar durante la instalación y desinstalación de la aplicación.

4. Registrar la aplicación con ActiveSync para que se pueda instalar de la PC de escritorio a la Pocket PC.

5. Empacar todo en un archivo .msi

El primer paso es agregar un proyecto
Other Project types->Setup and deployment->Smart Device Cab Project
a la solución.

Al construir el proyecto se generan 3 archivos un .cab, un .log, y un .inf. El archivo .inf tiene parámetros de instalación que serán usados por ActiveSync.

El .cab es suficiente para instalar una aplicación en la Pocket PC pero es posible agregar un proyecto de instalación de escritorio para simplificar el proceso para el usuario.

Para aplicaciones móviles, hay dos cosas que el instalador debe hacer. Debe presentarle al usuario las pantallas del asistente de instalación en la PC de escritorio y debe instalar la aplicación en la Pocket PC.

La instalación en el Pocket PC se hace a través una aplicación llamada CeAppMgr.exe que es parte de ActiveSync. CeAppMgr.exe requires un archivo .ini que se debe agregar manualmente. En nuestro caso el .ini contiene lo siguiente:

[CEAppManager]
Version = 1.0
Component = OpenNETCF WiFiDiscovery

[OpenNETCF WiFiDiscovery]
Description = Sample WiFi Network Discovery Application using the SDF
CabFiles = WiFiDiscovery.cab

Para activar el modo de depuración de CeAppMgr.exe es necesario meterle mano al Registry. Para los valientes

[HKLMSoftwareMicrosoftWindows CE ServicesAppMgr]
“ReportErrors”=dword:1

Existen algunos requerimientos que, aunque no son estrictamente necesarios técnicamente, son prácticas establecidas y necesarias para certificación.

Aplicaciones registradas con CeAppMgr deben estar en un subfolder de ActiveSync por ejemplo. Estos requerimientos los maneja el instalador utilizando variables predefinidas de Windows para mayor flexibilidad y para facilitar localización del software en varios idiomas. Para ejecutar estas acciones se agrega una clase de instalación.

Agregamos un proyecto de librerí­a de Windows a la solución de Visual Studio. A este proyecto le agregamos la installer class. Esta clase soporta eventos relacionados con el proceso de instalación y permite definir acciones previas y posteriores al proceso de instalación y al de desinstalación. Por ejemplo,

public CustomInstaller()
{
InitializeComponent();
this.BeforeInstall +=
new InstallEventHandler(CustomInstaller_BeforeInstall);
this.AfterInstall +=
new InstallEventHandler(CustomInstaller_AfterInstall);
this.BeforeUninstall +=
new InstallEventHandler(CustomInstaller_BeforeUninstall);
}

Es necesario definir constantes para usar dentro del código en términos de entradas en el Registry, bajo la llave HKLM.

De esta manera el código sigue siendo valido bajo distintos idiomas y versiones de Windows.

private const string CEAPPMGR_PATH =
@”SOFTWAREMicrosoftWindowsCurrentVersionApp PathsCEAPPMGR.EXE”;
private const string ACTIVESYNC_INSTALL_PATH =
@”SOFTWAREMicrosoftWindows CE Services”;
private const string INSTALLED_DIR = “InstalledDir”;
private const string CEAPPMGR_EXE_FILE = @”CEAPPMGR.EXE”;
private const string CEAPPMGR_INI_FILE = @”WiFiDiscovery.ini”;
private const string APP_SUBDIR = @”OpenNETCF WiFiDiscovery”;
private string TEMP_PATH =
Environment.SystemDirectory + @”TEMPWiFiDiscovery”;

El ultimo paso es crear el proyecto de instalación.

Other project types ->Setup and deployment->Setup project

Despues de crear el proyecto, realizamos las siguientes acciones:

1. Cambiar el nombre del archivo de salida.

2. Indicar la ubicación de un directorio para guardar archivos temporales. Este direcorio debe estar ubicado de acuerdo a lo que definimos en la clase de instalación.

3. Definir las propiedades del proyecto como compañí­a, nombre de aplicación, etc.

4. Agregar los archivos de salida del proyecto CAB

5. Agregar en la carpeta de aplicación la salida de la clase de instalación

6. Agregar Custom Action usando la clase de instalación

7. Agregar archivo .ini

8. Construir todos los proyectos en la solución

9. Probar el instalador

Para mayor detalle se pueden consultar los articulos originales en el sitio de Microsoft.

El articulo Developing and Deploying Pocket PC Setup Applications aunque obsoleto tiene información complementaria y discute el caso .Net 1.x

Antes de poder ejecutar la aplicación, es preciso instalar .NET Compact Framework en el dispositivo. Si la aplicación requiere SQL Server CE, también será necesario instalar el archivo .cab adecuado. Aunque ambos se instalan automáticamente al implementar la aplicación desde Visual Studio .NET mediante el menú Implementar o al depurar el dispositivo, en producción será necesario emplear un mecanismo diferente.

Como se mencionó anteriormente, los archivos .cab creados para un proyecto no incluyen los archivos .cab correspondientes a .NET Compact Framework o SQL Server CE. Aunque Pocket PC 2003, y dispositivos posteriores, suelen incluir .NET Compact Framework en ROM, será preciso agregar los archivos .cab específicos de la plataforma en cuestión en el caso en que dichos dispositivos no los incluyan. Un modo sencillo de llevar a cabo esta operación para .NET Compact Framework es descargar y ejecutar el redistribuible.

Referencia:

Patrones de implementación para Microsoft .NET Compact Framework

Minimalist GNU for Windows

MinGW o MinGW32 (Minimalist GNU for Windows) es una implementación de los compiladores GCC para la plataforma Win32, que permite migrar aplicaciones GNU a entornos Windows. Es un derivado de Cygwin en su versión 1.3.3.MinGW incluye un conjunto de la …

MinGW o MinGW32 (Minimalist GNU for Windows) es una implementación de los compiladores GCC para la plataforma Win32, que permite migrar aplicaciones GNU a entornos Windows. Es un derivado de Cygwin en su versión 1.3.3.

MinGW incluye un conjunto de la api de Win32, permitiendo un desarrollo de aplicaciones nativas para esa plataforma, pudiendo generar ejecutables y librerí­as usando la API de Windows.

MinGW fue creado por Colin Peters, el 1 de julio de 1998, compilándolo con Gygwin. La primera versión nativa de MinGW fue realizada por Jan-Jaap van der Heijden, quien también tuvo participación en el proyecto GCC. Mumit Khan estuvo a cargo del mantenimiento del proyecto e incluyo al compilador algunas características propias de Windows. Los archivos de cabecera del API de Windows fueron provistos por Anders Norlander.

Una de las desventajas de MinGW es que los ejecutables que genera son de tamaño más grande que los generados por otros compiladores. Esto ocurre cuando se incluyen los archivos de cabecera estándares de C++ (por ejemplo, #include ), y se debe a que el compilador vincula todas las librerí­as dentro del archivo ejecutable de manera estática.

MinGW incluye MSYS (Minimal SYStem) un shell POSIX/Bourne para ejecutar scripts de configuración usados por make y ./configure

Después de descargar MinGW y MSYS, incluyendo mingw-runtime, w32api, binutils y gcc, gdb y mingw32-make se pueden expandir los archivos de dos formas. Poner el directorio de MinGW dentro de MSYS o instalarlos en directorios distintos y modificar el archivo MSYS /etc/fstab para agregar un apuntador al directorio donde mingw esta instalado.

Para probar la instalación se puede correr el shell de msys y probar el comando de línea

gcc –v

Para habilitar el soporte de IDEs agregar lib a la variable de entorno LIBRARY_PATH y los subdirectorios bin de y a la variable de entorno PATH
Aplicación de consola:

En un archivo con el nombre hello.c poner el siguiente código:

#include

int main(int argc, char **argv)
{
printf (“Hellon”);
return (0);
}

y compilar con

gcc -c hello.c

y después

gcc -o hello hello.o

Alternativamente

gcc -o hello hello.c

En un archivo con el nombre hello.cpp poner el siguiente código:

#include
int main(int argc, char **argv)
{
std::cout << "Hello" << std::endl;
return (0);
}

y compilar con

g++ -c hello.cpp
g++ -o hello hello.o
Aplicación Windows

En un archivo con el nombre hello.c poner el siguiente código:

#include

int WINAPI WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow)
{
MessageBox (NULL, “Hello”, “Hello Demo”, MB_OK);
return (0);
}

para crear el ejecutable usar los comandos de linea

gcc -c hello.c

y

gcc -o hello hello.o -mwindows

el parametro -mwindows es necesario para que se incluyan las librerias necesarias para un programa Windows.
dll

En un archivo con el nombre dllfct.h poner el siguiente código:

#ifdef BUILD_DLL
// the dll exports
#define EXPORT __declspec(dllexport)
#else
// the exe imports
#define EXPORT __declspec(dllimport)
#endif

// function to be imported/exported
EXPORT void tstfunc (void);

En un archivo con el nombre dllfct.c poner el siguiente código:

#include
#include “dllfct.h”

EXPORT void tstfunc (void)
{
printf (“Hellon”);
}

En un archivo con el nombre Hello.c poner el siguiente código:

#include “dllfct.h”

int main ()
{
tstfunc ();
return (0);
}

Para crear una dll y un ejecutable que lo use:

gcc -c hello.c
gcc -c -DBUILD_DLL dllfct.c
gcc -shared -o tst.dll -Wl,–out-implib,libtstdll.a dllfct.o
gcc -o hello.exe hello.o -L./ -ltstdll

Se puede especificar el directorio a usar para los includes durante la compilación con

-I/path/to/headers

y las librerias para link:

-L/usr/lib/library

Usualmente no hay necesidad de andar moviendo las librerias.
Archivo .def para un dll

Si tiene un dll llamado file.dll y quiere crear un archivo .def con el nombre file.def,

echo EXPORTS > file.def
nm file.dll | grep ‘ T _’ | sed ‘s/.* T _//’ >> file.def

Para crear una biblioteca con el nombre file.a :

dlltool –def file.def –dllname file.dll –output-lib file.a