Skip to main content

Logo

A Git Repository Leaks Scanner Python library written in C++

license Python Build PyPi

Table of Contents

About The Project

PyRepScan is a python library written in C++. The library uses libgit2 for repository parsing and traversing, re2 for regex pattern matching and cpp-taskflow for concurrency. The library was written to achieve high performance and python bindings.

Built With

Performance

CPU

Library Time Improvement Factor
PyRepScan 2.18s 1.0x
gitleaks 63.0s 28.9x

Prerequisites

In order to compile this package you should have GCC & Python development package installed.

  • Fedora
sudo dnf install python3-devel gcc-c++ libgit2-devel re2-devel
  • Ubuntu 18.04
sudo apt install python3-dev g++-9 libgit2-dev libre2-dev

Installation

pip3 install PyRepScan

Usage

import pyrepscan

grs = pyrepscan.GitRepositoryScanner()

# Adds a specific rule, can be called multiple times or none
grs.add_rule(
    name='First Rule',
    regex_pattern=r'''(-----BEGIN PRIVATE KEY-----)''',
    regex_blacklist_patterns=[],
)
# Compiles the rules. Should be called only once after all the rules were added
grs.compile_rules()

# Add file extensions to ignore during the search
grs.add_ignored_file_extension('bin')
grs.add_ignored_file_extension('jpg')

# Add file paths to ignore during the search. Free text is allowed
grs.add_ignored_file_path('site-packages')
grs.add_ignored_file_path('node_modules')

# Scans a repository
results = grs.scan('/repository/path')

# Results is a list of dicts. Each dict is in the following format:
# {
#     'author_email': 'author@email.email',
#     'author_name': 'Author Name',
#     'commit_id': '1111111111111111111111111111111111111111',
#     'commit_message': 'The commit message',
#     'content': 'The content of the file that has been matched',
#     'file_path': 'full/file/path',
#     'match': 'The matched group',
#     'rule_name': 'First Rule'
# },

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Gal Ben David - gal@intsights.com

Project Link: https://github.com/intsights/PyRepScan

Metadata

Release files for pyrepscan 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyrepscan 0.1.1
File Size Uploaded
PyRepScan-0.1.1.tar.gz 119.4 kB Details

Release files / PyRepScan-0.1.1.tar.gz

Download URL PyRepScan-0.1.1.tar.gz
Size 119.4 kB
Tags Source
SHA-256 checksum
How to use checksums
0354a9ea3898f4e7ef15564a3d94743c404ec8356bc3a5a860a8d70a3cf02474
BLAKE2b-256 checksum
How to use checksums
0fcfd55af93f68f1e108cec856d7f912ca795e8915680d6dd647a2c303c2b05c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.7

Release history Release notifications | RSS feed

0.9.6

9 release files

0.9.5

6 release files

0.9.4

7 release files

0.9.3

6 release files

0.9.2

12 release files

0.9.1

12 release files

0.9.0

12 release files

0.8.0

12 release files

0.7.4

12 release files

0.7.2

12 release files

0.7.1

9 release files

0.7.0

9 release files

0.6.1

1 release file

0.6.0

1 release file

0.5.2

1 release file

0.5.1

1 release file

0.5.0

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

This release

0.1.1 This release

1 release file

0.1.0

9 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page