Скрытие пароля в скрипте Python (только небезопасное запутывание)

Используйте командлет Get-ChildItem с помощью переключателя -Recurse:

Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse -ErrorAction SilentlyContinue -Force

114
задан dreftymac 1 May 2017 в 20:09
поделиться

11 ответов

Base64, кодирующий , находится в стандартной библиотеке и сделает для остановки серфингистов плеча:

>>> import base64
>>> print base64.b64encode("password")
cGFzc3dvcmQ=
>>> print base64.b64decode("cGFzc3dvcmQ=")
password
103
ответ дан Ivan 1 May 2017 в 20:09
поделиться
  • 1
    Если контейнер имеет полосу прокрутки, you' ll должен составлять scrollTop: scrollTo.offset () .top - container.offset () .top + container.scrollTop () – claviska 20 May 2011 в 00:34

Существует несколько утилит ROT13, записанных в Python в 'Сети - просто Google для них. ROT13 кодируют строку офлайн, копируют ее в источник, декодируют в точке передачи.

, Но это действительно слабая защита...

0
ответ дан Kevin Little 1 May 2017 в 20:09
поделиться

Это - довольно типичная проблема. Обычно лучшее, которое можно сделать, к любому

, А создают некоторую ceasar функцию шифра для кодирования/декодирования (просто не rot13) или B), предпочтительный метод состоит в том, чтобы использовать ключ шифрования, в досягаемости программы, кодировать/декодировать пароль. В котором можно использовать защиту файла для защиты, получают доступ к ключу. Вдоль тех строк, если Ваше выполнение приложения как сервис/демон (как веб-сервер) можно поместить ключ в защищенный паролем keystore с вводом пароля как часть сервисного запуска. Это возьмет администратора для перезапуска приложения, но у Вас будет действительно хороший pretection для Ваших паролей конфигурации.

4
ответ дан 1 May 2017 в 20:09
поделиться
  • 1
    Я don' t как ответы как это. Sed и awk легко понять за несколько часов и намного более легкий и широко доступный, чем абсолютный язык. Программирование Shell так же релевантно как всегда, говоря " NEVER" используйте это, или тот инструмент просто задержан. Но, wasn' t эта отсталая идея одна из основ, на которых появился Perl? О, хорошо- – ata 19 October 2011 в 11:29

Лучшее решение, принимая имя пользователя и пароль не может быть дано во времени выполнения пользователем, вероятно, отдельный исходный файл, содержащий только переменную инициализацию для имени пользователя и пароля, который импортируется в Ваш основной код. Этому файлу только было бы нужно редактирование, когда учетные данные изменяются. Иначе, если Вы только волнуетесь по поводу серфингистов плеча со средними памятями, кодировка Base 64 является, вероятно, самым легким решением. ROT13 просто слишком легок для декодирования вручную, не чувствителен к регистру и сохраняет слишком много значения в, он зашифровал состояние. Закодируйте свой пароль и идентификатор пользователя вне сценария Python. Имейте его, сценарий декодирует во времени выполнения для использования.

Предоставление учетных данных сценариев для автоматизированных задач всегда является опасным предложением. Ваш сценарий должен иметь свои собственные учетные данные и учетную запись, которую он использует, не должен иметь никакого доступа кроме точно, что необходимо. По крайней мере, пароль должен быть долгим и довольно случайным.

18
ответ дан tduehr 1 May 2017 в 20:09
поделиться
  • 1
    Вы can' t принимают доступность чего-либо кроме sh, sed и awk в большинстве систем Unix не-Linux. Если Вы хотите, чтобы что-то работало над out-of-the-box Солярисом, HP/UX или установкой AIX, you' ре застревает в sed и awk. – ConcernedOfTunbridgeWells 14 December 2008 в 23:32

Ваша операционная система, вероятно, предоставляет средства для шифрования данных надежно. Например, в Windows существует DPAPI (API защиты данных). Для почему бы не выяснения у пользователя их учетные данные, первый раз, когда Вы работаете тогда, запасается ими зашифрованный для последующих выполнений?

2
ответ дан Jamie Eisenhart 1 May 2017 в 20:09
поделиться
  • 1
    Я работал с парнем однажды, который записал PostScript для превращения лазерного принтера в маршрутизатор. – Sam Kington 15 December 2008 в 04:09

Поместите конфигурационную информацию в зашифрованный файл конфигурации. Запросите эту информацию в своем коде с помощью ключа. Поместите этот ключ в отдельном файле на среду и не снабжайте его своим кодом.

1
ответ дан FlySwat 1 May 2017 в 20:09
поделиться

Douglas F Комбайн является обычно утверждаемым решением в Unix, когда необходимо определить пароль для удаленного входа в систему.
Вы добавляете - опция пароля от файла определить путь и прочитать простой текст из файла.
файл может тогда быть в собственной области пользователя, защищенной операционной системой. Это также позволяет различным пользователям автоматически брать свой собственный собственный файл.

Для паролей, которые пользователю сценария не разрешают знать - можно выполнить сценарий с поднятым разрешением и владеть файлом паролей тем пользователем корня/администратора.

48
ответ дан Martin Beckett 1 May 2017 в 20:09
поделиться
  • 1
    @BradGilbert: как я просто упомянул в главном ответе, протесте Perl (& Python, рубин, и т.д.) по awk то, что некоторые regexp reaaaaaaaaaally медленнее в первом: swtch.com/~rsc/regexp/regexp1.html – Olivier Dulac 12 February 2016 в 16:35

base64 является способом пойти для Ваших простых потребностей. Нет никакой потребности импортировать что-либо:

>>> 'your string'.encode('base64')
'eW91ciBzdHJpbmc=\n'
>>> _.decode('base64')
'your string'
15
ответ дан tzot 1 May 2017 в 20:09
поделиться
  • 1
    @S.Lott: I' m не предлагающий то, чтобы любой попытался создать веб-приложение в awk, но сказать, что они никогда не должны использоваться, немного возмутительно. Для простого s& r и/или тонкая настройка (особенно в файл разделенного текста), жемчуг-e или Python-c никогда не будет столь же эффективным как sed/awk острота. – RET 15 December 2008 в 05:50

Как насчет того, чтобы импортировать имя пользователя и пароль из файла, внешнего к сценарию? Тот путь, даже если бы кто-то овладел сценарием, они автоматически не получили бы пароль.

16
ответ дан Douglas F Shearer 1 May 2017 в 20:09
поделиться
  • 1
    Половина моих сценариев оболочки использует или sed или awk. Они совсем не мертвы. Python является моим предпочтительным языком сценариев, но иногда sed и awk являются лучшим инструментом для задания. Просто, потому что они много лет использовались, не означает, что они являются устаревшими. – Jeremy Cantrell 15 December 2008 в 04:01

Вот мой отрывок для такой вещи. Вы в основном импортируете или копируете функцию в свой код. 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()
1
ответ дан 24 November 2019 в 01:55
поделиться

Почему бы не простой xor?

Преимущества:

  • похож на двоичные данные
  • , никто не может считать его, не зная ключ (даже если это - единственный символ)

, я перехожу к сути дела, где я распознаю простые строки b64 для общих слов и rot13 также. Xor сделал бы его намного тяжелее.

0
ответ дан 24 November 2019 в 01:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: