Instalar o Navegador Tor em qualquer distribuição Linux
Publicado por bruno (última atualização em 12/05/2020)
[ Hits: 1.790 ]
Necessário ter a ferramenta CURL instalada em seu sistema.
Debian/Ubuntu:
$ sudo apt install -y curl
Fedora:
$ sudo dnf install -y curl
SuSE:
$ sudo zypper install -y curl
ArchLinux:
$ sudo pacman -S --noconfirm curl
Download e execução:
$ curl -sSL -o tor.sh https://raw.github.com/Brunopvh/torbrowser/master/tor.sh
$ chmod +x tor.sh
$ ./tor.sh --install
$ ./tor.sh --help
Fontes:
https://www.torproject.org/
https://support.torproject.org/tbb/how-to-verify-signature/
#!/usr/bin/env bash # VERSION='2020-05-07' # #-----------------------| INFO |-------------------------------# # Este script baixa e instala a ultima versão do no em qualquer # distribuição linux. # Requerimentos: bash curl # #-----------------------| GITHUB |-----------------------------# # https://github.com/Brunopvh/torbrowser # git clone https://github.com/Brunopvh/torbrowser.git # #-----------------------| Projeto Tor |-----------------------# # https://www.torproject.org/pt-BR/download/ # https://terminalroot.com.br/2015/08/45-exemplos-de-variaveis-e-arrays-em_19.html # Red='\033[0;31m' Green='\033[0;32m' Yellow='\033[0;33m' White='\033[0;37m' Reset='\033[m' #=============================================================# _c() { if [[ -z $2 ]]; then echo -e "\033[1;$1m" elif [[ $2 ]]; then echo -e "\033[$2;$1m" fi } #=============================================================# _msg() { echo -e "[>] $@" } _red() { echo -e "${Red}[!] $@${Reset}" } _green() { echo -e "${Green}[*] $@${Reset}" } _yellow() { echo -e "${Yellow}[+] $@${Reset}" } #=============================================================# usage() { cat << EOF Use: $(basename $0) --help|--install|--remove|--version|--downloadonly -h|--help Mostra ajuda. -i|--install Instala a ultima versão do torbrowser. -r|--remove Desistala o torbrowser. -v|--version Mostra a versão deste programa. -d|--downloadonly Apenas baixa o torbrowser. -u|--update Baixar atualização do navegador Tor se houver atualização disponivel. EOF exit 0 } [[ -z $1 ]] && usage space_line='-----------------------------------------------' #=============================================================# # Verifiacar se um executável existe _WHICH() { # $1 = executável a verificar. if [[ -x $(which "$1" 2> /dev/null) ]]; then return 0 else return 1 fi } #=============================================================# # Requisitos #=============================================================# # Usuário não pode ser o root. if [[ $(id -u) == '0' ]]; then _red "Usuário não pode ser o 'root' saindo" exit 1 fi # Necessário ter a ferramenta Curl. if ! _WHICH 'curl'; then _red "Instale a ferramenta: curl" exit 1 fi #=============================================================# # Arquivos e diretórios #=============================================================# dir_dow="$HOME/.cache/downloads" dir_temp="/tmp/space_tor_$USER" dir_unpack="$dir_temp/unpack" mkdir -p "$HOME/.local/bin" mkdir -p "$HOME/.local/share/applications" mkdir -p "$dir_dow" mkdir -p "$dir_temp" mkdir -p "$dir_unpack" declare -A array_tor_dirs array_tor_dirs=( [tor_destination]="$HOME/.local/bin/torbrowser-amd64" [tor_exec]="$HOME/.local/bin/torbrowser" [tor_file_desktop]="$HOME/.local/share/applications/start-tor-browser.desktop" ) #=============================================================# # Função para desistalar o tor. #=============================================================# _uninstall() { _msg "Desistalando navegador Tor" for c in "${array_tor_dirs[@]}"; do if [[ -d "$c" ]] || [[ -f "$c" ]] || [[ -L "$c" ]]; then _msg "Removendo: $c" rm -rf "$c" else _red "Não encontrado: $c" fi done } #=============================================================# case "$1" in -h|--help) usage; exit;; -r|--remove) _uninstall; exit;; -v|--version) echo -e "$(basename $0) V${VERSION}"; exit 0;; esac ShowLogo() { local GithubScriptTor='https://github.com/Brunopvh/torbrowser' _msg "$space_line" _msg "$(basename $0) V${VERSION}" _msg "${Yellow}A${Reset}utor: Bruno Chaves" _msg "${Yellow}G${Reset}ihub: $GithubScriptTor" _msg "$space_line" } ShowLogo # url = domain/version/name # echo "${tor_server_dir:17:5}" -> Retornar 5 caracteres apartir da posição 17. # /dist/torbrowser/9.0.9/tor-browser-linux64-9.0.9_en-US.tar.xz # _msg "${Yellow}A${Reset}guarde" tor_page='https://www.torproject.org/download/' tor_domain='https://dist.torproject.org/torbrowser' tor_html=$(grep -m 1 'torbrowser.*linux.*64.*tar' <<< $(curl -sSL "$tor_page")) tor_server_dir=$(echo "$tor_html" | sed 's/.*="//g;s/">.*//g') tor_file_name="$(basename $tor_server_dir)" tor_version=$(echo "$tor_server_dir" | cut -d '/' -f 4) tor_url_dow="$tor_domain/$tor_version/$tor_file_name" # Formar a URL apartir dos dados obtidos. tor_url_asc="${tor_url_dow}.asc" tor_path_file="$dir_dow/$tor_file_name" # Local onde o arquivo será baixado. tor_path_file_asc="${tor_path_file}.asc" # Inserir ~/.local/bin em PATH. echo "$PATH" | grep -q "$HOME/.local/bin" || { PATH="$HOME/.local/bin:$PATH" } #=============================================================# # Funções para configurar o PATH do usuário. #=============================================================# path_bash() { # Criar o arquivo ~/.bashrc se não existir if [ ! -f "$HOME/.bashrc" ]; then echo ' ' >> "$HOME/.bashrc" fi # Se a linha de configuração já existir, encerrar a função aqui. grep "$HOME/.local/bin" "$HOME/.bashrc" 1> /dev/null && return 0 # Continuar echo "Configurando o arquivo [$HOME/.bashrc]" echo "export PATH=$PATH" >> "$HOME/.bashrc" } path_zsh() { # Criar o arquivo ~/.zshrc se não existir if [ ! -f "$HOME/.zshrc" ]; then echo ' ' >> "$HOME/.zshrc" fi # Se a linha de configuração já existir, encerrar a função aqui. grep "$HOME/.local/bin" "$HOME/.zshrc" 1> /dev/null && return 0 # Continuar echo "Configurando o arquivo [$HOME/.zshrc]" echo "export PATH=$PATH" >> "$HOME/.zshrc" } _CURL() { # $1 = url # $2 = destino local url="$1" local file="$2" if [[ -f "$file" ]]; then _msg "Arquivo encontrado em [$file]" return 0 fi _msg "Baixando [$url]" _msg "Destino [$file]" if curl -# -SL "$url" -o "$file"; then return 0 else _red "Falha no download" rm -rf "$file" 2> /dev/null return 1 fi } _unpack() { local path_file="$tor_path_file" # Limpar o conteúdo do diretório antes de descomprimir. cd "$dir_unpack" && rm -rf * 1> /dev/null echo -ne "[>] Descompactando: $path_file " #_msg "Destino: [$dir_unpack]" # Detectar a extensão do arquivo. if [[ "${path_file: -6}" == 'tar.gz' ]]; then # tar.gz, 6 ultimos caracteres. type_file='tar.gz' elif [[ "${path_file: -7}" == 'tar.bz2' ]]; then # tar.bz2 type_file='tar.bz2' elif [[ "${path_file: -6}" == 'tar.xz' ]]; then # tar.xz type_file='tar.xz' elif [[ "${path_file: -4}" == '.zip' ]]; then # .zip type_file='.zip' else _red "Arquivo não suportado: [$path_file]" return 1 fi # Descomprimir. case "$type_file" in 'tar.gz') tar -zxvf "$path_file" -C "$dir_unpack" 1> /dev/null || return 1;; 'tar.bz2') tar -jxvf "$path_file" -C "$dir_unpack" 1> /dev/null || return 1;; 'tar.xz') tar -Jxf "$path_file" -C "$dir_unpack" 1> /dev/null || return 1;; '.zip') unzip "$path_file" -d "$dir_unpack" 1> /dev/null || return 1;; *) return 1;; esac echo -e "${Yellow}OK${Reset}" return 0 } _gpg_check() { # https://support.torproject.org/tbb/how-to-verify-signature/ # gpg --auto-key-locate nodefault,wkd --locate-keys torbrowser@torproject.org # gpg --output ./tor.keyring --export 0xEF6E286DDA85EA2A4BA7DE684E2C6E8793298290 # local url_tor_key='https://openpgpkey.torproject.org/.well-known/openpgpkey/torproject.org/hu/kounek7zrdx745qydx6p59t9mqjpuhdf' local path_keyring="$dir_temp/tor.keyring" # Verificar se gpg está instalado no sistema. if ! _WHICH 'gpg'; then _red "Instale o pacote [gpg] para verificar assinaturas" return 1 fi # Verificar se gpgv está instalado no sistema. if ! _WHICH 'gpgv'; then _red "Instale o pacote [gpgv] para verificar assinaturas" return 1 fi # Remover arquivo .keyring antigo se existir. if [[ -f "$path_keyring" ]]; then rm "$path_keyring"; fi if [[ -f "$tor_path_file_asc" ]]; then rm "$tor_path_file_asc"; fi _CURL "$tor_url_asc" "$tor_path_file_asc" || return 1 echo -ne "[>] Importando key " if curl -Ss "$url_tor_key" -o - | gpg --import - 1> /dev/null 2>&1; then echo -e "${Yellow}OK${Reset}" else echo ' ' _red "Falha gpg --import" fi _msg "Gerando arquivo: $path_keyring" gpg --output "$path_keyring" --export 0xEF6E286DDA85EA2A4BA7DE684E2C6E8793298290 || { _red "Falha ao tentar gerar o arquivo tor.keyring" return 1 } echo -ne "[>] Executando: gpgv --keyring " if gpgv --keyring $path_keyring $tor_path_file_asc $tor_path_file 1> /dev/null 2>&1; then echo -e "${Yellow}OK${Reset}" return 0 else echo ' ' _red "Falha na verificação de integridade, prosseguir com a instalação mesmo assim [s/n]?: " read -t 10 -n 1 sn [[ "${sn,,}" == 's' ]] || return 1 return 0 fi } _install_tor() { if _WHICH 'torbrowser'; then _msg "TorBrowser já instalado use ${Yellow}--remove${Reset} para desinstalar" return 0 fi _CURL "$tor_url_dow" "$tor_path_file" || return 1 for a in "${@}"; do if [[ "$a" == '-d' ]] || [[ "$a" == '--downloadonly' ]]; then _yellow "Somente baixar - $tor_path_file" return 0 break fi done _gpg_check || return 1 _unpack || return 1 _msg "Instalando em: ${array_tor_dirs[tor_destination]}" cd "$dir_unpack" mv $(ls -d tor-*) "${array_tor_dirs[tor_destination]}" chmod -R u+x "${array_tor_dirs[tor_destination]}" cd "${array_tor_dirs[tor_destination]}" ./start-tor-browser.desktop --register-app 1> /dev/null # Gerar arquivo .desktop # Gerar script para chamada via linha de comando. touch "${array_tor_dirs[tor_exec]}" echo '#!/usr/bin/env bash' > "${array_tor_dirs[tor_exec]}" # ~/.local/bin/torbrowser echo -e "\ncd ${array_tor_dirs[tor_destination]} \n" >> "${array_tor_dirs[tor_exec]}" echo './start-tor-browser.desktop "$@"' >> "${array_tor_dirs[tor_exec]}" # Gravar a versão atual no arquivo .desktop echo -e "Version=${tor_version}" >> "${array_tor_dirs[tor_file_desktop]}" chmod u+x "${array_tor_dirs[tor_file_desktop]}" chmod u+x "${array_tor_dirs[tor_exec]}" cp -u "${array_tor_dirs[tor_file_desktop]}" ~/Desktop/ 2> /dev/null cp -u "${array_tor_dirs[tor_file_desktop]}" ~/'Área de trabalho'/ 2> /dev/null cp -u "${array_tor_dirs[tor_file_desktop]}" ~/'Área de Trabalho'/ 2> /dev/null _msg "Configurando PATH" path_bash path_zsh Bash_Shell=$(command -v bash 2> /dev/null) Zsh_Shell=$(command -v zsh 2> /dev/null) if [ -x "$Bash_Shell" ]; then bash -c ". $HOME/.bashrc"; fi if [ -x "$Zsh_Shell" ]; then zsh -c ". ~/.zshrc"; fi if _WHICH 'torbrowser'; then _msg "TorBrowser instalado com sucesso" torbrowser # Abrir o navegador. else _red "Falha na instalação de TorBrowser" return 1 fi } # Verificar se existe atualização disponível. _check_update() { # Filtrar apenas a versão no arquivo .desktop if [[ -f "${array_tor_dirs[tor_file_desktop]}" ]]; then version_instaled=$(grep '^Version=' "${array_tor_dirs[tor_file_desktop]}" | sed 's/.*=//g') else version_instaled='0' fi if [[ "$tor_version" != "$version_instaled" ]]; then _msg "Nova versão disponível - $tor_version" _msg "Baixando atualização" _CURL "$tor_url_dow" "$tor_path_file" _msg "Atualização baixada com sucesso use ${Yellow}bash $(basename $0) --install${Reset} para instalar." else _msg "Não existem atualizações disponiveis" fi } while [[ $1 ]]; do case "$1" in -d|--downloadonly) _CURL "$tor_url_dow" "$tor_path_file";; -i|--install) _install_tor "$@";; -u|--update) _check_update;; *) usage; break;; esac shift done exit
Backup de vários servidores, diferenciado a rotina pela aplicação
Filtrando processos facilmente com psaux ( ps aux + grep + wc -l)
Pós-instalação do Ubuntu 18.04 LTS (codecs, ferramentas do sistema e dev.)
Bloqueando o acesso à internet
SSSR - configure Samba no Damn Small Linux e DSL-N
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (11)