Làm cách nào tôi có thể mã hóa hoặc xáo trộn tập lệnh shell của mình để nó không thể đọc được bằng mắt thường? Một trong hai phương pháp sẽ được chấp nhận, vui lòng cung cấp các bước cụ thể.
Làm cách nào tôi có thể mã hóa hoặc xáo trộn tập lệnh shell của mình để nó không thể đọc được bằng mắt thường? Một trong hai phương pháp sẽ được chấp nhận, vui lòng cung cấp các bước cụ thể.
Câu trả lời:
Bạn có thể thử các bước được nêu trên trang web này, có tiêu đề: Cách mã hóa Tập lệnh Bash Shell của bạn trên Linux bằng SHC . Bài viết này thảo luận về việc sử dụng một công cụ có tên SHC - Shell script Compiler .
Đây là một tệp thực thi mà bạn sẽ phải xây dựng bằng gcc / g ++.
$ ./shc -f random.sh
Khi bạn chạy tập lệnh shell của mình, random.sh
sẽ được chuyển đổi thành tệp này:
-rwx-wx--x. 1 ramesh ramesh 11752 Mar 27 01:12 random.sh.x
Không có phân tích tốt về phương pháp được sử dụng bởi công cụ SHC cho thấy rằng nó không quá mạnh và có thể bị phá vỡ nếu bạn biết bạn đang làm gì. Bài viết đã được đăng trên trang web linuxjournal.com, có tiêu đề: Paranoid Penguin - Hạn chế của shc, Tiện ích mã hóa Shell .
LƯU Ý: Các lớp công cụ này có thể được mô tả tốt hơn dưới dạng obfuscators.
fg
để đưa nó vào khu vực trước và sau đó nó hoạt động tốt. Tôi vẫn đang tìm giải pháp thay thế.
Nếu bạn muốn mã hóa tập lệnh shell, hãy sử dụng GPG . Bất cứ ai muốn chạy tập lệnh của bạn tất nhiên sẽ phải giải mã nó trước.
Nếu bạn muốn ai đó có thể chạy tập lệnh nhưng không đọc được tập lệnh thì đó là một vấn đề hoàn toàn khác không liên quan đến mã hóa. Nó được gọi là obfuscation .
Nếu bạn có mật khẩu hoặc thông tin bí mật khác trong tập lệnh đó, sẽ không có thông tin giấu giếm nào che giấu nó. Sớm hay muộn tập lệnh sẽ sử dụng mật khẩu để làm một cái gì đó và tại thời điểm đó, mật khẩu sẽ xuất hiện rõ ràng cho bất cứ ai tìm kiếm nó.
Nếu bạn muốn ẩn cách kịch bản của bạn hoạt động vì bạn sợ ai đó sẽ sao chép nó, hãy quên nó đi. Không ai quan tâm.
Nếu bạn muốn ẩn tập lệnh của mình vì bạn xấu hổ về chất lượng của nó, hãy sửa nó.
Nếu bạn muốn ẩn cách tập lệnh của bạn hoạt động vì bạn muốn ẩn những gì nó làm, thì không thể thực hiện được. Ai đó có thể nhìn vào kịch bản của bạn trong khi nó được thực thi và xem nó đang làm gì.
Nếu bạn đã đọc đến đó mà vẫn muốn mã hóa lại mã script của bạn, bạn đang hiểu nhầm điều gì đó quan trọng. Đừng gửi tập lệnh của bạn cho bất kỳ ai hoặc gửi tập lệnh đó bằng văn bản thuần túy.
Có được điều này trong khi tìm kiếm trên internet, lịch sự Claudio P.
Viết kịch bản của bạn (script-base.sh)
#!/bin/sh
echo "Hello World"
Mã hóa tập lệnh của bạn (cung cấp mật khẩu):
openssl enc -e -aes-256-cbc -a -in script-base.sh > script-enc
Viết de Wrapper (script-final.sh):
#!/bin/sh
openssl enc -d -aes-256-cbc -a -in script-enc | sh -
Chạy "script-final.sh", nhập mật khẩu và tập lệnh sẽ chạy mà không cần viết tập lệnh văn bản đơn giản trên đĩa.
Về cơ bản, bạn có thể làm xáo trộn nhưng không biên dịch tập lệnh của bạn. Lý do đơn giản là các tập lệnh shell được giải thích các lệnh riêng lẻ cần được thực thi từng cái một bởi hệ thống và bạn có thể thấy các lệnh đó khi chúng được thực thi lần lượt bởi hệ thống với sh -x
cờ (và có lẽ cả -v cờ)
Đối với hầu hết các lập trình viên sẽ đủ để hiểu những gì đang xảy ra.
Bạn có thể làm xáo trộn các biến và luồng chung nếu bạn muốn, nhưng bạn không thể làm xáo trộn các lệnh vô định được thực thi bởi chương trình của bạn - mà đối với các tập lệnh shell thường là tất cả chúng.
Giải pháp đơn giản nhất có lẽ là viết lại tập lệnh shell bằng ngôn ngữ được biên dịch như C.
hãy thử gửi tập lệnh của bạn đến trang web này nếu bạn muốn ẩn tập lệnh đó khỏi chế độ xem công khai.
trong khi nhiều người có thể không đồng ý với ý tưởng mã hóa hoặc làm xáo trộn mã nguồn của tập lệnh được viết bằng ngôn ngữ diễn giải, tôi hiểu tại sao mọi người muốn làm điều này.
như một người đã đánh cắp tác phẩm của mình nhiều lần, tôi chỉ đơn giản là không quan tâm nếu "obfuscation" hay "mã hóa" là một điều cấm kỵ. miễn là tập lệnh của tôi được bảo vệ và nó hoạt động như trước khi mã hóa, tôi khá hài lòng. tôi sẽ không bao giờ cho phép người khác lấy ý tưởng của mình và chạy theo nó. và không, viết kịch bản của tôi bằng ngôn ngữ được biên dịch không phải là bất kỳ tùy chọn nào. Tôi không biết làm thế nào để.
Dù sao, nếu bạn không muốn sử dụng trang web được đề cập ở trên, hãy thử phiên bản mới nhất của shc. Tôi tin rằng họ đã cập nhật nó trong github để giải quyết nhiều vấn đề bảo mật mà những người khác đã đề cập. nhập thông tin sau vào google " shc github " và bạn sẽ thấy một loạt các tùy chọn có sẵn mà bạn có thể thử.
chúc may mắn!