viernes, 30 de diciembre de 2011

Se fue 2011, Bienllegada de 2012

Ahora que finaliza el año, es el constante tiempo de reflexión de todo lo que ha sucedido durante este 2011, que para bien o para mal ya concluyo, lo recordare un año de idas y venidas, que me dejo nuevas y excelentes amistades; invaluable experiencia y conocimiento, pero sobre todo me regalo un año mas de vida.
Hoy 31 de Diciembre de 2011, a pocas horas de concluir el año me siento a pensar lo que vivi, pero mas pienso en lo que me espera, en lo que nos espera. Sí en este funesto 2011 que se nos llevo a muchos faros, Columbo, Steve Jobs, Dennies Ritchie y Mcarthy.

No olvides tampoco este 2011 que se acabo el mundo dos veces :D, y que tambien fue el año 11:11:11 11:11:11 que bien espero que hayas disfrutado ese segundo.

Este 2011 cometimos errores, pero suelo pensar que cometemos los errores correctos, esos errores que te enseñan por que quien no comete errores no aprende y no vive, esos errores te permiten ser quien eres hoy, y de no cometerlos ¿quien serias? ¿quienes seriamos?.

Por mi parte siempre publico la lista del año pasado con lo que quise lograr:
  • Terminar mi carrera y conseguir mi titulo (Abril o Mayo) Aunque termine como en septiembre.
  • Certificarme SCJP (Junio/Julio), Aun tengo pendiente mi certificación este es un fiel recuerdo que me sigue desde 2010.
  • Mejorar aun mas en C tuve uno que otro encuentro con C y C++ este año quisiera que fueran mas seguido en 2012 la idea es aventurarme en programación de sistemas operativos preferiblemente distribuidos o moviles.
  • Aprender Java 7 en cuanto salga(Julio).  Listo esto fue muy facil en cuanto salio hice mis primeras impresiones aunque espero que Java 8 ya se ponga a nivel de C#.
  • Ser mas activo con iniciativas Open Source, quizas participando en algun proyecto. Pude haber participado mas pero estuve colaborando en ciertas librerias de Android como AChartEngine pero no tan activa como me hubiera gustado, eso sí estuve muy bien en StackOverFlow.
  • Mejorar en gran medida mi Deutsch practicar practicar y practicar, un sitio recomendable  LiveMocha lamentablemente no mejore mucho mi aleman necesito practicar mas para no perder la habilidad que ya tengo

Algunas cosas no esperadas de 2011 fueron:
  • Mayor participación en Android y tecnologias moviles, agradezco mucho al trabajo que he venido desempeñando en Auxilio mundial que me ha retado en plataformas smartphone.
  • Estuve explorando mas acerca de J2EE sin embargo pudo haber sido mejor lamentablemente no e encontrado la excusa perfecta para hacerlo.
  • Aprendi mas de seguridad fueron excelente curso impartido en Unan-Leon al respecto
  • Mas activo en stackoverflow 
Aun no he pensado mucho en 2012, así que lo dejare así por el momento.

Estoy agradecido de haber vivido un año mas, y esperamos tener mejores tiempos en 2012.

Así que hasta 2012 muchas gracias por la lectura. Hasta Pronto

Atte @necronet

miércoles, 21 de diciembre de 2011

Hacking Android, LVL Cracking


This is probably the last technical year post, consider it my Chrismast gift yo you. Happy holidays,

A little bit of history you can Check  Reto 14: Android crackme #2, it is an intersting publication where they challenge you to bypass LVL security on a developed APK; that was the perfect excuse for me to get to learn about decompile code in Android with practice, I mean I knew "How" but i theory never done it for myself, so thanks again to Hackerplayers for the challenge.

Clarifications

This post is not intended to be a profound explanation about how Android compile clases and package into an APK. I'm not going to explain deeply about Smali/Backsmali (Decompile code), there are already excelent places that you can check them out like Dissasembling Dex File or Android Cracking, personally I liked the last better because it's a whole blog intended to cracking, tells you a lot about tips and tricks in this subject, totally worth it to check it out.

This post is a pragmatic example on how you can bypass a security licencing solving ofcourse Reto 14: Android crackme #2. So lets start with the fun, here is the answer I gave and was approve by Hackerplayer author:

Download the APKTool

 Apktool is a wonderful tool, when it comes to cracking more like when it comes to decompiling, it becomes your bestfriend allows you to do several stuff like:
  • Decoding resources to nearly original form (including resources.arsc, XMLs and 9.png files) and rebuilding them
  • Smali debugging: SmaliDebugging
  • Helping with some repetitive tasks
After following the APKTool instalation you can proceed to execut the folowing command:

$apktool d cracme2hpys.apk out


*out  is the target folder where the apk it's decompressed.

Checking the extracted folder out

First I though I could bypass the application by changing the start up ACtivity on the Manifest, but that was unsucessful.

So No way, I had to check out the decompile code. The AndroidManifest.xml it's always a good place to start, gives you many hint where to look like the Start up Activity, probably there is where the  ALVL process start.



So you now we know we have to check LicenseCheck.smali. When you open this file, you'll se a lot of code similar to Assembly language if you are not confortable with this, get used to it's the only way.

Search for the #onCreate method on LicenseCheck, this is where the licesence que check and invoke the method doCheck on the same class.

    invoke-direct {v1, p0, v2, v3}, Lcom/android/vending/licensing/LicenseChecker;->(Landroid/content/Context;Lcom/android/vending/licensing/Policy;Ljava/lang/String;)V

    .line 120

    iput-object v1, p0, Lcom/hpys/crackmes/LicenseCheck;->mChecker:Lcom/android/vending/licensing/LicenseChecker;

    .line 123

    invoke-direct {p0}, Lcom/hpys/crackmes/LicenseCheck;->doCheck()V

    .line 125

    return-void


If you look at the line 123. you'll se there is a doCheck method invocation of the current class so lets dig out to see what does this method actually do:

.method private doCheck()V

    .locals 2

    .prologue

    .line 106

    iget-object v0, p0, Lcom/hpys/crackmes/LicenseCheck;->mChecker:Lcom/android/vending/licensing/LicenseChecker;

    iget-object v1, p0, Lcom/hpys/crackmes/LicenseCheck;->mLicenseCheckerCallback:Lcom/android/vending/licensing/LicenseCheckerCallback;

    invoke-virtual {v0, v1}, Lcom/android/vending/licensing/LicenseChecker;->checkAccess(Lcom/android/vending/licensing/LicenseCheckerCallback;)V

    .line 107

    return-void

.end method


Now is clear the method doCheck does the License check through a class named LicenseCecker aparently there is also a callback instance passed to this object probably to inform that the checking was successfuly, so now we have to into:

com/android/vending/licensing/LicenseChecker


Exploring LicenseChecker



Before we start to read all the LicenseChecker and $ classes, we should go straight to the checkAccess method that was invoke previusly in LicenseCheck class remember? I'll help you out here:

    invoke-virtual {v0, v1}, Lcom/android/vending/licensing/LicenseChecker;->checkAccess(Lcom/android/vending/licensing/LicenseCheckerCallback;)V

Probably this method gives us better clues than any other, this method is quite extensive, so I'll narrow it do to the important stuff:

# virtual methods

.method public declared-synchronized checkAccess(Lcom/android/vending/licensing/LicenseCheckerCallback;)V

    .locals 9

    .parameter "callback"

    .prologue

    .line 133

    monitor-enter p0

    :try_start_0

    iget-object v1, p0, Lcom/android/vending/licensing/LicenseChecker;->mPolicy:Lcom/android/vending/licensing/Policy;

    invoke-interface {v1}, Lcom/android/vending/licensing/Policy;->allowAccess()Z

    move-result v1

    if-eqz v1, :cond_0

    .line 134

    const-string v1, "LicenseChecker"

Did you see if-eqz v1, :cond_0  operation? well this it's a very important one if this it's not true then It will send you lower to instantiate the License Validator, and we don;t want that do we?, so lets negate that condition with another operation if-nez vx,target  so now it should work right? welll


Are you kidding It ain't working.... ¬¬

Yes, yes I know we change the license execution and recompile and repacked (I'll explained the process later) but still does not work, well turns out the challenge gives you another problem. The MyAndroidAppActivity does not seem to be invoking the onCreate method and generate the following trace on logcat:



So?, What's going on?, The answer is plain simple the MyAndroidActivity does not invoke onCreate, we need to add that into the backsmali. Look:

.class public Lcom/hpys/crackmes/MyAndroidAppActivity;

.super Lcom/hpys/crackmes/LicenseCheck;

.source "MyAndroidAppActivity.java"

# direct methods

.method public constructor ()V

    .locals 0

    .prologue

    .line 6

    invoke-direct {p0}, Lcom/hpys/crackmes/LicenseCheck;->()V

    return-void

.end method

# virtual methods

.method public onCreate(Landroid/os/Bundle;)V

    .locals 0

    .parameter "savedInstanceState"

    .prologue

    .line 11

    invoke-super {p0, p1}, Lcom/hpys/crackmes/LicenseCheck;->onCreate(Landroid/os/Bundle;)V

    .line 15

    return-void

.end method

The code above show a lots of lacks in the MyAndroidAppActivity, being a simple and small code we can aknowledge the following problems:


  • The onCreate method does not call the super.onCreate(savedInstanceState)
  • The onCreate method does not have any assign layout
  • The MyAndroidAppActivity inherit the LicenseCheck instead of the Activity, and also does not make the proper code on the init invocation.
Here is the right code:


.class public Lcom/hpys/crackmes/MyAndroidAppActivity;
.super Landroid/app/Activity;
.source "MyAndroidAppActivity.java"


# direct methods
.method public constructor ()V
    .locals 0

    .prologue
    .line 6
    invoke-direct {p0}, Landroid/app/Activity;->()V

    return-void
.end method


# virtual methods
.method public onCreate(Landroid/os/Bundle;)V
    .locals 1
    .parameter "savedInstanceState"

    .prologue
    .line 15
    invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V

    .line 17
    const/high16 v0, 0x7f03
    invoke-virtual {p0, v0}, Lcom/hpys/crackmes/MyAndroidAppActivity;->setContentView(I)V

    .line 20
    return-void
.end method


We  can take the following notes like the onCreate and setContentView invocation, and the variable v0 was added, when adding variable you have to be careful to declare how many are you using in the block scope in this case we add locals 1 on the method declaration.

Are we done? kind of, we now need to recompile and repackaged this into an APK, as I promised this is how you do it

Back to an APK

Rembember apktool? well the same tool that allows you to decompile, help you into recompile and recreate an APK, but you probably going to need a little bit more to get it back into the phone. "But you'll se I'll show you" (Joker quote)

First build and create the apk with the following command

$ apktool b out crackemecracked.apk

You will also need to sign this out,  and you are going to need a keystore, you can easly created with keytool

$ keytool -genkey -v -keystore keystore.keystore


Now that you have a keystore, use it to signed your app

jarsigner -verbose -keystore keystore.keystore crackemecracked.apk crackmecracked


If you wish to learn more about how to sign Android application don't forget to pass by the  oficial documenation.

Now that we have our nice apk signed, we can reinstall it into the phone with the adb:

$ adb uninstall com.hpys.crackmes 
$ adb install crackemecracked-za.apk


If everything it's correct you should be seeing this:




And READY!! 



¿Some aditional tips ?

Particulary I've never done this before, the information on how to modify backsmali is not that wide, but it is not that hard (at least not the basic to do this)

- I suggest you learn a bit about Assembler because it is really similar the operator and the register changes.

- Whenever I get lost with a specific operation I went to Dalvik OpCode it was like the Larouse for me

- I did some small and simple classes to check out what does the decompile code looks like.

- No need to check everything like LicenseChecker$ResultListener$1 this classes are either anonymous or declare internal classes on the file so you can skip them.

- For the recompilation and reepackaging procedure I did small shellscript feel free to use it.

- I suggest you two excelent I/O presentations.

Google I/O 2008 - Dalvik Virtual Machine Internals



 Google I/O 2010 - A JIT Compiler for Android's Dalvik VM


lunes, 19 de diciembre de 2011

Hacking Android - Crackeando LVL

Este es probablemente el ultimo post del año que sea tecnico/tutorial, y es mi regalo de despedida hasta el 2012, espero que lo disfruten. 

Para hacer un poco de prologo revisa el Reto 14: Android crackme #2, es una interesante publicación que  te retan a pasarte el licenciamiento de Android de un APK; así que es la excusa perfecta para aprender un poco de decompilado de Android, el cual hasta el momento sabia de manera teorica y nunca habia tenido una motivación mas alla de simplemente ser "el sabiondo teorico" para pasar a ser un curioso pragmatico, así que gracias a Hackerplayers por el reto.

Aclaraciones

Este post no es un explicativo profundo acerca de la forma que Android compila las clases y empaqueta el APK. Tampoco voy a explicar que es Smali/Backsmali (código decompilado) para ello ya hay buenos blogs , como Dissasembling Dex File  y claro Android Cracking el ultimo un cracker de Android te cuenta muchos secretos y trucos acerca de código decompilado.

Este post es más acerca de como te pasas el licenciamiento de seguridad resolviendo el Reto 14: Android crackme #2. Asi que empezemos a divertirnos aqui esta mi respuesta (la cual fue aprobada por el autor del blog):

Descarga el APKTool

El apktool es una herramienta maravillosa, si te quieres hacer de esto de cracking aplicaciones android el apktool es un fiel compañero, permite realiza muchas cosas entre ellas:
  • Extraer y decompilar fuentes de empaquetados Android(apktool), esto incluye recursos(res), manifiesto(AndroidManifest), y fuentes decompiladas.
  • Recompilar dichas fuentes y volverlas a empaquetar.
  • Depurar codigo decompilado backsmali.
Luego de seguir la instalacion del APKTool procede a ejecutar el comando para extraer el APK.

$apktool d cracme2hpys.apk out


*out es el directorio donde se descomprime el apk.

Husmeando el directorio extraido

Lo primero que pense es bypasear cambiando la clase en el AndroidManifest.xml que es la que comienza la aplicacion, pero no tuve exito.

Asi que tuve que husmear el codigo decompilado. El AndroidManifest.xml siempre te da la pista de donde comenzar en general procuro que sea la Actividad inicial, por que es donde probablemente se de la invocación del ALVL.





Asi que puedes revisar en la carpeta com/hpys/crackmes/LicenseCheck.smali. Veras mucho codigo, si tienes alguna experiencia con lenguaje ensamblador  no te parecera tan raro, sino estudia un poco y veras que sencillo que es. 

Busca en el onCreate de LicenseCheck.smali el codigo donde revisa la licencia se realiza una invocacion a un metodo doCheck().

    invoke-direct {v1, p0, v2, v3}, Lcom/android/vending/licensing/LicenseChecker;->(Landroid/content/Context;Lcom/android/vending/licensing/Policy;Ljava/lang/String;)V

    .line 120

    iput-object v1, p0, Lcom/hpys/crackmes/LicenseCheck;->mChecker:Lcom/android/vending/licensing/LicenseChecker;

    .line 123

    invoke-direct {p0}, Lcom/hpys/crackmes/LicenseCheck;->doCheck()V

    .line 125

    return-void


Si miras bien en la linea 123 hay hay un doCheck este llama a un metodo en la misma clase LicenseCheck pero que hace realmente este metodo veamos:

.method private doCheck()V

    .locals 2



    .prologue

    .line 106

    iget-object v0, p0, Lcom/hpys/crackmes/LicenseCheck;->mChecker:Lcom/android/vending/licensing/LicenseChecker;



    iget-object v1, p0, Lcom/hpys/crackmes/LicenseCheck;->mLicenseCheckerCallback:Lcom/android/vending/licensing/LicenseCheckerCallback;



    invoke-virtual {v0, v1}, Lcom/android/vending/licensing/LicenseChecker;->checkAccess(Lcom/android/vending/licensing/LicenseCheckerCallback;)V



    .line 107

    return-void

.end method

Ahora es claro que el metodo doCheck hace la revision, y llama a la clase LicenseChecker y aparentemente le pasa un callback LicenseCheckerCallback probablemente para informar que el licensamiento se realizo de forma correcta. Entonces el paso mas logico ahora sera ir a explorar la clase

com/android/vending/licensing/LicenseChecker


Explorando del LicenseChecker



Antes de empezar a leer todo el LicenseChecker y sus derivados, mejor ve directamente a la invocacion del metodo checkAccess que es el que invoca la clase LicenseCheck recuerdas?.

    invoke-virtual {v0, v1}, Lcom/android/vending/licensing/LicenseChecker;->checkAccess(Lcom/android/vending/licensing/LicenseCheckerCallback;)V

Probablemente este metodo nos proporcione mejores pista que cualquier otro por que es donde se lleva acabo la revision de la licencia.

El metodo checkAccess, es bastante grande así que procurare resumir las partes relevantes, por ejemplo:

# virtual methods

.method public declared-synchronized checkAccess(Lcom/android/vending/licensing/LicenseCheckerCallback;)V

    .locals 9

    .parameter "callback"

    .prologue

    .line 133

    monitor-enter p0

    :try_start_0

    iget-object v1, p0, Lcom/android/vending/licensing/LicenseChecker;->mPolicy:Lcom/android/vending/licensing/Policy;

    invoke-interface {v1}, Lcom/android/vending/licensing/Policy;->allowAccess()Z

    move-result v1

    if-eqz v1, :cond_0

    .line 134

    const-string v1, "LicenseChecker"

    if-eqz v1, :cond_0 esta condicion es muy importante por que en caso de cumplirse te envia a cond_0 y mas abajo indica que es la instanciacion del validador de licencias. Si nos saltamos esta parte tendremos el ejercicio terminado!!. Es bien facil de hacer esta condicion tiene una operacion antagonica la cual es: if-nez vx,target  asi que al cambiar las operaciones deberia funcionar.


Pero no funciona.... ¬¬

Si, si, cambiamos esta linea y ejecutamos el paso de recompilación de codigo y reempaquetamiento (lo explicare luego), el reto nos regala un obstaculo adicional,  al pasar la licencia el MyAndroidAppActivity no parece invocar al metodo onCreate, y te genera el siguiente error en logcat:



¿Así que pasa? ¿por que no funciona?, Bueno la respuesta del por que no funciona es clara la clase MyAndroidAppActivity no tiene la invocación al metodo onCreate hara falta agregarselo con backsmali.

.class public Lcom/hpys/crackmes/MyAndroidAppActivity;

.super Lcom/hpys/crackmes/LicenseCheck;

.source "MyAndroidAppActivity.java"

# direct methods

.method public constructor ()V

    .locals 0

    .prologue

    .line 6

    invoke-direct {p0}, Lcom/hpys/crackmes/LicenseCheck;->()V

    return-void

.end method

# virtual methods

.method public onCreate(Landroid/os/Bundle;)V

    .locals 0

    .parameter "savedInstanceState"

    .prologue

    .line 11

    invoke-super {p0, p1}, Lcom/hpys/crackmes/LicenseCheck;->onCreate(Landroid/os/Bundle;)V

    .line 15

    return-void

.end method


El codigo anterior demuestra muchas faltas en la clase MyAndroidAppActivity, siendo un codigo pequeño y sencillo es facil reconocerlas todas:
  • El metodo onCreate no llama al super.onCreate.
  • El metodo onCreate tampoco tiene layout asignado deberia tener main.xml con setContentView.
  • La clase MyAndroidAppActivity hereda de LicenseCheck en vez de Activity y tambien en el metodo init se hace la invocacion especial a este metodo.
Aqui el codigo del MyAndroidAppActivity con las fallas anteriores resueltas:

.class public Lcom/hpys/crackmes/MyAndroidAppActivity;
.super Landroid/app/Activity;
.source "MyAndroidAppActivity.java"


# direct methods
.method public constructor ()V
    .locals 0

    .prologue
    .line 6
    invoke-direct {p0}, Landroid/app/Activity;->()V

    return-void
.end method


# virtual methods
.method public onCreate(Landroid/os/Bundle;)V
    .locals 1
    .parameter "savedInstanceState"

    .prologue
    .line 15
    invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V

    .line 17
    const/high16 v0, 0x7f03
    invoke-virtual {p0, v0}, Lcom/hpys/crackmes/MyAndroidAppActivity;->setContentView(I)V

    .line 20
    return-void
.end method


Podemos realizar los siguientes apuntes, como la invocacion del metodo onCreate() y de setContentView con la variable v0, en este tienes que tener sumo cuidado en declarar locals 1 que es el numero de variables que utilizaras.

¿Ya terminamos?, algo así lo unico que falta es recompilarlo y empaquetarlo para regresarlo a un APK.

De regreso a un APK


A como mencione inicialmente apktool tambien te permite recompilar la aplicación y regresarla a un APK, pero vas a necesitara un poco mas de eso para colocarla devuelta en el telefono. Para recompilar la aplicacion ejecuta el comando:

$ apktool b out crackemecracked.apk

Tambien necesitas firmarlo, para ello necesitas de un keystore, puedes crearlo facilmente con keytool

$ keytool -genkey -v -keystore my-release-key.keystore


Ahora ya tienes tu keystore para firmar tu aplicacion


jarsigner -verbose -keystore keystore.keystore crackemecracked.apk crackmecracked


Si deseas saber mas de como firmar aplicaciones android desde consola no te olvides pasar por la documentación oficial.


Ahora si tenemos la aplicacion firmada, es muy sencillo desintalarla y volverla instalar con el adb.

$ adb uninstall com.hpys.crackmes 
$ adb install crackemecracked-za.apk
 

Si todo esta bien, la imagen que deberia aparecer es la siguiente:




Y LISTO!! 



¿Algunos Tips adicionales ?

En lo particular nunca habia realizado esto, y la informacion de como modificar codigo backsmali no es muy amplia, pero es posible y no es tan dificil.

- Te recomiendo que veas algo de codigo Assembler por que es similar al backsmali basicamente son operadores y cambios registros.

- Cuando estaba perdido con alguna operación acudia a Dalvik OpCode el cual fue como un diccionario para mí.

- Tambien cree clases sencillas, como el hola mundo o una imagen para ver como se decompilaba y como se veia.

- No hay necesidad de revisar todas las clases como LicenseChecker$ResultListener$1 por que se refiere a clases internas (anonimas o declaradas) en el archivo, así que obviemos eso por un momento y dediquemonos al metodo doCheckAccess en la clase LinceseChecker.

- Para la parte de la recompilación y empaquetamiento me hice un shellscript por si quieres utilizarlo.

- Te recomiendo dos excelentes presentaciones de I/O.

Google I/O 2008 - Dalvik Virtual Machine Internals



 Google I/O 2010 - A JIT Compiler for Android's Dalvik VM



viernes, 16 de diciembre de 2011

Android training, Mejora tu desarrollo Android

Android es una plataforma bastate facil de aprender, la gran cantidad de informacion y de ejemplos en internet es impresionante, existen muchos sitios para desarrollo android como ya he comentado asi como las 5 herramientas que no te puedes perder al usar android.

Ahora google nos da una mano extra con Android training, en sí estos recursos ya existian lo que pasa es que ahora estan mas ordenados, tiene buenos tips los cuales seguramente tomare el tiempo este fin de semana para ver quizas me robo unas 4 horas del sabado para refrescar y para aprender hay muchas cosas que no he visto y con los ejemplos es bastante sencillo abordarlo.

Así que ya sabes si quieres tener mejor conocimiento en Android hechale una ojeada a Android Training y comparte lo que aprendiste.


lunes, 5 de diciembre de 2011

RE: Aclaraciones [Feria Talento Tecnologico]

Agradezco la respuesta brindada acerca de mi percepción de la feria tecnologica, a como escribí es una opinión personal y aunque ciertos aspectos son compartidos con algunos colegas no dejan de ser apreciaciones explicitamente subjetivas así como pueden haber post felicitandolos solo recalque ciertos puntos que me disgustaron..

PSI, “mano de obra barata” es utilizado fuera de contexto y pareciera negativo No parece negativo, es negativo.

Aqui la respuesta integra y oficial:


Estimado José,
Primero que todo, deseamos darte las gracias por tomarte el tiempo para escribir y dar a conocer tus impresiones sobre la Feria de Talento Tecnológico, y en reconocimiento de este esfuerzo, quisiéramos brindarte algunas aclaraciones de nuestra parte.


Para comenzar, es una lástima que consideres que tu participación en esta feria fue una “pérdida de tiempo”, aun cuando sólo estuviste presente 10 minutos. Esta feria surge a raíz de la necesidad que han expresado un número de empresas internacionales de ubicar personal nicaragüense con conocimientos de computación y las tecnologías de la información, por lo que el objetivo de la feria es ser un enlace directo entre jóvenes con estas capacidades y las empresas que los requieren, facilitando el proceso de reclutamiento.


Esto quiere decir que todos aquellos que participaron tienen ahora una posición ventajosa de optar a posiciones en empresas internacionales e ingresar al mercado laboral formal en empresas responsables, con prácticas de clase mundial y con salarios superiores al promedio que se puede encontrar en el país. Y aunque la información será muy útil para tener una idea general de la cantidad de personas con conocimientos de computación en Nicaragua, el objetivo de la feria no era simplemente hacer un estudio. 
En el corto plazo, de esta iniciativa surgirán oportunidades de empleo reales para los jóvenes que participaron y reunieron las calificaciones requeridas. De hecho, a algunas de las personas que asistieron ya les pidió su CV y éste fue enviado directamente a empresas que sabemos requiere de candidatos con su perfil específico.


Respecto a las pruebas que se realizaron, es comprensible tu disgusto, sin embargo, quisiéramos aclarar que la cantidad de pruebas que se podrían haber realizado es inmensa dado lo vasto que es el tema. Las pruebas se enfocaron en las tecnologías de .NET y Oracle porque es en éstas tecnologías en las cuales las empresas internacionales con las que estamos trabajando han manifestado un interés inmediato, sin menoscabo de otras tecnologías como PHP, Java y Python. En la medida que se compruebe que hay recurso humano nicaragüense calificado en programación, más empresas estarán interesadas en venir a Nicaragua e irán requiriendo de personas con conocimientos de otros lenguajes informáticos, por lo que consideramos esta iniciativa como un excelente punto de arranque para empezar a crear oportunidades de empleo en esta rama profesional.


El hecho que no hayas visto a empresas publicitando u ofreciendo puestos en TI en la feria no significa no hayan posiciones vacantes para gente con un perfil de TI. Aunque las empresas no hayan estado presentes físicamente, nosotros, dentro de nuestro rol de facilitadores, estuvimos representando a dichas empresas y atendiendo sus necesidades de reclutamiento. Una vez que la información de las personas que participaron en la feria se procese, ésta será facilitada a las empresas internacionales, quienes, en base a calificaciones, estarían contactando a los candidatos.


Desde un inicio, y para evitar crear falsas expectativas, se manejó una comunicación clara y no engañosa que decía que la feria era “una excelente oportunidad para circular tus datos entre empresas internacionales en busca de talento nicaragüense con conocimientos de computación y las tecnologías de la información”. Y lo es. Algunos de los jóvenes que asistieron pasaron una hora o más en la feria haciendo las pruebas, esto demuestra no sólo el empeño que dedicaron a su participación, sino también el entusiasmo de optar a oportunidades de trabajo.


Existe una gran necesidad de generar nuevas fuentes de empleo en el país, especialmente para cubrir la demanda laboral de los miles de jóvenes que salen de las universidades cada año. En este sentido, las empresas internacionales representan una excelente oportunidad para muchos jóvenes deseosos de iniciar sus carreras profesionales. Usualmente, el término “mano de obra barata” es utilizado fuera de contexto y pareciera negativo, pero creemos necesario explicar lo siguiente. Es verdad que muchas empresas internacionales buscan países como Nicaragua donde los salarios no sean tan altos como los de Estados Unidos o Europa para así poder tener operaciones más rentables. Sin embargo, esto no es algo negativo. Aun cuando en Nicaragua los salarios son más bajos que en otros países, los salarios que ofrecen empresas internacionales siguen siendo altamente competitivos al compararse con el resto de las opciones que los jóvenes pueden encontrar en el mercado laboral local. Pero más que el salario, se busca también que este tipo de empresas que vienen al país no sólo cumplan con la legislación laboral nacional, sino que además sean responsables antes sus trabajadores, el medio ambiente y las comunidades donde se establecen.


Actualmente, existen miles de jóvenes que trabajan en este tipo de empresas y que de otra manera podrían estar en el sector informal o en el peor de los casos, desempleados.
Si durante los 10 minutos que estuviste en la feria llenaste el cuestionario (aunque no hayas hecho las pruebas), entonces aumentaste tus posibilidades de ser reclutado por empresas internacionales en busca de personas con conocimientos y habilidades como los que tú tienes, para nosotros eso es tiempo bien invertido. Más aún, cómo hubo algunas personas que no lograron terminar sus pruebas por falta de tiempo, los estaremos contactando para programar otro encuentro y que puedan terminar sus pruebas por completo, y te invitamos a ser parte de esta segunda fase, si es de tu interés. Si conoces otras personas que les gustaría participar en esta segunda fase, también estamos abiertos a recibirlos.
¡Aprovechamos para agradecer a todos los que asistieron a la feria con entusiasmo y optimismo!


Saludos,
-Equipo Feria de Talento Tecnológico
talento.tecnologico@yahoo.com

domingo, 4 de diciembre de 2011

Sitio FCYS-UNI #WTF

(Diciembre lo voy a dedicar a trolling aparentemente) Sabia que la FCYS estaba pasando por un mal rato en cuanto a las autoridades en general, pero en serio si  van a sacar esto como sitio oficial, les recomiendo no saquen nada; Ahora para aclarar yo no soy ninguna autoridad en diseño pero no hace falta ser un experto UX para hacer algunas percepciones.



(Dios mio por donde comienzo).

Colores e Imagenes

Donde encontraron los colores por dios que bonito gradiente tiene el fondo, de hecho combina con el tono dorado de las letras y con el italica que le colocaron, me fascino simplemente "la creme de la creme".

Es agradable ver la siguiente combinacion de colores


Woao creo que le da ese toque especial que te quita el hambre, no se si es el verde color vomito, o el azul retro de 1998 o quizas lo maravilloso que "Maestria en Informatica en.." se mueva :O.

Los enlaces


HMTL? en serio HTML?, el hecho que lo de HTML5 este de moda no significa que las cosas tengan que ser .html, no es algo retro sino pasate por http://mejorando.la quizas te ayude un poco. Aqui algunos enlaces de ejemplo:

http://fcys.uni.edu.ni/index.html
http://fcys.uni.edu.ni/feria-2011.html
http://fcys.uni.edu.ni/maestria.html

Contactanos y las noticias no enlazan a nada.


El descaro


Promoviendo una maestria informatica con este sitio, ¿en serio? Ud como profesional iria a una maestria impartido por esta clase de institución. Y aun mas toda la info esta en un solo sitio.


Pero bueno...

A nadie le gusta un criticón pero NO LO SIENTO, la facultad de ciencias y sistemas tiene que buscar formas reales de lidiar con su problematica y dejar de dar verguenza; simplemente me parece algo fuera de lugar este sitio de todos este es el peor que he visto en mucho tiempo.

Si estas deacuerdo compartelo, ó comenta, y si no estas deacuerdo tambien dime ¿por que?

Nota: Lo mas dinamico que tiene el sitio es la parte de facebook.

sábado, 3 de diciembre de 2011

Feria Tecnologica 2011, Percepcion

Sin animo de ser demasiado troll con esto, la siguiente es una percepcion personal acerca de la famosa Feria Tecnologica que estuvo durante el jueves 1 y Viernes 2 de Diciembre en las instalaciones del Recinto Universitario Simon Bolivar e Invercasa segundo piso, en lo personal considero que fue una perdida de tiempo esperaba mas acerca del evento conferencias o empresas activamente participando en dicho vento sin embargo lo que me encontre es completamente diferente a mis expectativas y probablemente a las expectativas de muchos otros desarrolladores.



He escuchado la opiniones de muchos buenos desarrolladores que conozco y en realidad concordamos en lo siguiente, el obejtivo probable de la feria no es promover el talento nicaraguense ni las nuevas tecnologias, sino llevar a cabo un estudio previo de el nivel tecnologico que tiene Nicaragua y sus profesionales en tecnologias como .NET y Oracle. Muchos han tomado esto como un insulto particularmente por que es una medida muy especifica de medir el conocimineto de un desarrollador en torno a la tecnologias; algo que me parecio particularmente interesante es que Java estaba fuera de la feria en todo sentido (bueno y todo el resto de tecno que no tuvieran similitud con Micro$oft), simplemente me parece absurdo intentar hacer pruebas acerca de conocimientos de tecnologias cuando simplemente pones a disposicion una sola plataforma ....por favor.... ¬¬, muchas personas que han dedicado su vida como desarrollador han trabajado en PHP, Java y Python sin embargo esta suso dicha feria estaba orientada (al menos las pruebas) a desarrolladores .NET.

¿Que hay de las Empresas?


Se supone que empresas estarian apoyando a la Feria Tecnologica, yo fui el segundo dia y no pude tener la oportunidad de ver a Ninguna empresa publicitando u ofreciendo puestos en TI  en dicha feria. Parecia mas que alguna empresa de reclutamiento estaba haciendo algun estudio para saber que tan fuerte o viable era el desarrollo de tecnologias Microsoft en Nicaragua, y el promocionar esta feria como algo mas me parecio mas un engaño publicitario que algo serio.

Concluyo diciendo que me gustaria que me regresaran los 10 minutos que me tome estando en la feria y llenando un absurdo cuestionario que me pedia que evaluara mi nivel de conocimiento en tecnologias que a criterio de "¿no se quien?'" parecian las mas apropiadas. Realmente fallaron y si lo que buscan es intentar colocar fuentes de trabajo de mano de obra barata para empresas extranjeras buena suerte pero no pretendo ser parte de tal objetivo.

Gracias Totales,

"Feria" de talento "Tecnologico" 2011, RUSB

Se despide necronet y hasta la proxima