No More Secrets - จำลองเอฟเฟ็กต์ถอดรหัสบนหน้าจอจากภาพยนตร์ Sneakers ปี 1992
(github.com/bartobri)nmsเป็นเครื่องมือบรรทัดคำสั่งที่นำ ข้อความ ASCII หรือ UTF-8 ที่รับมาทางไพป์มาใส่เอฟเฟ็กต์ถอดรหัสข้อมูลบนหน้าจอ โดยในตอนแรกจะดูเหมือนข้อมูลที่ถูกเข้ารหัส ก่อนจะค่อย ๆ เผยอักขระข้อความต้นฉบับออกมา- เอฟเฟ็กต์นี้จำลองฉากถอดรหัสข้อมูลอันโด่งดังจากภาพยนตร์แฮ็กเกอร์ปี 1992 เรื่อง Sneakers และอ้างอิงจาก คลิปภาพยนตร์ ที่ตำแหน่งเวลา 0:35
- โดยปกติ
nmsจะแสดงอักขระเข้ารหัสเริ่มต้นก่อน จากนั้นรอให้ผู้ใช้กดแป้นพิมพ์ แล้วจึงเริ่มลำดับการถอดรหัส - วิธีใช้งานหลักคือส่งข้อมูลจาก standard output ผ่านไพป์ เช่น
ls -l | nmsโดยมีตัวเลือกสำคัญได้แก่ ถอดรหัสอัตโนมัติ-a, มาสก์อักขระช่องว่าง-s, กำหนดสีตัวอักษร-f <color>, ล้างหน้าจอ-c, และแสดงเวอร์ชัน-v - โปรแกรม
sneakersที่ให้มาด้วยจะจำลองฉากที่เห็นในคลิปภาพยนตร์ และก่อนจบผู้ใช้ต้องเลือกหนึ่งตัวเลือกจากเมนู - การตั้งค่าพื้นฐานไม่มี dependency แต่ใช้ ANSI/VT100 terminal escape sequence เพื่อสร้างเอฟเฟ็กต์ดังกล่าว
- มี implementation แบบ ncurses สำหรับเทอร์มินัลที่ไม่รองรับ ANSI/VT100
- implementation แบบ ncurses รองรับเทอร์มินัลที่ไม่ใช่ ANSI แต่มีข้อจำกัดคือจะล้างหน้าจอทุกครั้งก่อนแสดงผล จึงสูญเสียความสามารถแบบ inline ไป
- การติดตั้งจากซอร์สต้องใช้
git,gcc,makeและเป้าหมายการ build แบ่งเป็นnms,sneakersที่เป็นตัวเลือกเพิ่มเติม, และnms-ncursesกับsneakers-ncursesสำหรับ ncurses - สำหรับผู้ใช้ที่ต้องการนำเอฟเฟ็กต์เดียวกันไปใช้ในโปรแกรมบรรทัดคำสั่งอื่น ๆ มีไลบรารีภาษา C LibNMS แยกต่างหากให้ใช้งาน
- เป็นซอฟต์แวร์เสรีที่สามารถแจกจ่ายต่อและดัดแปลงได้ภายใต้เงื่อนไขของ GNU General Public License
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ชอบที่คำแนะนำการติดตั้ง ไม่ได้ตั้งสมมติฐานว่า คนที่จะติดตั้งแพ็กเกจนี้มี gcc/git/make อยู่แล้ว
เพราะคงไม่มีใครแบบ “ฉันเป็นผู้ใช้ *nix มือใหม่สุด ๆ บนดิสโทรที่เพิ่งติดตั้งใหม่ และอยากติดตั้งคำสั่งที่จำลองเอฟเฟกต์ถอดรหัสจาก Sneakers” หรอก
มีแพ็กเกจมากเกินไปที่ตั้งสมมติฐานแบบนี้ และถ้าเป็นแบบนั้นก็มักมีโอกาสสูงที่ข้อมูลสำคัญอื่น ๆ จะหายไปด้วย
แถมยังดีที่มันไม่ใช่อะไรแนว npm install อีกต่างหาก
บางทีมีแต่ชิ้นส่วนโค้ดหรือคอนฟิกที่เอาไปใช้เดี่ยว ๆ ไม่ได้ และก็ไม่ชัดว่าต้องใส่ไว้ตรงไหนหรือซ้อนอยู่ในอะไร
บางครั้งยังใช้ import ที่เป็นชื่อซึ่งหาไม่เจอในหน้านั้นอีก
อย่างน้อยก็ควรใส่ ตัวอย่างแบบครบถ้วน ไว้ท้ายหน้า หรือใส่ลิงก์ไปหามัน
.hที่หายไปแล้วลองกดmakeหรือค้นหาlib-$THINGใน aptแบบนี้ควรเป็น ค่าปริยาย ไม่ใช่ข้อยกเว้นที่น่าประทับใจ
เข้าใจความหงุดหงิดแบบนี้ 100%
อะไรที่มี
makeแบบ repository นี้ ฉันไม่อยากให้ไปอยู่ที่ไหนเลยในกระบวนการของเราเพราะสุดท้ายมันก็จะล้มเหลว
แต่ก็เอาเถอะ อันนี้ไม่ได้ตั้งใจให้ใช้จริงจังอยู่แล้ว มันใกล้เคียงกับ โปรเจ็กต์ของเล่น มากกว่า
ถึงอย่างนั้น ถ้าสามารถ รันจากซอร์สได้ตรง ๆ โดยไม่มี dependency ก็คงเท่มาก และนั่นน่าจะเป็นเหตุผลว่าทำไมเครื่องมือบางอย่างยังทำด้วยเชลล์ล้วน ๆ
ในการโจมตีเชิงวิเคราะห์รหัสจริง มีบางประเภทที่พอรันแล้วจะดูเหมือนฉากถอดรหัสใน Sneakers เช่น CBC padding oracle, Bleichenbacher's RSA padding oracle และการโจมตี ECB แบบทีละไบต์
จำได้ว่า Juliano Rizzo เคยเรียกสิ่งนี้ว่า Hollywood Attack
เป็นคำที่ดี อยากให้ทุกคนใช้กัน และมันก็ช่วยให้เข้าใจภาพรวมของการโจมตีได้เล็กน้อย
การโจมตีเชิงวิเคราะห์รหัสจำนวนมากไม่ได้จัดการกับข้อความเต็ม 128 บิตหรือ 2048 บิตพร้อมกัน แต่ทำงานโดยแยก ciphertext ออกมาทีละไบต์อย่างสร้างสรรค์
ชอบหนังเรื่องนี้มากจริง ๆ
ตอนเด็กดูจาก VHS และบังเอิญว่าทุกวันฉันปั่นจักรยานผ่านฉากหลังของหนึ่งในฉากสำคัญ
มันคือลานอิฐระหว่าง Google กับ Wharton ในตอนนี้
ในหนังมันเป็นพื้นที่กินข้าวกลางแจ้ง และ Sidney Poitier พูดว่า “Martin, It's your mother” ขณะถือ car phone อยู่ใน Karman Ghia ของ Martin
แล้วหลังจากนั้นพวกเขาก็เริ่มรู้ตัวว่าไม่ได้อยู่ฝ่ายเดียวกับ NSA
ตอนนี้มีสถานีดับเพลิงที่ดูเหมือนลอยอยู่เพิ่มเข้ามา และถนนก็เปลี่ยนไปเล็กน้อย แต่ชอบที่ทิวทัศน์ยังคง คล้ายเดิมอยู่มาก เมื่อเทียบกับตอนถ่ายหนัง
โดยรวมแล้วเป็นหนังที่ทำออกมาดีมากจริง ๆ
แค่ดาวน์โหลดซอร์สไฟล์ 3~5 ไฟล์แล้วพิมพ์
makeก็ build ได้เลยงั้นเหรอ?ไม่ต้องตั้งค่าสภาพแวดล้อม build แบบแยกออกมา ไม่ต้องดึง dependency 1600 ตัวมาสร้างจากซอร์ส ไม่ต้องติดตั้งชั้นระบบไฟล์ที่มีไลบรารี
.so1600 ตัว และไม่ต้องรันอะไรอย่าง Docker หรือ npm ด้วย?แถมยัง คอมไพล์เสร็จในไม่ถึง 1 วินาที อีก?
ภาษาใหม่ที่ชื่อ C นี้ทำอะไรได้เหลือเชื่อจริง ๆ
คุณต้องติดตั้ง
makeและ toolchain ของ C ไว้ก่อนถ้ามีนั่นอยู่แล้ว ก็แทบแน่นอนว่าคุณน่าจะมี Python, Perl และอาจรวมถึง Java ที่ค่อนข้างใหม่ติดตั้งอยู่ด้วย
MacOS อาจไม่ใช่ แต่ Linux distribution ส่วนใหญ่น่าจะเป็นแบบนั้น
และทั้งหมดนี้ก็ทำสิ่งเดียวกันได้โดยไม่มี dependency เพิ่มเหมือนกัน
ในยุค 90 ฉันเคยเข้าใจผิดว่าถ้า include
stdlib.hหรือไลบรารีอื่น ๆ แล้วโปรแกรม C จะบวม ก็เลยเขียนเมธอดเองเท่ากับว่าไม่เข้าใจด้วยซ้ำว่าการลิงก์ทำงานอย่างไร
ตัวฉันตอนอายุ 12 ถ้าเห็น NPM, pip, bundle หรือแม้แต่ Electron ทุกวันนี้คงหายใจไม่ออก
เมื่อก่อนทำอะไรได้มากจริง ๆ ด้วยของเพียงน้อยนิด
ถ้าสภาพแวดล้อมติดตั้งไว้แล้วและโปรแกรมไม่มี dependency ก็แค่รันคำสั่ง build เท่านั้น
โปรเจ็กต์นี้เองก็ต้องการ gcc, make, ncurses โดยไม่ได้ระบุเวอร์ชันไว้
ไม่งั้นมันอาจกลายเป็นเหมือน Python ในตอนนี้ที่น่ากลัวเหลือเกิน
Python เคยยอดเยี่ยมและใช้งานได้แบบตรงไปตรงมาจริง ๆ
แต่พอทุกคนรู้จักมัน, Nvidia เข้ามาเกี่ยว, แล้ว TensorFlow/PyTorch/แมชชีนเลิร์นนิงหลั่งไหลเข้ามา มันก็พัง
เพราะมีพวก script kiddie ที่ไม่สนใจความเข้ากันได้ของแพ็กเกจ เขียนอะไรมั่ว ๆ ไว้มากเกินไป
ชุมชนเป็นทั้งจุดแข็งที่สุดและในขณะเดียวกันก็เป็นส่วนที่ แย่ที่สุด ของภาษานี้
makeแล้วมันทำงานได้จริงน้อยมาก จนตอนนี้พอเห็นโปรเจ็กต์ C จะคิดว่า “เจ๋งดีนะ แต่ฉันคงคอมไพล์มันไม่ได้หรอก” แล้วก็ปิดแท็บไปแต่โปรเจ็กต์นี้ build ผ่านได้ดี
พอได้ยินคำว่า “Passport” ก็อดพูด “My voice is my passport” ไม่ได้ อย่างน้อยก็ในหัว
“cattle mutilations are up”
ตอนนี้เริ่มจำไม่ได้แล้วว่าคำไหนกันแน่
เมื่อกี้ที่ฉันทำไปไม่ง่ายเลยนะ
การแฮ็กนั้นได้แรงบันดาลใจจากหนังเรื่องนี้โดยตรง และ PLA ก็สาธิตไว้ในตอนหนึ่งของพอดแคสต์
https://phonelosers.com/2008/05/pla-radio-episode-17-voice-a...
เมื่อใช้คู่กับ cool-retro-term[1] นี่คือของจำเป็นสำหรับการมี ช่วงเวลาแฮ็กเกอร์ของจริง บนคอมพิวเตอร์ของฉัน
[1] https://github.com/Swordfish90/cool-retro-term
https://www.youtube.com/watch?v=_gRIG_zK4SQ
งานเฮลป์เดสก์งานแรกของฉันรวมถึงการซัพพอร์ตเมนเฟรมด้วย และยังได้ใช้ IBM 4-split plasma terminal รุ่นเก่าที่ยังเหลืออยู่
ระบบทิกเก็ตก็ยังอยู่บนเมนเฟรมเหมือนกัน เลยมีประโยชน์กับงานเฮลป์เดสก์จริง ๆ
น่าจะเป็นรุ่นนี้หรืออย่างน้อยก็ใกล้เคียงมาก: https://www.argecy.com/ibm-3290-plasma-terminal
[1] https://github.com/Rezmason/matrix
brew install --cask cool-retro-termน่าแปลกดีที่พอเห็นข่าวมรณกรรมของ Kevin Mitnick ฉันก็นึกถึงหนังเรื่องนี้ขึ้นมาทันที
คิดว่าน่าจะมีหลายคนเป็นเหมือนกัน
สนุกเสมอ
เมื่อหลายปีก่อนฉันเคยเขียนสคริปต์ Python ไฟล์เดียวชื่อ
decrypt.pyที่ทำงานคล้ายกันแทบจะเหมือนกันเลยน่าเศร้าที่จนถึงตอนนี้มันยังเป็น repository ที่ได้รับความนิยมมากที่สุด ในโปรเจกต์ GitHub ของฉัน: https://github.com/jtwaleson/decrypt
ฉันอยากดู Sneakers ฉบับยุคใหม่จริง ๆ
น่าจะเป็นเรื่องที่มีใครสักคนค้นพบว่า คอมพิวเตอร์ควอนตัม อาจถูกสร้างขึ้นแล้ว และถ้ามันมีอยู่จริงก็ต้องขโมยมันมา
มันเข้ากันได้พอดีกับมีม “no more secrets” ของ Sneakers ต้นฉบับด้วย
แต่ต้นฉบับเองก็เป็นหนังเกี่ยวกับความแก่และความเป็นผู้ใหญ่อยู่แล้ว ดังนั้นการปล่อยเวลาให้ผ่านไปอีกหนึ่งรุ่นอย่างเดียวคงไม่ได้ทำให้เรื่องราวน่าเชื่อถือขึ้นเท่าไร
น่าเสียดายที่ River Phoenix กับ Sidney Poitier จากไปแล้ว และฉันถึงกับไปเช็กว่า Ben Kingsley ยังมีชีวิตอยู่ไหม
สำหรับหนังที่แตะเรื่องเทคโนโลยี ต้นฉบับถือว่าคงทนอย่างน่าประหลาดมาก
ส่วนหนึ่งก็คงเพราะมันอยู่ในช่วงเวลาก่อน World Wide Web พอดี และแม้แต่ในปี 2023 ระบบสำคัญก็ยังมีที่รันอยู่บน เมนเฟรม จริง ๆ
ไม่รู้เหมือนกันว่าทำไมหนังที่ฉันรักตอนเด็ก ๆ ถึงไม่ถูกทำเป็นรีบูต ภาคต่อ พรีเควล หรืออย่างน้อยแม้แต่ภาคต่อห่วย ๆ บ้าง
นี่คือหนึ่งในหนังประจำชีวิตของฉัน
ฉากถอดรหัสเป็นภาพจำที่โดดเด่นมากในความทรงจำ และโปรเจกต์นี้ก็ ถ่ายทอดความรู้สึกนั้นออกมาได้อย่างสมบูรณ์แบบ