Perl: Używanie zaszyfrowanego hasła w skrypcie

perl_ikonaCzasem sytuacja zmusza nas do tego, że w skrypcie należy zaszyć hasło, do konta, usługi, serwera, etc… Tak więc postanowiłem wykonać mały trick, który pozwala na zaszyfrowanie naszego hasła.

Pierwszy skrypt posłuży nam do zaszyfrowania hasła i umieszczenia go w pliku „konfiguracyjnym” do skryptu.

 

#!/usr/bin/perl
use strict;
use MIME::Base64 qw( encode_base64 );
open INFILE, '<', $ARGV[0];
binmode INFILE;
open OUTFILE, '>', $ARGV[1];
my $buf;
while ( read( INFILE, $buf, 4096 ) )
 {
  print OUTFILE encode_base64($buf);
 }
close OUTFILE;
close INFILE;

Zapisujemy plik jako powiedzmy: zaszyfruj.pl i korzystamy z niego w sposób następujący:

zaszyfruj.pl plik_niezaszyfrowany plik_zaszyfrowany

Oczywiście przygotować wcześniej musimy sobie plik tekstowy który zawiera niezaszyfrowane hasło. Jako rezultat działania skryptu otrzymamy plik, którego zawartością będzie zaszyfrowane hasło.

Otrzymany plik wykorzystamy w kolejnym skrypcie, który pokazuje jak odczytać zdekodowaną wartość do zmiennej:

#!/usr/bin/perl
use strict;
use MIME::Base64 qw( decode_base64 );

open FILE, '<', $ARGV[0];
my $orginal;
my $decoded_string;
$orginal = do { local $/; <FILE> };
$decoded_string = decode_base64($orginal);
close FILE;
print $orginal;
print $decoded_string;
odszyfruj.pl plik_zaszyfrowany

Oczywiście powyższe zastosowanie to tylko teoria. A użyty powyżej algorytm szyfrowania (BASE64) nie jest zbyt pewnym punktem bezpieczeństwa, jednak takie zabezpieczenie wystarczy.

W Plikach Wsadowych (.bat, .cmd) umieszczenie hasła w kodzie można zakamuflować poprzez przekonwertowanie całego skryptu do EXE. Możecie o tym poczytać w artykule Rafała.

Znacie jakieś inne sposoby na ukrycie hasła w skrypcie?

Piotr Berent

Piotr Berent od 2002 w pocie czoła pracujący w środowisku IT, obecnie freelancer - Inżynier Systemowy. Entuzjasta wirtualizacji, automatyzacji i rozwiązań opartych o narzędzia open-source.

Przeczytaj także...

7 komentarzy

  1. Tom pisze:

    złudne zabezpieczenie jest o wiele gorsze od żadnego zabezpieczenia,
    co ma dać powyższy przykład, skoro w skrypcie jest jawnie podane jak zdekodować hasło?

    • Piotr Berent pisze:

      To tylko przykład, zresztą napisałem, że to może zabezpieczyć wyłącznie przed zwykłym użytkownikiem.
      Może i jest podane, ale pisząc skrypt możesz sobie ustalić, że zaszyfrowane hasło będziesz przetrzymywał w pliku, a nie w skrypcie 😉
      Ja wiem, że to nie jest zabezpieczenie najwyższych lotów, ale z chęcią posłucham innych propozycji

  2. internet pisze:

    na wszystko jest jakiś sposób. Chcącemu i tak się uda zdekodować.

  3. Carlos pisze:

    W wyniku działania pierwszego skryptu otrzymuję plik wynikowy o wielkości 0 bajtów. Składnia: perl /cygdrive/c/usr/prog/perl/zaszyfruj.pl haslo.txt /cygdrive/c/usr/prog/perl/haslo2.txt .Wejściowy haslo.txt ma objętość 11 bajtów. Platforma: Win7 Prof, Perl z Cygwina. Interpreter nie zwraca żadnych błędów. Jakieś pomysły?

  4. m.a pisze:

    pomożcie mi to odczytac prosze el*****

Dodaj komentarz