BioNMR
NMR aggregator & online community since 2003
BioNMR    
Learn or help to learn NMR - get free NMR books!
 

Go Back   BioNMR > NMR community > News from NMR blogs
Advanced Search



Jobs Groups Conferences Literature Pulse sequences Software forums Programs Sample preps Web resources BioNMR issues


Webservers
NMR processing:
MDD
NMR assignment:
Backbone:
Autoassign
MARS
UNIO Match
PINE
Side-chains:
UNIO ATNOS-Ascan
NOEs:
UNIO ATNOS-Candid
UNIO Candid
ASDP
Structure from NMR restraints:
Ab initio:
GeNMR
Cyana
XPLOR-NIH
ASDP
UNIO ATNOS-Candid
UNIO Candid
Fragment-based:
BMRB CS-Rosetta
Rosetta-NMR (Robetta)
Template-based:
GeNMR
I-TASSER
Refinement:
Amber
Structure from chemical shifts:
Fragment-based:
WeNMR CS-Rosetta
BMRB CS-Rosetta
Homology-based:
CS23D
Simshift
Torsion angles from chemical shifts:
Preditor
TALOS
Promega- Proline
Secondary structure from chemical shifts:
CSI (via RCI server)
TALOS
MICS caps, β-turns
d2D
PECAN
Flexibility from chemical shifts:
RCI
Interactions from chemical shifts:
HADDOCK
Chemical shifts re-referencing:
Shiftcor
UNIO Shiftinspector
LACS
CheckShift
RefDB
NMR model quality:
NOEs, other restraints:
PROSESS
PSVS
RPF scores
iCing
Chemical shifts:
PROSESS
CheShift2
Vasco
iCing
RDCs:
DC
Anisofit
Pseudocontact shifts:
Anisofit
Protein geomtery:
Resolution-by-Proxy
PROSESS
What-If
iCing
PSVS
MolProbity
SAVES2 or SAVES4
Vadar
Prosa
ProQ
MetaMQAPII
PSQS
Eval123D
STAN
Ramachandran Plot
Rampage
ERRAT
Verify_3D
Harmony
Quality Control Check
NMR spectrum prediction:
FANDAS
MestReS
V-NMR
Flexibility from structure:
Backbone S2
Methyl S2
B-factor
Molecular dynamics:
Gromacs
Amber
Antechamber
Chemical shifts prediction:
From structure:
Shiftx2
Sparta+
Camshift
CH3shift- Methyl
ArShift- Aromatic
ShiftS
Proshift
PPM
CheShift-2- Cα
From sequence:
Shifty
Camcoil
Poulsen_rc_CS
Disordered proteins:
MAXOCC
Format conversion & validation:
CCPN
From NMR-STAR 3.1
Validate NMR-STAR 3.1
NMR sample preparation:
Protein disorder:
DisMeta
Protein solubility:
camLILA
ccSOL
Camfold
camGroEL
Zyggregator
Isotope labeling:
UPLABEL
Solid-state NMR:
sedNMR


Reply
Thread Tools Search this Thread Rate Thread Display Modes
  #1  
Unread 04-11-2011, 01:00 PM
nmrlearner's Avatar
Senior Member
 
Join Date: Jan 2005
Posts: 23,173
Points: 193,617, Level: 100
Points: 193,617, Level: 100 Points: 193,617, Level: 100 Points: 193,617, Level: 100
Level up: 0%, 0 Points needed
Level up: 0% Level up: 0% Level up: 0%
Activity: 50.7%
Activity: 50.7% Activity: 50.7% Activity: 50.7%
Last Achievements
Award-Showcase
NMR Credits: 0
NMR Points: 193,617
Downloads: 0
Uploads: 0
Default Fighting the Pirate

Fighting the Pirate

Six years ago I took the decision of investing my efforts into the creation of a software application. It was a complex project that potentially required thousands of hours of work. I had to make it financially viable. No sponsor was in sight, so the only solution was to make a commercial program and sell it. I was extremely lucky, because the facilities to sell it were readily available and convenient too.
The difference between a normal application and a commercial one is that the latter must be copy-protected in some way.
I had complete freedom about how which technology to choose to protect the program. It was clear to me, and still it is, that no money had to be spent for the protection. First, I was not sure that the product could sell enough to invest part of the money into its protection. Second, it's a non-sense to spend money to protect software by piracy. I think that those who steal a copy of a program are inherently thieves. They can't be convinced to buy a regular copy. Stopping the theft does not increase the volume of sales, therefore it is not the case of investing money for the protection.
On the other hand, I had discovered since a long time that:
- writing a program is easy;
- selling it is hard;
- convincing people to use it, after buying, is even harder.
Have you read all the books you have bought? Are you still using all the programs you have bought? We are subsidizing the software industry with this kind of unhappy purchases. I want my share of this cash flow and copy-protection is the way of keeping this little share intact.
I invented my own home-made protection, which was based on a simple but effective encryption. I don't know, however, who were the pirates and how they worked. I believed that a pirate was somebody interested into directly using the program. Nothing was farther from truth. After a couple of years I found the first pirated copy of my program. It had been cracked by someone who only wanted to demonstrate how smart he was (or how dumb I was), but had no idea about whose was the program and what it was for. There was no intent of stealing my money or saving their money. It merely was a kind of illegal hobby. The pirate thinks he is a gentleman, because he never cracks the latest version of a commercial program, but the version of yesteryear. Unfortunately, not all the customers need or asks for the latest version, so piracy is still a danger.
When I discovered the first successful crack, I was not terribly worried. First of all, beige worried could not have helped in any case. Second reason: the particular version they had cracked was probably the buggiest version I had ever released. Third reason: the program was still relatively unknown, up to the point that having illegal copies around was a cheap publicity.
Fast forward another two years and I was seriously worried. This time they had cracked one of the finest version I remembered having made, virtually flawless. Multiple copies of the cracked version had already been uploaded on Rapidshare and were relatively easy to find with Google. I realized had to fight and I fought. On the prevention side I studied how the crack had been executed. Then I implemented a different protection mechanism. All my future versions became more difficult to crack. But what about the copies around? I simply wrote a single email to Rapidshare. I explained that they were violating a copyright, but I didn't threaten anything. With my great surprise, all the files were removed within 24 hours. I accomplished two great results: all the copies had disappeared from the web and a lot of broken links had remained around. Anybody who was going to search for the crack, he was going for a frustrating experience.
Today things are quite different, because there are a lot of parasite sites that promise you, in change of a registration, to disclose the links for the download. No link is published, but probably no link exists in reality. I can't believe that somebody can risk a virus infection, a robbery of their bank account or simply a ton of porn spam, only for getting a dubious link to a cracked program, and not the most recent version of it. The parasite sites are the worst enemies of the pirates.
I had discovered the main weakness of my protection mechanism: the bottleneck design. This is an important and wise design in normal programming. Instead of disseminating the code with duplications, I concentrate the important instructions into a single routine, that is called several times by the rest of the program. If I want to change the mechanism, it is enough to change the internal code of the bottleneck routine, I don't need to care for the rest of the program. Alas, it was too easy for the pirate to find the bottleneck and modify it. Instead of verifying the key code, the cracked routine simply returned "yes" every time, even if no key was present at all.
At the same time, I had discovered the weakness of the pirate. He was not using the program, he had no time to verify if the program was functional (he doesn't even know what the program is about). He has too many applications to unprotect, because he is in competition with other pirates. It's not important, for them, to demonstrate they can unprotect a single program. Their goal is to unprotect as many programs as possible. Quantity does not mean quality and accuracy, this is a piece of information I can exploit.
I have found two solutions that can be combined together. First, I have duplicated the code that verifies the key. The pirate will find the first occurrence, he will bypass it and the program will be apparently unprotected. Five minutes later the second version of the code will be called. By that time, the pirate has already quit the program, so he will never know there is another verification. The second solution that I have found is to put some important action into my bottleneck. Apart from returning "yes", the routine must do something necessary for the rest of the program. If the pirates bypasses the routine, a hole will remain into the memory. Soon or later, the program will fall into it and crash.
Last month a friend of mine, who lives into another continent, discovered a new cracked copy of my program into a lab nearby his. My friend sent me the cracked copy. I launched it and waited. After five minutes, without doing anything, the program crashed by himself! At least in this last battle I have been the winner. The war will go on forever.


Source: NMR Software blog
Reply With Quote


Did you find this post helpful? Yes | No

Reply
Similar Threads
Thread Thread Starter Forum Replies Last Post
[NMR analysis blog] Fighting against peak overlap – Introducing Global Spectral Deconvolution (GSD)
Fighting against peak overlap – Introducing Global Spectral Deconvolution (GSD) 1H NMR is for sure the most powerful technique for structure elucidation, especially for small organic molecules. Typically, an organic chemist uses the chemical shift, coupling constants and integration information contained in an 1H-NMR spectrum to either verify or elucidate an unknown compound. Of course, it’s quite common that a simple 1H-NMR spectrum is not enough to unambiguously confirm a structure and thus other NMR experiments (e.g. 13C-NMR, HSQC, COSY, etc) are used to get more structural information....
nmrlearner News from NMR blogs 0 08-21-2010 09:12 PM


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off



BioNMR advertisements to pay for website hosting and domain registration. Nobody does it for us.



Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright, BioNMR.com, 2003-2013
Search Engine Friendly URLs by vBSEO 3.6.0

All times are GMT. The time now is 12:00 PM.


Map