本代码利用linux的hdparm命令,结合pipe管道技术巧妙的获得硬盘序列号,可方便的用于软件的加密或认证领域
char buf[256],info[1024]={0};
char *pos;
int i;
snbuf[0]=0;
fp=popen("hdparm -i /dev/hda","r");
if(fp)
{
while(fgets(buf,sizeof(buf),fp))
{
i=strlen(info)+strlen(buf);
if(i>1023)break;
strcat(info,buf);
}
pos=strcasestr(info,"SerialNo=");
if(pos)pos+=9;
i=0;
while(pos)
{
if((*pos<='Z'&&*pos>='A')
||(*pos<='z'&&*pos>='a')
||(*pos<='9'&&*pos>='0')
||(*pos==' '))
{
snbuf[i]=*pos;
i++;
if(i>buflen-10)break;
pos++;
}
else
{
break;
}
}
snbuf[i]=0;
}
pclose(fp);