ABCTF - 30 - TGIF - Programming

Informations

Version

By Version Comment
noraj 1.0 Creation

CTF

  • Name : ABCTF 2016
  • Website : http://abctf.xyz/
  • Type : Online
  • Format : Jeopardy - Student
  • CTF Time : link

Description

Friday is the best day of the week, and so I really want to know how many Fridays there are in [this][this] file. But, with a twist. I want to know how many Fridays there are one year later than each date. [this]:https://gist.github.com/LiamRahav/0cbf82b8bc3a41deafc0403f1b1dd573 "Gist"

Hint: For example, if you got November 21, 2001, I want to know if November 21, 2002 is a Friday. Also, the answer is in the format ABCTF{}

Note: TGIF stands for Thank God It's Friday

Solution

  1. Write a script that parse the date.txt file and count the number of Friday

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #!/usr/bin/env python2
    import locale
    from datetime import datetime
    import calendar
    locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
    calendar.setfirstweekday(calendar.MONDAY)
    # strptime : https://docs.python.org/2/library/datetime.html#datetime.datetime.strptime
    # format : https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior
    date_format = '%B %d, %Y'
    i = 0
    with open('date.txt', 'r') as date_file:
    for line in date_file:
    date_string = line.rstrip()
    date_object = datetime.strptime(date_string, date_format)
    if not (calendar.isleap(date_object.year) and date_object.day == 29):
    date_object = date_object.replace(year = date_object.year + 1)
    if date_object.isoweekday() == 5: # Friday
    i += 1
    print('ABCTF{' + str(i) + '}')

  2. This instruction if not (calendar.isleap(date_object.year) and date_object.day == 29) : was to avoid bug with February 29, 2004 because 2004 was a leap year and that February 29, 2005 is not existing so.

  3. So when running my script I got:

    1
    2
    python3 date.py
    ABCTF{193}

  4. That's not the good flag but maybe that is because of the 29 of February so I tried ABCTF{194} and it's good!

Share