| Common cases where data extraction, including the reverse engineering techniques, may be illegal. Are you allowed to extract and use any kind of data from software you own? Common legal issues for web data extraction. | ||
Software You Own. Can Do Anything With?
It's frequently confusing what you can and cannot do with software you own. Unlike products you can touch, software it's rather like music or literature and has intellectual property rights. The first distinction you should make, when you buy a software product, is between the physical files on disk and the creativity some company invested in and has to protect.
The files are rather like all other products you can touch: as long as you paid for them, it's not a rental and you're not supposed to return them, you can split them in one thousand pieces if you want, destroy them, rename them with weird names, move them in the Trash folder... It's possible you may not get another replacement copy if you do this, but nobody else will blame you. Because it's your product and you're the only person to suffer if you make the application unusable.
Yep, we said the word "copy", and here is a first problem. Songs, videos, books and software are so easy to replicate today. Great for the consumer, horrifying for the producers. Making copies with the intent of distributing them is not allowed. For each people who gets a copy from you, the producer looses a potential client. You are always allowed - and it's even recommended - to make BACKUP copies. But do not give them, borrow them or "rent" them to anybody else. And do not install the product on more computers you are allowed to, by contract.
Sometimes, software producers make you believe you do not actually own the copy you paid for, but it's rather a rental. You're not supposed to use it other ways you've been told you can. Is this true? If you bought Microsoft Office and imagine a way to connect it to your pop corn machine, can they sue you? Of course not. How you use their product FOR YOUR OWN it's up to you. You can try to "enhance" it or to imagine ways to link your Outlook with Google. As long as you use it just for yourself and your "enhancements" make no harm to anyone else. If your connection to Google, for instance, consumes their bandwidth beyond their acceptable limit, you are accountable.
In US, it's famous the relatively new Patriot Act, by which reverse engineering of software products is banned. Other countries have similar legislation. How far should this go? Does this mean you're absolutely not allowed to load their files in a commonly available disassembler, and look at their internal structure and content? Once again, what you do at home, for yourself only, will bring no prejudice to nobody else. Not only that nobody knows what you did, but even if they knew, what interest would they have to sue you?
Because here is the point: as long as you bring no prejudice, to anyone else, your actions cannot be condemned. And this stays for almost anything in life.
Software makers prefer to not allow you to disassemble their products because of the risk involved. Even if you do it by curiosity, just for yourself, with no intention to take advantage of fabrication secrets or tell someone else about them, once you know a "secret", it's very likely at some point you'll either use it for yourself or pass it to someone else. You may very well use it later for yourself, without remembering that actually you found the ground idea in a copyright protected product. So the best way to keep a secret is to actually do not know the secret.
It's customary to refer at software files as data. But they actually contain two kinds of data: (1) static data, such as people addresses, credit card numbers, passwords, string literals and numbers; and (2) code. Both static data and code are internally represented, in computer's memory or on disk, by sequences of 0 and 1, nothing else. Specific patterns in this sequences will actually tell you which is which. A part of static data can also represent data about data, or what is called metadata. It includes delimiters, information headers, placeholders, and helps grouping and organizing useful data in a specific structure. Finding out about how the code, or the algorithms are built, presents two different kinds of danger for a producer: (1) you may simply copy and adapt their code to your own product, or later develop an application with the knowledge acquired here; (2) you may pass this information to someone else. As long as none of these paths is taken, you're safe.
Many applications today are activated by a product key stored in the program itself. You can also own a product, but get access to a higher level, to an enhanced version of the same product, without changing or adding any additional file, by simply finding and passing a password or a key. To find out about such key value by disassembling the code, is obviously illegal.