資源簡介
Sony F828 Raw 文件格式解碼

代碼片段和文件信息
/*
???Completely?decrypt?a?Sony?DSC-F828?raw?file.
???by?Dave?Coffin??1/4/2004
?*/
#include?
#include?
#include?
//#include?
typedef?unsigned?char?uchar;
typedef?union?{
unsigned?char?uc[4];
unsigned?long?ul;
}?UDWord;
unsigned?long
htonl(unsigned?long?ll)
{
UDWord?x;
UDWord?y;
x.ul?=?ll;
y.uc[0]?=?x.uc[3];
y.uc[1]?=?x.uc[2];
y.uc[2]?=?x.uc[1];
y.uc[3]?=?x.uc[0];
return?y.ul;
}
unsigned?long
ntohl(unsigned?long?ll)
{
return?htonl(ll);
}
void?sony_decrypt?(void?*buf?int?len?int?key)
{
??unsigned?pad[128]?*data=buf;
??int?i;
??for?(i=0;?i?4;?i++)
????pad[i]?=?key?=?key?*?48828125?+?1;
??pad[3]?=?pad[3]?<1?|?(pad[0]^pad[2])?>>?31;
??for?(i=4;?i?127;?i++)
????pad[i]?=?(pad[i-4]^pad[i-2])?<1?|?(pad[i-3]^pad[i-1])?>>?31;
??for?(i=0;?i?127;?i++)
????pad[i]?=?htonl(pad[i]);
??for?(?;?i?????*data?^=?pad[i?&?127]?=?pad[(i+1)?&?127]?^?pad[(i+65)?&?127];
}
void?sony_clear?(uchar?*buffer?int?length)
{
??unsigned?*ip?key0?key1=0?key2=0?i;
??uchar?*cp;
??ip?=?(void?*)?cp?=?buffer+200896;
??key0?=?ntohl(ip[*cp]);
??sony_decrypt?(buffer+164600?9074?key0);
??for?(i=4;?i--;?)?{
????key1?=?key1?<8?|?buffer[164610+i];
????key2?=?key2?<8?|?buffer[164622+i];
??}
??sony_decrypt?(buffer+164640?174376?key1);
??sony_decrypt?(buffer+862144?(length-862144)/4?key2);
}
int?main?(int?argc?char?**argv)
{
??FILE?*fp;
??char?name[512]?*buffer;
??int?arg?length;
??for?(arg=1;?arg?????fp?=?fopen?(argv[arg]?“rb“);
????if?(!fp)?{
??????perror?(argv[arg]);
??????continue;
????}
????fseek?(fp?0?SEEK_END);
????length?=?ftell?(fp);
????if?(length?0x100000)?{
??????fprintf?(stderr?“%s?is?too?small!\n“?argv[arg]);
??????fclose(fp);
??????continue;
????}
????buffer?=?malloc?(length);
????if?(!buffer)?{
??????fprintf?(stderr?“%s?is?too?big!\n“?argv[arg]);
??????fclose(fp);
??????continue;
????}
????fseek?(fp?0?SEEK_SET);
????fread?(buffer?1?length?fp);
????fclose?(fp);
????sony_clear?(buffer?length);
????strcpy?(name?argv[arg]);
????strcat?(name?“.clear“);
????fp?=?fopen?(name?“wb“);
????fwrite?(buffer?1?length?fp);
????free?(buffer);
????fclose(fp);
??}
??return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2011-07-04?18:10??sony_raw_decrypt\
?????目錄???????????0??2011-07-04?18:10??sony_raw_decrypt\Debug\
?????文件????????9528??2011-07-04?18:10??sony_raw_decrypt\Debug\BuildLog.htm
?????文件??????????60??2011-07-04?18:10??sony_raw_decrypt\Debug\mt.dep
?????文件??????382464??2011-07-04?18:10??sony_raw_decrypt\Debug\sony_clear.exe
?????文件?????????381??2011-07-04?18:10??sony_raw_decrypt\Debug\sony_clear.exe.intermediate.manifest
?????文件??????194708??2011-07-04?18:10??sony_raw_decrypt\Debug\sony_clear.ilk
?????文件???????11223??2011-07-04?18:10??sony_raw_decrypt\Debug\sony_clear.obj
?????文件?????1879040??2011-07-04?18:10??sony_raw_decrypt\Debug\sony_clear.pdb
?????文件???????33792??2004-07-14?14:46??sony_raw_decrypt\Debug\vc60.idb
?????文件???????45056??2004-07-14?14:45??sony_raw_decrypt\Debug\vc60.pdb
?????文件???????27648??2011-07-04?18:10??sony_raw_decrypt\Debug\vc90.idb
?????文件???????53248??2011-07-04?18:10??sony_raw_decrypt\Debug\vc90.pdb
?????文件?????????242??2004-07-13?19:26??sony_raw_decrypt\readme.txt
?????文件????????2321??2011-07-04?18:10??sony_raw_decrypt\sony_clear.c
?????文件????????3447??2004-07-13?18:45??sony_raw_decrypt\sony_clear.dsp
?????文件?????????545??2004-07-13?18:52??sony_raw_decrypt\sony_clear.dsw
?????文件??????584704??2011-07-11?10:40??sony_raw_decrypt\sony_clear.ncb
?????文件???????53760??2008-01-09?12:21??sony_raw_decrypt\sony_clear.opt
?????文件????????1184??2004-07-14?14:45??sony_raw_decrypt\sony_clear.plg
?????文件?????????885??2011-07-11?10:40??sony_raw_decrypt\sony_clear.sln
?????文件???????10752??2011-07-11?10:40??sony_raw_decrypt\sony_clear.suo
?????文件????????4004??2007-07-02?15:00??sony_raw_decrypt\sony_clear.vcproj
?????文件????????1421??2011-07-11?10:40??sony_raw_decrypt\sony_clear.vcproj.gaozheyuan-PC.gaozheyuan.user
評論
共有 條評論