Differences between viruses, ransomware, worms, and trojans