pm accueil pm
pm
pm
ok
pm
Windows Vista, plus dur à pirater ?
20-11-2006
lefigaro.fr (avec Reuters).
Publié le 06 octobre 2006

Avec son nouveau système d’exploitation qui sortira à la fin de l’année, Microsoft affirme avoir trouvé la parade au piratage qui touche un tiers de ces logiciels.

 
Microsoft a décidé de s’attaquer de front au problème majeur que constitue l’utilisation de versions piratées de son logiciel phare. Dans sa prochaine version, Vista, qui remplacera XP à partir de la fin de l’année, la firme de Redmond a inclus une batterie de dispositifs destinés à empêcher la copie.
 
La firme de Redmond vise particulièrement les entreprises. Jusqu’ici, elles achetaient en effet des licences « en volume » : un numéro de série utilisable sur un nombre illimité de versions de Windows. Du pain bénit pour certaines sociétés, qui s’en servaient pour activer des versions « crackées » du logiciel.
 
Désormais, l’activation se fera à l’aide de « clés » uniques. Les entreprises devront donc installer sur le serveur un système de gestion de clés, qui distribuera ensuite des « droits d’activation » pour chaque PC. Ce système vérifiera ensuite deux fois par an que chaque machine est bien activée avec sa clé, et réactivera ainsi ces dernières. En cas de défaillance, le système se bloquera, ne laissant qu’une heure de connexion Internet pour racheter une licence.
 
Mais le particulier qui a « emprunté » une version du logiciel phare de Microsoft n’est pas à l’abri pour autant. Au moment de l’installation de Vista, l’utilisateur aura 30 jours pour « activer » sa version du logiciel. S’il ne le fait pas, Windows passera en mode « réduit » : l'interface graphique Aero, qui permet un certain nombre d’effets graphiques, sera désactivée, de même que la technologie d'accélération Ready Boost, ou encore le dispositif anti-logiciels espions, Windows Defender.
 
Et ce n’est pas fini : Microsoft compte également se réserver le droit de vérifier régulièrement, dans le système, si les autres logiciels de la firme dont l’utilisateur se sert, comme la suite bureautique Office, sont bien valides. Si ce n’est pas le cas, Windows affichera régulièrement des messages demandant à l’utilisateur malhonnête d’activer son produit.
 
Avec ces nouveaux dispositifs, Microsoft espère mettre fin au piratage endémique qui lui coûte chaque année plus cher. Selon la firme de Redmond, un tiers des logiciels Windows existants seraient piratés dans le monde. Sachant que Windows représente environ 30% des 44 milliards de dollars de chiffre d’affaire de Microsoft, le manque à gagner est colossal.
 
« Cracké » en deux jours
 
Mais il n’est pas certain qu’il y parvienne. Son dernier système, mis en place fin juillet, n’a pas résisté trois jours à l’ardeur des pirates. « Genuine Advantage », un programme « espion » installé dans les dernières mises à jour de Windows, était pourtant présenté comme l’arme absolue : à chaque connexion sur le site de Microsoft, pour une mise à jour, par exemple, « Genuine » synchronise les données avec les serveurs de la firme, et détecte si votre version de Windows est légale ou non.
 
Nombre d’utilisateurs d’une version piratée du logiciel ont ainsi eu la désagréable surprise, après avoir téléchargé une mise à jour et redémarré leur ordinateur, de voir apparaître ce message : « votre copie de Windows n’est pas légitime. Il se pourrait que vous soyez victime d’une contrefaçon ». Le logiciel se connectait alors sur le site de Microsoft, pour vous proposer de racheter une licence. Et en attendant, finies les mises à jour.
 
Hélas pour Microsoft, « Genuine Advantage » n’aura fait qu’exciter l’imagination des pirates. Ils ont découvert qu’un simple bout de code à copier/coller dans le navigateur web suffisait à outrepasser cette protection et à accéder aux mises à jour en principe interdites. D’autres astuces du même genre ont permis de rendre ce programme en grande partie inutile. Et le cas risque de se répéter avec Vista, les « hackers » excellant à chercher toutes les failles potentielles d’un programme.
 
Une chose est sure : en mettant l’accent sur la sécurité, Windows s’attire les foudres des éditeurs de logiciels antivirus et pare-feu, comme Symantec, qui reprochent à la firme de Redmond de refuser de leur livrer le code source d’une partie de son programme, qui leur est indispensable pour en assurer la sécurité. La Commission Européenne, en guerre permanente avec Microsoft, elle a déjà averti que ce refus pourrait une fois de plus violer les règles européennes de concurrence.
Laisser un commentaire Afficher les commentaires (0)
Comment lire un fichier a partir d'un fichier jar ou classpath
05-09-2008
 

package com.freemarker;

 

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.util.Enumeration;

import java.util.Map;

import java.util.TreeMap;

import java.util.jar.JarEntry;

import java.util.jar.JarFile;

 

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

 

public class ClassPathSearcher {

      private static Log log = LogFactory.getLog(ClassPathSearcher.class);

 

      public Map<String, InputStream> findFilesInClassPath(String fileNamePattern) {

            Map<String, InputStream> result = new TreeMap<String, InputStream>();

            String classPath = System.getProperty("java.class.path");

            String[] pathElements = classPath.split(System

                        .getProperty("path.separator"));

            for (String element : pathElements) {

                  log.debug(element);

                  try {

                        File newFile = new File(element);

                        if (newFile.isDirectory()) {

                             result.putAll(findResourceInDirectory(newFile,

                                         fileNamePattern));

                        } else {

                             result.putAll(findResourceInFile(newFile, fileNamePattern));

                        }

                  } catch (IOException e) {

                        log.error("Exception:", e);

                  }

            }

            return result;

      }

 

      private Map<String, InputStream> findResourceInFile(File resourceFile,

                  String fileNamePattern) throws IOException {

            Map<String, InputStream> result = new TreeMap<String, InputStream>();

            if (resourceFile.canRead()

                        && resourceFile.getAbsolutePath().endsWith(".jar")) {

                  log.debug("jar file found: " + resourceFile.getAbsolutePath());

                  JarFile jarFile = new JarFile(resourceFile);

                  Enumeration<JarEntry> entries = jarFile.entries();

                  while (entries.hasMoreElements()) {

                        JarEntry singleEntry = entries.nextElement();

                        log.debug("jar entry: " + singleEntry.getName());

                        if (singleEntry.getName().matches(fileNamePattern)) {

                             result.put(jarFile.getName() + "/" + singleEntry.getName(),

                                         jarFile.getInputStream(singleEntry));

                        }

                  }

            }

            return result;

      }

 

      private Map<String, InputStream> findResourceInDirectory(File directory,

                  String fileNamePattern) throws IOException {

            Map<String, InputStream> result = new TreeMap<String, InputStream>();

            File[] files = directory.listFiles();

            for (File currentFile : files) {

                  log.debug("current file name: " + currentFile.getAbsolutePath());

                  if (currentFile.getAbsolutePath().matches(fileNamePattern)) {

                        result.put(currentFile.getAbsolutePath(), new FileInputStream(

                                   currentFile));

                  } else if (currentFile.isDirectory()) {

 

                        result.putAll(findResourceInDirectory(currentFile,

                                   fileNamePattern));

                  } else {

                        result.putAll(findResourceInFile(currentFile, fileNamePattern));

                  }

            }

            return result;

      }

 

      public static void main(String[] arg) throws IOException {

 

            ClassPathSearcher searcher = new ClassPathSearcher();

            Map<String, InputStream> foundFiles = searcher

                        .findFilesInClassPath(".*test.ftl.*");

 

            // assertTrue("list of files was empty but shouldn't",

            // !foundFiles.isEmpty());

            for (String key : foundFiles.keySet()) {

                  System.out.println("filename: " + key);

                  InputStream st = foundFiles.get(key);

 

                  BufferedReader in = new BufferedReader(new InputStreamReader(st));

                  String line;

                  while ((line = in.readLine()) != null) {

                        System.out.println(line);

                  }

 

            }

            foundFiles = searcher.findFilesInClassPath(".*JUnit.*");

            // assertTrue("list of files was empty but shouldn't",

            // !foundFiles.isEmpty());

            for (String key : foundFiles.keySet()) {

                  System.out.println("filename: " + key);

            }

 

      }

}

Laisser un commentaire Afficher les commentaires (0)
Mapper une classe plus d'une fois
05-09-2008
Il est possible de proposer plus d'un mapping par classe persistante. Dans ce cas, vous devez spécifier un nom d'entité pour lever l'ambiguité entre les instances des entités mappées (par défaut, le nom de l'entité est celui de la classe). Hibernate vous permet de spécifier le nom de l'entité lorsque vous utilisez des objets persistants, lorsque vous écrivez des requêtes ou quand vous mappez des associations vers les entités nommées.
<class name="Contract" table="Contracts" 
        entity-name="CurrentContract">
    ...
    <set name="history" inverse="true" 
            order-by="effectiveEndDate desc">
        <key column="currentContractId"/>
        <one-to-many entity-name="HistoricalContract"/>
    </set>
</class>

<class name="Contract" table="ContractHistory" 
        entity-name="HistoricalContract">
    ...
    <many-to-one name="currentContract" 
            column="currentContractId" 
            entity-name="CurrentContract"/>
</class>
Laisser un commentaire Afficher les commentaires (0)

mahjoubi
1
Afficher la page
(maximum: 1 )
pm
pm
général

pm
Windows Vista, ...
Comment lire un ...
Mapper une clas ...
pm
zerr:
ez

Mis en place par Pixel Motion - Design par Licornoire