PDA

Ver la versión completa : Ayuda con script en html



Lagarto #2
22-04-2003, 09:49
Salu2:

Tengo una pequeña duda, lo que pasa es que me gustaría saber si es posible conseguir el script de un programa que esté dentro del código html. Por ejemplo, hay algunas páginas en las que se pueden encontrar algunas aplicaciones, por decir un ejemplo, hay una página en la que vi una tabalde conversión de unidades de medida, pero al mismo tiempo que hacía la conversión, presentaba una gráfica.
No sé cómo se podría hacer la programación simultánea de la gráfica y de la conversión al mismo tiempo, y me gustaría ver el script de dicha aplicación, obviamente al ver el código fuente de html no voy a encontar el script de la aplicación, sino únicamente la aplicación compilada "insertada" en el código fuente.
Al autor de dicha aplicaciónn ya le he enviado cuatro mails para solicitarle dicho script, pero no me ha contestado. Si guardo la página, la aplicación también se guarda, pero vuelvo a lo mismo, pues aunque esté guardada en mi ordenador no puedo ver el script :(.

¿Alguien sabe si puedo hacer algo al respectop o es imposible abrir un script de una aplicación sólo con el código?
Supongo que si es posible, si alguien sabe, le agradeceré mucho.

Thanx
§§§Lagarto§§§

|RooT|
22-04-2003, 16:45
Para poder cojer el script de la pagina tendrias que encontrar alguna vulnerabilidad en el servidor que se este usando, ya que hay parte de scripts que es interpretado por el Servidor, y que este solo puede ser visible desde forma fisica, un ejemplo seria el ASP o el PHP que lo interpreta el servidor y después lo manda al cliente en forma HTML, si no por ejemplo que gracia tendria poner un login por ejemplo si se pudiera ver el codigo fuente?

Lagarto #2
23-04-2003, 02:12
Gracias |RooT|



El código fuente en html contiene este APPLET de JAVA:

<APPLET CODE="InterfApplet.class" WIDTH=600 HEIGHT=400 align="center"></APPLET>

que es donde se encuentra la aplicación, lo que no sabría es si es ASP o PHP lo que interpreta y uego lo manda a html ¿cómo puedo saber eso? es que sólo sé html, poco de PHP y nada de ASP:( .

Ah, también sé que utiliza el siguiente server:

acacia.pntic.mec.es.

¿Pero, cómo puedo empezar a buscar la vulnerabilidad?:confused:

Mil Gracias
§§§Lagarto§§§

juanma.m.d
23-04-2003, 12:35
puedes decir el nombre de la pagina ¿

Scar_T
23-04-2003, 17:19
Ya intentaste jalar esa clase a tu maquina, muy seguramente es tus archivos temporales de internet, y pues luego lo decompilas ;).

revolloso
23-04-2003, 18:39
Ta' re fácil compadre :p, mira, tienes que hacer lo siguente...

ya diste el nombre del archivo, normalmente se hace asi para poder bajarselo...

http://www.servidor.com/inerfapplet.class

o si no algo parecido como esto...

http://www.servidor.com/applets/inerfapplet.class

y ya que lo tengas en tus manos, te buscas un decompilador de archivos 'class0 y lixto, tienes el código en java, jejejejje ;)

Lagarto #2
24-04-2003, 07:59
Escrito originalmente por juanma.m.d
puedes decir el nombre de la pagina ¿
Ésta es la página principal juanma.m.d:
http://acacia.pntic.mec.es/~jruiz27/contenidos.htm

y ésta donde está la aplicación que me interesa
http://acacia.pntic.mec.es/~jruiz27/interf/young.htm#1%20Teoría%20corpuscular


Escrito originalmente por Scar_TYa intentaste jalar esa clase a tu maquina, muy seguramente es tus archivos temporales de internet, y pues luego lo decompilas .
No Scar_T, desafortunadamente no está en mis archivos temporales, chuqué la carpeta Temp de arriba a abajo (toda pues) y sólo encontré, respecto a dicha página, lo que vienen siendo banners, gifs, BMP's y JPEG's y nada más, pero ninguna extensión o archivo que pudiera indicarme que se trataba de la aplicación applet :(

revolloso, gracias pero sólo me gustaría saber si me puedes aclarar algo (es que no entendí muy bien), se supone que voy a sustituir los datos de la dirección en la URL que me diste o cómo?, porque si lo hago así, no abre nada, y si uso las URL que me estás dando directamente abre una página de un buscador genérico :confused:

Ok, gracias, empezaré por bajar el descompilador de class0 files

Thanx
§§§Lagarto§§§

Lagarto #2
24-04-2003, 08:36
Bajé el Jad, es un descompilador de JAVA, estoy viendo cómo se maneja y me parece que si será de ayuda, pero aún no entiendo lo que me dices revolloso.
Scar_T guardé las páginas en disco duro, para ver si esto servirá de algo, nada más que los resultados de si se guardaron o no los archivos no lo sabré hasta que me desconecte pues si las abro si me corre la aplicación pero ya desconectado (obviamente) no corre el APPLET. Al desconectarme checo de nuevo los temporales y si encuentro algo pues aviso.
Mil Gracias
§§§Lagarto§§§
Thanx
§§§Lagarto§§§§

Scar_T
24-04-2003, 17:41
Bueno me baje el la clase que viene ahi y la decompile con DJ Java Decompiler (http://members.fortunecity.com/neshkov/dj.html), pero como que siento que el resultado no es el que esperaba, aqui esta la decompilacion:

// Decompiled by DJ v3.4.4.74 Copyright 2003 Atanas Neshkov Date: 24/04/03 09:36:45 a.m.
// Home Page : http://members.fortunecity.com/neshkov/dj.html - Check often for new version!
// Decompiler options: packimports(3)
// Source File Name: InterfApplet.java

import java.applet.Applet;
import java.awt.*;

public class InterfApplet extends Applet
{

public InterfApplet()
{
}

public static void main(String args[])
{
InterfFrame interfframe = new InterfFrame();
InterfApplet interfapplet = new InterfApplet();
interfframe.show();
interfframe.hide();
interfframe.add("Center", interfapplet);
interfframe.resize(600, 400);
interfframe.show();
interfapplet.init();
interfapplet.start();
}

public void start()
{
ip.update(null, null);
}

public Insets insets()
{
return new Insets(5, 5, 5, 5);
}

public void init()
{
setBackground(Color.lightGray);
setLayout(new BorderLayout());
ip = new InterfPanel();
add("Center", ip);
}

InterfPanel ip;
}

Si les interesa como la obtuve pues la baje con el DAP, ahi le puse Add URL, y puse esta direccion http://acacia.pntic.mec.es/~jruiz27/interf/InterfApplet.class, y eso fue lo que decompile, a ver si alguien encuentra otra cosa.

revolloso
24-04-2003, 18:06
Te mando el Applet de java a tu correo compadre, hay te lo decompilas tú :-P

Lagarto #2
24-04-2003, 23:57
a ver, ya tengo el applet java y Scar_T gracias por la descompilación, lo que notpe es que me da extensión en director 8.5, lo que voy a hacer es intentar pasar el script a Lingo (el lenguaje de Director), a lo mejor así funciona, en un rato aviso que pasó

Thanx
§§§Lagarto§§§

Lagarto #2
25-04-2003, 00:23
// Decompiled by DJ v3.4.4.74 Copyright 2003 Atanas Neshkov Date: 24/04/2003 03:17:33 p.m.
// Home Page : http://members.fortunecity.com/neshkov/dj.html - Check often for new version!
// Decompiler options: packimports(3) disassembler
// Source File Name: InterfApplet.java

import java.applet.Applet;
import java.awt.*;

public class InterfApplet extends Applet
{

public InterfApplet()
{
// 0 0:aload_0
// 1 1:invokespecial #12 <Method void Applet()>
// 2 4:return
}

public static void main(String args[])
{
// 0 0:new #14 <Class InterfFrame>
// 1 3:dup
// 2 4:invokespecial #15 <Method void InterfFrame()>
// 3 7:astore_1
// 4 8:new #6 <Class InterfApplet>
// 5 11:dup
// 6 12:invokespecial #16 <Method void InterfApplet()>
// 7 15:astore_2
// 8 16:aload_1
// 9 17:invokevirtual #21 <Method void Window.show()>
// 10 20:aload_1
// 11 21:invokevirtual #26 <Method void Component.hide()>
// 12 24:aload_1
// 13 25:ldc1 #28 <String "Center">
// 14 27:aload_2
// 15 28:invokevirtual #34 <Method Component Container.add(String, Component)>
// 16 31:pop
// 17 32:aload_1
// 18 33:sipush 600
// 19 36:sipush 400
// 20 39:invokevirtual #38 <Method void Component.resize(int, int)>
// 21 42:aload_1
// 22 43:invokevirtual #21 <Method void Window.show()>
// 23 46:aload_2
// 24 47:invokevirtual #41 <Method void init()>
// 25 50:aload_2
// 26 51:invokevirtual #44 <Method void start()>
// 27 54:return
}

public void start()
{
// 0 0:aload_0
// 1 1:getfield #48 <Field InterfPanel ip>
// 2 4:aconst_null
// 3 5:aconst_null
// 4 6:invokevirtual #54 <Method void InterfPanel.update(java.util.Observable, Object)>
// 5 9:return
}

public Insets insets()
{
// 0 0:new #56 <Class Insets>
// 1 3:dup
// 2 4:iconst_5
// 3 5:iconst_5
// 4 6:iconst_5
// 5 7:iconst_5
// 6 8:invokespecial #59 <Method void Insets(int, int, int, int)>
// 7 11:areturn
}

public void init()
{
// 0 0:aload_0
// 1 1:getstatic #65 <Field Color Color.lightGray>
// 2 4:invokevirtual #69 <Method void Component.setBackground(Color)>
// 3 7:aload_0
// 4 8:new #71 <Class BorderLayout>
// 5 11:dup
// 6 12:invokespecial #72 <Method void BorderLayout()>
// 7 15:invokevirtual #76 <Method void Container.setLayout(java.awt.LayoutManager)>
// 8 18:aload_0
// 9 19:new #53 <Class InterfPanel>
// 10 22:dup
// 11 23:invokespecial #77 <Method void InterfPanel()>
// 12 26:putfield #48 <Field InterfPanel ip>
// 13 29:aload_0
// 14 30:ldc1 #28 <String "Center">
// 15 32:aload_0
// 16 33:getfield #48 <Field InterfPanel ip>
// 17 36:invokevirtual #34 <Method Component Container.add(String, Component)>
// 18 39:pop
// 19 40:return
}

InterfPanel ip;
}

Me equivoqué, no es director. Ahora, cómo podría saber de qué programa se trata?
Pues al ponerlo en director me manda muchos errores de script (de hecho hay sintaxis que no existen en director pero que me descompila
el descompilador). Lo que puse aquí es lo mismo de Scar_T pero en bytecode view
::confused::

Lagarto #2
25-04-2003, 12:08
No sé por qué, pero intenté descompilar y nomás no se podía y no se podía, pero entré a la web del programador, (un chino de nombre Fu Kwung Hwuang) y ahí tenía el mismo applet en una página. Realicé el procedimiento que me dijeron y lo guardé en mi HD. Yasta descompilado :)

// Decompiled by DJ v3.4.4.74 Copyright 2003 Atanas Neshkov Date: 25/04/2003 03:05:42 a.m.
// Home Page : http://members.fortunecity.com/neshkov/dj.html - Check often for new version!
// Decompiler options: packimports(3)
// Source File Name: C:\Java\Prog\Slit1\PanelSlit1.java

import java.awt.*;

class PanelSlit1 extends Panel
implements Runnable, Setting
{

private void DrawArc(Graphics g)
{
int dx = (int)((21D * (1.0D - (double)m_hueLight * 0.38D)) / 0.62D);
int xc = 105;
int xx = 400 - xc;
int imax = xx / dx;
double a1 = Math.atan2(100D, xx);
double a2 = a1 * (15D / (double)m_ySlitD) * (1.0D - (double)m_hueLight * 0.38D);
m_iAngle = (int)((a2 * 180D) / 3.1415926535897931D);
g.setColor(m_clrLight);
for(int i = 1; i <= imax; i++)
{
int x = dx * i;
g.drawArc(xc - x, 121 - x, 2 * x, 2 * x, m_iAngle, -2 * m_iAngle);
if(i % 2 == 0)
{
int j = 1;
do
g.drawArc(xc - x - j, 121 - x - j, 2 * x + 2 * j, 2 * x + 2 * j, m_iAngle, -2 * m_iAngle);
while(++j <= 2);
}
}

}

public void start()
{
if(m_Runner == null)
{
m_Runner = new Thread(this);
m_Runner.start();
}
}

public void stop()
{
if(m_Runner != null)
{
m_Runner.stop();
m_Runner = null;
}
}

private void DrawSlit(Graphics g)
{
Draw3DRect(g, 100, m_ySlitY0, 110, m_ySlitY1, Setting.C_SLT);
Draw3DRect(g, 100, m_ySlitY2, 110, m_ySlitY3, Setting.C_SLT);
m_Apl.m_dSlitWidth = (8.3819999999999997D * m_Apl.m_dWaveLmin * (double)m_ySlitD) / 7D;
}

public boolean ChangeSlit(int x, int y)
{
if(x >= 100 && x <= 110)
{
if(y >= m_ySlitY0 && y < m_ySlitY1 && m_yMouseDown >= 0)
{
int d = m_ySlitD - (y - m_yMouseDown) / 2;
if(d < 7)
m_ySlitD = 7;
else
if(d > 15)
m_ySlitD = 15;
else
m_ySlitD = d;
m_ySlitY1 = 121 - m_ySlitD;
m_ySlitY0 = m_ySlitY1 - 90;
m_ySlitY2 = 121 + m_ySlitD;
m_ySlitY3 = m_ySlitY2 + 90;
return true;
}
if(y >= m_ySlitY2 && y < m_ySlitY3 && m_yMouseDown >= 0)
{
int d = m_ySlitD + (y - m_yMouseDown) / 2;
if(d < 7)
m_ySlitD = 7;
else
if(d > 15)
m_ySlitD = 15;
else
m_ySlitD = d;
m_ySlitY1 = 121 - m_ySlitD;
m_ySlitY0 = m_ySlitY1 - 90;
m_ySlitY2 = 121 + m_ySlitD;
m_ySlitY3 = m_ySlitY2 + 90;
return true;
}
}
return false;
}

public boolean mouseDown(Event evt, int x, int y)
{
m_yMouseDown = y;
m_bRefreshView = ChangeBar(x, y);
return true;
}

private void DrawBar(Graphics g)
{
int x0 = 44;
int x1 = 56;
Draw3DRect(g, 40, 77, 60, 165, Setting.C_BAR);
int i = 0;
do
{
g.setColor(m_clrBar[i]);
g.drawLine(x0, 81 + i, x1, 81 + i);
} while(++i < 80);
Draw3DRect(g, 30, m_yThumb - 5, 50, m_yThumb + 5, Setting.C_BAR);
m_Apl.m_dWavelength = m_Apl.m_dWaveLmin + m_Apl.m_dWaveLrange + (m_Apl.m_dWaveLrange * (double)(81 - m_yThumb)) / 80D;
}

public boolean ChangeBar(int x, int y)
{
if(y >= 81 && y < 161 && x >= 30 && x <= 60)
{
m_yThumb = y;
m_hueLight = (float)(m_yThumb - 81) / 92F;
m_clrLight = Color.getHSBColor(m_hueLight, 1.0F, 1.0F);
return true;
} else
{
return false;
}
}

public boolean mouseDrag(Event evt, int x, int y)
{
m_bRefreshView = ChangeBar(x, y) | ChangeSlit(x, y);
return true;
}

public Dimension preferredSize()
{
return new Dimension(600, 243);
}

public boolean mouseUp(Event evt, int x, int y)
{
m_yMouseDown = -1;
m_bRefreshView = ChangeBar(x, y);
return true;
}

public void run()
{
do
{
if(m_bRefreshView)
{
repaint();
m_bRefreshView = false;
}
try
{
Thread.sleep(100L);
}
catch(InterruptedException interruptedexception) { }
} while(true);
}

PanelSlit1(Slit1 applet)
{
m_bRefreshView = true;
m_hueLight = 0.5F;
m_clrLight = Color.getHSBColor(m_hueLight, 1.0F, 1.0F);
m_fBright = new float[100];
m_yThumb = 121;
m_ySlitD = 15;
m_ySlitY1 = 121 - m_ySlitD;
m_ySlitY0 = m_ySlitY1 - 90;
m_ySlitY2 = 121 + m_ySlitD;
m_ySlitY3 = m_ySlitY2 + 90;
m_iAngle = 30;
m_yMouseDown = -1;
m_clrBar = new Color[80];
m_bIsFirst = true;
m_FM = getFontMetrics(Setting.F16);
m_Apl = applet;
}

private void Draw3DRect(Graphics g, int xl, int yt, int xr, int yb, Color clr)
{
g.setColor(Setting.C_LIGHT);
int i = 0;
do
{
g.drawLine(xl + i, yb - i, xl + i, yt);
g.drawLine(xl, yt + i, xr - i, yt + i);
} while(++i < 2);
g.setColor(Setting.C_DARK);
i = 0;
do
{
g.drawLine(xr - i, yt + i, xr - i, yb);
g.drawLine(xl + i, yb - i, xr, yb - i);
} while(++i < 2);
g.setColor(Color.black);
g.drawLine(xr - i, yt + i, xr - i, yb - i);
g.drawLine(xl + i, yb - i, xr - i, yb - i);
g.setColor(clr);
g.fillRect(xl + i, yt + i, xr - xl - i - i, yb - yt - i - i);
}

private void DrawArrows(Graphics g)
{
int xleft = 19;
g.setColor(m_clrLight);
int i = -4;
do
{
int iy = 121 + i * 20;
g.fillRect(xleft, iy - 1, 60, 3);
g.drawLine(80, iy, 74, iy - 3);
g.drawLine(80, iy, 74, iy + 3);
g.drawLine(79, iy, 74, iy - 2);
g.drawLine(79, iy, 74, iy + 2);
} while(++i <= 4);
}

public void update(Graphics g)
{
Dimension d = size();
if(m_ImageOff == null || d.width != m_DimOff.width || d.height != m_DimOff.height)
{
m_ImageOff = createImage(d.width, d.height);
m_DimOff = d;
m_GraphOff = m_ImageOff.getGraphics();
}
paint(m_GraphOff);
g.drawImage(m_ImageOff, 0, 0, null);
}

public void paint(Graphics g)
{
if(m_bIsFirst)
{
int i = 0;
do
m_clrBar[i] = Color.getHSBColor((float)i / 92F, 1.0F, 1.0F);
while(++i < 80);
m_bIsFirst = false;
}
Dimension d = size();
int i = 0;
do
{
g.setColor(Setting.C_LIGHT);
g.drawLine(i, i, d.width - 1 - i, i);
g.drawLine(i, i, i, d.height - 1 - i);
g.setColor(Setting.C_DARK);
g.drawLine(d.width - 1 - i, i, d.width - 1 - i, d.height - 1 - i);
g.drawLine(i, d.height - 1 - i, d.width - 1 - i, d.height - 1 - i);
} while(++i < 4);
g.setColor(Setting.C_BGR);
g.fillRect(i, i, d.width - i - i, d.height - i - i);
m_xViewRight = d.width - 1 - 4;
g.setColor(Color.gray);
g.drawLine(4, 121, d.width - 1 - 4, 121);
DrawArrows(g);
DrawBar(g);
DrawSlit(g);
DrawArc(g);
DrawScreen(g);
}

private void DrawScreen(Graphics g)
{
Draw3DRect(g, 400, 21, 450, 221, Setting.C_SCR);
int x0 = 405;
int x1 = 445;
int hy = 95;
double coeff = ((12.566370614359172D / (double)hy) * ((double)m_ySlitD / 15D)) / (1.0D - (double)m_hueLight * 0.38D);
double br = 0.0D;
double br1 = 0.0D;
double pi = 3.1415926535897931D;
double pi2 = 6.2831853071795862D;
double pi3 = 9.4247779607693793D;
double pi4 = 12.566370614359172D;
double pi5 = 15.707963267948966D;
double pi6 = 18.849555921538759D;
double pi7 = 21.991148575128552D;
for(int i = 0; i < hy; i++)
{
if(i == 0)
{
br = br1 = 1.0D;
} else
{
double x = coeff * (double)i;
double y = Math.sin(x);
if(x < pi)
{
br = (y * y) / (x * x);
br1 = br;
} else
if(x < pi2)
{
br = y * y * 0.69999999999999996D;
br1 = br * 0.29999999999999999D;
} else
if(x < pi3)
{
br = y * y * 0.40000000000000002D;
br1 = br * 0.29999999999999999D;
} else
if(x < pi4)
{
br = y * y * 0.20000000000000001D;
br1 = br * 0.29999999999999999D;
} else
if(x < pi5)
{
br = y * y * 0.10000000000000001D;
br1 = br * 0.29999999999999999D;
} else
if(x < pi6)
{
br = y * y * 0.070000000000000007D;
br1 = br * 0.29999999999999999D;
} else
if(x < pi7)
{
br = y * y * 0.040000000000000001D;
br1 = br * 0.29999999999999999D;
}
}
m_fBright[i] = (float)br1;
g.setColor(Color.getHSBColor(m_hueLight, 1.0F, (float)br));
g.drawLine(x0, 121 - i, x1, 121 - i);
g.drawLine(x0, 121 + i, x1, 121 + i);
}

g.setColor(Color.getHSBColor(m_hueLight, 1.0F, 1.0F));
x0 = (int)(m_fBright[0] * 100F) + 460;
g.drawLine(x0, 121, x0, 121);
for(int i = 0; i < hy; i++)
{
x1 = (int)(m_fBright[i] * 100F) + 460;
g.drawLine(x0, 121 - i, x1, 121 - i);
g.drawLine(x0, 121 + i, x1, 121 + i);
x0 = x1;
}

}

private Slit1 m_Apl;
private Thread m_Runner;
private Image m_ImageOff;
private Dimension m_DimOff;
private Graphics m_GraphOff;
private boolean m_bRefreshView;
private float m_hueLight;
private Color m_clrLight;
private float m_fBright[];
private int m_yThumb;
private int m_ySlitD;
private int m_ySlitY1;
private int m_ySlitY0;
private int m_ySlitY2;
private int m_ySlitY3;
private int m_iAngle;
private int m_yMouseDown;
private int m_xViewRight;
private Color m_clrBar[];
private boolean m_bIsFirst;
private FontMetrics m_FM;
}

Lagarto #2
25-04-2003, 12:16
Como se dan cuenta está enorme este script (sólo pegué como la mitad), pero ahora tengo una duda más, y les agradecería mucho si pueden seguir apoyándome:

Hay alguna manera de que pueda abrir el applet ejecutándolo y SIN abrir el explorador???:confused:

Lo que pasa es que ya vi el script y lo estoy haciendo en Java, pero le quité algunas cosas porque ni siquiera las he visto en la escuela, por lo tanto el script que estoy haciendo es más sencillo que ese que les mostré, pues sólo necesitaba una parte del script.

En el momento en que compilo la información del script pequeño (el que estoy haciendo yo), me abre la ventana de explorer para reproducirlo (no sé si deba a que pegué parte del script grandote:confused:) Mi duda es si es posible que lo ejecute sin abrir el explorer, porque en esa misma página había un applet que se ejecutaba en una ventana que no era del explorador.

Disculpen si mis preguntas llegan a parecer tontas, pero tiene menos de 5 días que estoy usando Java y aún me falta muuuucho por aprender.

Thanx
§§§Lagarto§§§

Scar_T
25-04-2003, 17:51
En primera no es un script ;).

Y se te bajas el sdk de programacion de java (creo que ya lo tienes) lo puedes ver con el appletviewer.

Lagarto #2
26-04-2003, 17:19
Yo pense que si era, entonces no me va a servir???, porque cuando no modifico esos datos el applet no falla, pero cuando si lo hago falla (por eso pensè que si era script) entonces no voy a poder ver nunca el script???

snif! :_(

Entonces porque no me funciona el descompilador??:confused:
O hay alguna manera de que pueda verlo, ayuda por favor :(...

Bueno, lo veo por el lado positivo, poder reproducir el applet sin estar en linea ya es avance :D

Thanx
§§§Lagarto§§§