Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - cpu2

#601
Por lo que he entendido todo esto lo estas haciendo por el wifi?

Cita de: xkiz ™ en 24 Junio 2013, 13:06 PMpodra ser algo mal configurado en Samba o la red en si, o ....?

Para descartar eso me gustaría saber los controladores que esta utilizando el chip de la tarjeta.

Busca el chip de la tarjeta wifi y dime el módulo que esta utilizando.

lsmod

Seguramente seran esos mac80211.

Un saludo.
#602
ASM / Re: ¿ Que pinta aqui el registro si ?
24 Junio 2013, 17:34 PM
Cita de: The C Coder en 24 Junio 2013, 15:43 PM
No se trata de nada muy avanzado , de hecho llevo 3 semanas aprendiendo ensamblador y ya habia visto bootloaders antes.

Por la pregunta y la formulación me dio esa sensación.

Cita de: The C Coder en 24 Junio 2013, 15:43 PMLo que pasa es que el que escribio el codigo lo hizo de una manera poco habitual , muchos otros bootloaders 'hola mundo' usaban otro metodo que no implica lodsb.

La instrucción lods es muy eficiente, para conseguir códigos más potentes tienes que hacer cosas poco habituales.

Cita de: The C Coder en 24 Junio 2013, 15:43 PMLo que quiero decir con esto es que hay muchas maneras de hacer las cosas , y cada programador tiene su estilo propio , que puede que a otros no les parezca claro y vean otro modo mas simple de hacerlo.

Si, en este caso las dos son iguales de buenas, un ejemplo si yo estoy programando una shellcode prefiero el or, así no dejo bytes núlos, todo depende de lo que estes haciendo y tú estilo claro.

Un saludo.
#603
ASM / Re: ¿ Que pinta aqui el registro si ?
24 Junio 2013, 15:06 PM
SI es el primer argumento de la función DisplayMessage. No mueve una cadena si no la dirección que apunta a esa cadena.

Lo que hace ese lodsb es copiar el primer byte del contenido de la dirección de si a al.
Y luego depende de como este la bandera DF se incrementa o decrementa la dirección de si, que en tú caso es incrementar.

Se imprime dicho carácter si no es NULL con la interrupción 0x10, si es NULL se salta a .DONE y si no pues sigue el ciclo de lodsb.

Si no entiendes algo más del código ya sabes, pero no sé porque empiezas con algo tan avanzado se nota que no entiendas nada.

Un saludo.
#604
ASM / Re: ¿ Por qué DB ?
22 Junio 2013, 22:23 PM
Cita de: The_C_Coder en 22 Junio 2013, 22:05 PM
es decir que si me ha quedado claro es el propio programa ensamblador el que sustituye la definicion de un string por la de todos sus caracteres.

Si, las definiciones solo valen para "ayudar" a entenderlo mejor, pero como ya te dije es lo mismo.

Cita de: The_C_Coder en 22 Junio 2013, 22:05 PM
Tambien me he dado cuenta de que te lo incrusta en el archivo

Exacto, todo los bytes estan en la section data, dale un disassembler a esa section para entenderlo todo. Contra más datos mayor sera el peso del ejecutable.

Un saludo.
#605
ASM / Re: ¿ Por qué DB ?
22 Junio 2013, 12:00 PM
Declara byte a byte lo que esta dentro de las comillas, y sin olvidarte del cero, que esta separado con una coma.

Eso se puede hacer así:

Código (asm) [Seleccionar]
.byte 0x48,0x6f,0x6c,0x61,0x20,0x6d,0x75,0x6e,0x64,0x6f,0x00  ; .long equivale a DB

Esto se podría también hacer de esta forma:

Código (asm) [Seleccionar]
a: .long 0x616c6f48  ; DD
b: .word 0x6d20,0x6e75  ; DW
c: .byte 0x64,0x6f,0x00  ; DB


Puedes hacerlo de muchas formas, igualmente los bytes serán cargados en memoria.

Un saludo.
#606
ASM / Re: Puertos I/O
20 Junio 2013, 19:28 PM
Exacto eso era Dani, he comparado los keycode y son los correctos.

Esta claro que el teclado tiene que ser uno de los dispositivos más simples que hay, sguiré investigando a ver si soy capaz de controlar dispositivos más complejos como puede ser el ethernet, pero eso ya es otra cuestión y tiene que ir en otro hilo.

Doy el tema por resuelto, gracias a todos por vuestro tiempo.

Un saludo.

P.D: Dani que paso con FreeBSD?
#607
ASM / Re: Puertos I/O
20 Junio 2013, 13:11 PM
Cita de: The_C_Coder en 20 Junio 2013, 11:35 AM
El puerto paralelo no suele ser 278 decimal , sino 378 hexadecimal o 278 hexadecimal.

Eso pensé yo ayer despúes de un rato de a ver escrito el anterior mensaje, he estado mirando la tabla extendida ascii y los valores que muestra ese printf no aparecen.

1 = una cara sonriente, 2 = corazón, 3 = diamante, 4 = trébol, 5 = pica.

Conclusión: Pokerstarts  ::).

No ahora enserio, que tabla ascii utiliza y donde le puedo echar un ojo?

Cita de: The_C_Coder en 20 Junio 2013, 11:35 AM
Yo en mi caso con lo nuevo que soy con el asm creo un binario puro sin llamadas al sistema y lo emulo con qemu

Curioso, que traduces el opcode a binario no?

Código (asm) [Seleccionar]
incl %eax   ; 0xffc0 1111111111000000
syscall     ; 0x0f05 0000111100000101


Cita de: The_C_Coder en 20 Junio 2013, 11:35 AM
creo que en asm existe una instruccion llamada out , para el tema de los puertos , echale un vistazo ;)

Si, pero de momento no quiero enviar nada a los puertos.

Un saludo.
#608
ASM / Re: Puertos I/O
20 Junio 2013, 00:52 AM
Ya he realizado algunas pruebas, no fue en el núcleo si no en el boot del sistema.

Modifiqué el código del boot de esta forma.

Código (asm) [Seleccionar]
asm ( "xorl %eax, %eax\n\t"
      "in $0x60, %eax\n\t"
      "movl %eax, 0x4b659" );


Luego los imprimo en pantalla con un printf, pero el carácter no es el correcto, si no tecleo nada es una z, si es una b = 0, c = . y  la h = #, no lo entiendo de el todo, pero el fragmento de código funciona bien pero no son los carácteres indicados.

Y sobre el puerto del sensor obtengo lo siguiente 0xe0000000, que no es el valor correcto. Bueno que opinan.

Un saludo.

P.D: Siento el doble post.
#609
.:UND3R:.  te dejo dos en C.

char *ls[] = { "/bin/ls", "-l", NULL };

execv (ls[0], ls);


Tú caso sería este.


char *vuln[] = { "vuln.exe", relleno, NULL };

execv (vuln[0], vuln);


Pero es más eficiente el de ASM.

Cita de: flony en 18 Junio 2013, 03:54 AM
hola cp2....pasarias un buen libro o tutorial de asm :)

Cualquier libro ya esta bien, y luego ir tirando con los manuales de instrucciones.

Un saludo.
#610
Te dejo un ejemplo en ASM, creo que es lo que pretendes hacer.

Código (asm) [Seleccionar]
pushq %rax
pushw $0x6c2d
pushq %rsp
popq %rcx
movq $0x736c2f6e69622f, %rbx
pushq %rbx
pushq %rsp
popq %rdi
pushq %rax     ; argv[2] = NULL
pushq %rcx     ; argv[1] = "-l" su direccion, o en tu caso relleno.
pushq %rdi      ; argv[0] = "/bin/ls"
pushq %rsp
popq %rsi
movb $0x3b, %al
syscall


Cualquier duda ya sabes.

Un saludo.