La botnet Zeus ahora su codigo fuente al alcance de todos

Sin duda alguna como la mayoría sabrán  la creación de malware se ha ido incrementando en los últimos años, ya que la mayoría de los coder’s ya no solo codean  por “la satisfacción personal de saber que pueden hacerlo” si no que ahora ya absolutamente todo es hecho para percibir dinero.

Como sabrán la botnet Zeus ha sido catalogada como una de las botnets mas “peligrosas” por así decirlo…. (En definitiva no creo que sea la más peligrosa).

Si aun no están enterados de ¿Quién es la botnet Zeus? Les invito a ver el siguiente video, así como un artículo muy bueno de segu-info.ar

Artículo en Segu-info.com.ar sobre la Botnet Zeus


 

Y el salto a la fama que ha tenido en los últimos meses ha sido impresionante ya que es considerada como una de las botnets más mediáticas. Esto se logro gracias a que el creador de la botnet ofrecía muchas mejoras con respecto al crimeware  “tradicional” y ofrecía de forma regular actualizaciones así como módulos para personalizar tu botnet. Ahora sí que como quien dice: un TODO EN UNO del crimewire.

El costo de la Botnet variaba… dependiendo de quien la vendiera, ya que incluso había resellers de la botnet (según parece TODO un negocio…)

Zeus-botnet

Lo curioso es que ahora el código fuente de la misma ha sido filtrado y hecho público, y lo más curioso del asunto es que al parecer es verdadero, no es FAKE. Sin duda alguna yo no sé porque, ni cómo es que el código se filtro, lo único que sé es que el source está libre en internet y esto desde mi perspectiva…. Acarreara muchos problemas..

Porque si nos ponemos a pensar, ahora cualquier Script Kiddie   podrá robar y tener su ejército de zombies.

Sin duda alguna esto no es del todo bueno, pero pues que le vamos a hacer… Simplemente tener un poco mas de precaución ya que todo apunta a que la Botnet Zeus regresa “Recargada”.

Y como el código ahora es público, pues procedo a compartir el Código Fuente de la Botnet Zeus.

http://www.megaupload.com/?d=TR5ZW69D pass zeus

Cabe aclarar que el enlace no es mío, fue obtenido de un foro underground  así que dense prisa ya que el enlace no creo que este mucho tiempo online.

Código Fuente en Java para la resolución de Métodos Numéricos

Hace mucho en una clase de programación de JAVA me pidieron realizar un programa que resolviera incógnitas por diverso métodos numéricos entre los cuales se encuentran:

  • Método de Bisección
  • Método de NEWTON-RAPHSON
  • Método de GAUSS
  • Método de GAUSS-SEIDEL PARA 3 ECUACIONES
  • Método de GAUSS-JORDAN
  • Método de LU PARA 3 ECUACIONES
  • Método de Interpolación de NEWTON
  • Método de Interpolación de LAGRANGE

Y pues eh decidido compartir el código de este proyecto, la verdad el código no es del todo mío… Fue facilitado por un compañero, porque para ser honestos a mi no me acaba de agradar la programación orientada a objetos, prefiero la estructurada, pero en gustos se rompen generos…

NOTA:el codigo fuente lo puedes descargar a continuación:

>>> DESCARGAR Codigo Fuente <<<

El código fuente se muestra a continuación:

import java.lang.Math;
import java.io.*;
//Clase ProyectoJava
public class  ProyectoJava{
  
  //Metodo Constructor
  public static void main(String args[]){
  ProyectoJava Proyecto = new ProyectoJava();
  Proyecto.menu();	//solo se manda a llamar a menu desde aqui, ya que menu llama a los demas metodos posteriromente
  }
    
  
    //(1)Metodo Biseccion	
  public void MetodoBiseccion(){
    double a;
    double b;
    double tol;
    System.out.println("\t\t\t\"METODO DE BISECCION\"");
    System.out.println("Extremo Izquierdo: ");
    a=lee();
    System.out.println("Extremo Derecho: ");
    b=lee();
    System.out.println("Tolerancia: ");
    tol=lee();
    double c;
    do{
    c=(a+b)/2.0;
    if(((c*c-5)*(a*a-5))<0){
      b=c;
    }
    else{
      a=c;
    }
      }while(Math.abs(a-b)>tol);
      System.out.println("La raiz es: "+c);			
  }


  //(2)Metodo NewRaphson
  public void MetodoNewtonRaphson(){
    double a;
    double tol;
    double b;
    double c; 
    System.out.println("\t\t\t\"METODO DE NEWTON-RAPHSON\"");
    System.out.println("Primera Aproximacion: ");
    a=lee();
    System.out.println("Tolerancia: ");
    tol=lee();
    do{
      b=a-(a*a-a-2)/(2*a-1);
      c=Math.abs(a-b);
      a=b;	
      	}while(c>tol);
      	System.out.println("La raiz es: "+b);
    }


  //(3) metodo gauss
  public void MetodoGauss(){
    int i,j,k,n;
    double a[][] = new double [5][6];
    double cte,x1,x2,x3;
    double x[] = new double [5];
    System.out.println("\t\t\t\"METODO DE GAUSS\"");
    System.out.println("Dame el numero de incognitas (de hasta 5) ");
    n=leeint();
    System.out.println("Ingrese coeficientes");
    for(i=0;i<n;i++)
    {
      System.out.println("Renglon "+(i+1));
      for(j=0;j<=n;j++)
      {
        System.out.println(" Ingrese a "+(i+1)+" "+(j+1));
        a[i][j]=lee();
      }
    }
    for(i=0;i<n-1;i++){
      for(j=i+1;j<=n;j++){
       cte=(-a[j][i])/(a[i][i]);
          for(k=i;k<n+1;k++){
       a[j][k]=((a[i][k])*cte)+a[j][k];
       }
       }
    }
   	x3=a[n-1][n]/a[n-1][n-1];
   	x2=(a[n-2][n]-x3*a[n-2][n-1])/a[n-2][n-2];
   	x1=(a[n-3][n]-x2*a[n-3][n-2]-x3*a[n-3][n-1])/a[n-3][n-3];
    System.out.println("x0= "+x1+" \nx1= " +x2+" \nx2= " +x3);
    }

  
  
  //(4)gauss seidel
  public void MetodoGaussSeidel(){
    double x0,x1,x2,tol,e;
    int i,j;
    double a[][]=new double [3][4];
    System.out.println("\t\t\t\"METODO DE GAUSS-SEIDEL 3 ECUACIONES\"");
    System.out.println("Ingrese tolerancia");
    tol=lee();
    System.out.println("Ingrese coeficientes");
    for(i=0;i<3;i++)
    {
      System.out.println("Renglon "+(i+1));
      for(j=0;j<=3;j++)
      {
        System.out.println(" Ingrese a "+(i+1)+" "+(j+1));
        a[i][j]=lee();
      }
    }
    x1=0.0;
    x2=0.0;
    do{
      e=x1;
      x0=(a[0][3]-x1*a[0][1]-x2*a[0][2])/a[0][0];
      x1=(a[1][3]-x0*a[1][0]-x2*a[1][2])/a[1][1];
      x2=(a[2][3]-x0*a[2][0]-x1*a[2][1])/a[2][2];
    }while(Math.abs(e-x1)>tol);
    System.out.println("x0= "+x0+" \nx1= " +x1+" \nx2= " +x2);
    }
  
  
  //(5) gauss jordan
  public void MetodoGaussJordan(){
    int i,j,k,n;
    double a[][] = new double [5][6];
    double cte;
    double x[] = new double [5];
    System.out.println("\t\t\t\"METODO DE GAUSS-JORDAN\"");
    System.out.println("No. de incognitas (maximo 5):   ");
    n=leeint();
    System.out.println("Dame los coeficientes: ");
    for(i=0;i<n;i++)
    {
      System.out.println("Renglon "+(i+1));
      for(j=0;j<=n;j++)
      {
        System.out.println(" Ingrese a "+(i+1)+" "+(j+1));
        a[i][j]=lee();
      }
    }
    for(i=0;i<n-1;i++){
      for(j=i+1;j<=n;j++){
       cte=(-a[j][i])/(a[i][i]);
          for(k=i;k<n+1;k++){
       a[j][k]=((a[i][k])*cte)+a[j][k];
       }
       }
    }
    for(i=0;i<n;i++)
    {
      System.out.println("Renglon "+(i+1));
      for(j=0;j<=n;j++)
      {
        System.out.println(" a "+(i+1)+" "+(j+1)+" =" +a[i][j]);
      }
    }
    }

  
  //(6) LU
  public void MetodoLu(){
    int i,j;
    double Y1,Y2,Y3,X1,X2,X3;
    double A[][] = new double [3][3];
    double L[][] = new double [3][3];
    double U[][] = new double [3][3];
    double B[] = new double [3];
    System.out.println("\t\t\t\"METODO DE LU    3 ECUACIONES\"");
    System.out.println("Ingrese coeficientes d");
    for(i=0;i<3;i++)
    {
      System.out.println("Renglon "+(i+1));
      for(j=0;j<3;j++)
      {
        System.out.println(" Ingrese a "+(i+1)+" "+(j+1));
        A[i][j]=lee();
      }
    }
    System.out.println("Ingrese los terminos independientes");
    for(i=0;i<3;i++){
      System.out.println("Termino  "+(i+1));
      B[i]=lee();
      }
    for(i=0;i<3;i++){
   			L[i][0]=A[i][0];
   			U[i][i]=1;
      }
    U[0][1]=A[0][1]/L[0][0];
    L[1][1]=A[1][1]-L[1][0]*U[0][1];
    L[2][1]=A[2][1]-L[2][0]*U[0][1];
    U[0][2]=A[0][2]/L[0][0];
    U[1][2]=(A[1][2]-L[1][0]*U[0][2])/L[1][1];
    L[2][2]=A[2][2]-L[2][0]*U[0][2]-L[2][1]*U[1][2];
    Y1=B[0]/L[0][0];
    Y2=(B[1]-L[1][0]*Y1)/L[1][1];
    Y3=(B[2]-L[2][0]*Y1-L[2][1]*Y2)/L[2][2];
    X3=Y3;
    X2=Y2-U[1][2]*X3;
    X1=Y1-U[0][1]*X2-U[0][2]*X3;
    System.out.println("El resultado es:\nx0= "+X1+" \nx1= " +X2+" \nx2= " +X3);
    }

  
  //(7) Interpolacion Newton
  public void MetodoInterNewton(){
    double a[][] = new double [5][2];
    double x,y,fx1x0,fx2x1,fx3x2,fx4x3,fx2x1x0,fx3x2x1,fx4x3x2,fx3x2x1x0,fx4x3x2x1,fx4x3x2x1x0;
    int i;
    System.out.println("\t\t\t\"INTERPOLACION DE DIFERENCIAS DE NEWTON P/ 5 PTOS.\"");
    System.out.println("Valor a interpolar: ");
    x=lee();
    System.out.println("Dame los 5 pares de puntos");
    for(i=0;i<5;i++){
        System.out.println("Dame x "+i);
        a[i][0]=lee();
        System.out.println("Dame f(x) "+i);
        a[i][1]=lee();
        }		
    fx1x0=(a[1][1]-a[0][1])/(a[1][0]-a[0][0]);
    fx2x1=(a[2][1]-a[1][1])/(a[2][0]-a[1][0]);
    fx3x2=(a[3][1]-a[2][1])/(a[3][0]-a[2][0]);
    fx4x3=(a[4][1]-a[3][1])/(a[4][0]-a[3][0]);
    fx2x1x0=(fx2x1-fx1x0)/(a[2][0]-a[0][0]);
    fx3x2x1=(fx3x2-fx2x1)/(a[3][0]-a[1][0]);
    fx4x3x2=(fx4x3-fx3x2)/(a[4][0]-a[2][0]);
    fx3x2x1x0=(fx3x2x1-fx2x1x0)/(a[3][0]-a[0][0]);
    fx4x3x2x1=(fx4x3x2-fx3x2x1)/(a[3][0]-a[0][0]);
    fx4x3x2x1x0=(fx4x3x2x1-fx3x2x1x0)/(a[4][0]-a[0][0]);
    y=a[0][1]+fx1x0*(x-a[0][0])+fx2x1x0*(x-a[0][0])*(x-a[1][0])+fx3x2x1x0*(x-a[0][0])*(x-a[1][0])*(x-a[2][0])+fx4x3x2x1x0*(x-a[0][0])*(x-a[1][0])*(x-a[2][0])*(x-a[3][0]);
          System.out.println("f(x) en ese punto es: "+y);
    }


  //(8) Interpolacion Lagrange
  public void MetodoInterLagrange(){
    int n,i;
    double x,y;
    double a[][] = new double [4][2];
    System.out.println("\t\t\t\"METODO DE INTERPOLACION LAGRANGE  2-4 PTOS.\"");
    do{
    System.out.println("Dame el numero de puntos");
    n=leeint();	
    }while(n<2 || n>4);
    System.out.println("Dame los  pares de puntos");
    for(i=0;i<n;i++){
        System.out.println("Dame x "+i);
        a[i][0]=lee();
        System.out.println("Dame f(x) "+i);
        a[i][1]=lee();
        }
    System.out.println("Dame el valor a interpolar ");
    x=lee();
    switch(n){
      case 2:
      y=(((((x-a[1][0])*a[0][1])/(a[0][0]-a[1][0]))+(((x-a[0][0])*a[1][1])/(a[1][0]-a[0][0]))));
      System.out.println("f(x) en ese punto es: "+y);
      break;
      case 3:
      y=((x-a[1][0])*(x-a[2][0])*a[0][1])/((a[0][0]-a[1][0])*(a[0][0]-a[2][0]))+((x-a[0][0])*(x-a[2][0])*a[1][1])/((a[1][0]-a[0][0])*(a[1][0]-a[2][0]))+((x-a[1][0])*((x-a[0][0])*a[2][1])/((a[2][0]-a[0][0])*(a[2][0]-a[1][0])));
      System.out.println("f(x) en ese punto es: "+y);
      break;
      case 4:
      y=((x-a[1][0])*(x-a[3][0])*(x-a[2][0])*a[0][1])/((a[0][0]-a[1][0])*(a[0][0]-a[2][0])*(a[0][0]-a[3][0]))+((x-a[0][0])*(x-a[2][0])*(x-a[3][0])*a[1][1])/((a[1][0]-a[0][0])*(a[1][0]-a[2][0])*(a[1][0]-a[3][0]))+((x-a[0][0])*(x-a[1][0])*((x-a[3][0])*a[2][1])/((a[2][0]-a[0][0])*(a[2][0]-a[1][0])*(a[2][0]-a[3][0]))+((x-a[0][0])*(x-a[1][0])*((x-a[2][0])*a[
3][1])/((a[3][0]-a[0][0])*(a[3][0]-a[1][0])*(a[3][0]-a[2][0]))));
      System.out.println("f(x) en ese punto es: "+y);
      break;
      default:
      System.out.println("INVALIDO");
      break;	
    }
  }

  
  //para leer desde teclado
  public double lee(){
    double num;
    try{
      InputStreamReader isr = new InputStreamReader (System.in);
      BufferedReader br = new BufferedReader(isr);
      String sdato;
      sdato = br.readLine();
      num = Double.parseDouble(sdato);
    }
    catch(IOException ioe){
      num=0.0;
    }
    return num;
    }

  //para  leer un entero
  public int leeint(){
    int num;
    try{
      InputStreamReader isr = new InputStreamReader (System.in);
      BufferedReader br = new BufferedReader(isr);
      String sdato;
      sdato = br.readLine();
      num = Integer.parseInt(sdato);
    }
    catch(IOException ioe){
      num=0;
    }
    return num;
    }
  
  
  //para salir del programa
  public int Fuera(){
    int sal; 
    System.out.println("\n\n\nSI DESEAS OTRO METODO PRESIONA [1]");
    sal=leeint();
    return sal;
    }




  //despliega menu
  public void menu(){
    int a;
    int p;
    do{
    do{
    System.out.println("\n\n\t\t\tMETODOS NUMERICOS\n\n");
    System.out.println("\t1.-Biseccion\n\t2.-Newton-Raphson\n\t3.-Gauss\n\t4.-Gauss-Seidel\n\t5.-Gauss-Jordan\n\t6.-LU\n\t7.-Interpolacion Newton\n\t8.-Interpolacion Lagrange");
    System.out.println("\n\nEscoja el numero del metodo que desea usar:");
    a=leeint();
    }while(a<1 || a>8);
    switch(a){
      case 1:
      MetodoBiseccion();  //manda a llamara a cada uno de los metodos
      p=Fuera();
      break;
      case 2:
      MetodoNewtonRaphson();
      p=Fuera();
      break;
      case 3:
      MetodoGauss();
      p=Fuera();
      break;
      case 4:
      MetodoGaussSeidel();
      p=Fuera();
      break;
      case 5:
      MetodoGaussJordan();
      p=Fuera();
      break;
      case 6:
      MetodoLu();
      p=Fuera();
      break;
      case 7:
      MetodoInterNewton();
      p=Fuera();
      break;
      case 8:
      MetodoInterLagrange();
      p=Fuera();
      break;
      default:
      System.out.println("Opcion incorrecta");
      p=1;
      break;
      }
    }while(p==1);
    }

}