本代码利用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);

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐