C++ a system() – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C++ a system() – C / C++ – Fórum – Programujte.comC++ a system() – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
Ezechiel0
Newbie
24. 3. 2012   #1
-
0
-

Ahoj,

mam generator slov. Chcem si vyskusat, ako dlho by mi trval brute force na moj zasifrovany subor. Pouzivam Linux (Ubuntu 10.11). Subor som zasifroval pomocou openssl:

echo 4563 | openssl des -in cisty_text -out mesage -pass stdin

-in subor ktory posielam na sifrovanie

-out je zasifrovany subor

-pass stdin - nastavi heslo 4563 (v tomto pripade)

Ked chcem desifrovat pred -in sa da prepinac -d

Program mi vzdy skonci hned na prvom pokuse s chybou Floating point exception a neviem najst chybu. 

Pravdepodobne mi to vzdy spadne na return_code = system(command);

Vopred Dakujem za vsetky rady. 


#include <iostream>
#include <fstream>
#include <sstream>
#include <math.h>
#include <time.h>
#include <pthread.h>
#include <stdlib.h>

#define time_interval 10

using namespace std;

unsigned long word_counter = 0; //pocitadlo vygenerovanych hesiel
char allowed_characters[] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'};  //znaky pre generovanie hesla
int max_password_lenght = 5;
int size_of_allowed_characters = sizeof(allowed_characters) / sizeof(char);

time_t start_time;

pthread_t vlakno1, vlakno2;
int v1, v2;

int return_code;

unsigned long all_possible_passwords_count(){
	unsigned long total_passwords = 0;
	int password_size = max_password_lenght;
	for (int i = password_size; i > 0; i--){
		total_passwords += pow(size_of_allowed_characters, password_size);
		password_size--;
	}
	return total_passwords;
}

void * trace_to_file(void *txt){
	while ((int *)txt){
	ofstream trace;
	trace.open("trace.txt", ios::app);

	unsigned long total = all_possible_passwords_count();
	trace << "Total: " << total << " words" << endl;
	trace << "Used (generated): " << word_counter << " words" << endl;
	trace << "To end: " << total - word_counter << " words" << endl;

	//ziskat cas
	time_t current_time;
	current_time = time(NULL);

	//cas od zaciatku
	trace << "Time from start: " << current_time - start_time << " seconds" << endl;
	unsigned long finish = (total * (current_time - start_time)) / (word_counter);
	trace << "Total time to finish (presumption): " << finish << " seconds" << endl;
	trace << "--------------------------------------------" << endl;

	trace.close();
	sleep(time_interval);
	}
}

void generate_next_word (string word){
	if (word.length() <= max_password_lenght){
		cout << "Test for password: " << word << endl;

		string pass = "echo " + word + " | openssl des -d -in message -out de_mesage -pass stdin";
		const char *command = pass.c_str();

		cout << command << endl;

		return_code = system(command);

		if (return_code == 0){
			cout << "OK password is: " << endl;
			exit(0);
		}
		else if (return_code != 0) {
			word_counter++;
					string new_word;
					for (int i = 0; i < size_of_allowed_characters; i++){
						string add_character;
						add_character = allowed_characters[i];
						new_word = word + add_character;
						generate_next_word(new_word);
					}
		}
	}
}

void * call_start(void *txt){
	for (int i = 0; i < size_of_allowed_characters ; i++){ //-lpthread
		string word;
		word = allowed_characters[i];
		generate_next_word(word);
	}
	exit(0);
}

int main(){
	start_time = time(NULL);
	char pokus1[] = "text";

	v1 = pthread_create( &vlakno1, NULL, &call_start, (void*)&pokus1);
	int param = v1;
	v2 = pthread_create( &vlakno2, NULL, &trace_to_file, (void*)&param);
	pthread_join(vlakno2, NULL);
	//exit(0);
}
Nahlásit jako SPAM
IP: 212.5.205.–
KIIV
~ Moderátor
+43
God of flame
24. 3. 2012   #2
-
0
-

a proc nepouzijes gdb? umi dokonce backtrace vsech threadu... a pri vyvolani vyjimky to samozrejme podrzi stacky dokud to nevypnes

Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV
~ Moderátor
+43
God of flame
24. 3. 2012   #3
-
0
-

   

[New Thread 0xb77e5b70 (LWP 7812)]

Program received signal SIGFPE, Arithmetic exception.
[Switching to Thread 0xb77e5b70 (LWP 7812)]
0x080492b3 in trace_to_file (txt=0xbffff39c) at main.cpp:52
52              unsigned long finish = (total * (current_time - start_time)) / (word_counter);
(gdb) message: No such file or directory
7815:error:02001002:system library:fopen:No such file or directory:bss_file.c:356:fopen('message','r')
7815:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:358:
Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV
~ Moderátor
+43
God of flame
24. 3. 2012   #4
-
+1
-
Zajímavé

noo nezacinas nahodou  word_counter = 0  :D

Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Ezechiel0
Newbie
24. 3. 2012   #5
-
0
-

omg taka chyba :D sa hanbim. Ok, teraz to ide ale tak mi to skonci s tym, ze heslo je 1142 a zadane bolo 4563.

Nahlásit jako SPAM
IP: 212.5.205.–
Ezechiel0
Newbie
24. 3. 2012   #6
-
0
-

Ale spravi mi to aj cez prikazovy pri tomto pare. Tak asi tam pridam aj hash na porovnavanie s oroginalom.

Dakujem ti :D a sorry ze som otravoval s takou somarinou

Nahlásit jako SPAM
IP: 212.5.205.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 12 hostů

Podobná vlákna

System() v C++ — založil

System("??????"); — založil dragon124

Os.system — založil Priwi

Redakční systém — založil API

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý