fsgs2bnetd.pl
上传用户:tany51
上传日期:2013-06-12
资源大小:1397k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. #!/usr/bin/perl
  2. #Usage: fsgs2bnetd "source directory" "destination directory"
  3. #source directory:    directory contains fsgs account files 
  4. #destnation directory: directory to save newly created bnetd 
  5. #                      accounts,should exist before run this 
  6. #there is another change made to bnetd account in this script 
  7. #i think fsgs account filename format <username> is better 
  8. #than using bnetd's <userid>, so i kept it in fsgs format. 
  9. #you may change it by edit the script yourself 
  10.   
  11. $ARGV[1] eq "" && die "error arguments"; 
  12. $s_dir=$ARGV[0]; 
  13. $d_dir=$ARGV[1]; 
  14. opendir(DIR,$s_dir) || die "error open dir"; 
  15. @files= grep { /^[^.]/ && -f "$s_dir/$_" } readdir(DIR); 
  16. closedir DIR; 
  17. $userid=1; 
  18. $fsgs{'name'}=""BNET\\acct\\username""; 
  19. $fsgs{'password'}=""BNET\\acct\\passhash1""; 
  20. foreach (@files)
  21. {
  22.         open(S_FILE,"$s_dir/$_") || die "error open s_file: $_n";
  23. $dest_file=lc("$d_dir/$_");
  24.         open(D_FILE,">$dest_file") || die "error open d_file: $_n";
  25. while (<S_FILE>)
  26.                 chop($_); 
  27.                 ($name,$value)=split(/:/,$_); 
  28. foreach (keys %fsgs)
  29.                         if ($_ eq $name)
  30.                                 if ( $_ eq "password" )
  31. {
  32.                                          $value=&passconv($value);
  33.                                 }
  34.                                 print D_FILE "$fsgs{$_}="$value"n"; 
  35.                                 break;
  36.                         }
  37.                 }
  38.         }
  39.         print D_FILE ""BNET\\acct\\userid"="$userid"n"; 
  40.         $userid++; 
  41.         close(S_FILE); 
  42.         close(D_FILE); 
  43. }
  44. sub passconv
  45. {
  46. ($f_pass)=@_;
  47. my ($d_pass)="";
  48. $f_pass=lc($f_pass);
  49. $length=length($f_pass);
  50. for ($i=0;$i<=$length;$i=$i+2)
  51. {
  52.         $a=2*(int(($i/2)/4)*8+3-$i/2);
  53.          $d_pass .= substr($f_pass,$a,2);
  54. }
  55. return $d_pass;
  56. }