Sinisterly
Your program in the official HC Programs? - Printable Version

+- Sinisterly (https://sinister.ly)
+-- Forum: Hacking (https://sinister.ly/Forum-Hacking)
+--- Forum: Hacking Tools (https://sinister.ly/Forum-Hacking-Tools)
+--- Thread: Your program in the official HC Programs? (/Thread-Your-program-in-the-official-HC-Programs)

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17


RE: Your program in the official HC Programs? - Deque - 08-17-2013

(08-16-2013, 08:17 PM)Dreamwalker Wrote: [Image: wa2a.jpg]

Name: URL Scanner 1.2 Hackcommunity.com edition, Coded in C++:
Supported OS: Windows with wininet (<- most have it)

Description:
This tool will scan potentially vulnerable files and directories on a web server, it will scan things for information gathering files like robots.txt, sitemap.xml etc, it will scan for potential SQL injection links, login and admin pages, along with frontpage extension files/directories and much more. It works with real time feedback and is very easy to use.

Windows 32 bit compiled executable here

Source:

Code:
#include<windows.h> #include<iostream> #include<string> #include<wininet.h> using namespace std; #pragma comment (lib, "wininet.lib") //Simple function to return a bool value to check whether URL is valid bool ValidURL(string url) { bool result = false; HINTERNET hSession = InternetOpen("ValidURL", INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0); if (hSession != 0) { HINTERNET hFile = InternetOpenUrl(hSession, url.c_str(), 0, 0, INTERNET_FLAG_RELOAD, 0); if (hFile != 0) { int code = 0; DWORD codeLen = sizeof(int); HttpQueryInfo(hFile, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &code, &codeLen, 0); result = code == HTTP_STATUS_OK || code == HTTP_STATUS_REDIRECT; InternetCloseHandle(hFile); } InternetCloseHandle(hSession); } return(result); } int main() { //Just intro SetConsoleTitle("Vulnerable URL HackCommunity.com edition 1.2 beta by Dreamwalker"); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7); cout<<"--------------------------------------------------------------------------"<<endl; cout<<"\tVulnerable URL checker HackCommunity.com edition coded by Dreamwalker"<<endl; cout<<"\tvisit us at "; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 11); cout<<" http://Dreamwalk.yolasite.com "; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7); cout<<"for more tools"<<endl; cout<<"\t This tool will scan for potentially vulnerable "; cout<<"URL's/directories\n\ton a webserver with realtime "; cout<<"feedback, to say thanks or report bugs\n\t\t\temail me on dreamwalk1986@gmail.com\n"<<endl; cout<<"--------------------------------------------------------------------------"<<endl; /* create 3 string, the input_url(got from user) the original input (copy of the input from user, used later in the loop to reset string) and file (string array) used for files/directories on server */ string original_input_url, input_url, file[20]= {"/robots.txt","/wp-login.php","/login/","/login.php","/admin.asp","/adm/", "/admin/","/admin.php","/admin/home.php","/admin/cp.asp","/_vti_pvt/","/_vti_pvt/service.pwd","/_vti_inf.html","/cgi-bin/", "/~root","/cache/","/sitemap.xml","/index.php?catid=","/index.php?id=",}; cout<<"Enter full URL ( ignore last forward slash, for instance http://google.com ):\n>"; cin>>input_url; original_input_url = input_url; //PERFORM INITIAL CHECK TO SEE IF URL IS VALID cout<<"Performing check to see if website is valid"<<endl; if(ValidURL(input_url) == false) { cout<<"Invalid URL, closing..."<<endl; Sleep(10000); return 0; } else cout<<"That worked, now scanning files/directories..."<<endl; cout<<"--------------------------------------------------------------------------"<<endl; //NOW SCAN FILES/DIRECTORIES for (int i = 0; i < 19; i++) { //reset url input_url = original_input_url; input_url.append(file[i]); if(ValidURL(input_url) == false) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),12); cout<<input_url<<" FAILED"<<endl; } else { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10); cout<<input_url<<" SUCCESS!"<<endl; } } SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7); cout<<"Finished, automatically close shortly..."<<endl; //sleep for a bit Sleep(120000); return 0; }

@Deque please check it out

Thanks for your contribution.
C++ is one domain of @ArkPhaze, so I will let him take a view on that and decide.


RE: Your program in the official HC Programs? - ArkPhaze - 08-18-2013

(08-16-2013, 08:17 PM)Dreamwalker Wrote: [Image: wa2a.jpg]

Name: URL Scanner 1.2 Hackcommunity.com edition, Coded in C++:
Supported OS: Windows with wininet (<- most have it)

Description:
This tool will scan potentially vulnerable files and directories on a web server, it will scan things for information gathering files like robots.txt, sitemap.xml etc, it will scan for potential SQL injection links, login and admin pages, along with frontpage extension files/directories and much more. It works with real time feedback and is very easy to use.

Windows 32 bit compiled executable here

Source:

Code:
#include<windows.h> #include<iostream> #include<string> #include<wininet.h> using namespace std; #pragma comment (lib, "wininet.lib") //Simple function to return a bool value to check whether URL is valid bool ValidURL(string url) { bool result = false; HINTERNET hSession = InternetOpen("ValidURL", INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0); if (hSession != 0) { HINTERNET hFile = InternetOpenUrl(hSession, url.c_str(), 0, 0, INTERNET_FLAG_RELOAD, 0); if (hFile != 0) { int code = 0; DWORD codeLen = sizeof(int); HttpQueryInfo(hFile, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &code, &codeLen, 0); result = code == HTTP_STATUS_OK || code == HTTP_STATUS_REDIRECT; InternetCloseHandle(hFile); } InternetCloseHandle(hSession); } return(result); } int main() { //Just intro SetConsoleTitle("Vulnerable URL HackCommunity.com edition 1.2 beta by Dreamwalker"); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7); cout<<"--------------------------------------------------------------------------"<<endl; cout<<"\tVulnerable URL checker HackCommunity.com edition coded by Dreamwalker"<<endl; cout<<"\tvisit us at "; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 11); cout<<" http://Dreamwalk.yolasite.com "; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7); cout<<"for more tools"<<endl; cout<<"\t This tool will scan for potentially vulnerable "; cout<<"URL's/directories\n\ton a webserver with realtime "; cout<<"feedback, to say thanks or report bugs\n\t\t\temail me on dreamwalk1986@gmail.com\n"<<endl; cout<<"--------------------------------------------------------------------------"<<endl; /* create 3 string, the input_url(got from user) the original input (copy of the input from user, used later in the loop to reset string) and file (string array) used for files/directories on server */ string original_input_url, input_url, file[20]= {"/robots.txt","/wp-login.php","/login/","/login.php","/admin.asp","/adm/", "/admin/","/admin.php","/admin/home.php","/admin/cp.asp","/_vti_pvt/","/_vti_pvt/service.pwd","/_vti_inf.html","/cgi-bin/", "/~root","/cache/","/sitemap.xml","/index.php?catid=","/index.php?id=",}; cout<<"Enter full URL ( ignore last forward slash, for instance http://google.com ):\n>"; cin>>input_url; original_input_url = input_url; //PERFORM INITIAL CHECK TO SEE IF URL IS VALID cout<<"Performing check to see if website is valid"<<endl; if(ValidURL(input_url) == false) { cout<<"Invalid URL, closing..."<<endl; Sleep(10000); return 0; } else cout<<"That worked, now scanning files/directories..."<<endl; cout<<"--------------------------------------------------------------------------"<<endl; //NOW SCAN FILES/DIRECTORIES for (int i = 0; i < 19; i++) { //reset url input_url = original_input_url; input_url.append(file[i]); if(ValidURL(input_url) == false) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),12); cout<<input_url<<" FAILED"<<endl; } else { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10); cout<<input_url<<" SUCCESS!"<<endl; } } SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7); cout<<"Finished, automatically close shortly..."<<endl; //sleep for a bit Sleep(120000); return 0; }

@Deque please check it out

It's not bad, I don't really see much wrong with it, other than I'm not a firm believer in the using namespace std; line. One thing I have seen here is that it doesn't use a proxy on its own, which is probably not only the biggest downfall that I can see here, but perhaps for those that take care in being anonymous, understand your program, and have to decide on whether it's even reasonable to use or not. For that, you may consider an access type of INTERNET_OPEN_TYPE_PROXY. Your internet flags for the InternetOpen function are not an expected value however.

Another thing is that you should only need one instance created by calling the InternetOpen function. Destroying the instance each time and re-creating it makes this more inefficient than it needs to be. So in that case, instead of having a long procedural method that creates an instance, loads urls, then calls InternetCloseHandle, I might just suggest creating a class to encapsulate all of this behavior. It would be the cleanest. Smile

There is also a very useful InternetCanonicalizeUrl function that you could use to sanitize the input url's with before trying to use them.


RE: Your program in the official HC Programs? - Dreamwalker - 08-18-2013

(08-18-2013, 08:11 AM)ArkPhaze Wrote:
(08-16-2013, 08:17 PM)Dreamwalker Wrote: [Image: wa2a.jpg]

Name: URL Scanner 1.2 Hackcommunity.com edition, Coded in C++:
Supported OS: Windows with wininet (<- most have it)

Description:
This tool will scan potentially vulnerable files and directories on a web server, it will scan things for information gathering files like robots.txt, sitemap.xml etc, it will scan for potential SQL injection links, login and admin pages, along with frontpage extension files/directories and much more. It works with real time feedback and is very easy to use.

Windows 32 bit compiled executable here

Source:

Code:
#include<windows.h> #include<iostream> #include<string> #include<wininet.h> using namespace std; #pragma comment (lib, "wininet.lib") //Simple function to return a bool value to check whether URL is valid bool ValidURL(string url) { bool result = false; HINTERNET hSession = InternetOpen("ValidURL", INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0); if (hSession != 0) { HINTERNET hFile = InternetOpenUrl(hSession, url.c_str(), 0, 0, INTERNET_FLAG_RELOAD, 0); if (hFile != 0) { int code = 0; DWORD codeLen = sizeof(int); HttpQueryInfo(hFile, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &code, &codeLen, 0); result = code == HTTP_STATUS_OK || code == HTTP_STATUS_REDIRECT; InternetCloseHandle(hFile); } InternetCloseHandle(hSession); } return(result); } int main() { //Just intro SetConsoleTitle("Vulnerable URL HackCommunity.com edition 1.2 beta by Dreamwalker"); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7); cout<<"--------------------------------------------------------------------------"<<endl; cout<<"\tVulnerable URL checker HackCommunity.com edition coded by Dreamwalker"<<endl; cout<<"\tvisit us at "; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 11); cout<<" http://Dreamwalk.yolasite.com "; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7); cout<<"for more tools"<<endl; cout<<"\t This tool will scan for potentially vulnerable "; cout<<"URL's/directories\n\ton a webserver with realtime "; cout<<"feedback, to say thanks or report bugs\n\t\t\temail me on dreamwalk1986@gmail.com\n"<<endl; cout<<"--------------------------------------------------------------------------"<<endl; /* create 3 string, the input_url(got from user) the original input (copy of the input from user, used later in the loop to reset string) and file (string array) used for files/directories on server */ string original_input_url, input_url, file[20]= {"/robots.txt","/wp-login.php","/login/","/login.php","/admin.asp","/adm/", "/admin/","/admin.php","/admin/home.php","/admin/cp.asp","/_vti_pvt/","/_vti_pvt/service.pwd","/_vti_inf.html","/cgi-bin/", "/~root","/cache/","/sitemap.xml","/index.php?catid=","/index.php?id=",}; cout<<"Enter full URL ( ignore last forward slash, for instance http://google.com ):\n>"; cin>>input_url; original_input_url = input_url; //PERFORM INITIAL CHECK TO SEE IF URL IS VALID cout<<"Performing check to see if website is valid"<<endl; if(ValidURL(input_url) == false) { cout<<"Invalid URL, closing..."<<endl; Sleep(10000); return 0; } else cout<<"That worked, now scanning files/directories..."<<endl; cout<<"--------------------------------------------------------------------------"<<endl; //NOW SCAN FILES/DIRECTORIES for (int i = 0; i < 19; i++) { //reset url input_url = original_input_url; input_url.append(file[i]); if(ValidURL(input_url) == false) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),12); cout<<input_url<<" FAILED"<<endl; } else { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10); cout<<input_url<<" SUCCESS!"<<endl; } } SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7); cout<<"Finished, automatically close shortly..."<<endl; //sleep for a bit Sleep(120000); return 0; }

@Deque please check it out

It's not bad, I don't really see much wrong with it, other than I'm not a firm believer in the using namespace std; line. One thing I have seen here is that it doesn't use a proxy on its own, which is probably not only the biggest downfall that I can see here, but perhaps for those that take care in being anonymous, understand your program, and have to decide on whether it's even reasonable to use or not. For that, you may consider an access type of INTERNET_OPEN_TYPE_PROXY. Your internet flags for the InternetOpen function are not an expected value however.

Another thing is that you should only need one instance created by calling the InternetOpen function. Destroying the instance each time and re-creating it makes this more inefficient than it needs to be. So in that case, instead of having a long procedural method that creates an instance, loads urls, then calls InternetCloseHandle, I might just suggest creating a class to encapsulate all of this behavior. It would be the cleanest. Smile

There is also a very useful InternetCanonicalizeUrl function that you could use to sanitize the input url's with before trying to use them.


Hey man,

Yeah I only generally use namespaces when I use it a lot, and in this case I use std::* quite a lot. As far as the proxy goes, because it uses pre-config, if your internet is already set to use a proxy it should use that method (but don't quote me on that, I need to look into it) but as far as encapsulating the URL date, sure, I can do for clarity and neatness but it's not too heavy on resources. The InternetCanonicalizeUrl is something I wasn't aware of, I was actually going to write a function to sanitize url's myself so if their is already something in place then fantastic. I started with a "check url" but that only see's whether the url is corresponding to a correct server, so I'll defonately look into this.

P.S

If you want to release this (because as you say, it's fine and not much wrong) and what I will do is work on a 1.3 version and give the source to and update the thread when I've done it.


RE: Your program in the official HC Programs? - ArkPhaze - 08-18-2013

Quote:if your internet is already set to use a proxy it should use that method

Yes, but there's no mention of this in your program, so those who don't read the source or can't debug your program would've never known what is going on there. This is why some of the more advanced programs use command line arguments for various options. In my opinion, proxy or non-proxy should be an option. The more you add to this, obviously complicates things for you as the developer, but it's a process that eliminates all of the skid/junk programs from the official list very effectively.

Nothing against the programmers, it's just part of the process; sifting through the submissions for the ones that stick out from the rest. Yours is okay though so far, so I wouldn't deny it immediately. It's just a bit too simple at this point in time the way I see it; it has room for being improved.

It's easier to not screw up simple code than it is to screw up complex code, but that's not to say simple is bad. Hope you get what I'm trying to get at lol.

Quote:I can do for clarity and neatness but it's not too heavy on resources.

The main thing I was getting at in that part is the unnecessary destroying and re-instantiating of the instances returned by the called functions.

I only mentioned these things so you could improve on your current version. Smile


RE: Your program in the official HC Programs? - Gentleman of Science - 09-12-2013

=UPDATED SOURCE CODE= 2:55 AM Sept 13 2013

Name: Broken Perl
Description: What does this do you ask? Well, I respond, it has two functions. The first to generate a list of hashes from a password list to make the password cracking process more efficant. The second is to use that big list of hashes to crack a hash at pretty fast speeds. It can only crack one hash at at time but Ill update it, dont worry. I made this in perl because I wanted to make a project in perl and I thought this would be fun. It can actually crack pretty fast. What it will do is spit out a line number so you can relate that back to your Plaintext list. CURRENTLY this only cracks Md5 hashes. Later it will crack much more. Its fast because it doesnt have to generate the hashes in real time. Perl has a hard time with HUGE files. I tried to use a 2gb file and just couldnt get it to load. I made this compleatly in nano. I also intend to add a gui to it for those not yet comfterable with the CLI.
Supported OS: All that support Perl 5.
Coded in: Perl
Screenshots: [Image: Screen_Shot_2013_09_12_at_2_44_39_PM.png]
[Image: Screen_Shot_2013_09_12_at_2_45_43_PM.png]
[Image: Screen_Shot_2013_09_12_at_2_46_03_PM.png]

Code:
#!/usr/bin/perl #What do I want to do? Light weight password cracker that you can take to #any system. MD5 Hashes only at the moment. #GGF Stands for Glorified Grep Function. use Digest::MD5 'md5_hex'; use Digest::SHA1 'sha1_hex'; use warnings; use Cwd; $count = 0; $count2 = 1; $wspace = 0; $flycompute = 1; $pwd = &Cwd::cwd(); $ppath = "$pwd/BrokenPerl.pot"; &Banner; &c(); sub Banner { print " >=>>=> >=> >======> >=> >> >=> >=> >=> >=> >=> >> >=> >> >==> >=> >=> >=> >==> >==>>==> >=> >=> >==> >> >==> >=> >==>>=> >=> >=> >=> >=> >=> >> >=> >=> >=> >======> >> >=> >=> >=> >> >=> >=> >=> >=> >=>=> >>===>>=> >=> >=> >=> >>===>>=> >=> >=> >> >> >=> >=> >=> >=> >=> >> >=> >=> >=> >> >=> >=> >===>>=> >==> >=> >=> >=> >====> >==> >=> >=> >====> >==> >==> _____ _ _____ _ _ | | |___ ___| |_ | |___ _____ _____ ___|_| |_ _ _ | | . | _| _| | --| . | | | | | _| | | |__|__|__ |___|_^_| |_____|___|_|_|_|_|_|_|_|_|_|_| |_ | |___| ||What does this do you ask? Well, I respond, it has two functions. The first to generate a list of hashes from a password list to make the password cracking process more efficant. The second is to use that big list of hashes to crack a hash at pretty fast speeds. It can only crack one hash at at time but Ill update it, dont worry. I made this in perl because I wanted to make a project in perl and I thought this would be fun. It can actually crack pretty fast. What it will do is spit out a line number so you can relate that back to your Plaintext list. CURRENTLY this only cracks Md5 hashes. Later it will crack much more. Its fast because it doesnt have to generate the hashes in real time. Perl has a hard time with HUGE files. I tried to use a 2gb file and just couldnt get it to load. I made this compleatly in nano. I also intend to add a gui to it for those not yet comfterable with the CLI.|| Version: 0.4 Alpha |By the Gentleman of Science|\n"; } sub c() { print "(1) Digest Plaintext (2) MiniRIP\n"; chomp($choice = <>); if ($choice == 2) { &MRIP } if ($choice == 1) { &DP } } sub MRIP { $flycompute = 1; print "MD5/SHA1 (It will autodetect) Hash you wish to crack:\n"; chomp($hashf = <>); print "Password List (Hashes):\n"; chomp($wlist = <>); open(FILE, "$wlist") or die("Unable to open file"); while(my $linelis=<FILE>){ push (@wordlis, $linelis); } #@wordlis = <FILE>; close(FILE); $lines = @wordlis; unless(open POT, '>'.$ppath) { die "Unable to create POT"; } print "$lines\n"; print "Verifying hashes... \n"; $sha1 = grep(/\b([0-9a-f]{40})\b/, @wordlis); $iiah = grep(/^[0-9a-f]{32}$/i, @wordlis); $sha1h = grep(/\b([0-9a-f]{40})\b/, $hashf); $iiahh = grep(/^[0-9a-f]{32}$/i, $hashf); if (($iiah != 0) || ($sha1 != 0)) { print "Yep its already hashed! Good to go.\n"; print "Hash: $hashf\n"; if ($iiah>0) { print "Your hashes are Md5...\n"; if ($sha1h>0) { print "Though, your hash you wish to crack is an Sha1 hash. Please correct this.\n"; } else { &GGF } } if ($sha1>0) { print "Your hashes are Sha1...\n"; if ($iiahh>0) { print "Though, your hash you wish to crack is an Md5 hash. Please correct this.\n"; } else { &GGF } } } else { print "This is plaintext instead of hashes. Would you like to (1) convert to hashes (2) real time convert: \n"; chomp($flycompute = <>); if ($flycompute == 1) { print "Your passwords are not in hashed form. They will be converted and saved for later use\n"; print "Path to Output: "; chomp($outfile = <>); unless(open OUTFILE, '>'.$outfile) { die "Unable to create $outfile"; } print "Converting to hashes...\n"; &Conver } else { &GGF } } } sub GGF { $sha1h = grep(/\b([0-9a-f]{40})\b/, $hashf); $iiahh = grep(/^[0-9a-f]{32}$/i, $hashf); $hashf =~ s/^\s+|\s+$//g; $count = 0; $count2 = 1; foreach $line (@wordlis) { $currenth = @wordlis[$count]; if ($flycompute != 1) { if ($sha1h != 0) { $currenth = sha1_hex($currenth); } if ($iiahh != 0) { $currenth = md5_hex($currenth); } } $currenth =~ s/^\s+|\s+$//g; if ($count2 == 50000) { $count2 = 0; $perc = $count/$lines; print $perc*100; print "%\n"; } if ($hashf eq $currenth) { if ($flycompute != 1) { print "Line: $count Hash: $hashf Plaintext: @wordlis[$count]"; print POT "Line: $count Hash: $hashf Plaintext: @wordlis[$count]\n"; } else { print "Line: $count Hash: $hashf\n"; print POT "Line: $count Hash: $hashf\n"; } } $count2++; $count++; } } sub DP { print "Enter File Name:\n "; chomp($filename = <>); open(FILE, "$filename") or die("Unable to open file"); while(my $linelis=<FILE>){ push (@wordlis, $linelis); } print "Path to Output: "; chomp($outfile = <>); unless(open OUTFILE, '>'.$outfile) { die "Unable to create $outfile"; } print "(1) Md5 (2) Sha1\n"; chomp($htype = <>); close(FILE); &Conver } sub Conver { $lines = @wordlis; print "$lines\n"; $count = 0; $count2 = 1; foreach $line (@wordlis) { if ($count2 == 50000) { $count2 = 0; $perc = $count/$lines; print $perc*100; print "%\n"; } $count2++; $count++; if ($htype == 1) { $hash = md5_hex($line); } else { $hash = sha1_hex($line); } $hash =~ s/^\s+|\s+$//g; print OUTFILE "$hash\n"; } close(OUTFILE); print "(1) Exit (2) MiniRIP\n"; chomp($choice2 = <>); if ($choice2 == 2) { &MRIP } if ($choice2 == 1) { } }



RE: Your program in the official HC Programs? - bluedog.tar.gz - 09-12-2013

Calling in @Deque or @ArkPhaze to help you out @gentleman of science approving this.


RE: Your program in the official HC Programs? - Gentleman of Science - 09-12-2013

(09-12-2013, 10:04 PM)bluedog.tar.gz Wrote: Calling in @Deque or @ArkPhaze to help you out @gentleman of science approving this.

Thank you very much Smile


RE: Your program in the official HC Programs? - Gentleman of Science - 09-12-2013

Did I not get approved? Does my program need to be of improved quality?


RE: Your program in the official HC Programs? - Gentleman of Science - 09-13-2013

It now works with Md5 AND Sha1 hashes!


RE: Your program in the official HC Programs? - ArkPhaze - 09-13-2013

(09-12-2013, 11:38 PM)Gentleman of Science Wrote: Did I not get approved? Does my program need to be of improved quality?

Obviously not all members are on the forum every hour of the day (meaning you should wait at least 24-48 hours before making such an assumption).

I haven't touched perl in a while, but I would suggest trying to multi-thread this for reading and scanning maybe multiple password files at a time or chunking it off to be read more efficiently. It *seems* okay so far, but if all it does is read and generate hashes (for a simple explanation of what it does), then what's the point? How is this different than what the average person out there could or would make?

The official programs (to me anyways) should be unique, efficient, and effective. Otherwise, if it's an average program that does the job, but wouldn't be any different than what most people would do on the code side, then why would we not also accept all of those entries (should they in the future be submitted or are already pending review)? But furthermore, why have a hundred of these as official submissions if everything is accepted? (If you can see what I'm getting at.)

I'm not saying this to bash your script, I'm saying this so that you can improve your script and really make this something so that it's better than average. There's already lots of free programs out there that can do what your script does, but probably faster, and more functionality/features embeded.

I don't know... We'll see what @Deque says or some other member that knows Perl better than myself. By reading it though, it doesn't look like much other than a simple iterative standardized method, which is the downfall from my point of view.