2 pontos por GN⁺ 2023-07-21 | 1 comentários | Compartilhar no WhatsApp
  • nms é uma ferramenta de linha de comando que aplica a textos ASCII ou UTF-8 recebidos via pipe um efeito de descriptografia na tela, fazendo com que inicialmente pareçam dados criptografados antes de revelar os caracteres originais em texto claro
  • O efeito recria a famosa cena de descriptografia de dados do filme de hackers Sneakers, de 1992, e está ligado ao efeito mostrado no ponto 0:35 deste clipe do filme
  • Por padrão, o nms exibe primeiro os caracteres criptografados iniciais, depois espera a entrada do usuário pelo teclado e então inicia a sequência de descriptografia
  • A forma principal de uso é passar dados da saída padrão por pipe, como em ls -l | nms, e ele oferece opções representativas como descriptografia automática -a, mascaramento de caracteres de espaço -s, definição da cor de primeiro plano -f <color>, limpeza da tela -c e exibição da versão -v
  • O programa sneakers, fornecido junto, recria a cena mostrada no clipe do filme, e o usuário precisa selecionar uma das opções de menu antes de sair
  • A configuração padrão não tem dependências, mas usa sequências de escape de terminal ANSI/VT100 para reproduzir o efeito
    • Para terminais que não suportam ANSI/VT100, há uma implementação com ncurses
    • A implementação com ncurses oferece suporte a terminais sem ANSI, mas tem a limitação de sempre limpar a tela antes da saída, perdendo assim a funcionalidade inline
  • Para instalar a partir do código-fonte, são necessários git, gcc e make, e os alvos de compilação se dividem em nms, o opcional sneakers, além de nms-ncurses e sneakers-ncurses para ncurses
  • Para usuários que queiram usar o mesmo efeito em programas de linha de comando, a biblioteca em C LibNMS é oferecida separadamente
  • É software livre, podendo ser redistribuído e modificado sob os termos da GNU General Public License

1 comentários

 
GN⁺ 2023-07-21
Comentários no Hacker News
  • Gosto que as instruções de instalação não presumam que quem vai instalar esse pacote já tenha gcc/git/make
    Afinal, não deve existir alguém do tipo “sou um usuário *nix totalmente iniciante, com a distribuição recém-instalada, e quero instalar um comando que recria o efeito de descriptografia de Sneakers
    Pacotes demais fazem esse tipo de suposição, e nesses casos há grande chance de outras informações essenciais também estarem faltando
    Além disso, também é bom que não seja algo no estilo npm install

    • Odeio muito isso em documentação
      Às vezes só há trechos de código ou configuração que não funcionam sozinhos, sem ficar claro onde devem ser colocados ou dentro do quê estão aninhados
      Às vezes usam imports com nomes que nem aparecem na página
      No mínimo, eu gostaria que colocassem um exemplo completo no fim da página, ou um link para ele
    • Já perdi tempo demais rodando make ou procurando lib-$THING no apt só olhando o nome de um arquivo .h que estava faltando
    • No começo fiquei um pouco desapontado ao ver que era preciso compilar manualmente, mas o repositório é pequeno e a compilação termina em 1 segundo
      Isso deveria ser o padrão, e não uma exceção agradável
    • Passa uma sensação de “o resto fica como exercício para o leitor”
      Eu me identifico 100% com essa frustração
      Não quero colocar nada que envolva make em nenhum ponto do nosso processo
      Porque no fim vai falhar
      Dito isso, isto não foi feito para uso sério, está mais para um projeto de brincadeira
    • Por outro lado, seria bom se software fosse fácil de instalar, então estar incluído em pacotes da distribuição é conveniente
      Ainda assim, seria legal poder executar direto do código-fonte sem dependências, e acho que é por isso que algumas ferramentas ainda são feitas em shell puro
  • Em ataques reais de criptoanálise, há uma categoria de técnicas que, quando executadas, parecem a cena de descriptografia de Sneakers, como o oráculo de padding em CBC, o oráculo de padding RSA de Bleichenbacher e ataques byte a byte em ECB
    Se bem me lembro, Juliano Rizzo chamou isso de Hollywood Attack
    É um ótimo termo, eu queria que todo mundo usasse, e ele até ajuda um pouco a formar a intuição sobre o ataque
    Muitos ataques de criptoanálise funcionam não enfrentando a mensagem inteira de 128 ou 2048 bits de uma vez, mas sim isolando de forma criativa um único byte do texto cifrado

  • Eu adoro esse filme
    Vi em VHS quando era criança e, por coincidência, passo de bicicleta todos os dias pelo cenário de uma das cenas principais
    É o pátio de tijolos que hoje fica entre o Google e a Wharton
    No filme, ele aparece como uma área externa para refeições, e Sidney Poitier fala ao capanga no Karmann Ghia do Martin: “Martin, It's your mother”
    E então eles percebem que não estão com a NSA
    Hoje acrescentaram ali uma espécie de quartel de bombeiros suspenso, e a estrada mudou um pouco, mas eu gosto de como o lugar ainda permanece parecido com o que era na época das filmagens
    No geral, é um filme realmente muito bem feito

  • Baixar de 3 a 5 arquivos-fonte e simplesmente rodar make, e ele compila?
    Sem montar ambiente de build isolado, sem baixar 1600 dependências para compilar a partir do código-fonte, sem instalar uma hierarquia de sistema de arquivos com 1600 bibliotecas .so, sem Docker nem npm?
    E ainda por cima compila em menos de 1 segundo?
    Impressionante o que essa nova linguagem C consegue fazer

    • Não exatamente
      Você precisa ter make e a toolchain de C instalados
      Se isso estiver instalado, é quase certo que Python, Perl e talvez até uma versão bem recente de Java também estejam
      No MacOS não, mas na maioria das distribuições Linux provavelmente sim
      E todos eles também conseguem fazer a mesma coisa sem dependências
    • Isso trouxe memórias fortes
      Nos anos 90, eu às vezes implementava métodos por conta própria porque achava, por engano, que incluir stdlib.h ou outras bibliotecas faria um programa em C ficar inchado
      Ou seja, eu nem entendia como a etapa de linkedição funcionava
      Meu eu de 12 anos ficaria sem ar ao ver hoje NPM, pip, bundle e até Electron
      Dava para fazer muita coisa com muito pouco
    • Isso vale para qualquer linguagem
      Se o ambiente estiver instalado e o programa não tiver dependências, basta rodar o comando de build
      Este projeto também precisa de gcc, make e ncurses sem versões especificadas
    • Espero que não promovam demais esse tipo de linguagem
      Senão ela pode virar algo como o Python horroroso de hoje
      Python já foi fantástico e realmente simplesmente funcionava
      Aí todo mundo descobriu a linguagem, a Nvidia entrou na jogada e vieram TensorFlow/PyTorch/machine learning, e tudo desandou
      Porque script kiddies sem o menor interesse em compatibilidade de pacotes escreveram coisa demais malfeita
      A comunidade é o maior ponto forte da linguagem e, ao mesmo tempo, uma parte enorme do que ela tem de pior
    • Pessoalmente, são tão poucas as vezes em que digitei make e realmente funcionou que, quando vejo um projeto em C, penso “legal, mas eu não vou conseguir compilar isso” e fecho a aba
      Este projeto compilou direitinho
  • Quando ouço a palavra “Passport”, não consigo evitar dizer “My voice is my passport”, nem que seja só na minha cabeça

    • Para mim é “cattle”
      “cattle mutilations are up”
    • O call center do HSBC tinha reconhecimento de voz, e acho que dizia “Your voice is your passport” ou “password”
      Agora já nem sei qual dos dois era
    • Só de ouvir alguém dizer a palavra passport já me agrada
    • “…verify me”
      O que acabei de fazer não foi fácil
    • A Bell realmente tinha um recurso desses, e o The Phone Losers of America abusou dele
      O hack foi diretamente inspirado no filme, e a PLA mostrou isso em um episódio de podcast
      https://phonelosers.com/2008/05/pla-radio-episode-17-voice-a...
  • A combinação disso com o cool-retro-term[1] é essencial para passar um tempo de hacker de verdade no meu computador
    [1] https://github.com/Swordfish90/cool-retro-term

    • Instalei o cool-retro-term e o no-more-secrets em um Chromebook com Linux ativado, e na prática fica bem bonito
      https://www.youtube.com/watch?v=_gRIG_zK4SQ
    • Ver aquela tela âmbar me trouxe uma onda de nostalgia
      No meu primeiro trabalho em help desk, o suporte a mainframe fazia parte do serviço, e eu podia usar um antigo terminal de plasma IBM de 4 partições que ainda restava
      O sistema de tickets também ainda ficava no mainframe, então era realmente útil para o trabalho no help desk
      Acho que era este modelo, ou um muito parecido: https://www.argecy.com/ibm-3290-plasma-terminal
    • Se você gostou disso, provavelmente também vai curtir isto[1]
      [1] https://github.com/Rezmason/matrix
    • No Mac, dá para instalar facilmente com o comando abaixo
      brew install --cask cool-retro-term
    • Coisa para noites solitárias e entediantes
  • É curioso que, ao ver o obituário do Kevin Mitnick, esse filme tenha vindo imediatamente à minha cabeça
    Imagino que muita gente tenha pensado o mesmo

  • Sempre divertido
    Alguns anos atrás, fiz um script Python de arquivo único, decrypt.py, que faz quase exatamente a mesma coisa
    Infelizmente, ele ainda é o repositório mais popular entre os meus projetos no GitHub: https://github.com/jtwaleson/decrypt

  • Eu realmente gostaria de ver uma versão moderna de Sneakers
    Seria legal se a história fosse sobre alguém descobrir que um computador quântico provavelmente já foi construído e que, se ele realmente existir, precisa ser roubado
    Isso também encaixa perfeitamente com o meme “no more secrets” do Sneakers

    • Pessoalmente, acho que até um remake com o elenco original poderia funcionar
      Mas o original já era um filme sobre envelhecimento e maturidade, então só o fato de mais uma geração ter passado não renderia uma história tão convincente
      É triste que River Phoenix e Sidney Poitier tenham morrido, e até fui conferir se Ben Kingsley ainda está vivo
      Para um filme que lida em alguma medida com tecnologia, acho que o original envelheceu surpreendentemente bem
      Em parte porque foi feito exatamente antes da chegada da World Wide Web, e porque mesmo em 2023 ainda existem sistemas importantes rodando em mainframes
    • Sim
      Não sei por que os filmes de que eu gostava quando era criança não ganham reboot, continuação, prequela, nem sequer uma continuação ruim
  • Este é um dos filmes da minha vida
    A cena da descriptografia é realmente icônica na minha memória, e este projeto capturou perfeitamente essa sensação