From f1a0205cf1ad8e5755bb92b9d099d6dd5d37b9f5 Mon Sep 17 00:00:00 2001 From: libcrack Date: Mon, 19 Dec 2022 03:53:12 +0100 Subject: [PATCH 1/4] Removed sqlite3 from requeriments, as it's included in python v3.10 --- requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b660f5a..a9931a8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,4 @@ argparse gitpython simplejson -sqlite3 urllib2 \ No newline at end of file From 89980c01ae0d93cd3422a75c2b781c2b2ea342c9 Mon Sep 17 00:00:00 2001 From: libcrack Date: Thu, 9 Mar 2023 14:04:53 +0100 Subject: [PATCH 2/4] Mixed exception messages --- gitrecon.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gitrecon.py b/gitrecon.py index c0db690..c945e69 100755 --- a/gitrecon.py +++ b/gitrecon.py @@ -47,8 +47,8 @@ import argparse import simplejson as json except ImportError as e: - logger.exception('Missing mandatory module(s): {0}'.format(e.message)) - logger.exception('Use pip install -r requirements.txt') + logger.critical('Missing mandatory module(s): {0}'.format(e)) + logger.critical('Use pip install -r requirements.txt') sys.exit(1) @@ -108,7 +108,7 @@ def dl_worker(repo): logger.info('Completed %s' % repo['name']) del dlw_res except Exception as e: - logger.exception('There was a problem cloning %s %s' % (repo['name'], e.message)) + logger.exception('There was a problem cloning %s %s' % (repo['name'], e)) def main(): @@ -230,7 +230,7 @@ def main(): fp.write('%s\n' % (encoded_itm)) fp.close() except (OSError, IOError) as e: - logger.exception('Cannot write to "{0}": {1}'.format(filename, e.message)) + logger.exception('Cannot write to "{0}": {1}'.format(filename, e)) if args.debug is True: logger.debug('Generating the dirs wordlist') @@ -246,7 +246,7 @@ def main(): fp.write('%s\n' % (itm[0])) fp.close() except (OSError, IOError) as e: - logger.exception('Cannot write to "{0}": {1}'.format(filename,e.message)) + logger.exception('Cannot write to "{0}": {1}'.format(filename,e)) if cur: cur.close() From 70bad6743be95067ea1c8b7f3671192058449e59 Mon Sep 17 00:00:00 2001 From: libcrack Date: Wed, 1 Nov 2023 05:40:11 +0100 Subject: [PATCH 3/4] Added access method: -m/--method --- gitrecon.py | 12 +++++++++++- setup.py | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/gitrecon.py b/gitrecon.py index c945e69..8ad7e60 100755 --- a/gitrecon.py +++ b/gitrecon.py @@ -79,6 +79,7 @@ def logo(): def parse_args(): parser = argparse.ArgumentParser() parser.add_argument('-d', '--debug', action='store_true', dest='debug', default=False, help='Show debug messages') + parser.add_argument('-m', '--method', action='store', dest='method', default='https', type=str, help='Access method (git/https)') parser.add_argument('-r', '--repos', action='store', dest='repos', default=None, type=str, help='Repo list (comma separated)') parser.add_argument('-t', '--threads', action='store', dest='threads', default=0, type=int, help='Number of threads') parser.add_argument('-u', '--username', action='store', dest='username', required=True, help='Github username') @@ -139,8 +140,17 @@ def main(): repos_json = '' tmp_list = [] for r in args.repos.split(","): + clone_url = None + if args.method == "https": + clone_url = "https://github.com/{0}/{1}.git".format(args.username, r) + elif args.method == "git": + clone_url = "git@github.com:{0}/{1}.git".format(args.username, r) + else: + logger.fatal("Unknown access method {0}".format(args.method)) + raise Exception("Unknown access method {0}".format(args.method)) + logger.info('Clone URL: {0}'.format(clone_url)) tmp_str = { - "clone_url": "https://github.com/{0}/{1}.git".format(args.username, r), + "clone_url": clone_url, "full_name": os.path.realpath("{0}/{1}".format(args.username, r)), "name": "{0}".format(r)} tmp_list.append(tmp_str) diff --git a/setup.py b/setup.py index b25790d..4087994 100755 --- a/setup.py +++ b/setup.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/env python3 # -*- coding: UTF-8 -*- # vim:ts=4 sts=4 tw=100: # pylint: disable-msg=C0103 From 8d8cdc355fff985c25e81038fa814d37fff43308 Mon Sep 17 00:00:00 2001 From: libcrack Date: Tue, 12 Dec 2023 04:46:54 +0100 Subject: [PATCH 4/4] Implemented colored logs --- gitrecon.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/gitrecon.py b/gitrecon.py index 8ad7e60..c35bbac 100755 --- a/gitrecon.py +++ b/gitrecon.py @@ -20,6 +20,7 @@ import queue import time import urllib.request, urllib.error, urllib.parse +import coloredlogs __author__ = "Jaime Filson , Borja Ruiz " __email__ = "wick2o@gmail.com, borja@libcrack.so" @@ -28,10 +29,17 @@ logname = 'gitrecon' logfile = '{0}.log'.format(logname) -logging.basicConfig(level=(logging.INFO)) + logger = logging.getLogger(logname) +#logger = logging.getLogger(__name__) + +#logging.basicConfig(level=(logging.INFO)) +#coloredlogs.install(level='DEBUG') # logs program & libs +#coloredlogs.install(level='DEBUG', logger=logger) # logs program only +coloredlogs.install(level=logging.DEBUG, logger=logger) # LOG_FORMAT = '%(asctime)s [%(levelname)s] %(module)s.%(funcName)s : %(message)s' + # __formatter = logging.Formatter(LOG_FORMAT) # __streamhandler = logging.StreamHandler() # __streamhandler.setFormatter(__formatter) @@ -78,11 +86,18 @@ def logo(): def parse_args(): parser = argparse.ArgumentParser() - parser.add_argument('-d', '--debug', action='store_true', dest='debug', default=False, help='Show debug messages') - parser.add_argument('-m', '--method', action='store', dest='method', default='https', type=str, help='Access method (git/https)') - parser.add_argument('-r', '--repos', action='store', dest='repos', default=None, type=str, help='Repo list (comma separated)') - parser.add_argument('-t', '--threads', action='store', dest='threads', default=0, type=int, help='Number of threads') - parser.add_argument('-u', '--username', action='store', dest='username', required=True, help='Github username') + + parser.add_argument('-d', '--debug', action='store_true', + dest='debug', default=False, help='Show debug messages') + parser.add_argument('-m', '--method', action='store', dest='method', + default='https', type=str, help='Access method (git/https)') + parser.add_argument('-r', '--repos', action='store', dest='repos', + default=None, type=str, help='Repo list (comma separated)') + parser.add_argument('-t', '--threads', action='store', dest='threads', + default=0, type=int, help='Number of threads') + parser.add_argument('-u', '--username', action='store', dest='username', + required=True, help='Github username') + global args args = parser.parse_args()