Archived

This topic is now archived and is closed to further replies.

mickey

advice on how are copy protections implemented?

Recommended Posts

mickey    100
hi i'm developing for the symbian series 60 platform(ie nokia 7650 etc.,). The phones have this unique IMEI number. most likely this is what i will use since each and every phone have their own different IMEI number, i guess this number is around 10 digits? i'm not sure, anyway how does someone actually implement a copy protection for this say IMEI number? do i like, if number is '1' then your registration letter is 'a'? then if '2' your reg letter is 'b'? so if imei numbe is 1112222 then aaaabbbb are your registration letters? links, examples schemes/codes, tutorials if there are. Also, people will be downloading this from the internet since there's no other way i can market this software. thanks, [edited by - mickey on March 6, 2003 1:14:45 PM]

Share this post


Link to post
Share on other sites
Symphonic    313
one idea:

If you can use a utility to get the user''s IME1 number before you actually give them the product, then you can acsii-encrypt the number and give that to them as a key-code. Subsequently, when they install and input the key, the program will check wether it corresponds to the IME1 number of the user''s phone.

George D. Filiotis

I am a signature virus. Please add me to your signature so that I may multiply.

Share this post


Link to post
Share on other sites
mickey    100
hello Symphonic

yeah but how exatly is it done? is the algorithm really depends on me? i really have vague idea on how copy protections are implemented that''s why i''d liked to see some few implementations...

i making my software shareware first, then after 2 weeks or a month(i''m still thinking about this), i''d ask them to register with their imei number and possible a name..,

but don''t know afterwards what to do.



Share this post


Link to post
Share on other sites
mickey    100
hoping there would someone give a clear idea how it''s done..., this is the first time i''m going to do it.

thanks,

Share this post


Link to post
Share on other sites
RPGeezus    216
If you want to use the EMEI (?) number, what you''ll want to do is create a hash or something that will become the registration code.

Do a search on Google for Hash algorithms, or simple encrpytion algorithms..

If you don''t want to go nuts, you could just do something really simple, like:

char regCode[10]

for ( i = 0; i < 10; i++)
{
regCode = IMEI_digts[i] + ''a'';
}

Then when the phone gets the ASCII code, do the opposite. Compare to see if the number is equial to the IMEI. The problem with this is that anybody who knows their IMEI would be able to write their own registration program quite easily. This is why you''ll probably want to look in to hashing algorithms. They will just make the decoding process a little harder for would-be crackers.

Either way, the crackers will win in the end: Nothing stops them from modifiying your program so that it doesnt do the copy protection check..

Since you''re dealing with a little black box: Is there any way to encrypt the program for each IMEI, and have the phone decrypt it when it gets there? This way it would be harder to get access to the original binary.

Best of luck,
Will

Share this post


Link to post
Share on other sites
mickey    100
hi RPGeezus

thanks for replying, and yes, i just want a basic copy protection. i could at least prevent consumers to acquire the program way too easy,

let me get this straight. so it''s really up to me how i implement my copy protection? but traditionally the steps are to create an encryption algorithm for this ''set of numbers'' then supply a valid key that users will enter on the device base on the set of numbers that i''d like them use to register the software...

ehm.., i''d be letting them register on the website.., how does that thing works now?

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
Umm... I''m sure people would be happy to spread the IMEI-number that can be used to block their telephone by people who happen to pick it up on the way. Not.

In order to not make tinfoil-hat types weary of buying your program, you could probably ask them to give you their IMEI without the three last digits (or so), so they don''t have to send their complete IMEI-number all across the internet through unreliable SMTP servers.

The chance of two people having the same IMEI minus 3 (or so) digits are pretty slim. If one of them posted their IMEI and their serial to the internet, not many other users would benefit from it. And chances are, damn near none (I am almost certain NONE would, but you never know...) of the people that have a matching number would even be looking for it!

By doing it this way, you would lose nothing, and perhaps gain a few customers who are afraid of sending you their complete IMEI-number.

Share this post


Link to post
Share on other sites
RPGeezus    216
For your protection to work you need to know the customers IMEI Number.

You will write to function calls:

IMEIToRegCode, and RegCodeToIMEI. It''s obvious what they do.

If your registration is web-based, the customer will need to type in their IMEI code on the page, and a CGI or Java applet will calculate the Reg. code for them.

When they install the program on the phone, the program will ask them for the reg code. It will take the reg code, covert it to an IMEI number, and check to make sure that it''s the same as the phones IEMI.

In the end, it is up to you. There is no such thing as effective copy protection. Most online games these days check to see if the same ''code'' is being used by two different people at the same time. Thats about as effective as it gets.

Making your ''encoding'' scheme a little complicated will be a good thing.

Heres anothe example:

char IEMI[10];
char Regcode[20];

for ( i = 0; i < 10; i++)
{
RegCode[i * 2] = (IEMI + (i * 6)) % 26 + ''a'';
}

for ( i = 1; i < 20; i += 2)
{
RegCode[i] = 69 - RegCode[i-1];
}


What does this do? Who cares!! As long as it''s reverseable!! You could even do some cheap encryption like:

char myKey = 66;
for ( i = 0; i < 10; i++)
{
RegCode[i] = IEMI[i] ^ myKey;
myKey = RegCode[i];
}

Go nuts with it!

All the best,
Will

Share this post


Link to post
Share on other sites