2012-04-10 19 views
1

少しPerlコード(単純なXOR解読)があり、それを別のスクリプトに追加するためにRubyに移植したいのですが、RubyでXORエンコーディング/ Perlでの使用のリトルPerl XORデコードスクリプトRubyへの移植

#!/usr/bin/perl 
# XOR password decoder 
# Greets: Joni Salonen @ stackoverflow.com 

$key = pack("H*","3cb37efae7f4f376ebbd76cd"); 

print "Enter string to decode: "; 
$str=<STDIN>;chomp $str; $str =~ s/\\//g; 
$dec = decode($str); 
print "Decoded string value: $dec\n"; 

sub decode{ #Sub to decode 
    @[email protected]_; 
    my $sqlstr = $subvar[0]; 
    $cipher = unpack("u", $sqlstr); 
    $plain = $cipher^$key; 
    return substr($plain, 0, length($cipher)); 
} 

例:任意の助けと時間

$ perl cf6deca.pl 
Enter string to decode:)4-H5GX\:&G\!6 
Decoded string value: likearock 

感謝。

私はRubyでこのような何かをしたい:

key = ['3cb37efae7f4f376ebbd76cd'].pack('H*') 

print "Enter string to decode: " 
STDOUT.flush 
a_string = gets 
a_string.chomp! 
a_string = a_string.gsub(/\//, "") 
dec = decode(a_string) 
puts "Decoded string value: "+dec 

def decode(in) 
     cipher = in.unpack('u') 
     plain = cipher^key; 
     plain.slice(len(cipher)) 
     return plain 
end 

私はTOTAL MESSである知っているが、ちょうどここstackoverflowの上の質問のいくつかを見て、それはルビーがない可能性があること:)

+2

私たちに、何がうまくいかなかったか、あなたの試みで何が問題になっていますか? Perl関数の多くは、言語の構文の違いを許せばRubyに相当します。 –

+0

私は、暗号化された文字列をXORで暗号解読する方法やRubyのキーをどこにも見つけることができないということです。 – bsteo

答えて

2

を表示されます助けてくださいビットごとの文字列演算子を持つ。 One postは、このような演算子を提供するために動作する可能性があることを示唆しています。

class String 
    def xor(key) 
    text = dup 
    text.length.times {|n| text[n] = (text[n].ord^key[n.modulo key.size].ord).chr } 
    text 
    end 
end 
+0

ありがとうysth私はしようとします。 – bsteo

+0

私の擬似Rubyスクリプトに関する助け? :) – bsteo

+0

OMG、ruby gurus here :( – bsteo

関連する問題