// FileNameCom.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "stdio.h" #include "string.h" #include "stdlib.h" #include "windows.h" #include "time.h" typedef struct { unsigned short from; unsigned short to; }SCODESECTION; SCODESECTION codesection[6]={ {0x8140,0x81fc},{0x824f,0x83d6},{0x8440,0x84be}, {0x8740,0x879c},{0x889f,0x9ffc},{0xe040,0xeaa4} }; #define LAWLESS(code) (code==0x2e||code==0x22 || code==0x2a ||code==0x2b || code==0x2c || code==0x2f || / code==0x3a || code==0x3b || code==0x3c ||code==0x3d || code==0x3e || code==0x3f || / code==0x5b || code==0x5c || code==0x5d || code==0x7c) / #define NUM(code) (code>=0x30&&code<=0x39) #define LETTER(code) ((code>0x41&&code<=0x5a)||(code>0x61&&code<=0x7a)) //(code>0x8140&&code<0xeaa4) #define SJIS_SINGER(code) (code>=0xa1&&code<=0xdf) #define SJIS_SIGN(code) (code>0x8140&&code<0xeaa4) static unsigned char lawless[]={'"','*','+',',','.','/',':',';','<','=','>','?','[','//',']','|'}; /* atoi: convert s to integer; version 2 */ int atoi(char s[]) { int i, n, sign; for (i = 0; isspace(s[i]); i++) /* skip white space */ ; sign = (s[i] == '-') ? -1 : 1; if (s[i] == '+' || s[i] == '-') /* skip sign */ i++; for (n = 0; isdigit(s[i]); i++) n = 10 * n + (s[i] - '0'); return sign * n; } int isprint(unsigned short sjiscode) { unsigned char codeTmp; codeTmp=sjiscode&0x00ff; if(codeTmp>=0x40) { for(int i=0;i<6;i++) { if(sjiscode>=codesection[i].from&&sjiscode<=codesection[i].to) return 1; } } else ; return 0; } int CreateAllLawlessFile(int num) { FILE* pfLawless; int i,j,k,m,len; unsigned short code; unsigned char codeSigner,codeNewLine,codeHigh,codeLow; pfLawless=fopen("lawless.txt","wb"); if(pfLawless==NULL) return -1; srand(time(NULL)); for(i=0;i<num;i++) { len=0; k=rand()%36; for(j=0;j<=k;j++) { m=rand()%0x10; fwrite(&lawless[m],1,1,pfLawless); len++; if(len>37) break; } codeNewLine=0x0d; fwrite(&codeNewLine,1,1,pfLawless); codeNewLine=0x0a; fwrite(&codeNewLine,1,1,pfLawless); } fclose(pfLawless); return 0; } int CreateAllNumFile(int num) { FILE* pfNum; int i,j,k,len; unsigned short code; unsigned char codeSigner,codeNewLine,codeHigh,codeLow; pfNum=fopen("num.txt","wb"); if(pfNum==NULL) return -1; srand(time(NULL)); for(i=0;i<num;i++) { len=0; k=rand()%36; for(j=0;j<=k;j++) { code=0x30+rand()%0x0a; codeSigner=(unsigned char) code; fwrite(&codeSigner,1,1,pfNum); len++; if(len>37) break; } codeNewLine=0x0d; fwrite(&codeNewLine,1,1,pfNum); codeNewLine=0x0a; fwrite(&codeNewLine,1,1,pfNum); } fclose(pfNum); return 0; } int CreateAllLetterFile(int num) { FILE* pfLetter; int i,j,k,len; unsigned short code; unsigned char codeSigner,codeNewLine,codeHigh,codeLow; pfLetter=fopen("letter.txt","wb"); if(pfLetter==NULL) return -1; for(i=0;i<num;i++) { len=0; k=rand()%36; for(j=0;j<=k;j++) { code=0x41+(rand()%0x3a); if(LETTER(code)) { codeSigner=(unsigned char) code; fwrite(&codeSigner,1,1,pfLetter); len++; if(len>37) break; } else continue; } codeNewLine=0x0d; fwrite(&codeNewLine,1,1,pfLetter); codeNewLine=0x0a; fwrite(&codeNewLine,1,1,pfLetter); } fclose(pfLetter); } int CreateAllSJISFile(int num) { FILE* pfSjis; int i,j,k,len; unsigned short code; unsigned char codeSigner,codeNewLine,codeHigh,codeLow; pfSjis=fopen("Sjis.txt","wb"); if(pfSjis==NULL) return -1; for(i=0;i<num;i++) { len=0; k=rand()%36; for(j=0;j<k;j++) { code=0x8140+rand()%0x6965; if(SJIS_SIGN(code)) { if(isprint(code)&&(code&&0x00ff!=0x7f||code&&0x00ff!=0xfd||code&&0x00ff!=0xfe||code&&0x00ff!=0xff)) { codeHigh=(code&0xff00)>>8; fwrite(&codeHigh,1,1,pfSjis); codeLow=code&0x00ff; fwrite(&codeLow,1,1,pfSjis); len=len+2; if(len>34) break; } else continue; } } codeNewLine=0x0d; fwrite(&codeNewLine,1,1,pfSjis); codeNewLine=0x0a; fwrite(&codeNewLine,1,1,pfSjis); } fclose(pfSjis); } int CreateComFile(int num) { FILE* pfCom; int i,j,k,len; unsigned short code; unsigned char codeSigner,codeNewLine,codeHigh,codeLow; pfCom=fopen("combination.txt","wb"); if(pfCom==NULL) return -1; for(i=0;i<num;i++) { len=0; k=rand()%18; for(j=0;j<k;j++) { code=rand()%0x7d; if(LAWLESS(code)) { codeSigner=(unsigned char) code; fwrite(&codeSigner,1,1,pfCom); len++; if(len>34) break; } code=0x30+rand()%0x0a; if(NUM(code)) { codeSigner=(unsigned char) code; fwrite(&codeSigner,1,1,pfCom); len++; if(len>34) break; } code=0x41+rand()%0x3a; if(LETTER(code)) { codeSigner=(unsigned char) code; fwrite(&codeSigner,1,1,pfCom); len++; if(len>34) break; } code=0xa1+rand()%0x3f; if(SJIS_SINGER(code)) { codeSigner=(unsigned char) code; fwrite(&codeSigner,1,1,pfCom); len++; if(len>34) break; } code=0x8140+rand()%0x6965; if(SJIS_SIGN(code)) { if(isprint(code)&&(code&&0x00ff!=0x7f||code&&0x00ff!=0xfd||code&&0x00ff!=0xfe||code&&0x00ff!=0xff)) { codeHigh=(code&0xff00)>>8; fwrite(&codeHigh,1,1,pfCom); codeLow=code&0x00ff; fwrite(&codeLow,1,1,pfCom); len=len+2; if(len>34) break; } else continue; } } codeNewLine=0x0d; fwrite(&codeNewLine,1,1,pfCom); codeNewLine=0x0a; fwrite(&codeNewLine,1,1,pfCom); } fclose(pfCom); } int main(int argc, char* argv[]) { unsigned short code,MAXCODE=0xeaa4; unsigned char codeSigner,codeNewLine,codeHigh,codeLow; unsigned char lawlessBuf[4],letterBuf[4],sjissingerBuf[4],sjisdoubleBuf[4]; unsigned short lawlessmaxcode=0x7c; int len;//按字节算 int i,j,k; if(argc != 6) { printf("Parameter list: Exe the num of lawless's filename the num of num's filename the num of letter's filename the num of combinate filename"); exit(1); } srand(time(NULL)); CreateAllLawlessFile(atoi(argv[1])); CreateAllNumFile(atoi(argv[2])); CreateAllLetterFile(atoi(argv[3])); CreateAllSJISFile(atoi(argv[4])); CreateComFile(atoi(argv[5])); return 0; }