Ciao amici di hackmix, qualcuno di voi si ricorda questo post di digger?
http://hackmix.altervista.org/Thread-C-s...o-settaggi
Bene, quello che vi voglio proporre oggi, è quasi la stessa cosa, solo con l'aggiunta di internet, ovvero, i settaggi , invece di scriverceli noi direttamente dal programma , li scarichiamo da internet e poi li leggiamo
quindi una cosa tipo questa :
C++ Programming
#include <windows.h>
#include <wininet.h>
#include <iostream>
#include <fstream>
#include <string>
#include <map>
#pragma comment(lib, "wininet.lib")
using namespace std;
typedef map<string, string> settingsMap;
int GETURLPAGE(char *link, char * buffer, int maxsize)
{
HINTERNET hSession;
HINTERNET hURL;
DWORD dwBYTEsRead;
int ok = 0;
buffer[0] = 0;
hSession = InternetOpenA("Microsoft Internet Explorer", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, NULL); // defaults
if (hSession)
{
hURL = InternetOpenUrlA(hSession, link, NULL, 0, 0, 0);
if (hURL)
{
InternetReadFile(hURL, (LPSTR)buffer, (DWORD)maxsize, &dwBYTEsRead);
InternetCloseHandle(hURL);
buffer[dwBYTEsRead] = 0;
ok = (int)dwBYTEsRead;
}
InternetCloseHandle(hSession);
}
return ok;
}
void scrivi_settaggi(const char* filename)
{
char Code[256] = "";
if ( GETURLPAGE("http://tuosito/File.php", Code, 256) == 0)return;
ofstream settings_file(filename);
if (!settings_file.bad())
{
settings_file << Code << endl;
settings_file.close();
}
}
void leggi_settaggi(const char* filename, settingsMap &sets)
{
size_t found;
string line;
string token;
string value;
ifstream settings_file(filename);
while (settings_file.good())
{
getline(settings_file, line);
if (line.length()>0)
{
found = line.find("=");
token = line.substr(0, found);
value = line.substr(found + 1, line.length() - found);
sets[token] = value;
}
}
settings_file.close();
}
int main()
{
const char* filename = "dati.txt";
scrivi_settaggi(filename);
settingsMap settings;
string fString; // Dichiaro una stringa
cout << "Scrivi l'ID : ";
getline(cin, fString);//scrivo l'ID
cout << endl;
leggi_settaggi(filename, settings);//Leggo i settaggi
if ( !fString.empty() && !settings[fString].empty() )// Se la stringa non è vuota e neanche il suo relativo settaggio non è vuoto
cout << "Password " << fString << " = " << settings[fString] << endl;
else
cout << "Errore! L'ID inserito non esiste o non e' stato scritto correttamente" << endl;
system("pause");
return 0;
}
Ok, allora tralasciando GETURLPAGE che l'ho preso da internet e serve solamente ad aprire e leggere il contenuto della pagina, passiamo a scrivi_settaggi,
C++ Programming
void scrivi_settaggi(const char* filename)
{
char Code[256] = "";
if ( GETURLPAGE("http://tuosito/File.php", Code, 256) == 0)return;
ofstream settings_file(filename);
if (!settings_file.bad())
{
settings_file << Code << endl;
settings_file.close();
}
}
nel sorgente di digger , il programma dichiarava delle variabili e le scriveva in un file di testo , qui invece ,noi dichiariamo una variabile, ma il contenuto verrà specificato da questa istruzione :
C++ Programming
if ( GETURLPAGE("http://tuosito/File.php", Code, 256) == 0)return;
che prende il contenuto di questa pagina web : http://tuosito/File.php
e lo da alla variabile Code.
Da qui in poi il programma è come quello di digger, tranne una piccola variazione nel main, che, invece di visualizzare direttamente i settaggi , chiede l'ID , e se l'ID è scritto correttamente il programma ci da il suo relativo settaggio.
quindi :
C++ Programming
string fString; // Dichiaro una stringa che conterrà l'ID
cout << "Scrivi l'ID : ";
getline(cin, fString);//scrivo l'ID
cout << endl;
leggi_settaggi(filename, settings);//Leggo i settaggi
if ( !fString.empty() && !settings[fString].empty() )// Se la stringa che contiene l'ID non è vuota e se anche il suo relativo settaggio non è vuoto
cout << "Password " << fString << " = " << settings[fString] << endl; // Il programma ci da il settaggio
else // altrimenti errore
cout << "Errore! L'ID inserito non esiste o non e' stato scritto correttamente" << endl;