Bagaimana saya bisa mengenkripsi atau membuat skrip shell saya tidak dapat dibaca?

9

Bagaimana saya bisa mengenkripsi atau mengacak skrip shell saya sehingga tidak dapat dibaca dengan mata telanjang? Metode mana pun dapat diterima, harap berikan langkah-langkah spesifik.

Ram
sumber
Menurut pendapat saya shc memiliki beberapa kekurangan: Saya memiliki proyek yang sedang berjalan di github (obash) di mana saya mencoba untuk mengatasi masalah ini. Anda mungkin ingin melihat apakah itu lebih cocok untuk Anda daripada shc.
louigi600

Jawaban:

11

SHC

Anda dapat mencoba langkah-langkah yang dijelaskan di situs web ini, berjudul: Cara Mengenkripsi Bash Shell Script Anda di Linux Menggunakan SHC . Artikel ini membahas penggunaan alat yang disebut SHC - Shell script Compiler .

Sumber daya URL

Ini adalah executable yang harus Anda bangun menggunakan gcc / g ++.

Pemakaian

$ ./shc -f random.sh

Setelah Anda menjalankannya, skrip shell Anda random.shakan dikonversi menjadi file ini:

-rwx-wx--x. 1 ramesh ramesh 11752 Mar 27 01:12 random.sh.x

Apakah ini sangat mudah?

Tidak ada analisis yang baik dari metode yang digunakan oleh alat SHC yang menunjukkan bahwa itu tidak terlalu kuat dan dapat dielakkan jika Anda tahu apa yang Anda lakukan. Artikel itu diposting di situs web linuxjournal.com, berjudul: Paranoid Penguin - Batasan shc, sebuah Utilitas Enkripsi Shell .

CATATAN: Kelas alat ini mungkin lebih baik digambarkan sebagai obfuscator.

slm
sumber
@ terima kasih. Apakah ada cara untuk mendekripsi skrip itu ???
Ram
@ Ram - ya ini tidak berarti sangat mudah. Apa yang ingin kamu sembunyikan? Info pengguna / kata sandi atau bagaimana skrip bekerja?
slm
@sim saya mencoba menyembunyikan cara kerja skrip?
Ram
@Ram - OK itu mungkin OK untuk itu, saya tidak akan merekomendasikan hal ini untuk mencoba menyembunyikan kata sandi. Ketika saya mencoba aplikasi ini berperilaku agak aneh di komputer saya. Saya akan mencobanya, tetapi executable yang dihasilkan meluncurkan seolah-olah mereka dilatar belakangi, dan saya harus melakukan perintah fguntuk membawanya ke permukaan dan kemudian bekerja dengan baik. Saya masih mencari alternatif.
slm
9
Terlepas dari namanya, SHC tidak mengenkripsi skrip dengan cara yang berarti. Enkripsi menyiratkan bahwa itu akan didekripsi sebelum digunakan. Jika skrip dapat dieksekusi, ia harus didekripsi terlebih dahulu dan dapat diekstraksi pada saat itu. Mengubah program untuk membuatnya lebih sulit untuk dipahami sementara tidak mengubah perilakunya disebut kebingungan. Ini sangat sangat sangat jarang berharga, dan untuk skrip shell, itu terlalu berlebihan dari kegunaannya.
Gilles 'SO- stop being evil'
29

Jika Anda ingin mengenkripsi skrip shell, gunakan GPG . Siapa pun yang ingin menjalankan skrip Anda tentu harus mendekripsi terlebih dahulu.

Jika Anda ingin seseorang dapat menjalankan skrip tetapi tidak membacanya, itu masalah yang sama sekali berbeda yang tidak ada hubungannya dengan enkripsi. Ini disebut kebingungan .

Jika Anda memiliki kata sandi atau informasi rahasia lainnya dalam skrip itu, tidak ada kebingungan yang akan menyembunyikannya. Cepat atau lambat script akan menggunakan kata sandi untuk melakukan sesuatu dan pada saat itu kata sandi akan muncul dengan jelas kepada siapa pun yang mencarinya.

Jika Anda ingin menyembunyikan cara kerja skrip Anda karena Anda takut seseorang akan menyalinnya, lupakan saja. Tidak ada yang peduli.

Jika Anda ingin menyembunyikan skrip karena malu dengan kualitasnya, perbaiki.

Jika Anda ingin menyembunyikan cara kerja script Anda karena Anda ingin menyembunyikan apa yang dilakukannya, itu tidak bisa dilakukan. Seseorang dapat melihat skrip Anda saat dijalankan dan melihat apa yang dilakukannya.

Jika Anda sudah membaca sejauh itu dan masih ingin "mengenkripsi" skrip Anda, Anda salah memahami sesuatu yang utama. Jangan kirim skrip Anda kepada siapa pun, atau kirimkan dalam bentuk teks biasa.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
4
+1 untuk 'tidak ada yang peduli'. kecuali bahwa beberapa memang peduli - saya akan melihat skrip shell yang dikaburkan dan berpikir "tidak mungkin saya akan menjalankannya di sistem saya".
cas
1
Maaf, orang peduli dan itu penting. Anda memiliki perspektif dan perspektif alternatif ada. Keduanya akan mengambilnya. Sementara itu jawaban di bawah ini berfungsi dengan baik bagi saya untuk memulai. Sebagian besar waktu kami ingin melindungi dari peretas / pengguna biasa. Pahamilah bahwa peretas yang gigih akan menghancurkan apa pun.
anil
@ Alan Anda hanya melindungi orang yang tidak pintar atau kompeten untuk melakukan apa pun dengan kode sumber. Mungkin membuat Anda merasa lebih baik, tetapi itu tidak membuat Anda lebih aman.
Gilles 'SANGAT berhenti menjadi jahat'
@ Gilles mungkin aku salah baca. Saya benar-benar berusaha melindungi orang yang kompeten untuk melakukan sesuatu dengan kode sumber jika mereka memilikinya (kode sumber = isi skrip). Hanya orang-orang ini yang mungkin tidak tahu cara meretas file yang dienkripsi tanpa mengalami banyak masalah untuk mengetahui caranya. Terhadap yang benar-benar ditentukan _ Saya setuju tidak ada pertahanan yang benar-benar bagus.
dan
11

Dapatkan ini saat mencari di internet, seizin Claudio P.

  1. Tulis skrip Anda (script-base.sh)

    #!/bin/sh 
    echo "Hello World" 
  2. Enkripsi skrip Anda (berikan kata sandi):

    openssl enc -e -aes-256-cbc -a -in script-base.sh > script-enc 
  3. Write de Wrapper (script-final.sh):

    #!/bin/sh 
    openssl enc -d -aes-256-cbc -a -in script-enc | sh - 
  4. Jalankan "script-final.sh", masukkan kata sandi, dan skrip akan berjalan tanpa menulis skrip teks biasa pada disk.

P ....
sumber
1

Pada dasarnya Anda dapat mengaburkan tetapi tidak mengkompilasi skrip Anda. Alasan sederhananya adalah bahwa skrip shell diartikan perintah individual yang perlu dieksekusi satu per satu oleh sistem, dan bahwa Anda dapat melihat perintah-perintah tersebut ketika dieksekusi satu per satu oleh sistem dengan sh -xflag (dan mungkin juga -v bendera)

Bagi kebanyakan programmer, itu sudah cukup untuk memahami apa yang sedang terjadi.

Anda dapat mengaburkan variabel dan aliran umum jika Anda menginginkannya, tetapi Anda tidak dapat mengaburkan perintah indvidual yang dijalankan oleh program Anda - yang untuk skrip shell biasanya semuanya .

Solusi paling sederhana mungkin menulis ulang skrip shell dalam bahasa yang dikompilasi seperti C.

Thorbjørn Ravn Andersen
sumber
1
Bahkan biner yang dikompilasi dapat dibongkar dan direkayasa ulang jika ada yang cukup ditentukan.
Joseph R.
3
Semua yang dapat dieksekusi dapat direkayasa ulang. Persyaratan di sini adalah harus tidak dapat dibaca dengan mata telanjang
Thorbjørn Ravn Andersen
Aku tahu. Saya hanya meninggalkan catatan untuk pembaca masa depan.
Joseph R.
-2

coba kirimkan skrip Anda ke situs ini jika Anda ingin menyembunyikannya dari tampilan publik.

sementara banyak yang mungkin tidak setuju dengan gagasan mengenkripsi atau mengaburkan kode sumber naskah yang ditulis dalam bahasa yang ditafsirkan, saya mengerti mengapa orang ingin melakukan ini.

sebagai seseorang yang karyanya dicuri berkali-kali, saya tidak peduli apakah "kebingungan" atau "enkripsi" adalah hal yang tabu. selama skrip saya terlindungi dan berfungsi seperti sebelum enkripsi, saya cukup puas. tidak pernah lagi saya mengizinkan orang lain untuk mengambil ide saya dan menjalankannya. dan tidak, menulis skrip saya dalam bahasa yang dikompilasi bukanlah opsi apa pun. saya tidak tahu caranya.

Lagi pula, jika Anda tidak ingin menggunakan situs yang disebutkan di atas, coba versi shc terbaru. Saya percaya mereka telah memperbaruinya di github untuk mengatasi banyak masalah keamanan yang disebutkan orang lain. ketik yang berikut ini di google " shc github " dan Anda akan melihat sejumlah opsi yang tersedia yang dapat Anda coba.

semoga berhasil!

Pemantauan Nagios
sumber