Opendrop é uma ferramenta de linha de comando que permite compartilhar arquivos entre dispositivos diretamente sobre o Wi-Fi. Seu recurso exclusivo é que ele é compatível com o protocolo com a Apple Airdrop, que permite compartilhar arquivos com dispositivos Apple executando iOS e macOS. Atualmente (e provavelmente também para o futuro próximo), o Opendrop suporta apenas o envio para dispositivos Apple que são descobertos por todos , pois o modo somente contatos padrão requer certificados assinados pela Apple. Apoiamos dispositivos somente de contatos usando credenciais extraídas de ardro-ar (chaves e certificados) do macOS por meio do nosso extrator de chaveiro.
O Opendrop é um software experimental e é o resultado de esforços de engenharia reversa pelo projeto de link sem fio aberto. Portanto, ele não suporta todos os recursos do Airdrop ou pode ser incompatível com futuras versões Airdrop. O Opendrop não é afiliado ou endossado pela Apple Inc. Use este código por sua conta e risco.
Para alcançar a compatibilidade com a Apple Airdrop, o Opendrop exige que a plataforma de destino suporta uma camada de link Wi-Fi específica. Além disso, requer python> = 3.6, bem como várias bibliotecas.
Link direto sem fio da Apple. À medida que o AirDrop executa exclusivamente o link direto sem fio da Apple (AWDL), o Opendrop é suportado apenas no macOS ou nos sistemas Linux, executando uma reimplementação aberta do AWDL, como a OWL.
Bibliotecas. Opendrop conta com uma versão atual do Libarchive. Macos envia com uma versão bastante antiga, então você precisará instalar uma versão mais recente, por exemplo, via Homebrew:
brew install libarchive
O Opendrop define automaticamente DYLD_LIBRARY_PATH
para procurar a versão homebrew. Pode ser necessário atualizar a variável se você instalar as bibliotecas de maneira diferente.
As distribuições Linux devem ser enviadas com versões mais atualizadas, portanto isso não será necessário.
A instalação do lançamento do pacote Python é direta usando pip3
:
pip3 install opendrop
Você também pode instalar a versão de desenvolvimento atual clonando este repositório e instalando -o via pip3
:
git clone https://github.com/seemoo-lab/opendrop.git
pip3 install ./opendrop
Explicamos brevemente como enviar e receber arquivos usando opendrop
. Para ver todas as opções da linha de comando, execute opendrop -h
.
O envio de um arquivo geralmente é um procedimento de duas etapas. Você primeiro descobre dispositivos nas proximidades usando o comando find
. Pare o processo depois de encontrar o receptor.
$ opendrop find
Looking for receivers. Press Ctrl+C to stop ...
Found index 0 ID eccb2f2dcfe7 name John’s iPhone
Found index 1 ID e63138ac6ba8 name Jane’s MacBook Pro
Você pode send
um arquivo (ou link, veja abaixo) usando
$ opendrop send -r 0 -f /path/to/some/file
Asking receiver to accept ...
Receiver accepted
Uploading file ...
Uploading has been successful
Em vez do index
, você também pode usar ID
ou name
. O Opendrop tentará interpretar a entrada no index
da ordem (1), (2) ID
e (3) name
e falhar se nenhuma correspondência foi encontrada.
Enviando um link da web. Desde a v0.13, o Opendrop suporta o envio de links da Web, IE, URLs, para que o recebimento de dispositivos da Apple abra imediatamente o navegador ao aceitar. (Observe que os receptores Opendrop ainda suportam apenas o recebimento de arquivos regulares.)
$ opendrop send -r 0 -f https://owlink.org --url
Receber é muito mais fácil. Basta usar o comando receive
. O Opendrop aceitará todos os arquivos recebidos automaticamente e colocará arquivos recebidos no diretório atual.
$ opendrop receive
Opendrop é o resultado de um projeto de pesquisa e, portanto, possui várias limitações (lista não exaustiva abaixo). Não tenho a capacidade de trabalhar neles, mas fico feliz em prestar assistência se alguém quiser aceitá -los.
Acionando os receptores MacOS/iOS via Bluetooth Low Energy. Os dispositivos Apple iniciam sua interface AWDL e servidor AirDrop somente após receber um anúncio personalizado via Bluetooth LE (consulte o artigo do USENIX para obter detalhes). Isso significa que os receptores da Apple Airdrop não podem ser descobertos, mesmo que sejam descobertos por todos .
Autenticação de remetente/receptor e estado de conexão. Atualmente, não há autenticação de pares, pois na Airdrop da Apple, em particular, (1) Opendrop não verifica se o certificado TLS é assinado pela raiz da Apple e (2) que o registro de validação do Apple ID está correto (consulte o artigo Usenix para obter detalhes) . Além disso, o Opendrop aceita automaticamente qualquer arquivo que recebe devido a um estado de conexão ausente.
Enviando vários arquivos. A Apple Airdrop suporta o envio de vários arquivos de uma só vez, o Opendrop não (exigiria a adição de mais arquivos ao arquivo, modifique a solicitação HTTP /ASK, etc.).
O Opendrop está licenciado sob a licença pública geral da GNU v3.0 .