Используйте командлет Get-ChildItem с помощью переключателя -Recurse
:
Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse -ErrorAction SilentlyContinue -Force
Base64, кодирующий , находится в стандартной библиотеке и сделает для остановки серфингистов плеча:
>>> import base64
>>> print base64.b64encode("password")
cGFzc3dvcmQ=
>>> print base64.b64decode("cGFzc3dvcmQ=")
password
Существует несколько утилит ROT13, записанных в Python в 'Сети - просто Google для них. ROT13 кодируют строку офлайн, копируют ее в источник, декодируют в точке передачи.
, Но это действительно слабая защита...
Это - довольно типичная проблема. Обычно лучшее, которое можно сделать, к любому
, А создают некоторую ceasar функцию шифра для кодирования/декодирования (просто не rot13) или B), предпочтительный метод состоит в том, чтобы использовать ключ шифрования, в досягаемости программы, кодировать/декодировать пароль. В котором можно использовать защиту файла для защиты, получают доступ к ключу. Вдоль тех строк, если Ваше выполнение приложения как сервис/демон (как веб-сервер) можно поместить ключ в защищенный паролем keystore с вводом пароля как часть сервисного запуска. Это возьмет администратора для перезапуска приложения, но у Вас будет действительно хороший pretection для Ваших паролей конфигурации.
Лучшее решение, принимая имя пользователя и пароль не может быть дано во времени выполнения пользователем, вероятно, отдельный исходный файл, содержащий только переменную инициализацию для имени пользователя и пароля, который импортируется в Ваш основной код. Этому файлу только было бы нужно редактирование, когда учетные данные изменяются. Иначе, если Вы только волнуетесь по поводу серфингистов плеча со средними памятями, кодировка Base 64 является, вероятно, самым легким решением. ROT13 просто слишком легок для декодирования вручную, не чувствителен к регистру и сохраняет слишком много значения в, он зашифровал состояние. Закодируйте свой пароль и идентификатор пользователя вне сценария Python. Имейте его, сценарий декодирует во времени выполнения для использования.
Предоставление учетных данных сценариев для автоматизированных задач всегда является опасным предложением. Ваш сценарий должен иметь свои собственные учетные данные и учетную запись, которую он использует, не должен иметь никакого доступа кроме точно, что необходимо. По крайней мере, пароль должен быть долгим и довольно случайным.
Ваша операционная система, вероятно, предоставляет средства для шифрования данных надежно. Например, в Windows существует DPAPI (API защиты данных). Для почему бы не выяснения у пользователя их учетные данные, первый раз, когда Вы работаете тогда, запасается ими зашифрованный для последующих выполнений?
Поместите конфигурационную информацию в зашифрованный файл конфигурации. Запросите эту информацию в своем коде с помощью ключа. Поместите этот ключ в отдельном файле на среду и не снабжайте его своим кодом.
Douglas F Комбайн является обычно утверждаемым решением в Unix, когда необходимо определить пароль для удаленного входа в систему.
Вы добавляете - опция пароля от файла определить путь и прочитать простой текст из файла.
файл может тогда быть в собственной области пользователя, защищенной операционной системой. Это также позволяет различным пользователям автоматически брать свой собственный собственный файл.
Для паролей, которые пользователю сценария не разрешают знать - можно выполнить сценарий с поднятым разрешением и владеть файлом паролей тем пользователем корня/администратора.
base64 является способом пойти для Ваших простых потребностей. Нет никакой потребности импортировать что-либо:
>>> 'your string'.encode('base64')
'eW91ciBzdHJpbmc=\n'
>>> _.decode('base64')
'your string'
Как насчет того, чтобы импортировать имя пользователя и пароль из файла, внешнего к сценарию? Тот путь, даже если бы кто-то овладел сценарием, они автоматически не получили бы пароль.
Вот мой отрывок для такой вещи. Вы в основном импортируете или копируете функцию в свой код. getCredentials создаст зашифрованный файл, если он не будет существовать и возвращать dictionaty, и updateCredential обновит.
import os
def getCredentials():
import base64
splitter='<PC+,DFS/-SHQ.R'
directory='C:\\PCT'
if not os.path.exists(directory):
os.makedirs(directory)
try:
with open(directory+'\\Credentials.txt', 'r') as file:
cred = file.read()
file.close()
except:
print('I could not file the credentials file. \nSo I dont keep asking you for your email and password everytime you run me, I will be saving an encrypted file at {}.\n'.format(directory))
lanid = base64.b64encode(bytes(input(' LanID: '), encoding='utf-8')).decode('utf-8')
email = base64.b64encode(bytes(input(' eMail: '), encoding='utf-8')).decode('utf-8')
password = base64.b64encode(bytes(input(' PassW: '), encoding='utf-8')).decode('utf-8')
cred = lanid+splitter+email+splitter+password
with open(directory+'\\Credentials.txt','w+') as file:
file.write(cred)
file.close()
return {'lanid':base64.b64decode(bytes(cred.split(splitter)[0], encoding='utf-8')).decode('utf-8'),
'email':base64.b64decode(bytes(cred.split(splitter)[1], encoding='utf-8')).decode('utf-8'),
'password':base64.b64decode(bytes(cred.split(splitter)[2], encoding='utf-8')).decode('utf-8')}
def updateCredentials():
import base64
splitter='<PC+,DFS/-SHQ.R'
directory='C:\\PCT'
if not os.path.exists(directory):
os.makedirs(directory)
print('I will be saving an encrypted file at {}.\n'.format(directory))
lanid = base64.b64encode(bytes(input(' LanID: '), encoding='utf-8')).decode('utf-8')
email = base64.b64encode(bytes(input(' eMail: '), encoding='utf-8')).decode('utf-8')
password = base64.b64encode(bytes(input(' PassW: '), encoding='utf-8')).decode('utf-8')
cred = lanid+splitter+email+splitter+password
with open(directory+'\\Credentials.txt','w+') as file:
file.write(cred)
file.close()
cred = getCredentials()
updateCredentials()
Почему бы не простой xor?
Преимущества:
, я перехожу к сути дела, где я распознаю простые строки b64 для общих слов и rot13 также. Xor сделал бы его намного тяжелее.