c言語でファイルをxor変換する
xorして保存するだけ。
exeへ直接のD&Dや開いてからコンソール画面にD&D、cmdから第三引数の指定とかに対応したら長くなった。
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
//0:directory, 1:file
void getFileName(char *filepath,char *getname,int flag)
{
//get size and '\' count
int size=0,slash=0;
for(int i=0;;i++){
if(filepath[i]==0)break;
size++;
if(filepath[i]=='\\')slash++;
}
//1:file
if(flag==1){
//get file name (reverse)
char temp[200]={};
int j=0;
for(int i=size-1;i>0;i--){
if(filepath[i]=='\\')break;
temp[j]=filepath[i];
j++;
}
//put file name
for(int i=0;;i++){
if(j<0 || temp[j-1]=='\"'){
getname[i]=0;
break;
}
getname[i]=temp[j-1];
j--;
}
}else{
//0:directory
int slash2=0;
for(int i=0;;i++){
if(filepath[i]=='\\')slash2++;
if(slash2==slash){
getname[i]=0;
break;
}
getname[i]=filepath[i];
}
}
}
int main(int argc,char *argv[])
{
int xornum=1;
char fname[200];
puts("D&D default:xored by 1");
puts("format:file xornum");
puts("example:C:\\test.txt 3");
switch(argc){
case 1:
scanf("%s %d",fname,&xornum);
break;
case 2:
//D&D
strcpy(fname,argv[1]);
break;
case 3:
xornum=atoi(argv[2]);
strcpy(fname,argv[1]);
break;
}
FILE *fp,*fp2;
fp=fopen(fname,"rb");
char fname2[200],fname3[200];
getFileName(fname,fname2,0);
getFileName(fname,fname3,1);
strcat(fname2,"\\xored_");
strcat(fname2,fname3);
fp2=fopen(fname2,"wb");
while(1){
int in=fgetc(fp);
if(in==EOF)break;
in^=xornum;
fputc(in,fp2);
}
fclose(fp);
fclose(fp2);
return 0;
}
コメント
0 件のコメント :
コメントを投稿