@@ -27,12 +27,14 @@ def main():
27
27
parser .add_argument ("--entropy" , dest = "do_entropy" , help = "Enable entropy checks" )
28
28
parser .add_argument ("--since_commit" , dest = "since_commit" , help = "Only scan from a given commit hash" )
29
29
parser .add_argument ("--max_depth" , dest = "max_depth" , help = "The max commit depth to go back when searching for secrets" )
30
+ parser .add_argument ("--branch" , dest = "branch" , help = "Name of the branch to be scanned" )
30
31
parser .add_argument ('git_url' , type = str , help = 'URL for secret searching' )
31
32
parser .set_defaults (regex = False )
32
33
parser .set_defaults (rules = {})
33
34
parser .set_defaults (max_depth = 1000000 )
34
35
parser .set_defaults (since_commit = None )
35
36
parser .set_defaults (entropy = True )
37
+ parser .set_defaults (branch = None )
36
38
args = parser .parse_args ()
37
39
rules = {}
38
40
if args .rules :
@@ -48,7 +50,7 @@ def main():
48
50
for regex in rules :
49
51
regexes [regex ] = rules [regex ]
50
52
do_entropy = str2bool (args .do_entropy )
51
- output = find_strings (args .git_url , args .since_commit , args .max_depth , args .output_json , args .do_regex , do_entropy , surpress_output = False )
53
+ output = find_strings (args .git_url , args .since_commit , args .max_depth , args .output_json , args .do_regex , do_entropy , surpress_output = False , branch = args . branch )
52
54
project_path = output ["project_path" ]
53
55
shutil .rmtree (project_path , onerror = del_rw )
54
56
if output ["foundIssues" ]:
@@ -240,14 +242,19 @@ def handle_results(output, output_dir, foundIssues):
240
242
output ["foundIssues" ].append (result_path )
241
243
return output
242
244
243
- def find_strings (git_url , since_commit = None , max_depth = 1000000 , printJson = False , do_regex = False , do_entropy = True , surpress_output = True , custom_regexes = {}):
245
+ def find_strings (git_url , since_commit = None , max_depth = 1000000 , printJson = False , do_regex = False , do_entropy = True , surpress_output = True , custom_regexes = {}, branch = None ):
244
246
output = {"foundIssues" : []}
245
247
project_path = clone_git_repo (git_url )
246
248
repo = Repo (project_path )
247
249
already_searched = set ()
248
250
output_dir = tempfile .mkdtemp ()
249
251
250
- for remote_branch in repo .remotes .origin .fetch ():
252
+ if branch :
253
+ branches = repo .remotes .origin .fetch (branch )
254
+ else :
255
+ branches = repo .remotes .origin .fetch ()
256
+
257
+ for remote_branch in branches :
251
258
since_commit_reached = False
252
259
branch_name = remote_branch .name
253
260
prev_commit = None
0 commit comments