用Windows终端仿真程序实现微机远程文件传送1
ax, iii
asm mov cx,3bh
asm mul cx
asm mov di,ax //第iii个SFT的地址,即要找的本文件的SFT;
asm mov ax, word ptr es:[bx+di+1bh] //SFT中偏移1bH处是目录项所在扇区的
asm mov word ptr u-long,ax //扇区号,可用于定位文件,取出存于
asm mov ax, word ptr es:[bx+di+1dh] //u-long中;
asm mov word ptr u-long+2,ax
asm mov al,byte ptr es:[bx+di+1fh] //偏移1fH处是目录项的相对索引号,即
目
asm mov u-char,al //录项在目录扇区中的序号,也可用于定位
//文件的位置,取出存于u-char中;
asm mov ax,word ptr es:[bx+di+35h]//SFT中偏移35H处是文件读写指针对应的
asm mov u-int,ax//绝对簇号(2字节),取出存于u-int中;
asm pop di
asm pop es
}
else
{
iii-=jjj1; //第二个SFT数组中的SFT项和第一个SFT数组中的项是统一编号的;
// for(i=0;i<0x3b;i++)
// printf(" %2x",ptrr2[(iii)*0x3b+i]);
asm push es
asm push di
asm les bx,ptrr2
asm mov ax,iii
asm mov cx,3bh
asm mul cx
asm mov di,ax
asm mov ax,word ptr es:[bx+di+1bh]
asm mov word ptr u-long,ax
asm mov ax,word ptr es:[bx+di+1dh]
asm mov word ptr u-long+2,ax
asm mov al, byte ptr es:[bx+di+1fh]
asm mov u-char,al
asm mov ax,word ptr es:[bx+di+35h]
asm mov u-int,ax
asm
asm pop es
}
u-long+=u-int; //这里采用的秘密算法是相加;
u-long+=u-char;
fclose(Stream);
retrun u-long;
}
下面就是设置“钥匙”的PUT-KEY/CPP文件的内容。
#include <stdio.h>
#include <process.h>
#include <dos.h>
#include <io.h>
#include <conio.h>
#include "make-key.cpp" //将取钥匙子程序包函进来;
void main(int argc,char * argv[]) //命令行上是待加密的文件名;
{
unsigned long key=0;
FILE *stream;
if (argc<2)
{cputs("specify a file");exit(1);}
key=curentlocation-key(argv[1]); //取出文件当前“钥匙”;
stream=fopen("loc-key.dat","w+b"); //以写方式打开“钥匙”文件loc-key.da
t;
if(stream==NULL)
{cputs("can't open file loc-key.dat");exit(1);}
fwrite(&key,4,1,stream); //将当前“钥匙”(4字节)写入文件;
fclose(stream);
}
下面就是NO-COPY.CPP的内容:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
#include <io.h>
#include <stddef.h>
#include <process.h>
#include "make-key.cpp" //将取钥匙子程序包函进来;
//该程序main()函数如下:
int main()
{
//下面是一段检测代码,(可放在程序中必要的地方);
unsigned long proto-key,curent-key;
FILE*Stream;
Stream=fopen ("loc-key.dat","rb");//以读方式打开“钥匙”文件;
if(Stream==NULL)//若因破坏而打不开则退出;
{cputs("loc-key.dat open error");exit(1);}
fread(&proto-key,4,1,Stream);//取存放于文件中的“原钥匙”(4字节);
fclose(Stream);
curent-key=curentlocation-key("d.exe");//按同样的方法取“当前钥匙 《用Windows终端仿真程序实现微机远程文件传送1(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/171971.html
asm mov cx,3bh
asm mul cx
asm mov di,ax //第iii个SFT的地址,即要找的本文件的SFT;
asm mov ax, word ptr es:[bx+di+1bh] //SFT中偏移1bH处是目录项所在扇区的
asm mov word ptr u-long,ax //扇区号,可用于定位文件,取出存于
asm mov ax, word ptr es:[bx+di+1dh] //u-long中;
asm mov word ptr u-long+2,ax
asm mov al,byte ptr es:[bx+di+1fh] //偏移1fH处是目录项的相对索引号,即
目
asm mov u-char,al //录项在目录扇区中的序号,也可用于定位
//文件的位置,取出存于u-char中;
asm mov ax,word ptr es:[bx+di+35h]//SFT中偏移35H处是文件读写指针对应的
asm mov u-int,ax//绝对簇号(2字节),取出存于u-int中;
asm pop di
asm pop es
}
else
{
iii-=jjj1; //第二个SFT数组中的SFT项和第一个SFT数组中的项是统一编号的;
// for(i=0;i<0x3b;i++)
// printf(" %2x",ptrr2[(iii)*0x3b+i]);
asm push es
asm push di
asm les bx,ptrr2
asm mov ax,iii
asm mov cx,3bh
asm mul cx
asm mov di,ax
asm mov ax,word ptr es:[bx+di+1bh]
asm mov word ptr u-long,ax
asm mov ax,word ptr es:[bx+di+1dh]
asm mov word ptr u-long+2,ax
asm mov al, byte ptr es:[bx+di+1fh]
asm mov u-char,al
asm mov ax,word ptr es:[bx+di+35h]
asm mov u-int,ax
asm
pop di
asm pop es
}
u-long+=u-int; //这里采用的秘密算法是相加;
u-long+=u-char;
fclose(Stream);
retrun u-long;
}
下面就是设置“钥匙”的PUT-KEY/CPP文件的内容。
#include <stdio.h>
#include <process.h>
#include <dos.h>
#include <io.h>
#include <conio.h>
#include "make-key.cpp" //将取钥匙子程序包函进来;
void main(int argc,char * argv[]) //命令行上是待加密的文件名;
{
unsigned long key=0;
FILE *stream;
if (argc<2)
{cputs("specify a file");exit(1);}
key=curentlocation-key(argv[1]); //取出文件当前“钥匙”;
stream=fopen("loc-key.dat","w+b"); //以写方式打开“钥匙”文件loc-key.da
t;
if(stream==NULL)
{cputs("can't open file loc-key.dat");exit(1);}
fwrite(&key,4,1,stream); //将当前“钥匙”(4字节)写入文件;
fclose(stream);
}
下面就是NO-COPY.CPP的内容:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
#include <io.h>
#include <stddef.h>
#include <process.h>
#include "make-key.cpp" //将取钥匙子程序包函进来;
//该程序main()函数如下:
int main()
{
//下面是一段检测代码,(可放在程序中必要的地方);
unsigned long proto-key,curent-key;
FILE*Stream;
Stream=fopen ("loc-key.dat","rb");//以读方式打开“钥匙”文件;
if(Stream==NULL)//若因破坏而打不开则退出;
{cputs("loc-key.dat open error");exit(1);}
fread(&proto-key,4,1,Stream);//取存放于文件中的“原钥匙”(4字节);
fclose(Stream);
curent-key=curentlocation-key("d.exe");//按同样的方法取“当前钥匙 《用Windows终端仿真程序实现微机远程文件传送1(第3页)》