@@ -14,32 +14,35 @@ class NXCModule:
1414 def __init__ (self ):
1515 self .search_path_linux = "'/home/' '/tmp/'"
1616 self .search_path_win = "'C:\\ Users\\ ', 'C:\\ ProgramData\\ AWSCLI\\ ', 'C:\\ Temp\\ '"
17-
1817
1918 def options (self , context , module_options ):
2019 r"""
2120 SEARCH_PATH_LINUX Linux location where to search for aws credentials related files
22- Default: '/home/ - /tmp/'
23-
21+ Default: " '/home/' ' /tmp/'"
22+
2423 SEARCH_PATH_WIN Windows locations where to search for aws credentials related files
25- Default: 'C:\\Users\\ - C:\\ProgramData\\AWSCLI\\ - C:\\Temp\\
24+ Default: " 'C:\\Users\\', ' C:\\ProgramData\\AWSCLI\\', ' C:\\Temp\\'"
2625 """
2726 if "SEARCH_PATH_LINUX" in module_options :
2827 self .search_path_linux = module_options ["SEARCH_PATH_LINUX" ]
2928
3029 if "SEARCH_PATH_WIN" in module_options :
3130 self .search_path_win = module_options ["SEARCH_PATH_WIN" ]
3231
33- def on_login (self , context , connection ):
34- # search for aws_credentials-related files on linux systems
32+ def on_login (self , context , connection ):
33+ # search for aws_credentials-related files on linux systems
3534 if "ssh" in context .protocol :
36- search_aws_creds_files_payload = "find %s -type f -name credentials -exec grep -l 'aws_' {} \\ ; 2>&1 | grep -v 'Permission denied$'" % ( self . search_path_linux )
35+ search_aws_creds_files_payload = f "find { self . search_path_linux } -type f -name credentials -o -name credentials.bk -o -name config.bk -o -name config"
3736 search_aws_creds_files_cmd = f'/bin/bash -c "{ search_aws_creds_files_payload } "'
38- search_aws_creds_files_output = connection .execute (search_aws_creds_files_cmd , False )
39- context .log .highlight (f"The following files were found: { search_aws_creds_files_output } " )
37+ output = connection .execute (search_aws_creds_files_cmd )
4038 else :
41- # search for aws_credentials-related files on windows systems
42- search_aws_creds_files_payload_win = "Get-ChildItem -Path %s -Recurse -Force -Include 'credentials' -File -ErrorAction SilentlyContinue | Where-Object { Select-String -Path $_.FullName -Pattern 'aws' -Quiet } | Select-Object -ExpandProperty FullName" % (self .search_path_win )
43- search_aws_creds_files_cmd_win = f'powershell.exe "{ search_aws_creds_files_payload_win } "'
44- search_aws_creds_files_output_win = connection .execute (search_aws_creds_files_cmd_win , False )
45- context .log .highlight (f"The following files were found: { search_aws_creds_files_output_win } " )
39+ # search for aws_credentials-related files on windows systems
40+ # we have to exclude "Application Data" as this creates an infinite recursion, see: https://www.reddit.com/r/PowerShell/comments/17pctnv/symbolic_link_application_data_in_appdatalocal/
41+ search_aws_creds_files_payload_win = f"Get-ChildItem -Path { self .search_path_win } -Recurse -Include ('credentials','credentials.bk','config','config.bk') -Force -ErrorAction SilentlyContinue | ? {{ $_.FullName -inotmatch 'Application Data' }} | Select FullName -ExpandProperty FullName"
42+ search_aws_creds_files_cmd_win = f'powershell.exe "{ search_aws_creds_files_payload_win } "'
43+ output = connection .execute (search_aws_creds_files_cmd_win , True )
44+
45+ if output :
46+ context .log .success ("The following files were found:" )
47+ for line in output .splitlines ():
48+ context .log .highlight (line .rstrip ())
0 commit comments