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 - proxy_lainux

#101
ASM / Re:Linux Assembly Expert
Agosto 13, 2013, 12:58:51 AM
los videos son buenos, incluso se escuchan disparos, voces de personas, aunque parecen fantasmas, porque el que hace los tutoriales se queda callado cuando escucha ruidos... jeje

estos videos tienen de todo  ;D
#102
ASM / Re:Linux Assembly Expert
Agosto 06, 2013, 05:14:04 PM
si hay seeds, lo acabo de descargar y maximo me tarde una hora y media en descargarlo completo de la misma direccion que escribiste
#103
tengo una pregunta sobre torrent e iptables

hasta el momento no tuve problemas para descargar un torrent, pero para lograrlo tuve que hacer esto

iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

me imagino que haciendo esto es como si desactivara iptables, ya que doy permiso para todo, entonces trate de hacer lo siguiente para no tener que aceptar todo y simplemente aceptar la entrada y salida de torrent

lo intente hacer de esta manera buscando comandos en google sobre iptables y torrent

iptables -A INPUT -p tcp --dport 6981:6989 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 6981:6989 -j ACCEPT

pero el torrent no empezo a descargar nada, despues hice esto

iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -A INPUT -p tcp --dport 6981:6989 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 6981:6989 -j ACCEPT

pero tampoco, despues busque mas comandos en google y encontre esto y tambien lo intente, pero tampoco funciono

iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -A INPUT -p tcp --dport 6981:6989 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 6981:6989 -j ACCEPT
iptables -A FORWARD -i wlan0 -j ACCEPT

alguien sabe de que manera dejo totalmente libre el puerto o los puertos tanto de entrada y salida y forward en iptables para usar torrent?
#104
bueno ya lo resolvi, era porque usaba buff como no inicializado en bss, lo puse en data y ya funciona, me manda el mensaje "hola mundo", pero obviamente finaliza y se cierran los dos

solo una duda, a ver que recomendacion me pueden dar, quiero hacer un while en recv y send para mandar y recibir datos y empezar a hacer cosas como el clasico abrir el cd-rom, apagar pantalla, crear archivos, etc, siento que con todo eso, lograre aprender a usar mejor ensamblador, ya que con mis tres semanas con esto hay muchas cosas que aun se me complica entender, y haciendo esto me a ayudado a practicar y aprender mas sobre asm

por el momento uso cmp y je que es como un if, pero como podria usar while para mantener activo recv y send, recuerdo que en C tenia que mandar algo con send() del cliente y regresar algo en send() con el servidor porque si intentaba mandar varias cosas con recv no se podia, la unica manera era, mandar con cliente, recibir con servidor - mandar servidor - recibir cliente

por ejemplo

cliente -> send = "abrir cd" - servidor -> recv  = "abrir cd"
sevidor -> send = "hecho" - cliente -> recv = "hecho"

de esa manera podia mandar varias cosas sin que se bloqueara send o recv, no se si tenga que hacer lo mismo en ensamblador, creo le llaman bloqueantes o semaforo en sockets

pero antes me gustaria saber como implementar while, porque cuando ejecuto en consola el server y despues en otra consola el cliente, se conecta y aparece en el server el mensaje de hola mundo

y hay un problema, cuando hago click en el server, se mantiene esperando la conexion, pero despues hago click sobre el cliente y aparece pero se cierra muy rapido, y solo me aparece en el server que se conecta pero no se manda ningun mensaje y el server se queda esperando algun dato, parece que solo funciona cuando es ejecutado en consola

entonces me imagino que tendre que hacer un loop para que se mande el mensaje y no se cierre el cliente, algo como en C con while

me podrian ayudar diciendome como lo podria hacer?

asi es como tengo recv()

Código: asm

loop_recv:
push 0
push 50
push buff
push dword[rsocket]
call [recaddr]  <-- recv()
cmp eax, -1
je loop_recv


y send lo tengo asi

Código: asm

push 0
push srelen
push sre
push dword[soadd]
call [senaddr]  <-- send()


de que forma podria implementar un while para mantener activo send y recv?

y que podria usar para que al ejecutar el server haciendo click no se cierre tan rapido, almenos que le de tiempo de mandar el mensaje antes de cerrarse?, aunque me imagino que con while ese problema se solucionaria

salu2
salu2
#105
tengo un problema con recv, no logro recibir la cadena de texto

estuve buscando como usar recv en asm, encontre en un blog como lo usaban en fasm, note que usaban dos veces la estructura sockaddr_in, una para bind guardaban eax y luego usaban la segunda estructura para usar accept con la longitud guaradada en bind

Código: asm

section .data

sockAddr    dw    AF_INET                     ; sockAddr Structure .. check API reference..
    sockAddrp    dw    ?
    sockAddrip    dd    0
    sockAddrZ    rb    8
    sockAddrSize    =    $-sockAddr                    ; Size of struct (16 bytes)

    remoAddr    dw    ?                        ; Another sockAddr Structure
    remoAddrp    dw    ?
    remoAddrip    dd    ?
    remoAddrZ    rb    8
    remoAddrSize    dd    ?


    invoke    bind, [hSocket], sockAddr, sockAddrSize 

    .accept_loop:
        mov    [remoAddrSize], sockAddrSize                ; Store our sockAddr structures size
        invoke    accept, [hSocket], remoAddr, remoAddrSize        ; Accept any incoming connections
        cmp    eax, -1                         ; Did we get one?
        je    .accept_loop                        ; Nah, keep trying
        mov    [hRemoteSocket], eax                    ; Yes we did, so store the new sockets handle
    .recv_loop:
        xor    eax, eax                        ; Clear eax (mov eax, 0)
        mov    dword [recvBuf], eax                    ; Zero recvBuf (otherwise it keeps thinking we have data)
        invoke    recv, [hRemoteSocket], recvBuf, 1024, 0         ; Try and recieve any data being sent
        cmp    eax, 0                            ; Did we get any?
        je    .end_recv_loop         


intente hacer lo mismo, pero no recibo nada, no se si estoy haciendo bien el uso de accept y bind, alguien sabe porque podria estar fallando?

tengo entendido que INADDR_ANY es 0x00000000, asi que en bind pongo 0x00000000 + puerto + AF_INET y en accept pongo 0x00 en todo para que acepte cualquier conexion, y recv uso buff como buff resb 50 en .bss

alguien podria indicarme si estoy haciendo algo mal y como podria usar recv?

Código: asm
push 0x00000000
push 0xB9220002
mov esi,esp
push byte 16
push esi
push dword[soadd]
call [binaddr]  <-- bind()

push lis
push dword [wsaddr]
call _GetProcAddress@8
mov [lisaddr], eax

push 2
push dword[soadd]
call [lisaddr] <-- listen()

push accp
push dword [wsaddr]
call _GetProcAddress@8
mov [accaddr], eax

ac_acp:
push 0x00000000
push 0x00000000
mov esi, esp
push byte 16
push dword[soadd]
call [accaddr] <--- accept()
cmp eax, -1
je ac_acp
mov [rsocket], eax <-- guardo en otro registro, no se si esto este bien pero asi lo vi en el codigo de arriba

push rec
push dword [wsaddr]
call _GetProcAddress@8
mov [recaddr], eax

loop_recv:
push 0
push 1024
push buff
push dword[rsocket]
call [recaddr]  <-- recv()
cmp eax, -1
je loop_recv

push eax
call _printf
#106
ASM / Socket con nasm... al fin lo logre
Julio 20, 2013, 05:11:10 PM
pues lo logre, aun no se como usar estructuras en nasm pero logre hacerlo funcionar

Código: asm
[BITS 32]

section .data

wsdll: db 'ws2_32.dll',0
wsaddr: dd '0xFFFFFFFF'
Getpc: dd '0xFFFFFFFF'

WStp: db 'WSAStartup',0
WSaddr: dd '0xFFFFFFFF'
WSD: dd 'WSADATA',0
saveWSA: dd '0xFFFFFFFF'
soc: db 'socket',0
soadd: dd '0xFFFFFFFF'
conn: db 'connect', 0
conaddr: dd '0xFFFFFFFF'
sen: db 'send', 0
sendadd: dd '0xFFFFFFFF'

res1: db "WSAStartup %d", 10, 0
res2: db "Socket %d", 10, 0
res3: db "connect %d", 10, 0
res4: db "send %d", 10 ,0

sre: db "hola mundo",0

section .bss
sn resb 10

section .text

global _WinMain@16
extern _ExitProcess@4
extern _LoadLibraryA@4
extern _GetProcAddress@8
extern _printf
extern _WSAStartup@8

_WinMain@16:

xor eax, eax

push wsdll
call _LoadLibraryA@4
mov [wsaddr], eax

push WStp
push dword [wsaddr]
call _GetProcAddress@8
mov [Getpc], eax

push WSD
push 0x202
call [Getpc]
mov [saveWSA], eax

cmp dword [saveWSA], -1
jne mns1
je erro

mns1:
push dword [saveWSA]
push res1
call _printf

push soc
push dword [wsaddr]
call _GetProcAddress@8
mov [Getpc], eax

push 6
push 1
push 2
call [Getpc]
mov [soadd], eax

push dword [soadd]
push res2
call _printf

push conn
push dword [wsaddr]
call _GetProcAddress@8
mov [conaddr], eax

push dword [conaddr]
push res3
call _printf

push 0x0100007F
push 0xB9220002
mov esi, esp
push byte 16
push esi
push dword [soadd]
call [conaddr]

erro:
push 0
call _ExitProcess@4


Aunque admito que hacerlo en fasm es mucho mas sencillo

Código: asm
format PE console 4.0

entry start

include 'include\win32a.inc'

section '.data' data readable writable

wsadata WSADATA
saddr sockaddr_in
sock_size = $-saddr
sock dd ?
sin_addr dd ?
sin_port dd ?

section '.code' code readable executable
start:

invoke WSAStartup, 0202h, wsadata
invoke socket, AF_INET, SOCK_STREAM, 0

mov[sock], eax
mov[saddr.sin_family], AF_INET
mov[saddr.sin_port], 0xB922
mov[saddr.sin_addr], 0x0100007F

invoke connect, [sock], saddr, sock_size

invoke ExitProcess,0

section '.idata' import data readable writeable

library kernel, 'KERNEL32.DLL',\
        winsock, 'WSOCK32.DLL'

import kernel,\
       ExitProcess, 'ExitProcess'

import winsock,\
       WSAStartup, 'WSAStartup',\
       WSACleanup, 'WSACleanup',\
       socket, 'socket',\
       connect, 'connect',\
       sendto, 'sendto',\
       closesocket, 'closesocket'           
#107
trate de hacer un socket en nasm, es algo novato pero espero me puedan ayudar con esto

estoy tratando de usar la estructura sockaddr_in, y no logro entender como usarla en nasm asi que encontre que es posible acceder mediante direcciones

trate de usar las direcciones pero creo lo hago mal, porque usando netcat no se conecta, alguien me podria explicar como usar sockaddr_in y/o decirme que estoy haciendo mal, porfavor

les dejo el codigo

Código: asm
[BITS 32]

section .data

wsdll: db 'ws2_32.dll',0
wsaddr: dd '0xFFFFFFFF'
Getpc: dd '0xFFFFFFFF'

WStp: db 'WSAStartup',0
WSaddr: dd '0xFFFFFFFF'
WSD: dd 'WSADATA',0
saveWSA: dd '0xFFFFFFFF'
soc: db 'socket',0
soadd: dd '0xFFFFFFFF'
conn: db 'connect', 0
conaddr: dd '0xFFFFFFFF'
sen: db 'send', 0
sendadd: dd '0xFFFFFFFF'

sre: db "hola mundo",0

section .bss
sn resb 10

section .text

global _WinMain@16
extern _ExitProcess@4
extern _LoadLibraryA@4
extern _GetProcAddress@8
extern _printf
extern _WSAStartup@8

_WinMain@16:

xor eax, eax

push wsdll
call _LoadLibraryA@4
mov [wsaddr], eax

push WStp
push dword [wsaddr]
call _GetProcAddress@8
mov [Getpc], eax

push WSD
push 0x202
call [Getpc]
mov [saveWSA], eax

push soc
push dword [wsaddr]
call _GetProcAddress@8
mov [Getpc], eax

push 6
push 1
push 2
call [Getpc]
mov [soadd], eax

push conn
push dword [wsaddr]
call _GetProcAddress@8
mov [conaddr], eax

push dword [soadd]
mov eax, 0x00000000
mov eax, 0x00000000
mov eax, 0x0100007f
mov eax, 0x5c110002
mov eax, 16
push eax
call [conaddr]

push sen
push dword [wsaddr]
call _GetProcAddress@8
mov [sendadd], eax

push dword [soadd]
push sre
push sn
push 0
call [sendadd]

erro:
push 0
call _ExitProcess@4


hago pruebas con la direccion local "127.0.0.1" y el puerto "4444"

salu2
#108
hola

estoy tratando de aprender a usar sockets con nasm, pero tengo una duda, cuando uso WSAStartup hago un printf y me sale 0, lo que me imagino que esta bien, despues inicio socket() y pongo sus parametros, AF_INET, SOCK_STREAM, IPPROTO_TCP,pero los pongo por su valor (2,1,6), y hago un printf para revisar el resultado.

al principio me salia "-1", con lo que me imagino que tenia error, pero luego lo modifique y ahora ya no me da un resultado negativo, me da positivo, pero en consola me aparece "80", hice un seguimiento con ollydbg y me aparece 84, lo que quisiera saber es si es correcto ese numero en la funcion socket() o me tiene que aparecer "0", porque tampoco me aparece ningun "violacion de acceso" con lo que me imagno que por lo menos el codigo esta bien porque no crashea

a lo que me refiero con lo de "80" o "0" y "-1" es como cuando en C ponemos

if((socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1){
exit(1);
}

si pusiera un printf para ver el resultado de socket y me aparece "80", estaria mal?, o significa que voy bien?, bueno hablando en asm en este sentido

y posiblemente el cambio de 80 y 84 es porque en el printf le puse "%d" y ollydbg talvez lo ve diferente


EDITADO

estuve haciendo el programa en C e hice un seguimiento con ollydbg, puse un printf y me aparece 90 decimal tanto en olly como en el printf

entonces creen que este correcto que me aparezca 84 decimal  en ollydbg y 80 en el printf en nasm?, acaso sera por algo de la compilacion?
#109
jeje, exacto, alli esta mi error

y sip lo hare, lo que sucede es que uso noscript y a veces tengo que escribirlo porque no me aparecen las opciones y el unico que recuerdo es (code) (/code) jeje  ;D
#110
mmm, creo todavia es algo complicado para mi, apenas estoy haciendo ejercicios en asm para acostumbrarme, pero investigare sobre ese array en asm

dejo el codigo que tengo, a lo mejor hay mas errores y por eso no me funciona, mientras investigare lo que mencionas

Código: text
[BITS 32]

section .data
cual: db 'Cual es tu nombre?',0
STDIN equ 0

section .bss

buf: resb 64
lent: equ $-buf

section .text

global _WinMain@16
extern _printf
extern _fgets
extern _stdin
extern _ExitProcess@4

_WinMain@16:

push cual
call _printf
add esp, 4

push STDIN
push lent
push buf
call _fgets

push 0
call _ExitProcess@4
ret 16
#111
bueno, vengo con otra duda

estoy tratando de hacer un ejercicio usando fgets para escribir en consola pero despues del primer printf se termina la ejecucion y no se ejecuta la funcion fgets(), verifique con ollydbg y en los parametros me aparece

stream = NULL

lo que me imagino que ese es el problema de porque no se detiene la ejecucion para escribir en consola

ya intente usar

extern _stdin
%define stdin 0
STDIN equ 0

y siempre me aparece como null, ¿alguien sabe como puedo poner en stream "stdin", para poder escribir en consola con fgets(), estoy haciendolo en nasm con gcc, espero alguien sepa algo

salu2
#112
ya lo resolvi, el error se encuentra en la seccion .data, a ver si alguien mas encuentra mi error de novato jeje

salu2
#113
hola

estoy practicando asm y vi un codigo de K0ws que es un downloader, quise hacerlo por mi mismo, pero tengo un problema, nasm no me da ningun error, gcc tampoco pero cuando lo ejecuto, me sale un mensaje diciendo que el programa dejo de funcionar y se cierra, me podrian decir que fallo le encuentran porfavor?

Código: asm
[Bits 32]

section .data
remote_file db 'http://underc0de.org/foro/Themes/underc0de/images/theme/logo.png',0
local_file db 'deje.png',0
url db 'urlmon.dll'
ldlib dd '0xFFFFFFFF'
URDo db 'URLDownloadToFileA'
urd dd '0xFFFFFFFF'

section .text
extern _LoadLibraryA@4
extern _GetProcAddress@8
extern _FreeLibrary@4
extern _ExitProcess@4
global _WinMain@16

_WinMain@16:

push url
call _LoadLibraryA@4
mov [ldlib], eax

push URDo
push dword [ldlib]
call _GetProcAddress@8
mov [urd], eax

push 0
push 0
push local_file
push remote_file
push 0
call [urd]

call _FreeLibrary@4

push 0
call _ExitProcess@4
ret 16

#114
Dudas y pedidos generales / Re:como crear un RumPE
Julio 12, 2013, 10:07:25 PM
jaja yo crei que rumpe era un nuevo metodo y cuando busque en google, me aparecieron muchas imagenes muy graciosas, y el significado en google traductor hizo que todo lo que vi tuviera una explicacion jajajaja :)
#115
Dudas y pedidos generales / Re:como crear un RumPE
Julio 12, 2013, 10:01:06 PM
the swash hizo un tutorial muy bueno checalo

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#116
esta parte


Código: text
offset PE:	0xE0 - 0x28 = 0xB8	(4 bytes)

Se puede apreciar en la comparacion la cabecera PE desplazada 0x28 bytes hacia abajo (considerese abajo, como desplazamiento hacia menor direccion que la actual), y se ve la "Bound Import Table" intacta (la que en el otro capitulo eliminamos/sobreescribimos)


lo que sucede es que elimino 0x28, pero al ejecutar el archivo me dice que ya no es win32, lo que me imagino es que al eliminarle hexadecimales queda incompleto, entonces si elimino 0x28 hexadecimales con algo se debe llenar para volver a la cantidad original de archivo y posicion original de los demas offset's, y eso es lo que no recuerdo y no alcanzo a ver la imagen ya que me aparece muy pequeña en el ejemplo de alli, porque tambien menciona que queda intacta "Bound import"
#117
ahhh si, lo siento no me fije en eso es "PE" y sip era algo asi sobre el Entry Point, creo sera mejor que les deje el link, sera mas facil de explicar

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

es el tercer capitulo lo que no recuerdo como hacerlo y no se si haya formas mejores para hacer eso

salu2
#118
hola

si claro

cuando uno usa PEB, se pueden agregar secciones, por ejemplo

.text
.data
.grimoire
etc

en esa nueva seccion ".grimoire" se puede agregar datos, por ejemlo, "el foro underc0de es genial", se guarda el archivo que se abrio con un programa para manejar hexadecimales, y se debe ejecutar el archivo sin ningun problema

ahora, yo recuerdo haber visto un tutorial, donde en vez de escribir una frase, se podia escribir opcode's, por ejemplo, los opcodes de una shell

"0xeb, 0xcc, 0xab".. etc

se cierra el executable con el editor de hexa y al executarlo, aparecia una shell, tambien puede ser la calculadora, notepad, MessageBoxA, etc

pero en un tutorial de alguien llamado ferchu, decia que para que eso fuece posible, se debian eleminar algunos hexadecimales sonde se encuentran los hexadecimales "PE",  y creo agregaba algo para que los opcode se ejecutaran

y eso es lo que no recuerdo como se hacia, ya que ese tutorial fue hecho la mayoria con imagenes y esas imagenes ya no existen, y queria saber si alguien me puede explicar esa parte de execucion de opcodes agregados en una nueva seccion usando PEB

o hay alguna otra forma mas sencilla o mejor para lograrlo?, porque tambien uso windows 7 64bits, y el lo hizo con windows xp 32bits, y varias veces tuve problemas por esa diferencia, ya que hay algunos cambios, aunque en virtualbox tengo windows 7 32bits, y alli la diferencia es minima, espero me pueda ayudar

salu2
#119
hola

gracias por las respuestas, ya la volvi a abrir y lo limpie completamente, nada mas limpie no agregue mas pasta

una segunda , duda

hoy me pidieron de favor que si podria abrir una laptop igual para limpiarla, y cuando vi la tarjeta madre, tanto el procesador como la placa de video estaban cubiertas con una banda metalica negra, que no recuerdo el nombre pero se parece al disco magentico negro que se usaba en los floppy, y me gustaria comprar un poco de ese tipo como de platico negro, ya que en esa laptop esta cubriendo los cicuitos y dejando un orificio en medio para aplicar pasta y no tocar nada, pero no se como se llame y tampoco se como pedirla si es que se vende, alguien sabe algo sobre eso?

y ya por ultimo, me podrian decir si es necesario poner pasta termica sobre la placa de video, porque mi compu no la tiene, y en aquella compu tenia una especie de plastilina encima  del chip de video, y me gustaria saber si es bueno usarla y como se llama

salu2
#120
hola

tengo una pregunta sobre la pata termica para procesadores

hace un momento desarme mi computadora para limpiarla, cosa rutinaria, abrir, desatornillar, etc..., pero compre una pasta termica llamada "cooler master", tenia entendido que debia ser poco, y se puede dejar alli una gota y que la presion haga su trabajo o expandirla, pero lo sobrante podria salirse, y pero lo que no sabia era que puede ser dañino y puede provocar corto circuito

bueno al principio le puse poco tanto en la capa de arriba como en la de abajo, es un procesador de una laptop hp,, olvide ponerle los tornillo del ventilador y tuve que volver a quitarlo, pero me di cuenta que se habia expandido y derramado por los lados un poco del sobrante, como desconocia eso, le quite un poco del sobrante, pero al arrastrael el contenido, se embarro un poco en lo circuitos que estan alrededor.

asi que empece a limpiarlo, lo mejor que se pudo pero como pense que no hacia daño no me importo removerlo completamente, no quedaron residuos grandes pero si pequeños residuos embarrados, pero tambien al limpiarlo me lleve un poco de la pasta del procesador, asi que le puse otro poco para volver a tapar todo, tanto arriba (ventilador) como abajo(procesador), muy poco nuevamente, y lo tape, arme toda mi computadora y respire hondo porque era la primera vez que abria una laptop, quedo bien, encendio normalmente y sale aire como cuando era nueva, no se calienta, y ademas le puse un ventilador como base para el enfriamiento

volviendo a buscar sobre el armado de mi lap, para verificar si habia hecho todo bien, me entere sobre la pasta termica que debia ser una gota y que no toque nada de afura porque podria provocar un corto circuito, y aqui viene mi pregunta

creen que mi computadora ya se salvo de algo malo por la pasta?, ya que el ventilador va bien, ya han pasado unas dos horas desde que la encendi sin ningun problema y no se ha calentado, antes de limpiarla la zona izquierda superior donde se encuentra el procesador ya estaba caliente, pero sigue fria, quiere decir que ya no paso nada?, o seria bueno que la vuelva a abrir y quite todo el residuo bien, y quitarle la pasta que le puse totalmente al procesadora y al ventilador que hacen presion y volver a ponerle de nuevo pero esta vez solo una gota para evitar problemas?o ya mejor lo dejo asi y lo hago con mas cuidado el proximo año que la vuelva a desarmar para darle mantenimiento?