客户端(C):
/* Copyright check frame written by Radish.ghost Jan.2015 */ #include<stdio.h> #include<windows.h> #include <UrlMon.h> #ifdef C #define bool int //C hesn't bool type #endif #pragma comment(lib, "urlmon.lib") #ifndef USETIMES #define USETIMES 50 //How many times can use #endif char*getinf();//Get the disk information bool check1();//Connect server int check2();//Check the file int main() { check1(); check2(); if(check2())printf("You can use it!(%d times)\n",check2()); else {printf("You can't use it!\n");exit(0);} /*<img src="http://img.blog.csdn.net/20150130120314717?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXE3NTQ0MDY2MTM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /> Your code here! */ return 0; } char*getinf() { char buf[MAX_PATH]; DWORD Ser; DWORD Length; char tmp[100]; int flag=0; GetVolumeInformation("C:\\",NULL,MAX_PATH,&Ser,&Length,NULL,NULL,MAX_PATH); //Ser为long 要转换成一个能用的字符串 while(Ser)//Convert long to char* { tmp[flag++]=(char)(Ser%10+'0'); Ser/=10; } tmp[flag]='\0'; return tmp; } bool check1() { char *ur=getinf(); char url[100]="http://localhost/bq.php?M="; strcat(url,ur); if(URLDownloadToFile(0,url,"c:\\a",0,NULL))return 1; else return 0; } int check2() { int times; freopen("c:\\a","r",stdin); scanf("%d",×); if(times>(-1*USETIMES+50))return times; else return 0; }
<?php /*在线版权验证*/ Header("Content-type: text/plain"); $M=$_GET['M'];//获取硬盘序列号 if(!file_exists($M)) { file_put_contents($M,"50"); echo '50'; } else { $times=file_get_contents($M); unlink($M); file_put_contents($M,$times-1); echo $times; } ?>
原文地址:http://blog.csdn.net/qq754406613/article/details/43305405