elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Temas
Páginas: 1 [2] 3 4
11  Programación / Programación General / Abdlab Haxbox MV 0.1 público para su descarga en: 6 Agosto 2012, 18:01 pm
Bueno, creo que es hora de compartir la primera versión de la máquina virtual haxbox. Llevo tiempo trabajando en esto, espero que les sea útil aunque sólo sea para pequeñas cosas.

Haxbox es un intérprete de máquina virtual abstracta, una herramienta de programación con un lenguaje especial, que toma parte de los ensambladores mnemónicos y parte de los lenguajes de nivel alto. Tiene muchas peculiaridades que lo distinguen de otros sistemas de máquina virtual existentes, como por ejemplo java, tampoco emula la arquitectura x86 ni ninguna otra, se trata de una arquitectura propia diseñada especialmente para facilitar la flexibilidad, abstracción y legibilidad al máximo, así como optimizar la capacidad de compartir y editar los códigos. Funciona sobre windows con .net framework 4.0 o superior (solo ha sido probado en W7).

Un procesador común tiene un tipo de datos básico en el que funciona, el byte, es decir tanto las instrucciones como los parámetros de éstas son transformadas a largas cadenas de bytes a la hora de trabajar con los datos. Haxbox utiliza el tipo de cadena de texto como unidad mínima, éstas cadenas pueden ser transformadas a números o a interrupciones boleanas en tiempo de ejecución. Ésto permite la lectura del código en cualquier momento, así como la edición de la memoria. Haxbox no es multihilo, ésto no es un punto a favor, pero facilita la comprensión de los códigos así como su diseño.

Haxbox está escrito en lenguaje .net, se podría entender como un interface que permite manejar una serie de objetos .net de un modo alternativo. Así pues un script en lenguaje hax lee las instrucciones almacenadas en su memoria y las transforma en interacciones con varios objetos separados en módulos. Un objeto es la consola de texto plano, otro para escribir o leer archivos, otra reproduce el sonido indicado, otra es una superficie donde reproducir gráficos gdi, otra ejecuta comandos de la consola de windows (cmd.exe) y devuelve opcionalmente la salida, otra hace peticiones tcp y otra hace peticiones web usando el componente iexplorer y captura la respuesta. Diseñar un programa manejando tantos métodos y objetos usando .net es tedioso, pero con haxbox en unas pocas líneas de texto plano podremos conseguir un resultado decente.

El lenguaje hax no tiene demasiadas instrucciones y su sintaxis es sencilla está basada en ensambladores mnemónicos. A pesar de asemejarse a un código ensamblador se trata de un lenguaje muy diferente con instrucciones que disparan procesos muy complejos y partes muy abstractas. El parecido proviene del hecho de que las instrucciones actuan diréctamente sobre la máquina, en este caso virtual, que dispone de registros y memorias al igual que un cpu físico. Eso si, haxbox mantiene un nivel de abstracción mucho más alto en el propio diseño de dichos componentes, haciendo que no debamos manejar complejas cadenas de bytes. Haxbox usa tipos de datos, pero éstos sólamente afectan en el momento de realizar operaciones y comparaciones aritméticas, el resto del tiempo se considera un objeto variable y su tipo sólo dependerá de dónde lo usemos. Las memorias están compuestas de registros que contienen cada uno una cadena de texto de longitud variable, tanto las memorias de programa como las de acceso aleatorio.

Haxbox dispone de una arquitectura interna y otra externa. Llamamos interna a todo lo que incluye a los registros, la memoria del programa, las de acceso aleatorio, el contador, la caché etc y externa a los dispositivos virtuales de entrada-salida, la consola de texto plano, la superficie gráfica, el sonido, el sistema de archivos, el protocolo tcp etc... Para comunicarnos con toda esta estructura usamos sólamente una instrucción, "busout" que tiene 3 parámetros, el primero indica a qué componente enviar los datos, el segundo y el tercero son los datos que enviaremos. Cada dispositivo dispone de un protocolo propio, en ocasiones muy simple, como la consola de texto plano (que tan sólo escribe todo lo que llega en el primer dato) y otras algo más complejo (como la superficie gráfica). El resto de instrucciones interactuan con la arquitectura interna de la máquina y se usarán tanto para efectuar operaciones como para controlar el flujo del programa.

para más información sobre la máquina y el lenguaje:
http://abdlab.blogspot.com.es/2012/03/haxbox-es-un-interprete-de-maquina.html

abdlab haxbox para windows se puede descargar desde aquí:
https://dl.dropbox.com/u/24363459/haxbox%20mv%20rls%200.1.rar
12  Foros Generales / Foro Libre / sobre la incompatibilidad de las bicicletas con los policías en: 13 Junio 2012, 15:56 pm
No doy crédito... cierto cuerpo de policía me ha requisado la bicicleta (que es prestada) por ser demasiado llamativa, como lo lees. Estaba personalizada, un estilo algo steampunk con su sillin de cuero con muelles y cuadro de metal lijado. Andar con ella por la calle ha sido suficiente para que una pareja de policías me den el alto y me requisen "preventivamente" la bicicleta. Me han dicho que me han parado por 3 cosas, 1 porque la bicicleta estába lijada (pero el numero de bastidor está perfectamente legible), 2 porque el freno de disco se ve que es muy caro y 3, porque llevaba un pañuelo palestino y la capucha puesta y según su criterio no hacía frío. ¿qué debo hacer? me han dicho que han dado la orden desde arriba de requisar cualquier bicicleta de la que el que la lleve no sepa explicar su origen. Me han asegurado que no ha habido ninguna denuncia que encaje con la descripción de la bicicleta o sus piezas, pero que lo hacen así para prevenir. Aseguraban que yo debería llevar todas las facturas (es personalizada, cada pieza se compró por separado) para poder demostrar su procedencia, y que a partir de ahora no debería aceptar que me dejen una bicicleta sin conocer la procedencia de TODAS LAS PIEZAS. Me han recogido el número de teléfono mio y del amigo, yo se lo he dado amablemente puesto que pensaba que con eso me dejarían continuar, pero se ve que no. Debo de ir a recogerla con el dueño de la bicicleta, me han dicho que vaya hoy pero que igual tarda unos días. Algo me dice que si hubiera ido vestido con corbatita y una bufanda de lana no me hubieran dado el alto, a eso se le llama discriminación. Por no hablar de que según parece no tienes derecho a usar una bicicleta personalizada, o mejor dicho, puedes usarla, pero te la requisaran si no llevas encima las facturas, ya no basta el número de bastidor.
 
¿estoy yo obligado a conocer de donde procede la bicicleta aun cuando no es mía?
es más ¿está mi amigo obligado a revelarme el origen de la bicicleta sólo para prestarmela? supongo que si quiere se lo puede reservar.
Pienso que comprobar el origen de la bicicleta es sólamente SU trabajo y no deberían perjudicarme por su incapacidad de hacerlo,
que la detención ha sido totalmente arbitraria y discriminativa
y aunque no ha sido el caso podría haberme causado perjuicios.

13  Programación / .NET (C#, VB.NET, ASP) / Servidor tcp minimalista (vb.net) en: 20 Marzo 2012, 10:15 am
Está construido a partir de varios ejemplos que se pueden encontrar en msdn pero que por sí solos eran incompletos. No mantiene una conexión abierta, tan sólo conecta, envía los datos indicados y captura la respuesta recibida, se debería controlar la posibilidad de que no reciba datos, pero eso se lo dejo ya a cada uno.

Código:
' Minimal Tcp client for vb.net by abderramah (based in several msdn example codes)
'
' // este cliente no mantiene una conexión abierta, tan sólo conecta a una dirección, envía los datos indicados
' // y espera a recibir respuesta. En caso de no recibirla es posible que se quede en estado de espera, pero
' // con unas pocas líneas se puede solucionar.
'
' // petición http de ejemplo:
' // getsocket.socketsendreceive(192.168.2.5, 80, "GET / HTTP/1.1" + ControlChars.Cr + ControlChars.Lf )

Public Class GetSocket
Public Event errordebug(ByVal datae As String)

Public Function ConnectSocket(ByVal server As String, ByVal port As Integer) As Socket
Dim s As Socket = Nothing
Dim hostEntry As New IPHostEntry

' recibir información del host
Try
Dim ipe As IPAddress = New IPAddress(IPAddress.Parse(server).GetAddressBytes)
hostEntry.AddressList = {ipe}
Catch ex As Exception
Try
hostEntry = Dns.GetHostEntry(server)
Catch exa As Exception
hostEntry.AddressList = {IPAddress.Parse(server)}
End Try
End Try

' recorrer todas las direcciones del host (ipv4 e ipv6)
Dim address As IPAddress

For Each address In hostEntry.AddressList
Dim endPoint As New IPEndPoint(address, port)
Dim tempSocket As New Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp)

Try
tempSocket.Connect(endPoint)
Catch ex As Exception
Return s
Exit Function
End Try

If tempSocket.Connected Then
s = tempSocket
Exit For
End If
Next address

Return s
End Function

' conectar, enviar petición y recibir la respuesta
Public Function SocketSendReceive(ByVal server As String, ByVal port As Integer, ByVal datae As String) As String
Dim ascii As Encoding = Encoding.ASCII
'httprequest= "GET / HTTP/1.1" + ControlChars.Cr + ControlChars.Lf + "Host: " + server + ControlChars.Cr + ControlChars.Lf + "Connection: Close" + ControlChars.Cr + ControlChars.Lf + ControlChars.Cr + ControlChars.Lf
Dim request As String = datae
Dim bytesSent As [Byte]() = ascii.GetBytes(request)
Dim bytesReceived(128000) As [Byte]

' crear socket
Dim s As Socket = ConnectSocket(server, port)

If s Is Nothing Then
Return "Tcp connection failed"
Exit Function
End If
' enviar la petición tcp
s.Send(bytesSent, bytesSent.Length, 0)

Dim bytes As Int32
' leer los datos de entrada
Dim page As [String] = ""

' loop recibiendo
Do
bytes = s.Receive(bytesReceived, bytesReceived.Length, 0)
page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes)
Loop While bytes > 0
Return page
End Function
End Class
14  Foros Generales / Foro Libre / Mensaje de navidad de S.M. el rey (por fin sincero) en: 3 Diciembre 2011, 13:10 pm
Por fin este tío dice la verdad en su discurso:

15  Foros Generales / Foro Libre / S.O.P.A., el medio de censura de internet estadounidense en: 21 Noviembre 2011, 17:20 pm


fuente: http://derechoaleer.org/2011/11/infografia-otra-vez-sopa.html
16  Sistemas Operativos / GNU/Linux / mi tableta corre linux, soy feliz... en: 26 Septiembre 2011, 19:41 pm
Pues sí, es una archos 101 internet tablet con pantalla de 10.1 pulgadas y resolución de 1024x600, dispone de un procesador arm7 cortex y una aceleradora gráfica compatible con OpenGl, y lo mejor de todo es que corre linux. Sí, me he cargado la garantía (de la que me quedaba aún como un año y 10 meses) pero lo he hecho agusto, total no voy a estar 2 años utilizando el 30 % de su potencial con android cuando puedo tener una instalación de debian (y sin renunciar a android, que para los emuladores si que me interesa).

Hala, debería hacer un howto, pero ahora me da pereza, ya veremos.

17  Foros Generales / Foro Libre / Un temilla de rap en: 25 Septiembre 2011, 12:20 pm

Hace tiempo que lo grabé, a ver os parece.
18  Programación / Programación General / Problema con vectores 3d en: 7 Marzo 2011, 20:52 pm
Bueno, no es exáctamente un problema de programación, es en realidad de matemática. No era nada fácil explicar el problema, por eso he hecho un esquema de mi duda.


Conozco el vector A y el vector B, así como el radio de la circunferencia, el punto c está es la intersección entre la línea A-B-infinito y la circunferencia. Lo más adecuado sería hayar la rotación (en cuaternión) necesaria en el punto B para que éste quede mirando hasta el punto C, pero me bastaría con hayar el punto C (me parece que es más simple). La verdad es que no se por donde empezar, tampoco pido que me resuelvan el problema, me bastaría con algo de información sobre las fórmulas que debo usar para hayarlo.
19  Comunicaciones / Redes / [Warriors of the net] video divulgación sobre redes en: 26 Enero 2011, 08:53 am
He estado a punto de ponerlo en el foro libre, pero al fin y al cabo, es didáctico y trata sobre redes. Es muy muy básico y algo abstracto, pero está muy trabajado y es muy original.




Citar
Vídeo donde se explica de forma fácil y amena el funcionamiento de una red.
20  Foros Generales / Foro Libre / ¿¿De donde saca la gente estas ideas?? en: 24 Enero 2011, 03:29 am
La verdad, me parece muy increíble que alguien se vea en posición de afirmar cosas como que los prehumanos de hace 11 millones de años ponían huevos, o que  hace 5 millones de años los prehumanos (lemurianos) podían salir de su cuerpo a voluntad. Quiero decir... ¿en que se basan para sacar estas ideas? muestras científicas observables ninguna, ¿las sacan de algún libro antiguo? ¿leyendas? ¿alguna secta moderna? ¿o es una mezcla de muchas cosas malinterpretadas? Y lo que más me desconcierta ¿de dónde sacan tanta seguridad en lo que dicen? ¿no se dan cuenta que en los estratos de cuando los dinosaurios no se han encontrado lemurianos ni hyperboreos (sean lo que sean estos últimos)?





Páginas: 1 [2] 3 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines