2P by GN⁺ | ★ favorite | 댓글 1개
  • nms는 파이프로 받은 ASCII 또는 UTF-8 텍스트에 화면 속 데이터 복호화 효과를 적용해, 처음에는 암호화된 데이터처럼 보인 뒤 원래 평문 문자를 드러내는 명령줄 도구임
  • 효과는 1992년 해커 영화 Sneakers의 유명한 데이터 복호화 장면을 재현한 것이며, 참고용 영화 클립 기준 0:35 지점의 효과와 연결됨
  • nms는 기본적으로 초기 암호화 문자를 표시한 뒤 사용자의 키 입력을 기다리고, 이후 복호화 시퀀스를 시작하는 방식임
  • 주요 사용 방식은 ls -l | nms처럼 표준 출력 데이터를 파이프로 넘기는 형태이며, 대표 옵션으로 자동 복호화 -a, 공백 문자 마스킹 -s, 전경색 지정 -f <color>, 화면 정리 -c, 버전 표시 -v를 제공함
  • 함께 제공되는 sneakers 프로그램은 영화 클립에서 보이는 장면을 재현하며, 종료 전에 사용자가 메뉴 옵션 중 하나를 선택해야 함
  • 기본 구성은 의존성이 없지만 효과 재현에 ANSI/VT100 터미널 이스케이프 시퀀스를 사용함
    • ANSI/VT100을 지원하지 않는 터미널을 위해 ncurses 구현을 제공함
    • ncurses 구현은 비 ANSI 터미널을 지원하지만, 출력 전에 항상 화면을 지우므로 인라인 기능을 잃는 제약이 있음
  • 소스 설치에는 git, gcc, make가 필요하며, 빌드 대상은 nms, 선택 항목인 sneakers, ncurses용 nms-ncursessneakers-ncurses로 나뉨
  • 명령줄 프로그램에서 같은 효과를 쓰려는 사용자를 위해 C 라이브러리 LibNMS를 별도로 제공함
  • GNU General Public License 조건에 따라 재배포와 수정이 가능한 자유 소프트웨어임

댓글과 토론

Hacker News 의견들
  • 설치 안내가 이 패키지를 설치하려는 사람이 이미 gcc/git/make를 갖고 있다고 가정하지 않는 점이 마음에 듦
    “새로 설치한 배포판의 완전 초보 *nix 사용자인데, Sneakers의 복호화 효과를 재현하는 명령어를 설치하고 싶어요” 같은 사람은 없을 테니까
    너무 많은 패키지가 이런 가정을 하고, 그런 경우 다른 핵심 정보도 빠져 있을 가능성이 커짐
    게다가 npm install식 무언가가 아니라는 점도 좋음

    • 문서에서 이런 걸 정말 싫어함
      단독으로 동작하지 않는 코드나 설정 조각만 있고, 어디에 넣어야 하는지나 무엇 안에 중첩되는지도 불명확한 경우가 있음
      페이지에서 찾을 수 없는 이름의 import를 쓰기도 함
      최소한 페이지 아래에 완전한 예제나 그 링크라도 넣어줬으면 함
    • 빠진 .h 파일 이름만 보고 make를 두드리거나 apt에서 lib-$THING을 찾느라 너무 많은 시간을 잃어왔음
    • 처음엔 직접 빌드해야 한다는 걸 보고 살짝 실망했지만, 저장소가 작고 빌드도 1초면 끝남
      이런 게 기본값이어야지 기분 좋은 예외가 아니어야 함
    • “나머지는 독자의 연습 문제로 남겨둔다” 같은 느낌임
      이런 좌절감에 100% 공감함
      이 저장소처럼 make가 들어가는 건 우리 프로세스 어디에도 넣고 싶지 않음
      결국 실패할 테니까
      다만 이건 진지하게 쓰라는 게 아니라 장난감 프로젝트에 가까움
    • 반대로 소프트웨어는 설치가 쉬웠으면 해서, 배포판 패키지에 포함되는 건 편리함
      그래도 의존성 없이 소스에서 바로 실행할 수 있으면 멋질 듯하고, 그래서 일부 도구가 아직도 순수 셸 코드로 만들어지는 것 같음
  • 실제 암호분석 공격 중에는 CBC 패딩 오라클, Bleichenbacher의 RSA 패딩 오라클, ECB 바이트 단위 공격처럼 실행하면 Sneakers의 복호화 장면처럼 보이는 부류가 있음
    Juliano Rizzo가 여기에 Hollywood Attack이라는 용어를 붙였던 걸로 기억함
    좋은 용어라 모두가 썼으면 하고, 공격 직관을 잡는 데도 약간 도움이 됨
    많은 암호분석 공격은 전체 128비트나 2048비트 메시지를 한꺼번에 상대하기보다, 암호문 한 바이트를 창의적으로 고립시키는 방식으로 작동함

  • 이 영화를 정말 좋아함
    어릴 때 VHS로 봤고, 우연히도 주요 장면 중 하나의 배경을 매일 자전거로 지나감
    지금 Google과 Wharton 사이에 있는 벽돌 안뜰이 그곳임
    영화에서는 야외 식사 공간으로 나오고, Sidney Poitier가 Martin의 Karman Ghia에서 카폰을 들고 “Martin, It's your mother”라고 말함
    그러고 나서 그들이 NSA와 함께 있는 게 아니라는 걸 깨닫게 됨
    지금은 그곳에 떠 있는 듯한 소방서를 추가했고 길도 조금 달라졌지만, 영화 촬영 당시와 지금 풍경이 여전히 비슷하게 남아 있는 점이 좋음
    전반적으로 정말 잘 만든 영화임

  • 소스 파일 3~5개를 내려받고 make만 치면 그냥 빌드된다고?
    격리된 빌드 환경 구성도 없고, 의존성 1600개를 받아 소스에서 빌드하지도 않고, .so 라이브러리 1600개짜리 파일시스템 계층도 설치하지 않고, Docker나 npm 같은 것도 안 돌린다고?
    게다가 1초도 안 걸려 컴파일된다고?
    이 새로운 언어 C가 할 수 있는 일이 참 놀라움

    • 정확히는 아님
      makeC 도구체인이 설치돼 있어야 함
      그게 설치돼 있다면 거의 확실히 Python, Perl, 어쩌면 꽤 최근 Java도 설치돼 있을 가능성이 큼
      MacOS는 아니지만 대부분의 Linux 배포판은 그렇다고 봄
      그리고 이들 모두도 의존성 없이 같은 일을 할 수 있음
    • 예전 기억이 확 떠오름
      90년대에는 stdlib.h나 다른 라이브러리를 포함하면 C 프로그램이 부풀어진다고 잘못 생각해서 직접 메서드를 구현하곤 했음
      링크가 어떻게 동작하는지도 몰랐던 셈임
      12살의 나는 요즘 NPM, pip, bundle, 심지어 Electron을 보면 숨이 막힐 듯함
      아주 적은 것으로도 정말 많은 걸 할 수 있었음
    • 모든 언어가 마찬가지임
      환경이 설치돼 있고 프로그램에 의존성이 없으면 빌드 명령만 실행하면 됨
      이 프로젝트도 버전이 명시되지 않은 gcc, make, ncurses가 필요함
    • 이런 언어를 너무 홍보하지 말았으면 함
      그러다 지금의 끔찍한 Python처럼 될 수 있음
      Python은 한때 환상적이었고 실제로 그냥 동작했음
      모두가 이 언어를 알아차리고, Nvidia가 관여하고, TensorFlow/PyTorch/머신러닝이 들어오면서 망가졌음
      패키지 호환성에는 관심 없는 스크립트 키드들이 엉터리를 너무 많이 썼기 때문임
      커뮤니티는 이 언어의 최고 장점이면서 동시에 아주 큰 최악의 부분이기도 함
    • 개인적으로 make를 쳤을 때 제대로 동작한 경우가 너무 적어서, 이제 C 프로젝트를 보면 “멋지긴 한데 내가 컴파일할 수는 없겠지”라고 생각하고 탭을 닫게 됨
      이 프로젝트는 잘 빌드됐음
  • “Passport”라는 단어를 들으면 “My voice is my passport”를 말하지 않고는 못 배김, 적어도 머릿속에서는 그럼

    • 나한테는 “cattle”임
      “cattle mutilations are up”
    • HSBC 콜센터에는 음성 인식이 있고, “Your voice is your passport” 또는 “password”라고 안내했던 것 같음
      지금은 어느 쪽이었는지 헷갈림
    • 누군가가 passport라는 단어를 말하는 것만 들어도 좋음
    • “…verify me”
      방금 내가 한 건 쉽지 않았음
    • Bell에는 실제로 이런 기능이 있었고 The Phone Losers of America가 이를 악용했음
      그 해킹은 영화에서 직접 영감을 받았고, PLA가 팟캐스트 에피소드에서 보여줬음
      https://phonelosers.com/2008/05/pla-radio-episode-17-voice-a...
  • 이것과 cool-retro-term[1] 조합은 내 컴퓨터에서 진짜 해커 시간을 보내기 위한 필수품임
    [1] https://github.com/Swordfish90/cool-retro-term

    • Linux가 켜진 Chromebook에 cool-retro-term과 no-more-secrets를 설치했는데 실제로 꽤 보기 좋음
      https://www.youtube.com/watch?v=_gRIG_zK4SQ
    • 저 호박색 화면을 보니 추억이 확 떠오름
      첫 헬프데스크 직장에는 메인프레임 지원이 포함돼 있었고, 아직 남아 있던 오래된 IBM 4분할 플라즈마 터미널을 쓸 수 있었음
      티켓 시스템도 여전히 메인프레임에 있어서 헬프데스크 업무에 실제로 유용했음
      아마 이 모델이었거나 매우 비슷했을 것 같음: https://www.argecy.com/ibm-3290-plasma-terminal
    • 이게 마음에 든다면 이것[1]도 아마 즐길 수 있을 듯함
      [1] https://github.com/Rezmason/matrix
    • Mac에서는 다음 명령으로 쉽게 설치할 수 있음
      brew install --cask cool-retro-term
    • 외롭고 지루한 밤을 위한 물건임
  • Kevin Mitnick의 부고를 보고 바로 이 영화가 떠올랐다는 게 신기함
    아마 많은 사람이 그랬을 것 같음

  • 늘 재미있음
    몇 년 전에 비슷하게 거의 같은 일을 하는 단일 파일 Python 스크립트 decrypt.py를 만들었음
    슬프게도 아직도 내 GitHub 프로젝트 중 가장 인기 있는 저장소임: https://github.com/jtwaleson/decrypt

  • Sneakers의 현대판을 정말 보고 싶음
    누군가가 양자컴퓨터가 아마 이미 만들어졌다는 걸 알아내고, 실제로 존재한다면 훔쳐야 하는 이야기면 좋겠음
    원작 Sneakers의 “no more secrets” 밈과도 완전히 맞아떨어짐

    • 개인적으로는 원래 배우들로 리메이크해도 좋았을 것 같음
      다만 원작도 이미 나이 듦과 성숙에 관한 영화였으니, 또 한 세대가 지난 것만으로는 그렇게 설득력 있는 이야기가 되진 않았을 듯함
      River Phoenix와 Sidney Poitier가 세상을 떠난 건 안타깝고, Ben Kingsley가 아직 살아 있는지도 확인해 봤음
      기술을 어느 정도 다루는 영화치고 원작은 놀라울 정도로 잘 버틴다고 봄
      부분적으로는 월드 와이드 웹 직전이라는 시점을 잘 탄 덕도 있고, 2023년에도 중요 시스템이 메인프레임에서 돌아가는 일이 여전히 있기 때문임
    • 맞음
      왜 내가 어릴 때 좋아했던 영화들은 리부트, 속편, 프리퀄, 심지어 망한 속편이라도 안 만들어주는지 모르겠음
  • 이건 내 인생 영화 중 하나임
    복호화 장면은 기억 속에서 정말 상징적이고, 이 프로젝트가 그 느낌을 완전히 제대로 구현했음