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


    Membres: 2 608
    Discussions: 3 580
    Messages: 32 820
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] Rankk
    Site de challenge construit sur le principe d'une pyramide à 9 level. Level 1: 60,Level 2: 72,Level 3: 68,Lev...
    Challenges
    [FR] Asp-php
    Tutoriaux sur ASP, PHP, ASP.net, XML, SQL, Javascript, HTML, VML - Scripts et ressources pour webmasters - Forums d&#...
    Programmation
    [EN] CS Tutoring Center
    Site de challenge spécialisé dans les challenges de programmation C++ et java cependant, d'autres langages pe...
    Challenges
    [FR] Zmaster
    Articles sur l'informatique, le hacking, le P2P, les divx, les astuces windows XP, les GSM, Emule, la cryptograph...
    Hacking
    [EN] This is legal
    Basic: 10, Realistic: 5, Programming: 1, Bonus: 11, SQL: 2, Encryption: 6, Application: 4, User Contributed: 3
    Challenges
    [FR] Zenk-Security
    La communauté zenk-security a pour objet principal la sécurité informatique, nous sommes des tou...
    Hacking
    [EN] Hack this site
    Basic: 11, Realistic: 17, Application: 18, Programming: 12, Extbasic: 14, Javascript: 7, Stego: 17
    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 176 29-05-2013, 07h37
Dernier message: thxer
  [C] Patcher son premier crackme linux (for loob && level -- ) InstinctHack 6 429 05-05-2013, 16h47
Dernier message: fr0g
  [ring0 linux]espionnez ce que fait un utilisateur sur votre pc [à ne pas faire] Creepy_p0ney 5 287 07-04-2013, 20h24
Dernier message: Kiwazaru
  [C] The advanced linux programming Junky 2 190 26-03-2013, 18h29
Dernier message: sakiir
  [NASM] Création d'un thread sous Linux uniquement avec les syscalls supersnail 2 239 04-03-2013, 23h36
Dernier message: Dobry
  [C-Question] Memory Editing Sous linux ? sakiir 4 201 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