Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> बाश प्रोग्रामिंग

SHC का उपयोग करके Linux पर अपनी बैश शैल स्क्रिप्ट को कैसे एन्क्रिप्ट करें

प्रश्न :मैं लिनक्स वातावरण पर अपनी बैश शेल स्क्रिप्ट को कैसे एन्क्रिप्ट करूं? शेल स्क्रिप्ट में पासवर्ड होता है, और मैं नहीं चाहता कि जिन अन्य लोगों के पास शेल स्क्रिप्ट देखने और पासवर्ड प्राप्त करने के लिए एक्ज़ीक्यूट एक्सेस हो। क्या मेरी शेल स्क्रिप्ट को एन्क्रिप्ट करने का कोई तरीका है?

A: सबसे पहले, सर्वोत्तम अभ्यास के रूप में आपको अपनी शेल स्क्रिप्ट को एन्क्रिप्ट नहीं करना चाहिए। आपको वास्तव में अपनी शेल स्क्रिप्ट को ठीक से दस्तावेज करना चाहिए ताकि जो कोई भी इसे देखता है वह समझ सके कि यह क्या करता है। यदि इसमें पासवर्ड जैसी संवेदनशील जानकारी है, तो आपको शेल स्क्रिप्ट को एन्क्रिप्ट किए बिना लिखने के लिए एक अलग दृष्टिकोण का पता लगाना चाहिए।

कहा जा रहा है, यदि आप अभी भी शेल स्क्रिप्ट को एन्क्रिप्ट करने पर जोर देते हैं, तो आप नीचे बताए अनुसार SHC उपयोगिता का उपयोग कर सकते हैं। कृपया ध्यान दें कि shc द्वारा बनाई गई एन्क्रिप्टेड शेल स्क्रिप्ट सामान्य उपयोगकर्ताओं द्वारा पठनीय नहीं है। हालांकि कोई व्यक्ति जो समझता है कि यह कैसे काम करता है, मूल शेल स्क्रिप्ट को shc द्वारा बनाई गई एन्क्रिप्टेड बाइनरी से निकाल सकता है।

SHC,शेल स्क्रिप्ट कंपाइलर के लिए खड़ा है।

<एच3>1. shc डाउनलोड करें और इसे इंस्टॉल करें

shc डाउनलोड करें और इसे नीचे दिखाए अनुसार इंस्टॉल करें।

# wget https://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.7.tgz
# tar xvfz shc-3.8.7.tgz
# cd shc-3.8.7
# make

सत्यापित करें कि shc ठीक से स्थापित है।

$ ./shc -v
shc parse(-f): No source file specified

shc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-rvDTCAh] -f script
<एच3>2. एक नमूना शैल स्क्रिप्ट बनाएं

एक नमूना बैश शेल स्क्रिप्ट बनाएं जिसे आप परीक्षण के उद्देश्य से shc का उपयोग करके एन्क्रिप्ट करना पसंद करते हैं।

परीक्षण के उद्देश्य के लिए, हम निम्नलिखित random.sh शेल स्क्रिप्ट बनाते हैं जो यादृच्छिक संख्याएँ उत्पन्न करती है। आपको यह निर्दिष्ट करना होगा कि आप कितनी यादृच्छिक संख्याएँ उत्पन्न करना चाहते हैं।

<केंद्र>
$ vi random.sh
#!/bin/bash

echo -n "How many random numbers do you want to generate? "
read max

for (( start = 1; start <= $max; start++ ))
do
 echo -e $RANDOM
done

$ ./random.sh
How many random numbers do you want to generate? 3
24682
1678
491
<एच3>3. Shc का उपयोग करके शेल स्क्रिप्ट को एन्क्रिप्ट करें

जैसा कि नीचे दिखाया गया है, shc का उपयोग करके random.sh शेल स्क्रिप्टिंग को एन्क्रिप्ट करें।

$ ./shc -f random.sh

यह निम्नलिखित दो फ़ाइलें बनाएगा:

$ ls -l random.sh*
-rwxrw-r--. 1 ramesh ramesh 149 Mar 27 01:09 random.sh
-rwx-wx--x. 1 ramesh ramesh 11752 Mar 27 01:12 random.sh.x
-rw-rw-r--. 1 ramesh ramesh 10174 Mar 27 01:12 random.sh.x.c
  • random.sh मूल अनएन्क्रिप्टेड शेल स्क्रिप्ट है
  • random.sh.x बाइनरी प्रारूप में एन्क्रिप्टेड शेल स्क्रिप्ट है
  • random.sh.x.c, random.sh फ़ाइल का सी स्रोत कोड है। यह सी स्रोत कोड उपरोक्त एन्क्रिप्टेड random.sh.x फ़ाइल बनाने के लिए संकलित किया गया है। Shc के पीछे पूरा तर्क random.sh शेल स्क्रिप्ट को random.sh.x.c C प्रोग्राम में बदलना है (और निश्चित रूप से इसे random.sh.x निष्पादन योग्य बनाने के लिए संकलित करना)
$ file random.sh
random.sh: Bourne-Again shell script text executable

$ file random.sh.x
random.sh.x: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

$ file random.sh.x.c
random.sh.x.c: ASCII C program text
<एच3>4. एन्क्रिप्टेड शेल स्क्रिप्ट निष्पादित करें

अब, यह सुनिश्चित करने के लिए एन्क्रिप्टेड शेल स्क्रिप्ट निष्पादित करें कि यह अपेक्षित रूप से काम करता है।

$ ./random.sh.x
How many random numbers do you want to generate? 3
7489
10494
29627

कृपया ध्यान दें कि स्क्रिप्ट को निष्पादित करने के लिए बाइनरी स्वयं अभी भी शेल पर निर्भर है (random.sh. यानी /bin/bash में प्रदान की गई पहली पंक्ति)।

5. आपकी शेल स्क्रिप्ट के लिए समाप्ति तिथि निर्दिष्ट करना

Shc का उपयोग करके आप एक समाप्ति तिथि भी निर्दिष्ट कर सकते हैं। यानी इस समाप्ति तिथि के बाद जब कोई शेल स्क्रिप्ट निष्पादित करने का प्रयास करता है, तो उन्हें एक त्रुटि संदेश मिलेगा।

मान लें कि आप नहीं चाहते कि कोई भी 31-दिसंबर-2011 के बाद random.sh.x निष्पादित करे (मैंने परीक्षण के उद्देश्य के लिए पिछले वर्ष की तारीख का उपयोग किया था)।

समाप्ति तिथि निर्दिष्ट करने के लिए "shc -e" विकल्प का उपयोग करके एक नई एन्क्रिप्टेड शेल स्क्रिप्ट बनाएं। समाप्ति तिथि dd/mm/yyyy प्रारूप में निर्दिष्ट है।

$ ./shc -e 31/12/2011 -f random.sh

इस उदाहरण में, यदि कोई व्यक्ति 31-दिसंबर-2011 के बाद random.sh.x को निष्पादित करने का प्रयास करता है, तो उसे एक डिफ़ॉल्ट समाप्ति संदेश प्राप्त होगा जैसा कि नीचे दिखाया गया है।

$ ./random.sh.x
./random.sh.x: has expired!
Please contact your provider

यदि आप अपना स्वयं का कस्टम समाप्ति संदेश निर्दिष्ट करना चाहते हैं, तो -m विकल्प का उपयोग करें (-e विकल्प के साथ जैसा कि नीचे दिखाया गया है)।

$ ./shc -e 31/12/2011 -m "Contact admin@thegeekstuff.com for new version of this script" -f random.sh

$ ./random.sh.x
./random.sh.x: has expired!
Contact admin@thegeekstuff.com for new version of this script
<एच3>6. पुनर्वितरण योग्य एन्क्रिप्टेड शेल स्क्रिप्ट बनाएं

-e, और -m (समाप्ति के लिए) के अलावा, आप निम्न विकल्पों का भी उपयोग कर सकते हैं:

  • -r एक पुनर्वितरण योग्य बाइनरी बनाने के लिए सुरक्षा को शिथिल करेगा जो अन्य सिस्टम पर निष्पादित होता है जो उसी ऑपरेटिंग सिस्टम को चलाता है जिस पर इसे संकलित किया गया था।
  • -T स्ट्रेस, ltrace, आदि जैसे प्रोग्राम का उपयोग करके बनाई गई बाइनरी फ़ाइलों को ट्रेस करने योग्य बनाने की अनुमति देगा।
  • -v क्रिया के लिए है

आमतौर पर आप नीचे दिखाए गए अनुसार पुनर्वितरण योग्य और पता लगाने योग्य शेल एन्क्रिप्टेड शेल स्क्रिप्ट बनाने के लिए -r और -T दोनों विकल्प का उपयोग करना चाह सकते हैं।

$ ./shc -v -r -T -f random.sh
shc shll=bash
shc [-i]=-c
shc [-x]=exec '%s' "$@"
shc [-l]=
shc opts=
shc: cc random.sh.x.c -o random.sh.x
shc: strip random.sh.x
shc: chmod go-r random.sh.x

$ ./random.sh.x
How many random numbers do you want to generate? 3
28954
1410
15234

अंत में, यह फिर से दोहराने लायक है:आपको अपनी शेल स्क्रिप्ट को पहले स्थान पर एन्क्रिप्ट नहीं करना चाहिए। लेकिन, यदि आपने shc का उपयोग करके अपनी शेल स्क्रिप्ट को एन्क्रिप्ट करने का निर्णय लिया है, तो कृपया याद रखें कि एक स्मार्ट व्यक्ति अभी भी shc द्वारा बनाई गई एन्क्रिप्टेड बाइनरी से मूल शेल स्क्रिप्ट उत्पन्न कर सकता है।


  1. विंडोज 10 [ट्यूटोरियल] पर बैश (लिनक्स शेल) को कैसे स्थापित और उपयोग करें

    यहां बताया गया है कि विंडोज़ पर लिनक्स शेल को कैसे सेट अप करें और उसका उपयोग कैसे करें - लिनक्स के लिए विंडोज सबसिस्टम का उपयोग करके (WSL )। यह ट्यूटोरियल 2020 से विंडोज 10 के अप-टू-डेट वर्जन के लिए है। मैं विंडोज 10 के पुराने संस्करणों या विंडोज 8/7/XP/3.1 के अन्य तरीकों पर WSL का उपयोग करने के त

  1. विंडोज 10 पर लिनक्स बैश शेल कैसे स्थापित करें

    बैश शेल केवल एक कमांड-लाइन उपयोगिता है जो बहुत लंबे समय से लिनक्स का हिस्सा रही है और अब, माइक्रोसॉफ्ट ने इसे सीधे विंडोज 10 में जोड़ा है। यह न तो वर्चुअल मशीन है और न ही कोई कंटेनर या विंडोज के लिए संकलित कोई सॉफ्टवेयर। इसके बजाय, यह विंडोज़ पर एंड्रॉइड ऐप चलाने के लिए माइक्रोसॉफ्ट के बंद प्रोजेक्ट

  1. बैश शेल PS1:एंजेलिना जोली की तरह अपने लिनक्स को शीघ्र बनाने के लिए 10 उदाहरण

    फोटो f1r3storm85 के सौजन्य से पिछले लेख में, हमने Linux पर्यावरण चर PS[1-4] और PROMPT_COMMAND के बारे में चर्चा की थी। यदि प्रभावी ढंग से उपयोग किया जाता है, तो PS1 कमांड प्रॉम्प्ट पर ही बहुमूल्य जानकारी प्रदान कर सकता है। टॉम्ब रेडर में, एंजेलिना जोली के पास शैली में रहस्य को सुलझाने के लिए सभी ग