#!/usr/bin/perl -w use strict; my $text = "('A`)/*#:\nTimeHecateIIGlock18CjammedYOUWINGame over."; for(my $key = 0; $key < 100; $key++) { for(my $offset = 0; $offset < 100; $offset++) { my %table = (); for(my $x = 32; $x < 127; $x++) { next if $x == ord('\"') || $x == ord('\\'); my $y = $x - $offset * ($key == $x ? 1 : 0); next if $y < 0 || $y > 127; $table{$y} = $x; } my $all_good = 1; foreach my $c (unpack 'C*', $text) { unless( exists $table{$c} ) { $all_good = 0; last; } } if( $all_good ) { print "chr -= $offset * ($key == chr)\n"; } } }