writeupsbycat is a short python script to filter writeups by CATegory from ctftime.
Web Scraping always excites me and being a casual CTF player I thought maybe I should try to make the process of reading writeups easy.
I searched for some existing tools which did the same work and found one ie. lswriteups which looked interesting but it missed an important feature such as filtering the writeups by their tags/category.
For eg. Let's say a guy is specialized in solving challenges from web category or he is new to ctfs and wants to learn more about them, he'll have to go through the ctftime journey of filtering links related to web which is such a pain.
So a developed a short script which worked elegantly.
Maybe It helps someone !!
writeupsbycat is compatible with both python2 & python3.
- Clone this repo:
git clone https://github.com/mrT4ntr4/WriteupsByCat.git
- Install dependencies:
pip install -r requirements.txt
Set Font-Size to 9 or 10 to make the table fit properly on the terminal.
python writeupsbycat.py [-h] -c CATEGORY [-l LIMIT] [-p PAGE]
Required arguments :
-c CATEGORY, --category CATEGORY
specify the category to filter writeups (In quotes)
Optional arguments:
-h, --help
show this help message and exit
-l LIMIT, --limit LIMIT
limit the number of tasks (Default = 10)
-p PAGE, --page PAGE
seed for the page number (Default = 1)
python writeupsbycat.py -c 'crackme'
python writeupsbycat.py -c 'web' -l 27 #limit
python writeupsbycat.py -c 'misc' -p 12 #pageseed
python writeupsbycat.py -c 'web' -l 14 -p 12 #both limit & pageSeed
python writeupsbycat.py -c 'forensics,zip' #add multiple tags
- Add aliases to common tags such as rev -> [reversal, reverse engineering, crackme]
- Grab writeups from sites other than ctftime and increase the scope to hackthebox, vulnhub etc.
- Use grequests and asyncio to make asynchronous HTTP Requests easily and make it somewhat fast.
-
Ways to contribute
- Suggest a feature
- Fix something and open a pull request
- Help me to make the code clean and make scraping more fast
For major changes, please open an issue first to discuss what you would like to change.