2 điểm bởi GN⁺ 2023-07-21 | 1 bình luận | Chia sẻ qua WhatsApp
  • nms là công cụ dòng lệnh áp dụng hiệu ứng giải mã dữ liệu trên màn hình cho văn bản ASCII hoặc UTF-8 nhận qua pipe, ban đầu hiển thị như dữ liệu đã mã hóa rồi dần lộ ra các ký tự văn bản gốc
  • Hiệu ứng này tái hiện cảnh giải mã dữ liệu nổi tiếng trong bộ phim hacker Sneakers năm 1992, tương ứng với hiệu ứng ở mốc 0:35 trong đoạn phim dùng để tham khảo
  • Theo mặc định, nms sẽ hiển thị các ký tự mã hóa ban đầu rồi chờ người dùng nhấn phím, sau đó mới bắt đầu chuỗi giải mã
  • Cách dùng chính là pipe dữ liệu đầu ra chuẩn như ls -l | nms, và các tùy chọn tiêu biểu gồm tự động giải mã -a, che ký tự khoảng trắng -s, chỉ định màu tiền cảnh -f <color>, xóa màn hình -c, hiển thị phiên bản -v
  • Chương trình sneakers đi kèm sẽ tái hiện cảnh xuất hiện trong đoạn phim, và trước khi thoát người dùng phải chọn một trong các tùy chọn menu
  • Cấu hình mặc định không có phụ thuộc, nhưng sử dụng chuỗi escape terminal ANSI/VT100 để tái tạo hiệu ứng
    • Có cung cấp triển khai ncurses cho các terminal không hỗ trợ ANSI/VT100
    • Bản triển khai ncurses hỗ trợ terminal không phải ANSI, nhưng có hạn chế là luôn xóa màn hình trước khi xuất nên mất khả năng hoạt động inline
  • Cài đặt từ mã nguồn cần git, gcc, make, và các mục tiêu build được chia thành nms, sneakers tùy chọn, cùng nms-ncursessneakers-ncurses dành cho ncurses
  • Với những người muốn dùng cùng hiệu ứng này trong chương trình dòng lệnh, thư viện C LibNMS được cung cấp riêng
  • Đây là phần mềm tự do, có thể phân phối lại và chỉnh sửa theo các điều khoản của GNU General Public License

1 bình luận

 
GN⁺ 2023-07-21
Ý kiến trên Hacker News
  • Tôi thích việc hướng dẫn cài đặt không giả định rằng người muốn cài gói này đã có sẵn gcc/git/make
    Dù cũng chẳng có mấy ai kiểu như “Tôi là người dùng *nix hoàn toàn mới trên một bản phân phối vừa cài xong, và tôi muốn cài một lệnh tái hiện hiệu ứng giải mã trong Sneakers”
    Quá nhiều gói vẫn đưa ra giả định như vậy, và trong những trường hợp đó thì khả năng cao là các thông tin cốt lõi khác cũng bị thiếu
    Thêm nữa, thật tốt vì đây không phải kiểu npm install gì đó

    • Tôi thực sự ghét kiểu này trong tài liệu
      Chỉ có những mẩu mã hoặc cấu hình không thể tự chạy độc lập, mà cũng chẳng rõ phải đặt vào đâu hay nó lồng trong cái gì
      Thậm chí còn dùng những import có tên không thể tìm thấy trên trang
      Ít nhất thì cũng nên có một ví dụ hoàn chỉnh ở cuối trang hoặc một liên kết tới đó
    • Tôi đã mất quá nhiều thời gian chỉ để nhìn tên file .h bị thiếu rồi gõ make, hoặc đi tìm lib-$THING trong apt
    • Ban đầu tôi hơi thất vọng khi thấy phải tự build, nhưng kho mã nhỏ và build cũng xong trong 1 giây
      Đây mới nên là mặc định, chứ không nên là một ngoại lệ dễ chịu
    • Nó mang cảm giác kiểu “phần còn lại để lại cho người đọc làm bài tập”
      Tôi đồng cảm 100% với kiểu bực bội này
      Thứ như kho mã này, có make dính vào, là kiểu chúng tôi không muốn đưa vào bất kỳ chỗ nào trong quy trình
      Vì kiểu gì cuối cùng nó cũng sẽ fail
      Dù vậy, cái này không thực sự để dùng nghiêm túc mà gần như là một dự án đồ chơi
    • Ở chiều ngược lại, tôi vẫn muốn phần mềm dễ cài, nên việc nó có trong gói của bản phân phối là tiện
      Dù thế, nếu có thể chạy trực tiếp từ mã nguồn mà không có phụ thuộc thì sẽ rất ngầu, và có lẽ vì vậy mà một số công cụ đến giờ vẫn được viết bằng shell thuần
  • Trong các cuộc tấn công phân tích mật mã thực tế, có những loại khi chạy lên trông giống hệt cảnh giải mã trong Sneakers, như CBC padding oracle, RSA padding oracle của Bleichenbacher, hay tấn công ECB theo từng byte
    Tôi nhớ là Juliano Rizzo từng gọi chung chúng là Hollywood Attack
    Đây là một thuật ngữ hay, mong là mọi người đều dùng nó, và nó cũng giúp hình dung trực quan về kiểu tấn công này phần nào
    Nhiều cuộc tấn công phân tích mật mã hoạt động không phải bằng cách xử lý cả thông điệp 128 bit hay 2048 bit cùng lúc, mà bằng cách cô lập đầy sáng tạo từng byte của bản mã

  • Tôi cực kỳ thích bộ phim này
    Hồi nhỏ tôi xem nó trên VHS, và thật trùng hợp là mỗi ngày tôi đều đạp xe ngang qua bối cảnh của một trong những cảnh chính
    Đó là sân gạch hiện nằm giữa Google và Wharton
    Trong phim, nó xuất hiện như một khu ăn uống ngoài trời, và Sidney Poitier nói vào điện thoại xe của Martin trong chiếc Karman Ghia của anh ấy: “Martin, It's your mother”
    Rồi sau đó họ nhận ra là họ không ở cùng phía với NSA
    Giờ người ta đã thêm vào đó một trạm cứu hỏa trông như đang lơ lửng và con đường cũng hơi khác đi, nhưng tôi thích việc quang cảnh vẫn giữ được sự tương đồng với thời điểm quay phim
    Nhìn chung đây thực sự là một bộ phim được làm rất tốt

  • Tải về 3 đến 5 file mã nguồn rồi chỉ cần gõ make là build xong luôn à?
    Không cần dựng môi trường build cô lập, không tải 1600 phụ thuộc rồi build từ source, không cài cả một tầng hệ thống file với 1600 thư viện .so, cũng không cần chạy Docker hay npm gì hết?
    Mà còn biên dịch chưa đến 1 giây nữa à?
    Thật đáng kinh ngạc những gì ngôn ngữ C mới mẻ này có thể làm được

    • Không hẳn chính xác
      Bạn vẫn phải cài makebộ công cụ C
      Nếu đã cài những thứ đó thì gần như chắc chắn bạn cũng có Python, Perl, và có khi cả Java khá mới nữa
      MacOS thì không, nhưng đa số bản phân phối Linux thì có thể xem là như vậy
      Và tất cả những thứ đó cũng có thể làm điều tương tự mà không cần phụ thuộc
    • Tự nhiên ký ức xưa ùa về
      Hồi thập niên 90, tôi từng hiểu sai rằng nếu include stdlib.h hay thư viện khác thì chương trình C sẽ bị phình ra, nên thường tự cài đặt phương thức lấy
      Nghĩa là lúc đó tôi cũng chẳng hiểu linker hoạt động thế nào
      Tôi của năm 12 tuổi chắc sẽ thấy ngộp thở nếu nhìn vào NPM, pip, bundle, hay thậm chí là Electron ngày nay
      Với rất ít thứ, ngày xưa người ta vẫn làm được rất nhiều
    • Ngôn ngữ nào cũng thế thôi
      Nếu môi trường đã được cài và chương trình không có phụ thuộc thì chỉ cần chạy lệnh build là xong
      Dự án này cũng cần gcc, make, ncurses mà không hề chỉ rõ phiên bản
    • Mong là đừng quảng bá ngôn ngữ này quá mức
      Không thì nó có thể thành ra như Python kinh khủng bây giờ
      Python từng tuyệt vời và thực sự cứ thế mà chạy
      Rồi mọi người đổ xô vào, Nvidia nhúng tay, TensorFlow/PyTorch/học máy tràn tới và mọi thứ hỏng bét
      Vì quá nhiều script kiddie viết ra mớ linh tinh mà chẳng quan tâm đến tính tương thích gói
      Cộng đồng vừa là điểm mạnh nhất của ngôn ngữ này, vừa đồng thời là mặt tệ nhất rất lớn của nó
    • Cá nhân tôi từng gõ make mà nó chạy đúng quá ít lần, đến mức giờ cứ thấy dự án C là lại nghĩ “trông hay đấy nhưng chắc mình không compile nổi đâu” rồi đóng tab
      Dự án này build rất ổn
  • Cứ nghe từ “Passport” là tôi không thể không nói “My voice is my passport”, ít nhất là trong đầu luôn như vậy

    • Với tôi là “cattle”
      “cattle mutilations are up”
    • Tổng đài HSBC có nhận diện giọng nói, và hình như họ từng hướng dẫn kiểu “Your voice is your passport” hoặc “password”
      Giờ tôi cũng không chắc là câu nào
    • Chỉ cần nghe ai đó nói từ passport thôi là tôi đã thấy thích rồi
    • “…verify me”
      Vừa rồi không dễ gì đâu
    • Bell thực sự từng có tính năng kiểu này, và The Phone Losers of America đã khai thác nó
      Vụ hack đó lấy cảm hứng trực tiếp từ bộ phim, và PLA đã trình diễn nó trong một tập podcast
      https://phonelosers.com/2008/05/pla-radio-episode-17-voice-a...
  • Kết hợp cái này với cool-retro-term[1] là bộ đôi không thể thiếu để tận hưởng thời khắc hacker đích thực trên máy tính của tôi
    [1] https://github.com/Swordfish90/cool-retro-term

    • Tôi đã cài cool-retro-term và no-more-secrets trên Chromebook chạy Linux, và nhìn thực sự khá đẹp
      https://www.youtube.com/watch?v=_gRIG_zK4SQ
    • Chỉ cần nhìn màn hình màu hổ phách đó là bao ký ức lại ùa về
      Công việc helpdesk đầu tiên của tôi có cả phần hỗ trợ mainframe, và tôi đã có dịp dùng những terminal plasma IBM chia 4 màn hình cũ vẫn còn sót lại
      Hệ thống ticket khi đó cũng vẫn nằm trên mainframe, nên thực sự rất hữu ích cho công việc helpdesk
      Có lẽ là mẫu này hoặc một mẫu rất giống: https://www.argecy.com/ibm-3290-plasma-terminal
    • Nếu thích cái này thì có lẽ bạn cũng sẽ thích cái này[1]
      [1] https://github.com/Rezmason/matrix
    • Trên Mac có thể cài rất dễ bằng lệnh sau
      brew install --cask cool-retro-term
    • Món đồ dành cho những đêm cô đơn và buồn chán
  • Thật thú vị khi đọc cáo phó của Kevin Mitnick là tôi lập tức nhớ đến bộ phim này
    Chắc hẳn nhiều người cũng vậy

  • Lúc nào cũng vui
    Vài năm trước tôi đã viết một script Python một file tên là decrypt.py, làm điều tương tự gần như y hệt
    Buồn thay, đến giờ nó vẫn là kho lưu trữ phổ biến nhất trong các dự án GitHub của tôi: https://github.com/jtwaleson/decrypt

  • Tôi thật sự muốn xem một phiên bản hiện đại của Sneakers
    Sẽ hay nếu đó là câu chuyện ai đó phát hiện ra máy tính lượng tử có lẽ đã được chế tạo, và nếu nó thực sự tồn tại thì phải đánh cắp nó
    Nó cũng hoàn toàn khớp với meme “no more secrets” của bản gốc Sneakers

    • Cá nhân tôi nghĩ remake với dàn diễn viên gốc cũng không tệ
      Nhưng bản gốc vốn đã là một bộ phim về tuổi tác và sự trưởng thành, nên chỉ thêm một thế hệ nữa có lẽ cũng không tạo thành một câu chuyện thuyết phục đến vậy
      Thật đáng tiếc khi River Phoenix và Sidney Poitier đã qua đời, và tôi còn phải kiểm tra xem Ben Kingsley có còn sống không
      Với một bộ phim có dính dáng khá nhiều đến công nghệ, bản gốc theo tôi vẫn trụ vững đáng ngạc nhiên
      Một phần là nhờ bối cảnh ngay trước thời kỳ World Wide Web, và cũng vì đến năm 2023 vẫn còn những hệ thống quan trọng chạy trên mainframe
    • Đúng vậy
      Tôi không hiểu vì sao những bộ phim tôi yêu thích hồi nhỏ lại không được reboot, làm sequel, prequel, hay thậm chí là một phần tiếp theo dở tệ nào đó
  • Đây là một trong những bộ phim yêu thích nhất đời tôi
    Cảnh giải mã đó thực sự mang tính biểu tượng trong ký ức của tôi, và dự án này đã tái hiện hoàn hảo cảm giác ấy