오프라인imaprc의 모든 필드를 암호화할 수 있나요?

오프라인imaprc의 모든 필드를 암호화할 수 있나요?

Offlineimap을 사용하여 Gmail 등과 동기화하는 경우 비밀번호를 암호화하고 Python 스크립트를 사용하여 런타임에 비밀번호를 해독할 수 있습니다. 이는 설정을 통해 수행됩니다.

Remotepass = passwd('gmail.gpg')

오프라인imaprc 파일에서 passwd는 Python 함수입니다. 이 Python 함수의 사용은 remotepass위의 예와 같이 특정 키로 제한되어 있습니까? 아니면 이론적으로 각 키의 오른쪽에 Python 함수를 사용할 수 있습니까? 질문하는 이유는 다음과 같습니다. 다른 키에 대해서도 다른 값을 암호화하려고 합니다. 그러나 다음과 같은 오류가 발생합니다.

ERROR: While attempting to sync account 'gmail'
  ('http error', 401, 'Unauthorized', <httplib.HTTPMessage instance at 0x7f8ca13541b8>) (configuration is: {'client_secret': "passwd('gmail_client_secret.gpg')", 'grant_type': 'refresh_token', 'refresh_token': "passwd('gmail_rf_token.gpg')", 'client_id': "passwd('gmail_client_id.gpg')"})

passwd이 기능이 실제로 실행되는지 는 잘 모르겠습니다 . Python 인터프리터에서 Python 함수를 실행하면 올바른 결과가 나타납니다.

답변1

내가 아는 한, 운이 좋게도 몇 개의 열쇠만이 성공할 수 있었습니다.평가적인파이썬 코드로. 이들 중 일부는 문자열 "eval"로 끝나는 키를 통해 구성 파일에 명시적으로 표시되지만 remotepasseval, 다른 것들은 주석에만 표시됩니다. 예를 들어 nametrans분명히 함수여야 합니다.

이것은 Python 이므로 offlineimap배포판에서 소스 코드를 찾을 수 있습니다. 내 경우에는 파일 /usr/lib/python2.7/site-packages/offlineimap/repository/IMAP.py에 처리할 코드가 있었는데 remotepasseval, 이는 상당히 이해하기 쉬웠습니다.

    passwd = self.getconf('remotepasseval', None)
    if passwd != None:
        return self.localeval.eval(passwd)

다른 용도를 찾아 localeval어떤 키가 이런 방식으로 처리되는지 확인할 수 있습니다. 다른 키를 평가하려는 경우 유사한 호출을 사용하여 자신만의 프로그램 버전을 만드는 것이 그리 어렵지 않을 수 있습니다.

관련 정보