Dictionary Attacks and a Bash Script?

For the discussion of Perl, Python, Ruby, and PHP and other interpreted languages.

Dictionary Attacks and a Bash Script?

Post by -Ninjex- on Wed Jun 19, 2013 4:49 am
([msg=76164]see Dictionary Attacks and a Bash Script?[/msg])

Catchy title, huh??

So here I am, again, another day. Not being able to sleep, due to my insomnia and my mind rushing with endless possibilities, as hours draw near until the alarm rings into my ears warning me that it is time to slave away to the society. So, I sit here and wonder... What to do next... I decide to throw together something for the community.

I want to start this with the general concept on dictionary attacking that will work with most hashing / encryption algorithms.
Let me give a little history lesson, which is assumed to be the first dictionary attack according to some book I read a while back. The story is similar to this:
The unix crypt function was pretty secure for a while. People understood the concept that the first two characters in the hashed string had been the salt used to hash the password for said user account.
For example, say we take the string "Ninjex" and give it the salt value of "XR", and perform the hashing function. We will receive the hash value of: XRrk46JnQhoQs

(As a note, I will be adding php code in here so that you guys can follow and understand how this is working and what is going on. I recommend you to use these codes if you do not understand the concepts fully, or to play with the program and give it different inputs and see how it changes the output)

Code to encrypt a string with unix crypt with a desired salt (unix.php)
To run any of these files, make sure you have php installed. You can run it from the command line by declaring php followed by the program name. i.e. to run the program unix.php, you would type in the command line "php unix.php" without quotes.

Code: Select all
<?php
// unix.php
// Made by: Ninjex
//This file will convert a string into a hash with a given salt, using the unix crypt function

fwrite(STDOUT, "Enter a string to encrypt: "); // asking for a string to encrypt
$string = trim(fgets(STDIN)); // grabing the users input and storing it in $string
fwrite(STDOUT, "Enter a salt for the hashing function: "); // asking the user for a salt for the hashing function
$salt = trim(fgets(STDIN)); // storing the specified salt in $salt
$hash = crypt($string,$salt); // using the unix crypt cryptographic hashing algorithm with the desired string and salt
echo $hash."\n"; // print out the hash result and a new line
?>


Now, using the program above, you can see how it is converting the strings into a hash.

Code: Select all
ninjex@Kali:~ >> php unix.php
Enter a string to encrypt: Ninjex
Enter a salt for the hashing function: XR
XRrk46JnQhoQs


You must realize the difference between a hash, and something that is simply encrypted. Something which is encrypted can be decrypted with software, meaning that no matter what you input into the decryption software, it will be able to decrypt it, and give the original value. i.e. encryption software could be something like simply changing a letter to the letter that follows, such as:

Code: Select all
a = b
b = c
c = d
etc...
z = a


You could write a piece of software to reverse that process, by having it take the character and replace it with the character before it. Once that is done, no matter what the original value of the encrypted text is, you would be able to figure it out.

This however, is not true for hashing functions. A hash is designed as a one-way function, and to be as much as possible collision resistant (meaning that two strings should not give the same hash value)
However, think about this; say a hash is always 128 bits long, that would mean that there is 2^128 different possibilities for hash values. This is an extremely large number, yet it is not an infinite number. When a user can input an infinite number of possibilities into the function, there are logically an infinite number of collision possibilities. This is why having a limit on the strings are important, as well as using salts for the encryption, in case two of the values are the same, the salt would change this (most of the time).

So back to the story, now that you know the difference between a hash function and encryption function.
It is said that a hacker was found tunneling into systems and downloading the /etc/passwd or /etc/shadow file, which contained a list of the users on the network, with their passwords encrypted with the unix crypt function. This seemed to have brought about confusion to some of the information security peoples, as the unix crypt function had not ever been broken before, and seemed safe. Finally, they were able to catch up to the attacker and noticed he had also download a dictionary word list of English words. After further review, they realized he had made a program to take the words in the word list, apply a desired salt depending on the hash, convert it using the unix crypt function, and then compared it to the original value. This, is a dictionary attack.

So now, I will walk you through a small tutorial on running a dictionary attack.
The first thing we are going to need is a wordlist and hashes to work with. So, open up a text editor, such as gedit, nano, leaf, vim, etc, add in a few words to a file and save it as words.lst. The words need to be separated by a new line feed (press enter after every word you enter into the dictionary) For this example, we will use the following:

Code: Select all
hello
dude
bro
ninjex
wadup
yolo
doors
walls
man
blah


Alright, so now we have a very small word list here, which is great for learning. You always want to start off small, and then work your way up, as you progress.

Anyways, now that we have our word list, we will need a hash. In this example we will be using a MD5 hash value for "yolo".
To do this, we can either write a simple program to convert the word into MD5, or we can use an application somewhere online such as: md5decrypter, In this post, I will be giving you a quick php code that will do this for you, and you can check it with the site above, and ensure they match:
I called this file md5.php (execute from command line with: php md5.php)

Code: Select all
<?php
// md5.php
// Made by: Ninjex
// This script will convert the given input into MD5

fwrite(STDOUT, "Enter a string to convert into MD5: "); // asking for a string to convert
$word = rtrim(fgets(STDIN)); // storing user input into $word and removing trailing white space
$hash = md5($word); // convert the string into md5 and store it in $hash
echo $hash."\n"; // echo the hash value with a carriage return (new line)
?>


As you will see, the md5 value for yolo is: 4fded1464736e77865df232cbcb4cd19

Code: Select all
ninjex@Kali:~ >> php md5.php
Enter a string to convert into MD5: yolo
4fded1464736e77865df232cbcb4cd19


This checks out from my programs end, as well as the website. We can assure the script works properly.

So, now that we have our wordlist, and a hash to work with, we are looking more like that brilliant hacker, whom thought of a dictionary attack. Now, the next thing we are going to need is a program that will take each word in the word list, convert it into MD5, and compare that value to the hash value: 4fded1464736e77865df232cbcb4cd19 (yolo) Alright, what are we waiting for, let's build a program to do that and name it dictionary.php

Code: Select all
<?php

// dictionary.php
// Made by: Ninjex
// This tool is used to find md5 hash values via dictionary attack.
//************************************************************************************************************************************

fwrite(STDOUT, "Please enter in the hash to run the dictionary attack on: "); // asking for the hash
$hash = trim(fgets(STDIN)); // grab the hash with STDIN
fwrite(STDOUT, "Please enter the full path to your dictionary: "); // asking for dictionary
$dict = trim(fgets(STDIN));

//------------------------------------------------------------------------------------------------------------------------------------

if(!file_exists($dict)){ // if the file dictionary is invalid
    echo "The dictionary path you entered was invalid, please try again!\n"; // printing invalid path
    exit; // close the program
} // closing if

//------------------------------------------------------------------------------------------------------------------------------------

$dictionary = fopen($dict, "r"); // declaring our dictionary file with read privileges.
$hashed = NULL; // setting a variable hashed which will be used to hash words to NULL for the while loop.

//------------------------------------------------------------------------------------------------------------------------------------

while(!feof($dictionary) && $hashed != $hash) { // while the hashed word != the hash and we are not at the end of the file.
    $word = fgets($dictionary); // grab the current word on the current line
    $word = rtrim($word); // remove trailing whitespace from the word on the line (\n)
    $hashed = md5($word); // convert the word into md5 and store it into $hashed
} // closing while

//------------------------------------------------------------------------------------------------------------------------------------

if($hashed == $hash) { // if the hash is found, print out the word that was converted and matched
    echo "The value of the hash is: $word\n"; // echo the original value of the hash
} // closing if

//------------------------------------------------------------------------------------------------------------------------------------

if($hashed != $hash) { // If the hashed words and the hash never found a match
    echo "The value of the hash is not in this dictionary!\n"; // echo that the value was not inside our dictionary
    } // closing if

//------------------------------------------------------------------------------------------------------------------------------------

fclose($dictionary); // close our dictionary file

//------------------------------------------------------------------------------------------------------------------------------------

?>


After running the program, I received the following, and you should get something similar:

Code: Select all
ninjex@Kali:~ >> php dictionary.php
Please enter in the hash to decrypt: 4fded1464736e77865df232cbcb4cd19
Please enter the full path to your dictionary: /home/ninjex/words.lst
The value of the hash is: yolo


Alright, so we now have a working dictionary attack. So now let's talk about optimizing performance, as well as making the script display more information about what is going on (this will reduce performance greatly, but is nice to learn what is going on)

To do this, I will first edit the program above to display more information about what is going on during run time, and call it dict-detailed.php

Code: Select all
<?php

// dict-detailed.php
// Made by: Ninjex
// This is a detailed version of dictinary.php, it will show what is going on during the process of the program

fwrite(STDOUT, "Please enter in the hash to decrypt: "); // asking for the hash
$hash = trim(fgets(STDIN)); // grab the hash with STDIN
fwrite(STDOUT, "Please enter the full path to your dictionary: "); // asking for dictionary
$dict = trim(fgets(STDIN));

//------------------------------------------------------------------------------------------------------------------------------------

if(!file_exists($dict)){ // if the file dictionary is invalid
    echo "The dictionary path you entered was invalid, please try again!\n"; // printing invalid path
    exit; // close the program
} // closing if

//------------------------------------------------------------------------------------------------------------------------------------

$dictionary = fopen($dict, "r"); // declaring our dictionary file with read privileges.
$hashed = NULL; // setting a variable hashed which will be used to hash words to NULL for the while loop.

//------------------------------------------------------------------------------------------------------------------------------------

while(!feof($dictionary) && $hashed != $hash) { // while the hashed word != the hash and we are not at the end of the file.
    $word = fgets($dictionary); // grab the current word on the current line
    $word = rtrim($word); // remove trailing whitespace from the word on the line (\n)
    $hashed = md5($word); // convert the word into md5 and store it into $hashed
    echo "converting the word $word into MD5... The value is: $hashed\n";
    if($hashed != $hash) {
   echo "The MD5 value $hashed is not the same as the hash value you are looking for ($hash)\n";
   }
} // closing while

//------------------------------------------------------------------------------------------------------------------------------------

if($hashed == $hash) { // if the hash is found, print out the word that was converted and matched
    echo "The MD5 value $hash is a match for the MD5 value you are looking for ($hash)\n";
    echo "The value of the hash is: $word\n"; // echo the original value of the hash
} // closing if

//------------------------------------------------------------------------------------------------------------------------------------

if($hashed != $hash) { // If the hashed words and the hash never found a match
    echo "The value of the hash is not in this dictionary!\n"; // echo that the value was not inside our dictionary
    } // closing if

//------------------------------------------------------------------------------------------------------------------------------------

fclose($dictionary); // close our dictionary file

//------------------------------------------------------------------------------------------------------------------------------------

?>


So, first I run this with the hash value of rofl, which is not in our word list and should not be picked up.
The MD5 value of rofl is: 7df9ad761904a6cd0dc1358949977da0

Here is what we get now:

Code: Select all
ninjex@Kali:~ >> php dict-detailed.php
Please enter in the hash to decrypt: 7df9ad761904a6cd0dc1358949977da0
Please enter the full path to your dictionary: /home/ninjex/words.lst
converting the word hello into MD5... The value is: 5d41402abc4b2a76b9719d911017c592
The MD5 value 5d41402abc4b2a76b9719d911017c592 is not the same as the hash value you are looking for (7df9ad761904a6cd0dc1358949977da0)
converting the word dude into MD5... The value is: 13b73edae8443990be1aa8f1a483bc27
The MD5 value 13b73edae8443990be1aa8f1a483bc27 is not the same as the hash value you are looking for (7df9ad761904a6cd0dc1358949977da0)
converting the word bro into MD5... The value is: 0cfe0ef3a357503c4a4538414b870ca1
The MD5 value 0cfe0ef3a357503c4a4538414b870ca1 is not the same as the hash value you are looking for (7df9ad761904a6cd0dc1358949977da0)
converting the word ninjex into MD5... The value is: 28128605a42f04917238713f71545f43
The MD5 value 28128605a42f04917238713f71545f43 is not the same as the hash value you are looking for (7df9ad761904a6cd0dc1358949977da0)
converting the word wadup into MD5... The value is: a3f2773a871bf14dc8bcbe7d3b23c9f2
The MD5 value a3f2773a871bf14dc8bcbe7d3b23c9f2 is not the same as the hash value you are looking for (7df9ad761904a6cd0dc1358949977da0)
converting the word yolo into MD5... The value is: 4fded1464736e77865df232cbcb4cd19
The MD5 value 4fded1464736e77865df232cbcb4cd19 is not the same as the hash value you are looking for (7df9ad761904a6cd0dc1358949977da0)
converting the word doors into MD5... The value is: 57d0a8ca484ed8d1d1b8cc92426da1a6
The MD5 value 57d0a8ca484ed8d1d1b8cc92426da1a6 is not the same as the hash value you are looking for (7df9ad761904a6cd0dc1358949977da0)
converting the word walls into MD5... The value is: ed0aa5943823b898342750c7ef3a6959
The MD5 value ed0aa5943823b898342750c7ef3a6959 is not the same as the hash value you are looking for (7df9ad761904a6cd0dc1358949977da0)
converting the word man into MD5... The value is: 39c63ddb96a31b9610cd976b896ad4f0
The MD5 value 39c63ddb96a31b9610cd976b896ad4f0 is not the same as the hash value you are looking for (7df9ad761904a6cd0dc1358949977da0)
converting the word blah into MD5... The value is: 6f1ed002ab5595859014ebf0951522d9
The MD5 value 6f1ed002ab5595859014ebf0951522d9 is not the same as the hash value you are looking for (7df9ad761904a6cd0dc1358949977da0)
converting the word  into MD5... The value is: d41d8cd98f00b204e9800998ecf8427e
The MD5 value d41d8cd98f00b204e9800998ecf8427e is not the same as the hash value you are looking for (7df9ad761904a6cd0dc1358949977da0)
The value of the hash is not in this dictionary!


Alright, that looks good. It shows us how it takes each word, converts it into MD5, and then compares that value to the original hash value. Now, let's run it now with our hash of yolo again and watch how the program processes it:

Code: Select all
ninjex@Kali:~ >> php dict-detailed.php
Please enter in the hash to decrypt: 4fded1464736e77865df232cbcb4cd19
Please enter the full path to your dictionary: /home/ninjex/words.lst
converting the word hello into MD5... The value is: 5d41402abc4b2a76b9719d911017c592
The MD5 value 5d41402abc4b2a76b9719d911017c592 is not the same as the hash value you are looking for (4fded1464736e77865df232cbcb4cd19)
converting the word dude into MD5... The value is: 13b73edae8443990be1aa8f1a483bc27
The MD5 value 13b73edae8443990be1aa8f1a483bc27 is not the same as the hash value you are looking for (4fded1464736e77865df232cbcb4cd19)
converting the word bro into MD5... The value is: 0cfe0ef3a357503c4a4538414b870ca1
The MD5 value 0cfe0ef3a357503c4a4538414b870ca1 is not the same as the hash value you are looking for (4fded1464736e77865df232cbcb4cd19)
converting the word ninjex into MD5... The value is: 28128605a42f04917238713f71545f43
The MD5 value 28128605a42f04917238713f71545f43 is not the same as the hash value you are looking for (4fded1464736e77865df232cbcb4cd19)
converting the word wadup into MD5... The value is: a3f2773a871bf14dc8bcbe7d3b23c9f2
The MD5 value a3f2773a871bf14dc8bcbe7d3b23c9f2 is not the same as the hash value you are looking for (4fded1464736e77865df232cbcb4cd19)
converting the word yolo into MD5... The value is: 4fded1464736e77865df232cbcb4cd19
The MD5 value 4fded1464736e77865df232cbcb4cd19 is a match for the MD5 value you are looking for (4fded1464736e77865df232cbcb4cd19)
The value of the hash is: yolo


As you can see, once it converts and compares and the match is found, it breaks away from the program after giving us the word that was converted for that value.

Great, great, so let's talk about a great performance boost we can create here.
With the way things are working out, we know we do things in this order for finding the value of hashes:
word ---> convert into md5 hash ---> compare to original hash
So looking at this, we can easily knock out half of the process. How would we do this? We will create a file with already converted hashes. This file is just a word list of already converted md5 words! So if you take your word list, convert it into md5 and save it, all you have to do now is compare the word to the original hash!

Enough talk, let's create a file named convert.php, which will convert our file into the desired format:

Code: Select all
<?php

/*///---------------------------------------------------------------------------------------------------------------------------------------------------------
   convert.php
        Created by: Ninjex
   This is a php script that will convert a specific dictionary file into pre-converted hashes.
*///----------------------------------------------------------------------------------------------------------------------------------------------------------

fwrite(STDOUT, "Please enter the full path to your dictionary file: ");
$dict = trim(fgets(STDIN)); // storing location in $dict

//------------------------------------------------------------------------------------------------------------------------------------------------------------

if(file_exists($dict)) { // if the dictionary file exists
    $dict = fopen($dict, "a+"); // open up the dictionary
}

//------------------------------------------------------------------------------------------------------------------------------------------------------------

else { // if the dictionary file does not exist
    echo "Sorry, the location of the dictionary was not found. Please check the path location and your syntax!\n";
}

//------------------------------------------------------------------------------------------------------------------------------------------------------------

    fwrite(STDOUT, "Enter a name you wish to save the new file as: ");
    $file = trim(fgets(STDIN)); // grabbing a name from user to save the file as
    $file = fopen($file, "a+"); // open up the file with write privs
    echo "Would you like to print the hashes to the terminal as they are converted?\n";
    echo "Choosing no will save time (Recommended for large files), while choosing yes will allow you to see the conversion in progress [y/n] ";
    $show = trim(fgets(STDIN)); // does the user want to show the hashes as they are converted?

//-------------------------------------------------------------------------------------------------------------------------------------------------------------

    if($show == "y") { // if the user does want to show the hashes as they are converted
       while(!feof($dict)) { // while not at the end of the dictionary
           $word = fgets($dict); // get the word on the current line
           $word = rtrim($word); // remove trailing white space from that word
           $hash = md5($word); // convert that word into md5 format
           fwrite($file, $hash . "\n"); // write the word to our file with a carriage return \n
           echo "MD5 value: $hash successfully stored inside the desired file!\n"; // display the hash that was converted and added to the file
           }
   }

//------------------------------------------------------------------------------------------------------------------------------------------------------------

    else { // if the user did not want to show the hashes as they are converted
       while(!feof($dict)) { // while not at the end of the dictionary
            $word = fgets($dict); // get the word on the current line
            $word = rtrim($word); // remove trailing white space from that word
            $hash = md5($word); // convert that word into md5 format
            fwrite($file, $hash . "\n"); // write the word to our rainbow table with a carriage return \n
            }
    }

//-------------------------------------------------------------------------------------------------------------------------------------------------------------

    fclose($dict); // close the dictionary file
    fclose($file); // close the file, file

?>


Alright, let's run this and choose the option to display the hashes as they are converted, as we have a tiny word list, and it will be good for peering eyes to get a better understanding on how this is working:

Code: Select all
ninjex@Kali:~ >> php convert.php
Please enter the full path to your dictionary file: /home/ninjex/words.lst
Enter a name you wish to save the rainbow table as: words-rainbow.lst
Would you like to print the hashes to the terminal as they are converted?
Choosing no will save time (Recommended for large files), while choosing yes will allow you to see the conversion in progress [y/n] y
MD5 value: 5d41402abc4b2a76b9719d911017c592 successfully stored inside the desired file!
MD5 value: 13b73edae8443990be1aa8f1a483bc27 successfully stored inside the desired file!
MD5 value: 0cfe0ef3a357503c4a4538414b870ca1 successfully stored inside the desired file!
MD5 value: 28128605a42f04917238713f71545f43 successfully stored inside the desired file!
MD5 value: a3f2773a871bf14dc8bcbe7d3b23c9f2 successfully stored inside the desired file!
MD5 value: 4fded1464736e77865df232cbcb4cd19 successfully stored inside the desired file!
MD5 value: 57d0a8ca484ed8d1d1b8cc92426da1a6 successfully stored inside the desired file!
MD5 value: ed0aa5943823b898342750c7ef3a6959 successfully stored inside the desired file!
MD5 value: 39c63ddb96a31b9610cd976b896ad4f0 successfully stored inside the desired file!
MD5 value: 6f1ed002ab5595859014ebf0951522d9 successfully stored inside the desired file!
MD5 value: d41d8cd98f00b204e9800998ecf8427e successfully stored inside the desired file!


If you didn't notice, we get an extra value here, which is: d41d8cd98f00b204e9800998ecf8427e this value a empty string value and was added from the carriage return in the while function when adding the words into the file ( fwrite($file, $hash . "\n"); // write the word to our file with a carriage return \n)

Okay, so I specified to name the file as words2.lst, so lets do a cat on that and see what we have!

Code: Select all
ninjex@Kali:~ >> cat words2.lst
5d41402abc4b2a76b9719d911017c592
13b73edae8443990be1aa8f1a483bc27
0cfe0ef3a357503c4a4538414b870ca1
28128605a42f04917238713f71545f43
a3f2773a871bf14dc8bcbe7d3b23c9f2
4fded1464736e77865df232cbcb4cd19
57d0a8ca484ed8d1d1b8cc92426da1a6
ed0aa5943823b898342750c7ef3a6959
39c63ddb96a31b9610cd976b896ad4f0
6f1ed002ab5595859014ebf0951522d9
d41d8cd98f00b204e9800998ecf8427e


So, now let's change it up a bit. I decided to write a very quick bash script, which I have poor programming in, so maybe someone can help out on this script to improve it. Basically the job of the bash script will be to take a hash, search for it in our already converted hash list, figure out the line number, and then print out the word of that line on our non converted md5 file. (It is important to keep the line numbers the same in both the converted md5 file and the non converted md5 file for this to work!
I named this file find.sh

Code: Select all
#!/bin/bash
echo "Enter the hash to search for: ";
read hash;
echo "Please enter the location to your file of converted hashes"
read hashedfile
echo "Please enter the location to your non converted hashes"
read file

line=$(sed -nE /$hash/= $hashedfile)
echo "The hash was found on line: $line"
command=p
value=$(sed -n $line$command $file)
echo "The value of the hash is: $value"


Alright, so you can see the main problems is that there is no error checking here, so your syntax must be correct. Also note that if you use a string that isn't in the file, it will say that the strings value belongs to that of the first word in the non converted md5 file (hello) since there is no error checking.

Let's give this a test run, shall we? For this, we will use the value: ed0aa5943823b898342750c7ef3a6959 from our converted md5 file list.

Code: Select all
ninjex@Kali:~ >> ./find.sh
Enter the hash to search for:
ed0aa5943823b898342750c7ef3a6959
Please enter the location to your file of converted hashes
/home/ninjex/words2.lst
Please enter the location to your non converted hashes
/home/ninjex/words.lst
The hash was found on line: 8
The value of the hash is: walls


There you have it, performance doubled, by simply converting the list into md5 and using a bash script from now on to search for the hash in the file, which it can do at a very very fast pace.

Alright, I'm getting tired now...
I may update this tomorrow with more information, but don't quote me, because I get lazy or busy with projects.

I hope you all, or most of you all enjoy this little rant on dictionary attacks,
- Ninjex
Spreading knowledge just once a day, can help keep the script kiddies away ⠠⠵
no_hope if world.map{|person, ic = 0| ic +=1 if ignorance.include?(person)}.compact.length > (world.length / 2)
The absence of evidence is not evidence of absence.
User avatar
-Ninjex-
Addict
Addict
 
Posts: 1061
Joined: Sun Sep 02, 2012 8:02 pm
Blog: View Blog (0)


Re: Dictionary Attacks and a Bash Script?

Post by Goatboy on Thu Aug 22, 2013 9:09 am
([msg=76969]see Re: Dictionary Attacks and a Bash Script?[/msg])

Little late to the game, but this is something that would best be posted as an article on the main site.

I haven't read the whole thing, though, so I can't say if it would get accepted or not.
Assume that everything I say is or could be a lie.
1UHQ15HqBRZFykqx7mKHpYroxanLjJcUk
User avatar
Goatboy
Expert
Expert
 
Posts: 2751
Joined: Mon Jul 07, 2008 9:35 pm
Blog: View Blog (0)


Re: Dictionary Attacks and a Bash Script?

Post by mShred on Thu Aug 22, 2013 6:55 pm
([msg=76982]see Re: Dictionary Attacks and a Bash Script?[/msg])

Hrm. Dunno how I missed this one.
I haven't exactly read it either though. But I shall, within time.
Image

For those about to rock.
User avatar
mShred
Administrator
Administrator
 
Posts: 1612
Joined: Tue Jun 22, 2010 4:22 pm
Blog: View Blog (2)


Re: Dictionary Attacks and a Bash Script?

Post by -Ninjex- on Thu Aug 22, 2013 9:15 pm
([msg=76983]see Re: Dictionary Attacks and a Bash Script?[/msg])

mShred wrote:Hrm. Dunno how I missed this one.
I haven't exactly read it either though. But I shall, within time.


mShred, this is basically the concept you and I took on with the dictionary attacking using our bots. However, in this version it's a bit rough. I encrypted a regular file into md5 as a new file, and used a bash script to find a specified hash's line number if found, and then searched the regular file and echod the data on that line. I should update this with the more efficient way that we came up with.
Spreading knowledge just once a day, can help keep the script kiddies away ⠠⠵
no_hope if world.map{|person, ic = 0| ic +=1 if ignorance.include?(person)}.compact.length > (world.length / 2)
The absence of evidence is not evidence of absence.
User avatar
-Ninjex-
Addict
Addict
 
Posts: 1061
Joined: Sun Sep 02, 2012 8:02 pm
Blog: View Blog (0)



Return to Interpreted Languages

Who is online

Users browsing this forum: No registered users and 0 guests