00001 extern "C" {
00002 #include "define.h"
00003 };
00004
00005 #include <fcntl.h>
00006 #include <iostream>
00007 #include <vector>
00008 using namespace std;
00009
00010 unsigned char comp_enc [] =
00011 { 0x47, 0xf1, 0xb4, 0xe6, 0x0b, 0x6a, 0x72, 0x48,
00012 0x85, 0x4e, 0x9e, 0xeb, 0xe2, 0xf8, 0x94, 0x53,
00013 0xe0, 0xbb, 0xa0, 0x02, 0xe8, 0x5a, 0x09, 0xab,
00014 0xdb, 0xe3, 0xba, 0xc6, 0x7c, 0xc3, 0x10, 0xdd,
00015 0x39, 0x05, 0x96, 0x30, 0xf5, 0x37, 0x60, 0x82,
00016 0x8c, 0xc9, 0x13, 0x4a, 0x6b, 0x1d, 0xf3, 0xfb,
00017 0x8f, 0x26, 0x97, 0xca, 0x91, 0x17, 0x01, 0xc4,
00018 0x32, 0x2d, 0x6e, 0x31, 0x95, 0xff, 0xd9, 0x23,
00019 0xd1, 0x00, 0x5e, 0x79, 0xdc, 0x44, 0x3b, 0x1a,
00020 0x28, 0xc5, 0x61, 0x57, 0x20, 0x90, 0x3d, 0x83,
00021 0xb9, 0x43, 0xbe, 0x67, 0xd2, 0x46, 0x42, 0x76,
00022 0xc0, 0x6d, 0x5b, 0x7e, 0xb2, 0x0f, 0x16, 0x29,
00023 0x3c, 0xa9, 0x03, 0x54, 0x0d, 0xda, 0x5d, 0xdf,
00024 0xf6, 0xb7, 0xc7, 0x62, 0xcd, 0x8d, 0x06, 0xd3,
00025 0x69, 0x5c, 0x86, 0xd6, 0x14, 0xf7, 0xa5, 0x66,
00026 0x75, 0xac, 0xb1, 0xe9, 0x45, 0x21, 0x70, 0x0c,
00027 0x87, 0x9f, 0x74, 0xa4, 0x22, 0x4c, 0x6f, 0xbf,
00028 0x1f, 0x56, 0xaa, 0x2e, 0xb3, 0x78, 0x33, 0x50,
00029 0xb0, 0xa3, 0x92, 0xbc, 0xcf, 0x19, 0x1c, 0xa7,
00030 0x63, 0xcb, 0x1e, 0x4d, 0x3e, 0x4b, 0x1b, 0x9b,
00031 0x4f, 0xe7, 0xf0, 0xee, 0xad, 0x3a, 0xb5, 0x59,
00032 0x04, 0xea, 0x40, 0x55, 0x25, 0x51, 0xe5, 0x7a,
00033 0x89, 0x38, 0x68, 0x52, 0x7b, 0xfc, 0x27, 0xae,
00034 0xd7, 0xbd, 0xfa, 0x07, 0xf4, 0xcc, 0x8e, 0x5f,
00035 0xef, 0x35, 0x9c, 0x84, 0x2b, 0x15, 0xd5, 0x77,
00036 0x34, 0x49, 0xb6, 0x12, 0x0a, 0x7f, 0x71, 0x88,
00037 0xfd, 0x9d, 0x18, 0x41, 0x7d, 0x93, 0xd8, 0x58,
00038 0x2c, 0xce, 0xfe, 0x24, 0xaf, 0xde, 0xb8, 0x36,
00039 0xc8, 0xa1, 0x80, 0xa6, 0x99, 0x98, 0xa8, 0x2f,
00040 0x0e, 0x81, 0x65, 0x73, 0xe4, 0xc2, 0xa2, 0x8a,
00041 0xd4, 0xe1, 0x11, 0xd0, 0x08, 0x8b, 0x2a, 0xf2,
00042 0xed, 0x9a, 0x64, 0x3f, 0xc1, 0x6c, 0xf9, 0xec};
00043
00044 int main(int argc, char* const* argv) {
00045 if (argc < 4) {
00046 printf("usage: %s filename.pst integer-delta search-string\n", argv[0]);
00047 return 0;
00048 }
00049 int fd = open(argv[1], O_RDONLY);
00050 int d = atoi(argv[2]);
00051 string search(argv[3]);
00052 printf("using file %s with delta %d looking for %s\n", argv[1], d, argv[3]);
00053 if (fd) {
00054 struct stat st;
00055 fstat(fd, &st);
00056 off_t size = st.st_size;
00057 vector <char> buf(size);
00058 size_t s = read(fd, &buf[0], size);
00059 pst_debug_hexdumper(stdout, &buf[0], s, 16, 0);
00060 printf("\n\n dump decrypted data \n");
00061 for (off_t i=0; i<size; i++) {
00062 buf[i] = comp_enc[(unsigned char)buf[i]];
00063 }
00064 pst_debug_hexdumper(stdout, &buf[0], s, 16, 0);
00065 close(fd);
00066 }
00067 return 0;
00068 }