Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Kester YEAH !!!
Gość
|
Wysłany: Czw 23:04, 03 Sty 2008 Temat postu: Mądry Post 2 |
|
|
Witam!
Widząc to żałosne forum postanowiłem mu pomóc. Postanowiłem napisać artykuł pokazujący jak stworzyć program w C++, który wyciąga hasło do serwera z pliku "config.dat". A więc zaczynamy!
1. Potrzebny nam będzie kompilator, czyli program przekładający kod zrozumiały dla człowieka na kod zrozumiały dla komputera. Jest to np. Dev-Cpp i C++ Builder.
2. Mamy kompilator, więc tworzymy nowy dokument tekstowy i zmieniamy jego rozszerzenie z ".txt" na ".cpp".
3. Otwieramy dokument i zaczynamy pisanie.
4. Piszemy:
Kod: |
int main()
{
return 0;
} |
Widzimy tu funkcję main(), którą musi zawierać każdy program C++. Między nawiasami klamrowymi będą znajdować się instrukcje/polecenia mówiące o tym, co nasz prog będzie robił.
5. Kompilator zawiera pliki. w których są różne dodatki. Będziemy potrzebować iostream.h (m. in. wypisywanie tekstu) i fstream.h (obsługa plików). Dodajemy je do projektu w ten sposób: "#include(ang. dołącz) <nazwa pliku>".
Kod: |
#include <fstream.h>
#include <iostream.h>
int main()
{
return 0;
} |
6. Według informacji z tematu "Ręczne łamanie hasła GG" z działu Komunikatory wiemy, że po frazie "Password 2" jest hasło, zatem mówimy o tym kompilatorowi. Umieścimy zwrot w tablicy, w takim czymś co przechowywuje wiele danych, w naszym przypadku znaki.
Kod: |
char fraza[11] = {'P','a','s','s','w','o','r','d','2',' ',''}; |
7. Otwieramy plik config.dat do odczytu:
Kod: |
ifstream plik("config.dat"); |
8. Musimy pobierać dane, póki nie znajdziemy "frazy". Algorytm wygląda tak:
Kod: |
sprawdzamy czy sprawdzaliśmy ostatni elemet frazy ---> pobierz znak z pliku ---> sprawdź czy jest on częścią "frazy" ---> jeśli TAK to sprawdzamy następny element, jeśli NIE to sprawdzamy od początku |
Kod: |
int i = 0; //tworzymy zmienną, która będzie przechowywała liczby, czyli który element
int n; //tablicy sprawdzamy
while(i != 11) //sprawdzamy czy sprawdzaliśmy ostatni element frazy, jeśli NIE wykonujemy
//instrukcje między nawiasami klamrowymi
{
plik.get(znak); //pobierz znak z pliku
if(znak == fraza[i]) //sprawdź czy jest on częścią "frazy"
i++; //jeśli TAK to sprawdzamy następny element
else
{
if(i == 9)i++; // 9. element to spacja sprawdzanie nie odbywa się prawidlowo :[ od razu
//sprawdzamy kolejny element
else {i = 0;} //jeśli NIE to sprawdzamy od początku
}
} |
fraza[9] - ta instrukcja odwołuje do 9-tego elementu tablicy
fraza[i] - ta instrukcja odwołuje do i-tego elementu tablicy
i++ - jest to po prostu zwiększenie wartości zmiennej i o 1 (C++ to rozszerzenie C)
9. Wiemy, gdzie jest hasło, więc możemy pobierać znaki i rozszyfrowywać je.
Kod: |
char haslo[50]; //tworzymy tablicę znaków zawierającą hasło
int n; //tworzymy zmienną, która będzie przechowywała liczby, czyli któremu elementowi
int n; //hasla przypisac rozszyfrowany znak
while(znak != ' ') //jeżeli znak jest różny od spacji wykonuj instrukcję poniżej
{
plik.get(znak); //pobierz znak
switch(znak) //switch sprawdza "masowo" wartość znaku
{
case 'A': //jeżeli znak to 'A'
{
plik.get(znak); //pobierz następny znak
if(znak == 'C')haslo[n] = ' '; //jeżeli następny znak to 'C' to n-ty element hasła to
//spacja (' ')
if(znak == 'H')haslo[n] = 'p';
if(znak == 'F')haslo[n] = 'P';
break; //przerwij działanie switcha
}
n++; //pobieraj dane do następnego elementu tablicy
}
} |
Oczywiście to nie jest cały kod pętli rozszyfrowującej hasło na górze to tylko przykład. Całośc to:
Kod: |
int n = 0;
while(znak != ' ')
{
plik.get(znak);
switch(znak)
{
case 'A':
{
plik.get(znak);
if(znak == 'C')haslo[n] = ' ';
if(znak == 'H')haslo[n] = 'p';
if(znak == 'F')haslo[n] = 'P';
break;
}
case 'B':
{
plik.get(znak);
if(znak == 'E')haslo[n] = 'A';
if(znak == 'G')haslo[n] = 'a';
if(znak == 'D')haslo[n] = '1';
if(znak == 'H')haslo[n] = 'q';
if(znak == 'F')haslo[n] = 'Q';
break;
}
case 'C':
{
plik.get(znak);
if(znak == 'E')haslo[n] = 'B';
if(znak == 'G')haslo[n] = 'b';
if(znak == 'D')haslo[n] = '2';
if(znak == 'H')haslo[n] = 'r';
if(znak == 'F')haslo[n] = 'R';
break;
}
case 'D':
{
plik.get(znak);
if(znak == 'E')haslo[n] = 'C';
if(znak == 'G')haslo[n] = 'c';
if(znak == 'D')haslo[n] = '3';
if(znak == 'H')haslo[n] = 's';
if(znak == 'F')haslo[n] = 'S';
break;
}
case 'E':
{
plik.get(znak);
if(znak == 'E')haslo[n] = 'D';
if(znak == 'G')haslo[n] = 'd';
if(znak == 'D')haslo[n] = '4';
if(znak == 'H')haslo[n] = 't';
if(znak == 'F')haslo[n] = 'T';
break;
}
case 'F':
{
plik.get(znak);
if(znak == 'E')haslo[n] = 'E';
if(znak == 'G')haslo[n] = 'e';
if(znak == 'D')haslo[n] = '5';
if(znak == 'H')haslo[n] = 'u';
if(znak == 'F')haslo[n] = 'U';
break;
}
case 'G':
{
plik.get(znak);
if(znak == 'E')haslo[n] = 'F';
if(znak == 'G')haslo[n] = 'f';
if(znak == 'D')haslo[n] = '6';
if(znak == 'H')haslo[n] = 'v';
if(znak == 'F')haslo[n] = 'V';
break;
}
case 'H':
{
plik.get(znak);
if(znak == 'E')haslo[n] = 'G';
if(znak == 'G')haslo[n] = 'g';
if(znak == 'D')haslo[n] = '7';
if(znak == 'H')haslo[n] = 'w';
if(znak == 'F')haslo[n] = 'W';
break;
}
case 'I':
{
plik.get(znak);
if(znak == 'E')haslo[n] = 'H';
if(znak == 'G')haslo[n] = 'h';
if(znak == 'D')haslo[n] = '8';
if(znak == 'H')haslo[n] = 'x';
if(znak == 'F')haslo[n] = 'X';
break;
}
case 'J':
{
plik.get(znak);
if(znak == 'E')haslo[n] = 'I';
if(znak == 'G')haslo[n] = 'i';
if(znak == 'D')haslo[n] = '9';
if(znak == 'H')haslo[n] = 'y';
if(znak == 'F')haslo[n] = 'Y';
break;
}
case 'K':
{
plik.get(znak);
if(znak == 'E')haslo[n] = 'J';
if(znak == 'G')haslo[n] = 'j';
if(znak == 'H')haslo[n] = 'z';
if(znak == 'F')haslo[n] = 'Z';
break;
}
case 'L':
{
plik.get(znak);
if(znak == 'E')haslo[n] = 'K';
if(znak == 'G')haslo[n] = 'k';
break;
}
case 'M':
{
plik.get(znak);
if(znak == 'E')haslo[n] = 'L';
if(znak == 'G')haslo[n] = 'l';
break;
}
case 'N':
{
plik.get(znak);
if(znak == 'E')haslo[n] = 'M';
if(znak == 'G')haslo[n] = 'm';
break;
}
case 'O':
{
plik.get(znak);
if(znak == 'E')haslo[n] = 'N';
if(znak == 'G')haslo[n] = 'n';
break;
}
case 'P':
{
plik.get(znak);
if(znak == 'E')haslo[n] = 'O';
if(znak == 'G')haslo[n] = 'o';
break;
case ' ': break;
}
}
n++;
} |
10. Teraz wystarczy tylko wypisać hasło na ekranie:
Kod: |
std::cout << "Haslo:" << std::endl; //cout wyświetla dane na ekranie
std::cout << haslo << std::endl; //endl przechodzi do nowej linijki
int DoZatrzymania; // tworzymy zmienną przechowywującą liczby
cin >> DoZatrzymania; //cin służy do pobierania danych, w ten sposób zatrzymujemy program, by oglądnąć
//dane |
Koniec :wink:
Pojawią się dodatki
Pzdr.
Ostatnio zmieniony przez Kester YEAH !!! dnia Pią 20:35, 04 Sty 2008, w całości zmieniany 3 razy
|
|
Powrót do góry |
|
|
|
|
KAMILOS
Administrator
Dołączył: 30 Gru 2007
Posty: 37
Przeczytał: 0 tematów
Pomógł: 11 razy Ostrzeżeń: 0/5 Skąd: Wrocław
|
Wysłany: Pią 21:50, 04 Sty 2008 Temat postu: |
|
|
Nie nazywajcie swoich postów jako mądre tylko o czym są, bo będę je kasował!
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Kester YEAH !!!
Gość
|
Wysłany: Pią 22:15, 04 Sty 2008 Temat postu: |
|
|
OK... ale przyznaj, że ten temat wyróżnia się wśród innych (jeśli czytales)
usuń tamte tematy... pisałem jako gośc i nie mogłem edytować, więc pisałem nowy poprawiony temat
dostałem za ten temat ostrzeżenie od SOLDIER [MATI], uznaje on ten post za szkodliwy mógłbyś coś z tym zrobić?
|
|
Powrót do góry |
|
|
KAMILOS
Administrator
Dołączył: 30 Gru 2007
Posty: 37
Przeczytał: 0 tematów
Pomógł: 11 razy Ostrzeżeń: 0/5 Skąd: Wrocław
|
Wysłany: Pią 22:28, 04 Sty 2008 Temat postu: |
|
|
Już zdjąłem ostrzeżenie
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
SOLDIER[MATI]
Członek
Dołączył: 31 Gru 2007
Posty: 31
Przeczytał: 0 tematów
Pomógł: 4 razy Ostrzeżeń: 0/5 Skąd: Wroclaw
|
Wysłany: Pią 22:42, 04 Sty 2008 Temat postu: |
|
|
*** ******
***
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Kester YEAH !!!
Gość
|
Wysłany: Pią 22:45, 04 Sty 2008 Temat postu: |
|
|
LOL!
ten noob znów dał mi ostrzeżenie !
wywal go z forum ! tylko robi tu bałagan !
|
|
Powrót do góry |
|
|
SOLDIER[MATI]
Członek
Dołączył: 31 Gru 2007
Posty: 31
Przeczytał: 0 tematów
Pomógł: 4 razy Ostrzeżeń: 0/5 Skąd: Wroclaw
|
Wysłany: Pią 22:45, 04 Sty 2008 Temat postu: |
|
|
[/quote]Witam!
Widząc to żałosne forum postanowiłem mu pomóc. Postanowiłem napisać artykuł pokazujący jak stworzyć program w C++, który wyciąga hasło do serwera z pliku "config.dat". A więc zaczynamy!
!HAKER!
Post został pochwalony 0 razy
Ostatnio zmieniony przez SOLDIER[MATI] dnia Pią 22:47, 04 Sty 2008, w całości zmieniany 2 razy
|
|
Powrót do góry |
|
|
Kester YEAH !!!
Gość
|
Wysłany: Pią 22:46, 04 Sty 2008 Temat postu: |
|
|
no i? co ci nie pasi ?
Ostatnio zmieniony przez Kester YEAH !!! dnia Pią 22:46, 04 Sty 2008, w całości zmieniany 1 raz
|
|
Powrót do góry |
|
|
Kester YEAH !!!
Gość
|
Wysłany: Pią 22:57, 04 Sty 2008 Temat postu: |
|
|
SOLDIER[MATI] napisał: |
!HAKER! |
so? ale ty to przecież wiesz więc też chyba jestes...
po za tym to nie tylko ma slużyć do szkodzenia...
np. jak zapomnisz hasło to możesz sobie przypomnieć
|
|
Powrót do góry |
|
|
SOLDIER[MATI]
Członek
Dołączył: 31 Gru 2007
Posty: 31
Przeczytał: 0 tematów
Pomógł: 4 razy Ostrzeżeń: 0/5 Skąd: Wroclaw
|
Wysłany: Sob 14:28, 05 Sty 2008 Temat postu: |
|
|
do tego sa pragramy uap passtool itd.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Gość
|
Wysłany: Sob 18:38, 05 Sty 2008 Temat postu: |
|
|
nazywam ten program na górze LamaczGG
i uzupełnam twoją wypowiedź:
do tego sa pragramy uap, passtool, LamaczGG itd.
|
|
Powrót do góry |
|
|
KAMILOS
Administrator
Dołączył: 30 Gru 2007
Posty: 37
Przeczytał: 0 tematów
Pomógł: 11 razy Ostrzeżeń: 0/5 Skąd: Wrocław
|
Wysłany: Sob 19:16, 05 Sty 2008 Temat postu: |
|
|
No i się dogadaliśmy!
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Gość
|
Wysłany: Sob 20:19, 05 Sty 2008 Temat postu: |
|
|
no nie za bardzo
mam bana i ostrzężenie!
|
|
Powrót do góry |
|
|
|