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?


Podobne Tematy:

  • Tom

    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?

    • 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

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

    • Oczywiście, że tak, ale ktoś kto przez przypadek trafia na źródło skryptu niekoniecznie musi poznać nasze hasło ;)

  • Carlos

    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?

  • m.a

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