Chinaunix

标题: 生成软件注册码 [打印本页]

作者: boyatchinaunix    时间: 2014-01-01 22:11
标题: 生成软件注册码
大家好,元旦快乐!
请问,Linux下如何生成软件注册码?
我考虑使用CPUID,但是只有部分很老的CPU才有,这个方法不靠谱。
后来考虑使用硬盘序列号,从网上找了很多代码,都无法运行成功(CentOS6.4 in vmware 9.0)。

  1. #include <linux/types.h>
  2. #include <linux/hdreg.h>
  3. #include <linux/fcntl.h>


  4. int main()
  5. {
  6.   int fd,err,i;

  7.   /* structure to get disk information and
  8.   * returned by HDIO_GET_IDENTITY, as per ANSI ATA2 rev.2f spec
  9.   */
  10.   struct hd_driveid hd;

  11.   /* open the device */
  12.   if( (fd=open("/dev/sda", O_RDONLY ) ) < 0 )
  13.      perror("Device Open Error");

  14.   /* get required info */

  15.   if( (err = ioctl(fd,HDIO_GET_IDENTITY,&hd) ) < 0)
  16.     perror("IOCTL err");
  17.   else
  18.     printf("Serial No = %s\n",hd.serial_no);

  19.    return (0);
  20. }
复制代码
这个程序输出:IOCTL err: Invalid argument

如何获取硬盘序列号呢?或者有什么其他的生成注册码的方法?


作者: 井蛙夏虫    时间: 2014-01-02 00:40
hdparm -i /dev/sda可以工作吗?
作者: boyatchinaunix    时间: 2014-01-02 07:12
[root@centvm~]# hdparm -i /dev/sda

/dev/sda:
SG_IO: bad/missing sense data, sb[]:  70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
HDIO_GET_IDENTITY failed: Invalid argument
作者: shan_ghost    时间: 2014-01-02 10:59
看看uuid的开源实现(应该有的吧……
作者: 井蛙夏虫    时间: 2014-01-02 11:58
sdparm --page=sn /dev/sda
或者
smartctl -i /dev/sda
能不能运行?这两个程序都得自己安装
作者: cuusrname    时间: 2014-01-02 19:21
用cpuid不太好,硬件换了就不行了
硬件加密狗好些
作者: 资深项目经理    时间: 2014-01-02 20:04
MAC+时间限制+randomseed。
作者: boyatchinaunix    时间: 2014-01-02 20:33
cuusrname 发表于 2014-01-02 19:21
用cpuid不太好,硬件换了就不行了
硬件加密狗好些


确实,这样比较好些。





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2