#!perl use strict; use CGI; use MIME::Base64; my $page = new CGI; my $msg = "Hello from Perl CGI!"; sub XorAlgoritm { my (@BINDATA) = @_; my (@XOR_CODE) = (65, 84, 69, 90); # 0x5A455441 my (@PLUS_VAL) = (65, 78, 65, 78); # 0x4E414E41 my (@TMP_VAL) = (0, 0, 0, 0); for (my $i = 0; $i < 313; $i++) { my $TMP_VAL2 = 0; for (my $j = 0; $j < 4; $j++) { $BINDATA[$i * 4 + $j] ^= ($TMP_VAL[$j] ^ $XOR_CODE[$j]); $TMP_VAL[$j] = ($TMP_VAL[$j] + $PLUS_VAL[$j] + $TMP_VAL2); $TMP_VAL2 = $TMP_VAL[$j] >> 8; $TMP_VAL[$j] &= 255; } } return @BINDATA; } my $srcdata1 = "985FWrOn2dfDyMfGgr6GsEVtQGME0wPdx4HCj4Z3jHlJJk8oCJQOmstayFSKCIsGTf9K8QytFaPPE9cdjsGWz1GwUb5sshNoZjPS2jKOnZR3XF9HFD8eMdft2eOWU5tdWQJaDBjwJf7bpuSomhSmGl3bYdUciSCH33/icZ4trSNhnGySIEIuTOMw6T6i5qjoZVVqWyQbNRXnyfTHpr+3sWlucWAo3DDS64LzjKpwvX5tJ3wpLJU/m+9b+VWuCbgHcfh79jCuOqDzHIQSsdRGzkesZYQPBPtSlO64uI2gIbFCKTd/WwP0VcDV7duBP3NoHjgwbgfKqcTExK6S3S5sezr/dfH76eq/4EOoFXkUMRo+nR2TxEPfTYcxnj9G4FnuCVYbWMgE2gqLyqXESrlktw1vJmHM3eHTj4OgjU5yYnwRIC0u0JbsmHdEqktSC2kFFfko99Sv66GXHbUTVsx0whmyN7zYYPFum9aw2FqFc4sdSz1F3Dn8N5/vv+FeXnlQIQw4AuDy+/zjv7quEgAEGZ3Ox8uklIaF125AdN4jAyYJ0MKQcHaMQrsVTz1Krw7vtW3IWfwiiwuH6Er6Hq0VtIlj12bY/ZbQw5tRg8p4E30lBtIvhICdmQ9OX0hmEx46Se3Z9ECjmKZrGVoRpsglw9Ww5L32YaZgv9d13n6CIIjGdOJwgDqiNEP9bOcGXy5WxQ3jA4T8qP1TomuoBhAyHsnM9MiHtLeuS3t1dQouMCfHn/OejE2pQ084fDIJ4j/m0VD2XpASuAhX9Xv8Ers2tdVkmmeb30fTV44AnhZ0wHLfPIMrhpBKgVtFEkkZNc84w/uK9ZyqV6RcGAsWEc7K3uG8uLKgYldtY9EW3yGH0YnldZN7pDtaLmPuGeAmWN9W6w6eAKj8WfNroxitLBHeH+3HpcmqtVS4rWQvai4q4STxmKCWsE5iQXM9LTMy4+zt9VGuX7QHaQ539ij4NqTrqvlqtWR22XTXe4c3gTp98XP9I7AtvJFznH9APU4+Nvw4geS/6kCrfqUDGTgXws/7wYW9urNEbARiB9LH3MaAho6JdkB5SCUDKwvrwuXKWYlXjw9MBkzf8Q8PrMmizhKLHJHASs9QtxW5E2XXa9IrliWVmVGUVEgTRhc+0jDW7J3imVJfXVgBHg8b99n52qWYq51rWhpc2iXUH4jkht5+pnChLGEjYJMgnSNB4k/iNqw5peVs6GRULlonGukV5sioxqi+a7FobTVjK9P03eqBt4+td3F+bCYwKC+U85ruWr1UsQh8B3D/P/Ezrf6j8hO4HbXBe8x0sDq+N2aEaPbUR9u5mgaVeEnARzs/gzH67ULgvVMMUnwCzww/8I7+/qZJqUEVCxsA28rVw4mVh4J/V3ZFLhYgBJzRksdCk0yGMFI/Secd6QhV31vLG54VislZxE24GLYMbtpgz9yl0o6CZI1RcSZ/ECfhKdOVoJuSW2JKVQotBBT47PbXrq+glhxpE1nDKM0Yseu/22e1aZrVdNhdhDeKHErxRN84sDae7nPhYV09UyAD/A3j8b//oqd+rmUWOBgkxPvK54q6hKZ4BHdpL8chKJ2Gk+tDQEKqMQM8beDC7ixWjFjvBE8LrsoOxXG5ybcwb4th891K0LKDFYJ1ctd8NCCWLveWUZm2RBNLeQvSBQ=="; my $srcdata = "w7hFWrOn2dfDyMfGgr6GsEVtQGME0wPdx4HCj4Z3jHlJJk8oOa08tPps8Hq7Jr8GTf9K8QytFaPPE9cdjsGWz1GwUb7L6xNoiknW2iKCnZRbXF9HFD8eMdft2eOWU5tdWQJaDBjwJf5FquSomhSmGl3bYdUciSCH33/icZ4trSNhnGySIEIuTOMw6T6i5qjoZVVqWyQbNRXnyfTHpr+3sWlucWAo3DDS64LzjKpwvX5tJ3wpLJU/m+9b+VWuCbgHcfh79jCuOqDzHIQSs/V1z1+IZYQPBPtSlO64uI2gIbFCTwlVNA/5VcDV7duBP3NoHjgwbgfKqcTExK6S3S5sezr/dfH76eq/4EOoFXkUMRo+nR2TxEPfTYcxnj9G4FnuCVYbWMgE2gqLyqXESrlktw1vJmHM3eHTj4OgjU5yYnwRIC0u0JbsmINFEUpSC2kFFfko99SvlaGXHbUTVsx0whmyN7zYYPFum9aw2FqFc4sdSz1F3Dn8N5/vv+FeXnlQIQw4AuDy+/zjv7quEgAEGV7Tx8uklIaF125AdN4jAyYJ0MKQcHaMQrsVTz1Krw7vtW3IWfwiiwuH6Er6Hq0VtIlj12bY/ZbQw5tRg8p4E30lBtIvhICdmQ9OX0hmEx46Se3Z9ECjmKZrGVoRpsglw9Ww5L32YaZgv9d13n6CIIjGdOJwgDqiNEP9bOcGXy5WxQ3jA4T8qP1TomuoBhAyHsnM9MiHtLeuS3t1dQouMCfHn/OejE2pQ084fDIJ4j/m0VD2XpASuAhX9Xv8Ers2tdVkmmeb30fTV44AnhZ0wHLfPIMrhpBKgVtFEkkZNc84w/uK9ZyqV6RcGAsWEc7K3uG8uLKhYldtYtEW36GG0YmldZN5pDtfLmPuGeAmWN9W6A6eAKj8WfNroxitJBHaH+3HpclX1ZS5j3WNaC4q4STxmKCWsE5iQXM9LTMy4+zt9VGuX7QHaQ539ij4NqTrqvlqtWR243bXe4I3gTp98XP9I7AtvJFznH9APU4+Nvw4geS/6kCrfqUDGTgXws/7weW9+rdEbARiB9LH3MaAho6JdkB5SCUDKwvrwuXLWY5Xiw9NBkjkD+oPrMmizhKLHJHASs9QtxW5E2XXa9IrliWVmVGUVEgTRhc+0jDW7J3imVJfXVgBHg8b99n52qWYq51rWhpc2iXUH4jkht5+pnChLGEjYJMgnSNB4k/iNaw5peVs6GVVLlonGukV5smoxqi+a7FobTVjK9P03eqBt4+sd3F+bCYwKC+U85ruWr1UsQh8B3D/P/Ezrf6j8hO4HbXBe8x0sDq+N2aEaPbUR9u5mgaVeEnARzs/gzH67ULgvVMMUnwCzww/8I7+/qZJqUEVCxsA28rVw4mVh4J/V3ZFLhYgBJzRksdCk0yGMFI/Secd6QhV31vLG54VislZxE24GLYMbtpgz9yl0o6CZI1RcSZ/ECfhKdOVoJuSW2JKVQotBBT47PbXrq+glhxpE1nDKM0Yseu/22e1aZrVdNhdhDeKHErxRN84sDae7nPhYV09UyAD/A3j8b//oqd+rmUWOBgkxPvK54q6hKZ4BHdpL8chKJ2Gk+tDQEKqMQM8beDC7ixWjFjvBE8LrsoOxXG5ybcwb4th891K0LKDFYJ1ctd8NCCWLveWUZm2RBNLeQvSBQ=="; my $decoded = decode_base64($srcdata); my @BINDATA_IN = split(//, $decoded); foreach (@BINDATA_IN) { $_ = ord($_); } my @BINDATA_OUT = XorAlgoritm(@BINDATA_IN); my $BINDATA_STRING = ""; foreach (@BINDATA_OUT) { $BINDATA_STRING .= chr($_); } open(DA, ">test.VMS"); binmode(DA); print DA $BINDATA_STRING; close (DA); # print $page->header( "text/html" ), $page->start_html( -title=>$msg ); # print $page->h2( $msg ); print $BINDATA_STRING; # print $page->end_html;