Thursday 3 March 2011

Creating wordlists based on dates

wordlists based on dates

Update 5
Have released datelist v0.7
- Fixed bug with February being excluded from whole century years
  (was a bug in leapyear calculations) -- Thanks to stepking2
- Fixed bug with July being omitted from results --Thanks to stepking2
- Included options to prepend or append word/character direct from command line

Have now released datelist v0.6
- Not limited to any dates anymore (yay !)
- Much faster
- Included more error checks
- Totally awesome ;)

Update 3

So have completed the work on v0.4, vid & download location herebelow.
Its still slow and limited to 1902 -- 2037 dates, but seems a bit better 
(to look at at least :) ) 
Until I get to grips with Python or Perl enabling me to massively increase the speed
it will probably stay as it is now.
edit 01-05-2010;
Gitsnik put his mind to it (probably whilst reading the paper on the john, things come easier to him ;) )
and wrote a fantastic bit of perl that does it sooo much faster and without any date limitations, when I manage
to replicate that will put it up as well.

Or on bliptv ;

Update 2
Am working on v0.4 to be able to do the same directly from command line, should be less
invasive on the eyes for the command line freaks and hopefully a tad quicker.

Update 1

Put up a quick video on a revision;  datelist_v0.3


I occasionally get queries on how to create certain wordlists with crunch, for which in some cases
crunch is not really suited.
This is the case when dealing with dates for instance.

I had asked bofh28 (author of crunch) whether he felt that this was something to consider for inclusion
in crunch, however he did not feel this was within the  scope of what crunch is intended for and of course
he's right, crunch's scope is meant to create a true bruteforce list.

So, after having had a few queries on it, I dabbled a bit in how this could be done.

After quite a bit of brain teasing (I am a slow learner ;) ) I got a date list in the format ddmmyyyy with the following code ;
>copy/paste the below code and save as for instance date-test
>make executable with: chmod 755 date-test to allow to run it; ./date-test

#!/bin/bash -e
#Starting and stopping dates
echo "Enter the starting date"
echo "must be in the format yyyy-mm-dd"
(tput bold && tput setaf 1)
(tput sgr 0)
echo "Enter the ending date"
echo "must be in the format yyyy-mm-dd"
(tput bold && tput setaf 1)
(tput sgr 0)
# List all dates in between the chosen dates in the format ddmmyyyy
echo $START_DATE | tee r_dates.txt
while true
START_DATE=$( date +%Y-%m-%d -d "$START_DATE -d 1day" )
echo $START_DATE | tee -a r_dates.txt
if [ "$START_DATE" == "$END_DATE" ]
awk -F- '{print $3 $2 $1}' r_dates.txt > datelist.txt
rm r_dates.txt
(tput setaf 2 && tput bold)
echo "wordlist 'datelist.txt' created in the format ;"
(tput setaf 6 && tput bold)
head -5 datelist.txt
(tput sgr 0)
echo ""

Not an easy few lines for me to remember.. at least for me..
So after having done that, there was some desire to be able to change the output format to other formats,
we each have our own preference !

Going through it a bit more and trying to improve it I came up with datelist v0.2
Now I am sure there must be easier ways to accomplish the same thing.. but it just simply escaped me..

Basically a pretty untidy mess code-wise, but it seems to more or less do the trick.

Following a query on how to make a certain wordlist, I also included a possibility
to either prepend or append additional numbers (max 5) to the created wordlist.
I am not sure that the way it is done is the most effective and will probably re-visit that part.

If anyone feels like having a shot at trying it out, you can download it here;
Edit 23-12-2011
All previous versions superceded by v0.6, see download link at top of page.

Starting it up (of course use filename that is appropriate for the download you have done);


Starting with format option -1 used and entering the Start and End dates ;

./datelist -1

Starting ..

Upon completion of the creation of datelist.txt, the 1st 5 lines of the created file will be shown to confirm
the output format.


 I also included a method of appending or prepending upto 5 sequential numeric values(0-9) to the created datelist.txt file.
Not quite sure how useful this is or to whom.. not really for me, but hey, the question came up ;)

This can be done with the -a (append) or -p (prepend) after having created the datelist.txt file.

Appending 2 numeric characters sequentially with the -a switch and showing the result by showing the last
5 lines of the file.

./datelist -a

Prepending 2 numeric characters sequentially with the -p switch and showing the result by showing the last
5 lines of the file.

./datelist -p

Again, this is all just a bit of fun and most likely ludicrously funny to anyone able to really write,
but who knows it may be of use to someone ;)

Video showing the use of datelist (v0.3)

Dont be shy on commenting if its any help or simply worthless :D
Google Analytics Alternative