Author Archive

C++, Source Code, Windows

Intercettare tasti in c++

Per intercettare la pressione dei tasti in c++, è sufficente “agganciarsi” agli eventi del sistema operativo tramite il metodo SetWindowsHookEx delle API di windows:

HHOOK SetWindowsHookEx(
    int idHook,
    HOOKPROC lpfn,
    HINSTANCE hMod,
    DWORD dwThreadId
);

Il parametro hook specifica a che tipo di eventi bisogna agganciarsi, il secondo parametro invece è il nome alla funzione da chiamare quando viene generato l’evento. Per ulteriori dettagli consultare la relativa voce su MSDN.

g_hKeyboardHook = SetWindowsHookEx (WH_KEYBOARD_LL,
	LowLevelKeyboardProc,
	hInstance, 0);

Nel nostro caso come hook settiamo la costante WH_KEYBOARD_LL per intercettare gli eventi generati dalla tastiera. Il metodo LowLevelKeyboardProc sarà quindi qualcosa del genere:

// hook per la tastiera
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
	PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT)lParam;
	// p->vkCode contiene il codice del tasto premuto

	if ((nCode == HC_ACTION) && (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN))
	{
		// è stato premuto il tasto
	}

	if ((nCode == HC_ACTION) && (wParam == WM_KEYUP || wParam == WM_SYSKEYUP))
 	{
 		// è stato rilasciato il tasto
 	}

	return CallNextHookEx(0,nCode,wParam,lParam);
}

A cosa può servire?
Nel mio caso l’ho usato per registrare tutte le pressioni della tastiera e del mouse per salvare una macro con le azioni eseguite, per poi farle rieseguire con lo stesso tempismo da un altro programmino (per poter svolgere azioni ripetitive). Tra l’altro se a qualcuno interessa un programma del genere, e mi arrivano abbastanza feedback, mi sa che pubblicherò i sorgenti e i binari. :)
Un’altra idea interessantemalvagia è quella di costruire dei keylogger per salvare tutto ciò che l’utente scrive.

Download C++ Intercept keyboard events. Downloads: 53

Quiz

Coders4fun Quiz #4

Main.java

public class Main {

  public static void main(String[] args) {
    System.out.print(Quiz.GetMagicNumber());
  }

}

Quiz.java

public class Quiz {

  static int magicNumber = 3;

  public static int GetMagicNumber()
  {
    return magicNumber;
  }
}

Che cosa bisogna aggiungere nella classe Quiz per far stampare 5 invece di 3?

Quiz

Coders4fun Quiz #3: Compilerà?

Secondo voi questo pezzo di codice compila o no?? Perché??

foo.h

class Foo
{
	public:
		Foo();

		void fooo();
	private:
		int i;
		char c;
		short s;
	protected:
		char b;
		char e;

		char getFoo();
}

foo.cpp

#include "foo.h"

Foo::Foo()
{
	for (int i = 0; ; ) { }
}

void Foo::fooo()
{
while(true)
{
	c = 'f';
}
}

char getFoo()
{;
	return c + 2;
}

Funny, Windows

Protezione da programmi pericolosi

Anche Windows XP si rende conto da solo che il maggiore pericolo alla sicurezza del sistema operativo è Esplora Risorse stesso :P Protezione programma

C, Source Code, USBAutoStart

Prima versione di USB AutoStart

USB AutoStart

UsbAutoStart è un utility per Windows che permette di eseguire l’autoplay sulle penne usb o sui drive esterni. Windows per questioni di sicurezza infatti impedisce di eseguire l’autoplay negli hard disk rimovibili, ma attraverso questo programma si può bypassare questa impostazione e far sì che venga fatto partire un programma presente nella penna al collegamento di un hard disk esterno.
Inoltre, quando si cerca di rimuovere il dispositivo esterno con la “rimozione sicura dell’hardware”, il programma chiuderà tutti i programmi aperti nel computer che si trovano nella penna USB:

Screenshots:

Rilevamento del collegamento di una periferica usb:

Usb Autostart Periferica collegata

Opzioni di usb autostart:

Usb Autostart Opzioni

Il progetto è hostato su sourceforge, ed è rilasciato sotto la licenza GPL, quindi è completamente open source! :)

Download Usb Autostart

Quiz

Coders4fun Quiz #2

Non è molto inerente la programmazione ma è molto divertente. Vediamo chi riesce a indovinare per primo la soluzione:

C’é un pullman con 7 ragazze.
Ogni ragazza ha 7 zaini.
In ogni zaino ci sono 7 gatti grandi.
Ogni gatto grande ha 7 gatti piccoli.
Ogni gatto ha 4 gambe.

Quante gambe ci sono nel pullman?

P.S.
Il quiz me l’hanno mandato da msn, quindi probabilmente è vecchio e si trova dappertutto su internet. Mi sembrava simpatico e quindi lo posto. Se non vi piace, andatevene a www.vafanculu.org!

C, Quiz

Coders4fun Quiz #1

Cosa stamperà il seguente codice in c++?

#include <iostream>

int main()
{
	int i = 0;
	for (i = i == 0; i < 9; i = 1 + i * 2);
		std::cout<<i<<std::endl;
	return 0;
}

Si prega di non imbrogliare e di rispondere senza l’aiuto di nessun compilatore! :)

P.S.
Ovviamente l’esempio è compilabile!

News, Site

Viva firefox! :D

Questo post è dedicato a tutti gli utenti non-ie di coders4fun!
firefox batte ie

Grazie a tutti voi per questo importante risultato!!!

News, Source Code, Wiki-Dashboard, Wordpress, php

Wordpress Plugin: Wiki-Dashboard 0.1

Wiki-Dashboard è un plugin per Wordpress che permette di avere uno spazio condiviso tra tutti gli autori di un blog per potersi scambiare delle note a ‘mo di wiki, ma può risultare utile anche nei blog mono-autore, permettendo di avere una sorta di blocco note dove si possono prendere appunti.

Funzionalità del plugin:

  • Testo dove poter scrivere le note in una sottopagina della bacheca
  • Il testo è condiviso tra tutti gli autori del blog, e tutti possono modificarlo
  • Parser bbCode per la formattazione del testo
  • Supporto per l’internazionalizzazione

Screenshots:
Wiki-Dashboard mostra il testo:

Wiki-Dashboard View

Wiki-Dashboard durante l’editing del testo:
Wiki-Dashboard Edit
Continue Reading »

MySQL, Source Code, Web, php

Interfaccia alla classe MySQLDump per il backup

La classe MySQLDump è stata aggiornata a una nuova versione e questo articolo contiene informazioni obsolete. Per informazioni sulla nuova versione controllare l’articolo sulla nuova versione

Dopo il successo dell’articolo Backup di un database mysql da php, ho deciso di scrivere un piccolo post su un file che può ritornare utile per scaricare il backup del db di un sito o di un blog wordpress direttamente dal browser.
Per usare lo script, basta semplicemente scaricarlo e modificare le prime linee, dove è contenuta la configurazione:

// Configurazione del DB
$server = "IP del server (localhost dovrebbe andare bene nella maggior parte dei casi=";
$username = "Nome utente del db";
$password = "Password del db";
$dbToDump = "Nome del db di cui fare il dump";
// password per accedere alla pagina php. Ricordati di cambiare la password di default!!!
$backupPassword = "UltraSecretKeyThatYouMUSTInsertHere";
// nome del file in cui salvare il backup
$filename = "backup.sql.gz";

Dopo ciò, si può uploadare il file nel server, nella stessa cartella dove è presente la classe MySQLDump.
Per accedere allo script bisogna specificare due parametri: la password per accedere allo script (pass), e un altro parametro (t) che se è 1 separerà le SQL insert ogni 100 righe.
Per esempio, se si è uploadato il file nella directory principale del sito, basta scrivere nella barra degli indirizzi del browser:

http://www.iltuosito.it/backup.php?pass=UltraSecretKeyThatYouMUSTInsertHere&t=1

…e il browser aprirà la finestra di dialogo per scaricare il file con il backup del db!

Download MySqlDump Interface.php. Downloads: 415

Per ulteriori informazioni sulla classe MySQLDump, leggere l’articolo originale, o scaricare il sorgente da qui:

Download MySQLDump. Downloads: 1938

Next »