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


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


  • ANNUAIRE
  • [EN] PHPFreaks
    PHPFreaks est un site dédié à l'apprentissage et l'enseignement du PHP. Ici vous trouver...
    Programmation
    [EN] osix
    Site de challenge qui utilise un système de level on chaque épreuve doit être réussie avant d'accéd...
    Challenges
    [EN] Net Force
    Javascript: 9, Java Applets: 6, Cryptography: 16, Exploits: 7, Cracking: 14, Programming: 13, Internet: 15, Steganograph...
    Challenges
    [EN] HackQuest
    Logic: 12, JavaScript: 14, Applet: 6, CrackIt: 13, Crypto: 11, Internet: 3, Exploit: 7, Stegano: 12, Flash: 1, Programmi...
    Challenges
    [EN] Astalavista
    Un site aux ressources incontournable depuis plusieurs années, Astalavista est réellement devenue un cl...
    Hacking
    [FR] Secuser
    Actualité de la sécurité informatique, fiches virus et hoax, alertes par email, antivirus gratui...
    Hacking
    [EN] Security Traps
    Site de challenge qui prétend être construit non pas dans le but de parfaire vos connaissances, mais plutôt dan...
    Challenges

  • 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,182 29-05-2013, 07h37
Dernier message: thxer
  [C] Patcher son premier crackme linux (for loob && level -- ) InstinctHack 6 2,122 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,659 07-04-2013, 20h24
Dernier message: Kiwazaru
  [C] The advanced linux programming Junky 2 1,097 26-03-2013, 18h29
Dernier message: sakiir
  [NASM] Création d'un thread sous Linux uniquement avec les syscalls supersnail 2 1,255 04-03-2013, 23h36
Dernier message: Dobry
  [C-Question] Memory Editing Sous linux ? sakiir 4 1,377 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