• STATISTIQUES
  • Il y a eu un total de 2 membres et 13814 visiteurs sur le site dans les dernières 24h pour un total de 13 816 personnes!


    Membres: 2 433
    Discussions: 3 585
    Messages: 32 832
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] w3challs
    Ce site propose différents types de défis informatiques: piratage, craquage, cryptographie, stég...
    Hacking
    [FR] Cyber-Hacker
    CH - Cyber Hacker est un jeu par navigateur de simulation de hack, programmez et envoyez vos virus et piratez les aut...
    Hacking
    [EN] Big-Daddy
    Big-Daddy est site internet communautaire avec un effectif diversifié, y compris des artistes, des programmeur...
    Hacking
    [EN] Lost-chall
    Site de challenge présenté sous la forme de différente saison. Pour passer une saison vous devez avoir accumul...
    Challenges
    [EN] phrack
    Lot's of stuff !
    Hacking
    [FR] Zmaster
    Articles sur l'informatique, le hacking, le P2P, les divx, les astuces windows XP, les GSM, Emule, la cryptograph...
    Hacking
    [FR] Zenk-Security
    La communauté zenk-security a pour objet principal la sécurité informatique, nous sommes des tou...
    Hacking

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[C++] Spammeur linux
24-02-2012, 19h48 (Modification du message : 24-02-2012, 19h49 par Dobry.)
Message : #1
Dobry Hors ligne
Tueur de lamouz
*



Messages : 206
Sujets : 25
Points: 73
Inscription : Aug 2011
[C++] Spammeur linux
Bonjour, alors tout d'abord, je tiens à préciser que ce programme ne m'a servit qu'a découvrir la libX sous linux, en espérant que vous ne l'utiliserez uniquement dans ce but.
Si vous avez des questions sur le script, n'hésitez pas.
Il se compile de la façon suivante :
g++ script.cpp -o script -lX11 -lXtst

Code PHP :
#include <X11/extensions/XTest.h>
#include <X11/Xlib.h>
#include <X11/keysym.h>
#include <X11/Xresource.h>
#include <X11/Xatom.h>
#include <iostream>
#include <string>

Window *listWin (Display *dispunsigned long *len);
char *nameWin (Display *dispWindow win);
void sendKey(Displaydispchar letter);

int main(int argccharargv[]){
    
int icounterselectWindowcurrentState;
    
unsigned long len;
    
char *name;
    
XKeyEvent esend;
    
Display *disp XOpenDisplay(NULL);
    
Window *list, currentWindow;
    
std::string data;
    
    
XGetInputFocus(disp, &currentWindow, &currentState); // Getting the current focused window
        
list = (Window*)listWin(disp,&len); // Getting all the windows
    
    
for (i=0;i<(int)len;i++) {
        
name nameWin(disp,list[i]);
        
std::cout << << " : " << name << std::endl// Display window's name
        
}
        
        
std::cout << "Wich window do you want to use ?" << std::endl;
        
std::cin>>selectWindow;
    if(
selectWindow<|| selectWindow >i){
        
std::cout << "Invalid window" << std::endl;
        return 
1;
    }
    
std::cout << "Data to send ?" << std::endl;
    
std::cin.ignore(); 
    
std::getline(std::cin,data);
    
    
std::cout << "Number of sending : " << std::endl;
    
std::cin >> counter;
    
    for(
counter;counter 0counter--){
      
XSetInputFocus(disp, list[selectWindow],RevertToPointerRoot,0);
      for(
i=0;i<data.size();i++)
        
sendKey(dispdata[i]); // Send a char to the window
      
      
sleep(1); // Sleep is needed, otherwise, the return caracter is not send.
      
sendKey(disp'\n');
    }
    
    
XSetInputFocus(dispcurrentWindowRevertToPointerRoot0); // Put the old window on focus
      
XFlush(disp);
    return 
0;
}

void sendKey(Displaydispchar letter){ // Send a char to the selected window
    
KeySym key;
    switch(
letter){ // this switch is requiered to handle all the keyboards, you can add case: if you need
        
case '1'key XK_1; break;
        case 
'2'key XK_2; break;
        case 
'3'key XK_3; break;
        case 
'4'key XK_4; break;
        case 
'5'key XK_5; break;
        case 
'6'key XK_6; break;
        case 
'7'key XK_7; break;
        case 
'8'key XK_8; break;
        case 
'9'key XK_9; break;
        case 
'0'key XK_0; break;

        case 
'a'key XK_a; break;
        case 
'b'key XK_b; break;
        case 
'c'key XK_c; break;
        case 
'd'key XK_d; break;
        case 
'e'key XK_e; break;
        case 
'f'key XK_f; break;
        case 
'g'key XK_g; break;
        case 
'h'key XK_h; break;
        case 
'i'key XK_i; break;
        case 
'j'key XK_j; break;
        case 
'k'key XK_k; break;
        case 
'l'key XK_l; break;
        case 
'm'key XK_m; break;
        case 
'n'key XK_n; break;
        case 
'o'key XK_o; break;
        case 
'p'key XK_p; break;
        case 
'q'key XK_q; break;
        case 
'r'key XK_r; break;
        case 
's'key XK_s; break;
        case 
't'key XK_t; break;
        case 
'u'key XK_u; break;
        case 
'v'key XK_v; break;
        case 
'w'key XK_w; break;
        case 
'x'key XK_x; break;
        case 
'y'key XK_y; break;
        case 
'z'key XK_z; break;


        case 
'A'key XK_a; break;
        case 
'B'key XK_b; break;
        case 
'C'key XK_c; break;
        case 
'D'key XK_d; break;
        case 
'E'key XK_e; break;
        case 
'F'key XK_f; break;
        case 
'G'key XK_g; break;
        case 
'H'key XK_h; break;
        case 
'I'key XK_i; break;
        case 
'J'key XK_j; break;
        case 
'K'key XK_k; break;
        case 
'L'key XK_l; break;
        case 
'M'key XK_m; break;
        case 
'N'key XK_n; break;
        case 
'O'key XK_o; break;
        case 
'P'key XK_p; break;
        case 
'Q'key XK_q; break;
        case 
'R'key XK_r; break;
        case 
'S'key XK_s; break;
        case 
'T'key XK_t; break;
        case 
'U'key XK_u; break;
        case 
'V'key XK_v; break;
        case 
'W'key XK_w; break;
        case 
'X'key XK_x; break;
        case 
'Y'key XK_y; break;
        case 
'Z'key XK_z; break;

        case 
'é'key XK_2; break;
        case 
'è'key XK_7; break;

        case 
'!'key XK_exclam; break;
        case 
' 'key XK_space; break;
        case 
'\n'key XK_Return; break;

        default : 
key XK_space; break;
    }
     
    
XTestGrabControl (dispTrue);
    
XTestFakeKeyEvent (dispXKeysymToKeycode(dispkey), True0);  
    
XTestFakeKeyEvent (dispXKeysymToKeycode(dispkey), False0);
    
XSync (dispFalse);  
    
XTestGrabControl (dispFalse);  
}

Window *listWin (Display *dispunsigned long *len) { // List all the application running on X
    
Atom prop XInternAtom(disp,"_NET_CLIENT_LIST",False), type;
    
int form;
    
unsigned long remain;
    
unsigned char *list;
 
    if (
XGetWindowProperty(disp,XDefaultRootWindow(disp),prop,0,1024,False,XA_WINDOW,
                &
type,&form,len,&remain,&list) != Success) {
    return 
0;
    }
     
    return (
Window*)list;
}
char *nameWin (Display *dispWindow win) { // Return a window name
    
Atom prop XInternAtom(disp,"WM_NAME",False), type;
    
int form;
    
unsigned long remainlen;
    
unsigned char *list;
 

    if (
XGetWindowProperty(disp,win,prop,0,1024,False,AnyPropertyType,
                &
type,&form,&len,&remain,&list) != Success) {
        
        return 
NULL;
    }
 
    return (
char*)list;


Petite précision au niveau de l'énorme Switch, très moche, mais bon, je n'ai pas trouvé d'autre moyen 'simple'.
Par défaut, il existe une fonction XStringToKeysym() (http://tronche.com/gui/x/xlib/utilities/...eysym.html), utilisant la représentation QWERTY du clavier malheureusement, il faut tout de même gérer les caractères spéciaux tels que ':' ',' '!', '?' grâce à des conditions, on peut donc arriver à une fonction senKey() qui ressemble à :
Code PHP :
void sendKey(Displaydispchar letter){ // Send a char to the selected window
    
KeySym key;
    
char tamper[2];
    
tamper[1] = '\0';
    if(
letter == '!')
        
key XK_exclam;
    else if(
letter == ' '
    
key XK_space;
    else if(
letter == '\n')
    
key XK_Return;
    else{
        
tamper[0] = letter;
        
key XStringToKeysym(disp,tamper);
    }
    
XTestGrabControl (dispTrue);
    
XTestFakeKeyEvent (dispXKeysymToKeycode(dispkey), True0);  
    
XTestFakeKeyEvent (dispXKeysymToKeycode(dispkey), False0);
    
XSync (dispFalse);  
    
XTestGrabControl (dispFalse);  
}

Cette fonction est loin d’être correcte car si elle rencontre un caractère spécial non attenduc'est le bug assuré xD 
Aestuārium Erudītiōnis

There are only two hard things in Computer Science: cache invalidation, naming things, and off-by-one errors.
+1 (0) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [Ebook-PDF]Programmation Avancée C linux thxer 3 1,177 29-05-2013, 07h37
Dernier message: thxer
  [C] Patcher son premier crackme linux (for loob && level -- ) InstinctHack 6 2,114 05-05-2013, 16h47
Dernier message: fr0g
  [ring0 linux]espionnez ce que fait un utilisateur sur votre pc [à ne pas faire] Creepy_p0ney 5 1,658 07-04-2013, 20h24
Dernier message: Kiwazaru
  [C] The advanced linux programming Junky 2 1,096 26-03-2013, 18h29
Dernier message: sakiir
  [NASM] Création d'un thread sous Linux uniquement avec les syscalls supersnail 2 1,251 04-03-2013, 23h36
Dernier message: Dobry
  [C-Question] Memory Editing Sous linux ? sakiir 4 1,376 24-02-2013, 00h58
Dernier message: sakiir

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut