본문 바로가기

Programming/VC++

[C] CPU 번호 체크(시리얼번호 발급시 사용하기 위해)

CPU 번호 체크

나도 평가하기 good10

seo01000

조회721 답변2

답변이 완료된 질문입니다. (2003-06-13 08:42 작성)

신고신고

프로그램을 외국에 있는 다른 업체에 보내야 하는대

절대로 프로그램이 유출되어서는 안된다고 하내요

그래서 보안기능이 있어야 하는대..

미리 설치할 피씨의 CPU 번호를 알아서 다른 CPU에서 실행할려고 하면

프로그램을 자동으로 삭제할려고 합니다.

CPU번호라고 해야하나 그런 것을 체크할려며 어떡해야하죠?

비쥬얼씨로 짠 프로그램이에요

MAC 주소로 하는 방법두 있는데...

log2189 (2003-06-13 09:28 작성)1대1 질문하기

신고신고|이의제기이의제기

Include nb30.h and link with netapi32.lib.
하시고요

typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff[30];
} ASTAT, * PASTAT;


CString GetMacAddress(CString sNetBiosName)
{
ASTAT Adapter;

NCB ncb;
UCHAR uRetCode;

memset(&ncb, 0, sizeof(ncb));
ncb.ncb_command = NCBRESET;
ncb.ncb_lana_num = 0;

uRetCode = Netbios(&ncb);

memset(&ncb, 0, sizeof(ncb));
ncb.ncb_command = NCBASTAT;
ncb.ncb_lana_num = 0;

sNetBiosName.MakeUpper();

FillMemory(ncb.ncb_callname, NCBNAMSZ - 1, 0x20);

strcpy((char *)ncb.ncb_callname, (LPCTSTR) sNetBiosName);

ncb.ncb_callname[sNetBiosName.GetLength()] = 0x20;
ncb.ncb_callname[NCBNAMSZ] = 0x0;

ncb.ncb_buffer = (unsigned char *) &Adapter;
ncb.ncb_length = sizeof(Adapter);

uRetCode = Netbios(&ncb);

CString sMacAddress;

if (uRetCode == 0)
{
sMacAddress.Format(_T("%02x%02x%02x%02x%02x%02x"),
Adapter.adapt.adapter_address[0],
Adapter.adapt.adapter_address[1],
Adapter.adapt.adapter_address[2],
Adapter.adapt.adapter_address[3],
Adapter.adapt.adapter_address[4],
Adapter.adapt.adapter_address[5]);
}
return sMacAddress;
}
이상은 맥주소를 얻어 내는 거구요..맥주소는 전세계에 1개 밖에 존재 하지 않으니까.. 이것두 될듯.


뭐 보안 이 필요한거라면.

이외에도 하드디스크 넘버나 windows 시리얼 넘버 부착된 장치 등을 검색해서.

동시에 검사 하는것도 한 방법이네요..

아니면 하드웨어를 한개 끼워줘서.

그거 없음 안되게 하는 방법도...

음... 최초 실행시 인터넷으로 인증 받는 것두 괘안을 듯...

도움이 되었길 바라네요..

참 위 소스코드는

http://www.devpia.com/forum/BoardView.aspx?no=265298&page=1&Tpage=2&forumname=vc2002_qa&iddlpage=30&stype=&answer=&KeyW=mac&KeyR=title&KeyC=

여기서 퍼온겁니다.

top

CPU 번호 체크

lynnweb (2003-06-13 09:44 작성)1대1 질문하기

신고신고|이의제기이의제기

말씀하신대로 CPU 번호등을 체크하여서 옳지않은 사용권한일 경우 삭제하는 것은
프로그램이 로딩중이면 삭제가 안되니깐 bat 파일 같은것으로 실행파일 띄우기전에
검사하는 실행파일을 별도로 동작시켜서 조건에 맞지 않으면 삭제하면 되겠죠.

그런데 말씀하신 방법이 보안성이 그렇게 있다라고 생각되지 않는군요.
실행코드가 그대로 드러나 있는 형태이고, 중간에서 누군가 가로채려고 맘먹고 유출된다면
해당 보안장치는 금방 간파될 수 있다고 생각됩니다.
그리고 Copy 작업등을 통해서 복제되어 테스트 된다면 설령 삭제된다 하더라도
님의 보안장치는 쉽게 와해될 수 있으며.. 실행코드 자체는 아무런 보호가 안되어 있기
때문에 그대로 유출되기 쉽죠.

차라리 암호화 하여서 압축한후 key를 별도의 경로로 클라이언트에 따로 전송하거나..
팩킹 하는 것이 현실적으로 더 보안성이 있다고 생각됩니다.