我们知道Rexfile的账号密码和证书路径都是密码的,容易泄漏了,我们可以用base94算法对进行一下加密
可以防止直接被泄露,虽然这不能保证被人反解密(可以用自己加密算法写模块,或者更底层的方法,这里不深入),
但是聊胜于无。好吧先看具体做法。
基本原理用Base64基本算法,用两个函数encode_base64()和 decode_base64()。
1、加密账户和密码字段(格式用户::密码)程序:
1 2 3 4 5 |
use MIME::Base64; my($user,$pass)=@ARGV; my $str=$user.'::'.$pass; $encoded = encode_base64($str); printf("after base64 encoded is: %s", $encoded); |
2、把得到的字符串对放到Rexfile使用,就可以避免直接泄露了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Rexfile: use MIME::Base64; ... my $sky=q(L2hvbWUvbHovLmF1VGFzay91c2VybGlzdC9sbHp6OjovaG9tZS9sei8uYXVUYXNrL3VzZXJsaXN0L3p6bGw=); my $sup=q(dGVzdDo6dGVzdA==); my $dsky = decode_base64($sky); my ( $sk1, $sk2)= split /::/,$dsky; my $dsup = decode_base64($sup); my ( $usery, $userp)= split /::/,$dsup; user $usery; private_key $sk1; public_key $sk2; key_auth; sudo TRUE; sudo_password $userp ... ... |