Jak zaciemnić lub ukryć kod w naszych skryptach bash

Czasami programujemy skrypt w Bash i chcemy, aby kod tego NIE był widoczny, to znaczy nie był zwykłym tekstem. Kiedy mówimy o ukrywaniu kodu, właściwym terminem jest zaciemniać, w moim przypadku chciałem zaciemnić kod scenariusz, który zrobiłem jakiś czas temu, narzędzie, które znalazłem, nazywa się: Shc

Shc Pozwala nam zaciemnić kod, oto kroki, aby go użyć:

1. Najpierw musimy go pobrać

Pobierz SHC v3.8.9

2. Po pobraniu klikamy prawym przyciskiem myszy skompresowany plik i wybieramy opcję «Wyodrębnij tutaj”lub coś podobnego. Spowoduje to, że zobaczymy folder o nazwie shc-3.8.9, tutaj pokazuję zrzut ekranu jego zawartości

3. OK, powiedzmy, że folder jest pod adresem /home/usuario/Downloads/shc-3.8.9 Otwieramy terminal i udajemy się na tę trasę (cd "/home/usuario/Downloads/shc-3.8.9") i tutaj rozpoczyna się instalacja.

 4. W terminalu znajdującym się (jak już powiedziałem) w folderze shc-3.8.9, aby zainstalować tę aplikację, musimy utworzyć dowiązanie symboliczne do pliku shc-3.8.9.c a shc.c więc wykonujemy następujące czynności:

ln -s shc-3.8.9.c shc.c

 4. Po utworzeniu linku wykonujemy make install z uprawnieniami roota (użyjemy sudo):

 sudo make install

 4. Zapyta nas o hasło i zaczeka chwilę, będzie czekał, aż wciśniemy klawisz [I] i naciśnij [Wchodzić]to znaczy, że potwierdzamy, że chcemy zainstalować oprogramowanie. Gdy to zrobisz, zainstaluje się bez problemów. Zostawiam Ci zrzut ekranu z całego procesu przygotowania i instalacji:

 


Jak widać na końcu wyskakuje mi błąd, błąd odnosi się do tego, że jakiś folder nie istnieje w moim systemie, jak widzisz to po prostu nie nadawaj mu wagi ... mimo to SHC zainstalowano pomyślnie 😉
Więc mogą biec sudo make install es NIEZBĘDNY mieć zainstalowane pakiety: gcc y robić

5. Gotowe, to wszystko do instalacji 😀

Kiedy już go zainstalujemy, musimy tylko nauczyć się go używać. Załóżmy, że mamy w domu skrypt o nazwie skrypt.sh i że jego treść jest następująca:

#!/bin/bash
echo "Script de prueba para DesdeLinux.net"
exit

Podczas wykonywania tego skryptu oczywiście pokaże nam komunikat w terminalu: «Skrypt testowy dla DesdeLinux. Netto" albo nie? … Ale teraz zamierzamy zaciemnić ten kod.

W terminalu wstawiamy i naciskamy [Wchodzić]:

shc -v -f $HOME/script.sh

I bingo !! gotowe 😀

To stworzyło nam dwa nowe pliki wraz z naszym skryptem, teraz mamy skrypt.sh.x y script.sh.xc

script.sh.x - » To jest nasz zaciemniony skrypt bash, ten po uruchomieniu zrobi dokładnie to samo, co pierwszy, który stworzyliśmy, różnica między nimi polega na tym, że pierwszy, jeśli otworzymy go za pomocą edytora tekstu (nano, kate, gedit itp.) mogliśmy wyraźnie zobaczyć jego zawartość, jeśli otworzymy skrypt.sh.x zobaczymy wyraźnie, że nic nie widzimy ... LOL !!!, czyli kod jest „zaszyfrowany” 🙂

script.sh.xc - » To jest nasz skrypt, ale w języku C ... możemy go usunąć bez obaw, ponieważ tak naprawdę go nie potrzebujemy, cóż, przynajmniej w ogóle bym go nie potrzebował 🙂

Nie ma nic więcej do dodania od strony technicznej, po prostu wyjaśnij, że o ile wiem, z tym (ukrywaniem lub zaciemnianiem kodu skryptu bash) nie narusza to licencji ani czegoś w tym rodzaju. Wyjaśniam to, ponieważ kilka miesięcy temu na Facebooku, kiedy wspomniałem, że nauczyłem się zaciemniać kod basha, niektórzy użytkownicy ostrzegali mnie, że to naruszenie licencji lub coś w tym rodzaju ... cóż, o ile rozumiem, licencje nie są naruszane z tym 😉

Wielkie dzięki dla Matias Gaston za wspomnienie mi o tym narzędziu jakiś czas temu

Nic więcej do dodania, jakiekolwiek wątpliwości lub pytania, skargi lub sugestie daj mi znać.

Pozdrowienia 😀


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   xykyz powiedział

    Nie chodzi o to, że naruszane są licencje, ale o to, że przestaje być wolnym oprogramowaniem ...

    1.    KZKG ^ Gaara powiedział

      Tak oczywiście. Chodzi o to, że istnieją moje osobiste skrypty, których nie chcę, aby inni widzieli, na przykład dlatego, że jeden z tych skryptów ma hasło w postaci zwykłego tekstu mojego lokalnego MySQL lub coś podobnego.

      1.    Morfeusz powiedział
        1.    KZKG ^ Gaara powiedział

          W rzeczywistości moje hasła są „ukryte” za pomocą SHA (https://blog.desdelinux.net/como-saber-la-suma-md5-o-sha-de-una-palabra-oracion-o-archivo/), to w skrypcie trzymam hash hasła i porównuję hasło, które wpisuje użytkownik (zapisuję z przeczytanym), otrzymuję sumę SHA i na koniec porównuję oba

          W każdym razie bardzo dziękuję za link, już go recenzuję 😀

          pozdrowienia

        2.    Użyjmy Linuksa powiedział

          Dokładny! Pytaniem powłoki o hasło jest dobra alternatywa.
          Twoje zdrowie! Paweł.

          1.    msx powiedział

            Ale nie zapewnia automatycznego i nienadzorowanego wykonania, tak jak robi to w drugą stronę. 🙂

      2.    Willians vivanco powiedział

        Umieszczanie haseł i innych danych umożliwiających dostęp lub naruszanie danych w skrypcie to duży błąd. Te informacje muszą zostać zapisane w innym pliku z odpowiednimi uprawnieniami, więc nie będziesz musiał zaciemniać swojego skryptu bash. Łatwe, co?

        1.    KZKG ^ Gaara powiedział

          Problem z posiadaniem danych (zmiennych logowania, confs itp.) W innym pliku polega na tym, że wtedy `` system '' lub `` aplikacja '' potrzebuje 2 plików do działania, podczas gdy jeśli przechowuję wszystko w `` bezpieczny '' sposób, jak to możliwe, pojedynczy plik , cóż, potrzebowałbym tylko tego ... jednego pliku.

          1.    Morfeusz powiedział

            Dobrą praktyką jest oddzielenie aplikacji od danych.
            A raczej okropną praktyką jest zakodowanie danych!
            http://es.wikipedia.org/wiki/Hard_code
            Nie ma to nic wspólnego z zabezpieczeniem umieszczania kodu i danych w tym samym pliku. A nawet więcej, wręcz przeciwnie, jeśli masz tam swoje hasła !!

          2.    Willians vivanco powiedział

            Koszt odczytu poufnych informacji z innego pliku jest pomijalny obok kosztu procesora wymaganego do „odzyskania” kodu.

            Z drugiej strony odrzucasz cały paradygmat rozwoju modułowego, stawiając na model monolityczny, w którym więcej niż udowodniono, jest więcej problemów niż rozwiązań.

          3.    msx powiedział

            A także, że jeśli używasz uprawnień, które z konieczności będą dotyczyły innych grup / użytkowników, będziesz także potrzebować hasła początkowego, aby wykonać pierwszy skrypt.

          4.    msx powiedział

            @KZKG powyższy komentarz jest odpowiedzią na Twój komentarz
            @morpheus: jest to absolutnie związane z konkretną potrzebą.

    2.    Morfeusz powiedział

      Ale istnieje wolne oprogramowanie skompilowane binarnie (co jest czymś więcej niż zaciemnianiem). Fakt, że jest darmowy, oznacza, że ​​ma również źródło, ale nie ma to nic wspólnego z zaciemnianiem (lub kompilacją, co jest niezbędne, jeśli chcę na przykład uruchomić program w C)

      1.    Willians vivanco powiedział

        W przypadku skompilowanego wolnego oprogramowania jest to kwestia wymagań dotyczących używanego języka (jeśli programujesz w C, musisz skompilować, aby aplikacja działała). I zawsze, jeśli jest to naprawdę wolne oprogramowanie, kod źródłowy będzie dostępny.

  2.   Hyuuga_Neji powiedział

    humm Oznaczam pewien stopień apatii w udostępnianiu kodu lol, aby zobaczyć, jak wielu z nich zaczyna „zaciemniać ich kody”, aby uczynić nas bardziej zależnymi od ich rozwiązań ...

    1.    KZKG ^ Gaara powiedział

      Nie mówię, że kod powinien być zaciemniony czy nie ... Daję narzędzia, każde, które używa ich zgodnie ze swoimi potrzebami.

      1.    komentator powiedział

        Ukryć kod na tej stronie?

        Myślę, że to dobry pomysł dla czytelników na odległość, ponieważ uważam, że wiele osób, które odwiedzają ten blog, to zwolennicy wolnego oprogramowania i dlatego nie podzielamy praktyki zaciemniania kodu.

        1.    msx powiedział

          Najwyraźniej nie czytałeś powodu, dla którego KZKG się kłóci i dlaczego wyjaśnia potrzebę zaciemnienia swojego skryptu.

          Dzięki KZKG za udostępnienie swojego znaleziska!

  3.   Gabriel powiedział

    I tak wirusy zaczynają krążyć w Linuksie ...

    Osobiście NIGDY nie użyłbym żadnych zaciemnionych skryptów. Nie tylko ze względu na ryzyko związane z bezpieczeństwem, ale także dlatego, że jeśli twój skrypt jest zbyt cenny, aby go udostępnić, lepiej umieść go w * ulo; Z pewnością znajdę kogoś, kto zechce się podzielić swoją wiedzą.

    1.    KZKG ^ Gaara powiedział

      Czy nigdy nie użyłbyś zaciemnionego skryptu? Cóż, BARDZO dobrze dla ciebie, NIGDY nie użyłbym zaciemnionego skryptu ... szczegół jest taki, że NIGDY nie udostępniłem zaciemnionego skryptu, daleko od niego, a tam, drogi przyjacielu, jest gdzie błąd występuje 😉

      Ilekroć robię coś w Bashu, udostępniam to bez ważenia i zawracania sobie głowy, co już zrobiłem w wielu artykułach tutaj 😀

      Witaj na blogu, miło cię czytać 😉

  4.   Percaff_TI99 powiedział

    Gabriel, KZKG ^ Gaara już dzieli się wiedzą, nie tworzy żadnego pakietu linuksowego z zaciemnionymi skryptami, które mogłyby stanowić naruszenie licencji, ujawnia tylko aplikacje, których można użyć lub nie do własnego użytku, nie trzeba być niegrzecznym, ponieważ dla wirusów w Linuksie nie jest takie proste, oto dobry artykuł na ten temat https://blog.desdelinux.net/virus-en-gnulinux-realidad-o-mito/.
    KZKG ^ Gaara Chciałbym napisać post o szyfrowaniu i kryptografii z wykorzystaniem obrazków, to temat, który bardzo mi się podoba.
    Twoje zdrowie !!!

    1.    KZKG ^ Gaara powiedział

      Dziękuję
      Właściwie nie jest tak, że mam wystarczającą wiedzę na temat szyfrowania i kryptografii, przynajmniej nie czuję się na tyle pewnie, aby napisać post i założyć wątpliwości, jakie mogą mieć użytkownicy 😀
      W tym temacie nie chodzi o to, że jestem zaawansowanym użytkownikiem ...
      Najczęściej używałem GPG do szyfrowania plików, a jeśli chodzi o obrazy, najbardziej zrobiłem `` wstawienie '' lub ukrycie pliku w obrazie, dzięki czemu oczywiste jest, że gdy obraz jest otwierany za pomocą przeglądarki obrazów, wszystko jest pokazane poprawnie, czy to masz na myśli?

      Jeszcze raz bardzo dziękuję za komentarz 🙂

  5.   ratakruel powiedział

    O ile dobrze pamiętam, mistrzostwa C są zaciemniane, ale nie warto używać „zaciemniacza”, ale muszą zaciemniać swoje źródła na oklep.

    Co do shc i twojego skryptu z hasłami… bardzo zły sposób na pracę!

    Ciekawy artykuł, jak zawsze.

    1.    KZKG ^ Gaara powiedział

      Tak, więcej niż jeden powiedział mi już LOL !!
      Dziękuję za komentarz 🙂

  6.   zawsze powiedział

    Zasadniczo, jeśli udostępnisz aplikację bez udostępnienia widocznego skryptu, naruszysz GPL, która wymaga, aby wszystko, co zostało wygenerowane za pomocą aplikacji GPL, było GPL. Dlatego SHC generuje C, ponieważ jest to kod, który możesz udostępniać.

    pozdrowienia

  7.   Użyjmy Linuksa powiedział

    Zgadzam się z komentarzami innych czytelników: nie tylko nie jest dobrą praktyką wspólne przechowywanie danych i skryptów, ale także nie sprzyja tworzeniu wolnego oprogramowania.
    Uścisk! Paweł.

    1.    KZKG ^ Gaara powiedział

      Cześć Pablo 🙂
      Mam jakiś inny zaciemniony skrypt, który działa wewnętrznie na moim laptopie, zaciemniam go bo po prostu nie życzę sobie, żeby jak ktoś z jakiegoś powodu zdołał skopiować mój skrypt na inny komputer to po prostu nie chcę żeby widzieli co on zawiera, to to „środek bezpieczeństwa”, który podejmuję.

      Jednak tutaj w DesdeLinux Publikuję wszystko lub prawie wszystko, co programuję w Bash, co może być interesujące.

      Krótko mówiąc, nie chodzi o to, że teraz jestem krytykiem SWL za zaciemnianie osobistego scenariusza, za robienie tego w celach osobistych 😀

      Witaj przyjacielu

  8.   ćwiczenia z programowania powiedział

    Dobra informacja. Oprócz kontrowersji, które są generowane w komentarzach, wydaje mi się, że informacje wymagają dalszych badań.

    Myślę, że autor w żadnym miejscu artykułu nie mówi nam, czy jest to dobrze, czy źle zrobione, czy powinniśmy lub nie powinniśmy tego robić, po prostu mówi nam, jakim narzędziem można to zrobić, gdyby było to dla kogoś korzystne .

    Pozdrowienia.

    ćwiczenia z programowania

    1.    f3niX powiedział

      Na blogach Linuxeros wszystko jest kontrowersyjne, haha, zawsze tak było.

      1.    msx powiedział

        @ F3niX Wytnę zrzut ekranu z twoim komentarzem, aby umieścić go za każdym razem, gdy ktoś głupio wspomina o temacie.

        Uwaga: zobaczmy, kiedy znajdę Cię na forach IRC i Chakra 😉

    2.    KZKG ^ Gaara powiedział

      DOKŁADNY!!
      Po prostu pokazuję / uczę / wyjaśniam coś nowego, czego się nauczyłem, to Twoja decyzja, czy skorzystać z tej wiedzy, czy nie, nie zmuszam cię, a tym bardziej.

      O ile wiem, dzielenie się wiedzą jest pozytywną rzeczą, prawda? 0_oU

      Dziękuję za komentarz, dobrze jest wiedzieć, że jest więcej niż jeden lub dwóch, którzy rozumieją prawdziwy cel tego artykułu.

  9.   Percaff_TI99 powiedział

    Tam postawiłeś mnie w trudnej sytuacji xD, kilka tygodni temu przygotowywałem post, który miał nosić tytuł «Instalacja i testowanie Cruxa» i pomimo tego, że instalacja przebiegła pomyślnie, jestem zwykłym użytkownikiem i nie wiem, czy dam radę sobie z wątpliwościami osób trzecich, intencją jest, aby służyła jako narzędzie do dyskusji o zaletach i wadach tej dystrybucji oraz możliwych rozwiązaniach problemów, które mogą nam się pojawić. wśród wszystkich użytkowników i czytelników. Kiedy skończę i wyślę do recenzji, zadecyduje o tym administratorzy. Jeśli chodzi o kwestię kryptografii na obrazach, było tak samo, dziękuję KZKG ^ Gaara za odpowiedź.

    Pozdrowienia!

    1.    KZKG ^ Gaara powiedział

      Ok, z przyjemnością napiszę o tym 😉

  10.   makubex uchiha powiedział

    doskonałe tuto bro Uważam, że jest bardzo przydatne: 3
    dla tych, którzy chcą zainstalować go w manjaro linux i pochodnych archlinux pakiet jest w aur o nazwie: shc

    pozdrowienia

  11.   Marcos powiedział

    Przepraszam, przyjacielu, miałem mały skrypt, który konwertował WIELKIE LITERY NA małe litery, które były w schowku (xclip)

    skrypt działa normalnie, gdy nie jest zaciemniony

    #! / bin / bash
    xclip -o> R1.txt
    cat R1.txt | tr [: upper:] [: lower:]
    wyrzucił ""
    rm R1.txt

    ale kiedy chcę uruchomić zaciemniony skrypt
    ja kości

    ./M2m.sh: Operacja niedozwolona
    Ukończone (zabite)

    Proszę pomóż

    1.    KZKG ^ Gaara powiedział

      Czy masz zainstalowany xclip?

  12.   SynFlaga powiedział

    Należy zauważyć, że w rzeczywistości jest to kompilator bash, ponieważ istnieją kompilatory .bat lub .php.
    Nie wiem czy kod, który się produkuje, jest zaszyfrowany i zaciemniony i nie wytrzymuje dekompilatora, trzeba by spróbować, skoro to nie moja dziedzina, nie mówię tak lub nie, ale widzę, że kompiluje bash, w .c to jest Możesz zobaczyć kod, który w zaciemnionym miejscu widzę, że jest w liniach wyglądających jak powłoka exploita, nie wiem, czy są naprawdę zaciemnione, ponieważ żadne hasło nie jest zażądano lub nie wiem, master.config, gdzie poprzednie słowo kluczowe.

  13.   Juan David powiedział

    przyjaciele zdarza się, że kiedy zaciemniam swój skrypt, tworzy nowy skrypt z zakończeniem ex, wykonuję go i jest nawet doskonały. Ale kiedy zabieram go na inny komputer z linuzem to nie działa, ma już wszystkie uprawnienia, tworzę program uruchamiający i mówię mu, że jest to aplikacja terminalowa, ale nie działa, poczekaj na szybką odpowiedź

    1.    KZKG ^ Gaara powiedział

      Czy skompilowałeś go i czy używasz go w systemie o tej samej architekturze? Innymi słowy, wystąpi błąd, jeśli skompilowałeś go w celu zaciemnienia go w systemie 32-bitowym, a następnie spróbujesz uruchomić go w systemie 64-bitowym lub odwrotnie. Rozumiesz?

      1.    Juan David powiedział

        Nie, ale już zapewniłem formatowanie tego samego komputera, z tym samym systemem operacyjnym i nie działa, nawet nie wysyła błędu.
        Nazywam to przez konsolę w ten sposób: sudo /home/operations/script.x i otrzymuję ten błąd

        /home/operaciones/script.x: e } 8- q , K

        cała sprawa

        1.    KZKG ^ Gaara powiedział

          Spróbuj uruchomić go BEZ kompilacji, aby sprawdzić, czy jest to błąd w kodzie

    2.    nacięcie powiedział

      Aby móc uruchomić zaciemniony skrypt na innych komputerach, musisz go skompilować z opcją «-r Zrelaksuj bezpieczeństwo. Utwórz plik binarny do redystrybucji ”, w przeciwnym razie będzie działał tylko na maszynie, na której skrypt został zaciemniony za pomocą SHC.
      przykład:

      shc -r -f script.sh

  14.   William powiedział

    Witam, mam pytanie, czy shc można zainstalować w każdym typie dystrybucji Linuksa?, Na przykład red hat, jak będzie instalacja dla tej?
    Dzięki!

  15.   Ruyzz powiedział

    Witam wszystkich, Wasze komentarze bardzo mi pomogły, ale mam następujący problem, gdy zaciemnianie nie działa u mnie w tym samym systemie ale z inną architekturą to znaczy jak robię to w 32 bitach to nie da się uruchomić w 64 bitach . Czy ktoś wie, czy naprawdę można go uruchomić na różnych architekturach (32 i 64 bity)?