1
mirror of https://github.com/rapid7/metasploit-framework synced 2024-10-29 18:07:27 +01:00
metasploit-framework/data/john/run.linux.x86.mmx/sap_prepare.pl
Brandon Turner 83d1f8d499 Compile John the Ripper against libssl 1.0.0
We use OpenSSL 1.0.0 in installed environments.  Previously, John the
Ripper was compiled against 0.9.8 which prevented it from running.  This
recompiles the same version (jtr 1.7.8 jumbo 2) against OpenSSL 1.0.0.

[FIXRM #7834]
2013-03-25 17:12:51 -05:00

90 lines
2.7 KiB
Perl

#!/usr/bin/perl -w
# Usage: sap_prepare.pl csv-input sap-codeB-output sap-codevnG-output
# csv-input: XLS-exported table USH02 or USR02
# tab-speparted e.g. column 4:username column 17:bcode column 24:codvn G
# sap-codeB-output: username:username<spaces>$bcode
# sap-codevnG-output: username:Username<spaces>$codvnG
#
# (all other formats with the right column names should work)
# sap uses the username as salt. those have different length, so we needed to come up w/ our
# own format. that is: username<space-padding-to-40>$HASHCODE
#
# evil spaghetti code, but works. sorry for the eye cancer ;-)
$SALT_LENGTH = 40;
if ($#ARGV != 2) {
die ("usage = $0 csv-input sap-codeB-output sap-codevnG-output \n");
}
open INPUT_FILE, "$ARGV[0]" or die ("Can't open input-file ($ARGV[0])\n");
open CODEB_FILE,">>$ARGV[1]" or die ("Can't open codeb-file ($ARGV[1])\n");
open CODEG_FILE,">>$ARGV[2]" or die ("Can't open codeg-file ($ARGV[2])\n");
print "data from >>$ARGV[0]<<\nto sap-codeB-output: >>$ARGV[1]<<\n";
print "and sap-codevnG-output: >>$ARGV[2]<<\n\n";
$line = "";
$pos_bname=-1;
$pos_codeb=-1;
$pos_codeg=-1;
$count=0;
until ($line =~ /BNAME/) {
$line=<INPUT_FILE>;
$count++;
}
chomp($line);
@tmp = split(/\t/, $line);
for ($i=0;$i<=$#tmp;$i++) {
if ($tmp[$i]=~ /BNAME/) { $pos_bname=$i }
elsif ($tmp[$i]=~ /BCODE/) { $pos_codeb=$i }
elsif ($tmp[$i]=~ /PASSCODE/) { $pos_codeg=$i }
}
print "Column: $#tmp BNAME: $pos_bname BCODE: $pos_codeb PASSCODE: $pos_codeg\n";
if (-1==$pos_bname || (-1==$pos_codeg && -1==$pos_codeb ) ) {
print "BNAME column not found OR both hash-columns are missing \n";
exit 0;
}
while ($line=<INPUT_FILE>) {
$count++;
chomp($line);
@tmp = split(/\t/, $line);
if ($#tmp<$pos_bname || ($#tmp<$pos_codeb && $#tmp<$pos_codeg)) {
print "******** line $count in csv file has the wrong format ********\n";
next;
}
if ($pos_codeg!=-1 && $tmp[$pos_codeg]=~/[a-zA-Z0-9]/) { # both hashes
print "username: $tmp[$pos_bname] codeB: $tmp[$pos_codeb] codeG: $tmp[$pos_codeg] \n";
$strN = $tmp[$pos_bname];
$strSALT = "$strN"." "x($SALT_LENGTH-length($tmp[$pos_bname]));
$strB = "$tmp[$pos_codeb]";
$strG = "$tmp[$pos_codeg]";
print CODEB_FILE "$strN:$strSALT\$$strB\n";
print CODEG_FILE "$strN:$strSALT\$$strG\n";
}
elsif ($pos_codeb!=-1 && $tmp[$pos_codeb]=~/[a-zA-Z0-9]/ ) { # only bcode
print "username: $tmp[$pos_bname] codeB: $tmp[$pos_codeb] \n";
$strN = $tmp[$pos_bname];
$strSALT = "$strN"." "x($SALT_LENGTH-length($tmp[$pos_bname]));
$strB = "$tmp[$pos_codeb]";
print CODEB_FILE "$strN:$strSALT\$$strB\n";
}
else {
print "******** line $count in csv file has the wrong format ********\n";
}
}
close INPUT_FILE;
close CODEB_FILE;
close CODEG_FILE;
print "\nDone!\n";
exit 0;