Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import csv
- import os
- import sys
- import gnupg
- def traverse(path):
- for root, dirs, files in os.walk(path):
- if '.git' in dirs:
- dirs.remove('.git')
- for name in files:
- yield os.path.join(root, name)
- def parse(basepath, path, data):
- name = os.path.splitext(os.path.basename(path))[0]
- group = os.path.dirname(os.path.os.path.relpath(path, basepath))
- split_data = data.split('\n', maxsplit=6)
- password = split_data[0]
- notes = split_data[1].replace('---', '')
- try:
- username = split_data[3].replace('username: ', '')
- except IndexError:
- username = ''
- try:
- url = split_data[5].replace('url: ', '')
- except IndexError:
- url = ""
- if notes[:7] == 'login: ':
- username = notes.replace('login: ', '')
- return [group, name, password, username, url, notes]
- def main(path):
- gpg = gnupg.GPG()
- gpg.encoding = 'utf-8'
- csv_data = []
- for file_path in traverse(path):
- if os.path.splitext(file_path)[1] == '.gpg':
- with open(file_path, 'rb') as f:
- data = str(gpg.decrypt_file(f))
- csv_data.append(parse(path, file_path, data))
- with open('pass.csv', 'w', newline='') as csv_file:
- writer = csv.writer(csv_file, delimiter=',')
- writer.writerows(csv_data)
- if __name__ == '__main__':
- path = os.path.abspath(sys.argv[1])
- main(path)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement