python-vipaccess
Índice
Provisionando uma nova credencial de acesso VIP
Exiba um código QR para registrar sua credencial com aplicativos TOTP móveis
Gerando códigos de acesso usando uma credencial existente
Introdução
Dependências
Instalação
Uso
Este é um fork do cyrozap/python-vipaccess
. Principais diferenças:
Nenhuma dependência de qrcode
ou bibliotecas image
; você pode facilmente usar ferramentas externas, como qrencode
para converter um URI otpauth://
em um código QR, se necessário, portanto, parece desnecessário construir essa funcionalidade.
Opção para gerar as versões mobile ( SYMC
/ VSMT
) ou desktop ( SYDC
/ VSST
) dos tokens de acesso VIP; até onde sei, não há diferença real entre eles, mas alguns clientes exigem um ou outro especificamente. Existem também alguns tipos/prefixos de token mais raros que podem ser gerados se necessário (lista de referência da Symantec)
O utilitário de linha de comando foi expandido para suportar o provisionamento de token (criando um novo token) e a emissão de códigos para um token existente (inspirado na interface de linha de comando de stoken
, que lida com as mesmas funções para tokens RSA SecurID
python-vipaccess é uma implementação de software gratuito e de código aberto (FOSS) do cliente VIP Access da Symantec (agora propriedade da Broadcom).
Se você precisa acessar uma rede que usa o VIP Access para autenticação de dois fatores, mas não pode ou não quer usar os aplicativos proprietários da Symantec – que estão disponíveis apenas para Windows, MacOS, Android, iOS – então isto é para você .
Como @cyrozap descobriu na engenharia reversa do protocolo de acesso VIP (postagem original do blog), o Symantec VIP Access na verdade usa um padrão completamente aberto chamado Algoritmo de senha única baseado em tempo para gerar os códigos de 6 dígitos que ele gera. A única parte não padrão é o protocolo de provisionamento usado para criar um novo token.
Python 3.3+ (recomendado) ou 2.7 (não recomendado)
oath
pycryptodome
requests
Para fins de desenvolvimento, você pode instalar as dependências com pip install -r requirements.txt
no diretório raiz do projeto.
Para instalar pip
consulte a documentação de instalação pip
.
Instale com pip3
para buscar automaticamente dependências do Python. (Observe que na maioria dos sistemas, pip3
invoca a versão Python 3.x, enquanto pip
invoca a versão Python 2.7; Python 2.7 ainda é compatível, mas não é recomendado porque está se aproximando da obsolescência.)
# Install latest release from PyPI $ pip3 install python-vipaccess # Install latest development version from GitHub $ pip3 install https://github.com/dlenski/python-vipaccess/archive/HEAD.zip
Isso é usado para criar um novo token de acesso VIP. Ele se conecta a https://services.vip.symantec.com/prov e solicita um novo token, depois o desofusca e verifica se está decodificado e funcionando corretamente, por meio de uma segunda solicitação para https://vip.symantec. com/otpCheck.
Por padrão, ele armazena o novo token no arquivo .vipaccess
em seu diretório inicial (em um formato semelhante a stoken
), mas pode armazenar em outro arquivo ou apenas imprimir a string "token secret" com instruções sobre como use-o.
usage: vipaccess provision [-h] [-p | -o DOTFILE] [-t TOKEN_MODEL] optional arguments: -h, --help show this help message and exit -p, --print Print the new credential, but don't save it to a file -o DOTFILE, --dotfile DOTFILE File in which to store the new credential (default ~/.vipaccess) -i ISSUER, --issuer ISSUER Specify the issuer name to use (default: Symantec) -t TOKEN_MODEL, --token-model TOKEN_MODEL VIP Access token model. Often SYMC/VSMT ("mobile" token, default) or SYDC/VSST ("desktop" token). Some clients only accept one or the other. Other more obscure token types also exist: https://support.symantec.com/en_US/article.TECH239895.html
Aqui está um exemplo da saída de vipaccess provision -p
:
Generating request... Fetching provisioning response from Symantec server... Getting token from response... Decrypting token... Checking token against Symantec server... Credential created successfully: otpauth://totp/VIP%20Access:SYMC12345678?secret=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&issuer=Symantec&algorithm=SHA1&digits=6 This credential expires on this date: 2019-01-15T12:00:00.000Z You will need the ID to register this credential: SYMC12345678 You can use oathtool to generate the same OTP codes as would be produced by the official VIP Access apps: oathtool -b --totp AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # output one code oathtool -v -b --totp AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # ... with extra information
Aqui está o formato da saída do arquivo de token .vipaccess
da vipaccess provision [-o ~/.vipaccess]
. (Este arquivo é criado com permissões de leitura/gravação apenas para o usuário atual.)
version 1 secret AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA id SYMC12345678 expiry 2019-01-15T12:00:00.000Z
Depois de gerar um token com vipaccess provision
, use vipaccess uri
para mostrar o otpauth://
e qrencode
para exibir esse URI como um código QR:
$ qrencode -t UTF8 'otpauth://totp/VIP%20Access:SYMCXXXX?secret=YYYY&issuer=Symantec&algorithm=SHA1&digits=6'
Digitalize o código em seu aplicativo gerador de TOTP, como FreeOTP ou Google Authenticator.
A opção vipaccess [show]
também fará isso por você: por padrão, ela gera códigos baseados na credencial em ~/.vipaccess
, mas você pode especificar um arquivo de credencial alternativo ou especificar o "token secret" OATH na linha de comando.
usage: vipaccess show [-h] [-s SECRET | -f DOTFILE] optional arguments: -h, --help show this help message and exit -s SECRET, --secret SECRET Specify the token secret on the command line (base32 encoded) -f DOTFILE, --dotfile DOTFILE File in which the credential is stored (default ~/.vipaccess
Conforme mencionado acima, você pode usar outras ferramentas padrão baseadas em OATH para gerar códigos de 6 dígitos idênticos aos produzidos pelos aplicativos oficiais da Symantec.