Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 20 octobre 2005 - 17 h 49 m 57 s |
|
|
Reprise du message précédent :
j avais fait ca:
et j obtiens bien l'adresse mac:
String[] result = res.split("\\s");
for (int x=0; x<result.length; x++)
System.out.println(result[145]);
bon je sais...c bcp plus simpliste...
|
|
| |
- je cherche un emploi
ICI
|
gege38
Modérateur
Chief of the (¯`·.__[T3aM.BouL3T©]__.·´¯) Potatoe Reloaded
Messages : 14 097 Inscrit le 05/02/03
Ville : Domène
Non connecté
|
|
Posté le 20 octobre 2005 - 17 h 52 m 20 s |
|
|
Le 20 octobre 2005 - 17 h 49, Florent42 a écrit :
j avais fait ca:
et j obtiens bien l'adresse mac:
String[] result = res.split("\s");
for (int x=0; x<result.length; x++)
System.out.println(result[145]);
bon je sais...c bcp plus simpliste...
|
Tu fais comme tu le sens  C'est juste hyper dépendant de ta config actuelle  (remarque, mon machin aussi impose l'utilisation d'XP  )
|
|
| |
" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 20 octobre 2005 - 17 h 52 m 36 s |
|
|
gege38> ton code ne fait rien, il affiche absolument rien
|
|
| |
- je cherche un emploi
ICI
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 20 octobre 2005 - 17 h 55 m 43 s |
|
|
oui je sais il suffit juste que ca change un tout petit peu et big termine plus rien ne marche...
la je suis sous 2000pro...c peut etre pour ca que ton code ne marche pas sur mon pc ?
une question: es ce possible de mettre cette adresse MAC dans un endroit intégré au JAR, voire dans une librairie JAR?
ainsi je pourrais passer un coup de obfuscator la dessus en meme temps
|
|
| |
- je cherche un emploi
ICI
|
gege38
Modérateur
Chief of the (¯`·.__[T3aM.BouL3T©]__.·´¯) Potatoe Reloaded
Messages : 14 097 Inscrit le 05/02/03
Ville : Domène
Non connecté
|
|
Posté le 20 octobre 2005 - 18 h 03 m 55 s |
|
|
Le 20 octobre 2005 - 17 h 52, Florent42 a écrit :
gege38> ton code ne fait rien, il affiche absolument rien 
|
Possible
Sinon, beh, il faudrait que je teste...
Tu peux me montrer le résultat d'un ipconfig /all sous 2000 pro ?
Et pour l'adresse MAC, huh, tu sais qu'un jar est un simple fichier zip ? Donc si c'est en clair, facile à modifier ^^
Donc tu peux le mettre dans un fichier, mais avec un minimum de cryptage...
Tu n'es pas obligé d'utiliser des algos comme DSA, RSA ou à clé unique, tu peux te faire ton chti cryptage basé sur un décalage de bit par exemple... C'est rapide, ca coûte pas cher, ca permet de ne rien voir à l'édition par contre, c'est hyper facilement craquable par un mec pas idiot...
Mais bon, de toute façon, j'espère que tu te rends compte que de toute façon, avec 10 minutes de pratique, un bon décompilo et une connaissance de Java et de son bytecode, tu fais péter la protection facilement ?
|
|
| |
" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 20 octobre 2005 - 19 h 12 m 34 s |
|
|
ca depend
si je crypte ca c sur et après je compile tout en format EXE...?
les sources deviennent inacessible non?
par contre executer un exe sur des pages php...ca promet...
la je suis sur sur un xp je vais tester ton code je vais voir ce que ca donne
|
|
| |
- je cherche un emploi
ICI
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 20 octobre 2005 - 20 h 07 m 23 s |
|
|
meme sous xp ca ne fait rien de mon cote
|
|
| |
- je cherche un emploi
ICI
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 20 octobre 2005 - 20 h 08 m 08 s |
|
|
demain je tenterais sur le code que j ai fait sur un xp pour voir si ca coincide ou pas
|
|
| |
Message édité 1 fois, la dernière par Florent42 le 20 octobre 2005 - 20 h 09. |
| |
- je cherche un emploi
ICI
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 20 octobre 2005 - 20 h 22 m 50 s |
|
|
pour ecrire dans un fichier es ce que je suis juste:
la toute première fois:
FileWriter fw = new FileWriter("mac.jar");
fw.write(res);
fw.close();
Toujours:
la lecture:
FileReader fr = new FileReader("mac.jar");
int lu = fr.read();
if (lu != -1) {
char c = (char) lu;
if(c.equals(res))
{suite du script}
else system.exit(0);
}
fr.close();
Par contre j ai pas trouve sur le net ni sur developpez.com, comment tester l existence d un fichier?
car si et seulement si il n 'existe pas, il doit creer le fichier, et si il existe il ne dois plus etre modifie.
Sinon le code c est pas trop loin de la verite?
|
|
| |
- je cherche un emploi
ICI
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 20 octobre 2005 - 20 h 24 m 18 s |
|
|
j ai mis "res" comme variable mais reelement c pas elle puisque "res" contient l ipconfig complet
|
|
| |
- je cherche un emploi
ICI
|
gege38
Modérateur
Chief of the (¯`·.__[T3aM.BouL3T©]__.·´¯) Potatoe Reloaded
Messages : 14 097 Inscrit le 05/02/03
Ville : Domène
Non connecté
|
|
Posté le 21 octobre 2005 - 10 h 04 m 43 s |
|
|
Le 20 octobre 2005 - 20 h 22, Florent42 a écrit :
pour ecrire dans un fichier es ce que je suis juste:
la toute première fois:
FileWriter fw = new FileWriter("mac.jar");
fw.write(res);
fw.close();
Toujours:
la lecture:
FileReader fr = new FileReader("mac.jar");
int lu = fr.read();
if (lu != -1) {
char c = (char) lu;
if(c.equals(res))
{suite du script}
else system.exit(0);
}
fr.close();
Par contre j ai pas trouve sur le net ni sur developpez.com, comment tester l existence d un fichier?
car si et seulement si il n 'existe pas, il doit creer le fichier, et si il existe il ne dois plus etre modifie.
Sinon le code c est pas trop loin de la verite?
|
Tu ne connais pas encore trop l'API Java donc c'est normal que tu sois légèrement en dehors des clous...
Effectivement, un FileWriter te donne un flux pour écrire sur un fichier... Cependant, sémantiquement parlant, les Jar ne sont pas un fichier à proprement parler, mais un package contenant :
- un fichier META-INF/MANIFEST décrivant le package
- un ensemble de fichiers éventuellement hierarchisés
Si tu veux avoir un simple fichier, appelle le autrement 
Sinon, si tu veux faire un Jar, il existe l'API java.util.jar (et ses classes JarEntry et JarFile) et java.util.zip  Je te laisse y jeter un coup d'oeil  (et aussi, va sur developpez.com pour comprendre ce qu'est exactement un jar...)
Relatif à la manipulation de dossiers et de fichiers, Java est super bien doté avec la classe java.io.File (dont le nom est très mal inspiré  ).
Pareil, va voir ses méthodes et tu trouveras ton bonheur (attention à bien gérer les paths !). Pour plus d'aide, tu as plein de tutos sur le Net relatifs à l'utilisation de cette classe et à la manipulation de fichiers et répertoires...
Bon courage
|
|
| |
" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 21 octobre 2005 - 11 h 21 m 32 s |
|
|
faux faux faux, je suis alle trop vite qd j ai fait le code hier
c est pas un jar ou je veux mettre l'adresse mac mais .java
ms par exemple un fichier texte tout bete (dc genre txt) peut on l'intégrer complètement dans un archive JAR?
|
|
| |
- je cherche un emploi
ICI
|
gege38
Modérateur
Chief of the (¯`·.__[T3aM.BouL3T©]__.·´¯) Potatoe Reloaded
Messages : 14 097 Inscrit le 05/02/03
Ville : Domène
Non connecté
|
|
Posté le 21 octobre 2005 - 11 h 26 m 41 s |
|
|
Le 21 octobre 2005 - 11 h 21, Florent42 a écrit :
ms par exemple un fichier texte tout bete (dc genre txt) peut on l'intégrer complètement dans un archive JAR?
|
Ben oui... Suffit de créer une JarEntry du nom du fichier texte...
Par contre, sémantiquement parlant, je ne sais pas si Sun a envie qu'un Jar ne soit qu'un zip avec un manifest...
M'enfin, va voir du coté des théoriques sur les Jar, tu devrais comprendre
|
|
| |
" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld
|
Gosseyn
Messages : 286 Inscrit le 24/01/05
Ville : Grenoble
Non connecté
|
|
Posté le 21 octobre 2005 - 16 h 58 m 01 s |
|
|
Bonjour,
Just in case tu ne connaitrais pas ce lien...Je ne cherche pas a convaicre qui que ce soit.
Le 20 octobre 2005 - 15 h 54, Florent42 a écrit :
c pour cela que je me base plus sur java pour sécuriser car je sais que c est un peu plus "intouchable"
|
Essaye cela. C'est un "decompiateur" java.
http://www.kpdus.com/jad.html
|
|
| |
"Si vous perdez, ne perdez pas la leçon."
Gosseyn
|
gege38
Modérateur
Chief of the (¯`·.__[T3aM.BouL3T©]__.·´¯) Potatoe Reloaded
Messages : 14 097 Inscrit le 05/02/03
Ville : Domène
Non connecté
|
|
Posté le 21 octobre 2005 - 17 h 06 m 16 s |
|
|
Sans vouloir jouer les rootfakes, je signale que lire du bytecode n'est pas extrèmement dur avec de l'habitude et qu'il est relativement facile de "shunter" des portions de code (comme celles de vérification par exemple  ) sans avoir besoin de recourir à un décompilo...
Le décompilo, c'est bien quand on veut comprendre le code pour obtenir un fonctionnement similaire...
|
|
| |
" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld
|
iraysyvalo
-
Messages : 9 647 Inscrit le 19/11/02
Ville : Lyon
Non connecté
|
|
Posté le 21 octobre 2005 - 18 h 05 m 00 s |
|
|
Le 21 octobre 2005 - 17 h 06, gege38 a écrit :
Sans vouloir jouer les rootfakes
|
Et c'est quoi ca ??
|
|
| |
Pour un ban rapide et garanti sur ce forum, argumentez vos posts, dites simplement la verite, parlez de la realite et les leche-culs d'un cote et les maniaques du ban de l'autre se feront un plaisir de vous envoyer au purgatoire aussi sec.
|
degourth
YO | DeGourth
Messages : 685 Inscrit le 01/04/03
Ville : Gex
Non connecté
|
|
Posté le 24 octobre 2005 - 09 h 28 m 37 s |
|
|
Le 20 octobre 2005 - 13 h 45, gege38 a écrit :
Pour ce genre de trucs, il existe :
- la confiance en soi-même
- sa fierté ou gloriole que l'on met de côté
|
<HS>
En corollaire, moi ca me generais un peu de demander a la 'grande communautée des developpeurs' de m'aider a écrire un truc visant justement a empecher d'autres membres de cette même communautée de comprendre/utiliser ce que je développe ....
ca me donnerais sans doute une impression de profiteur ... mais bon je dois m'etre lever du pieds gauche ce matin 
</ HS>
|
|
| |
Do not meddle in the affairs of geeks, for they are subtle and quick to anger.
|
gege38
Modérateur
Chief of the (¯`·.__[T3aM.BouL3T©]__.·´¯) Potatoe Reloaded
Messages : 14 097 Inscrit le 05/02/03
Ville : Domène
Non connecté
|
|
Posté le 24 octobre 2005 - 10 h 43 m 16 s |
|
|
Le 21 octobre 2005 - 18 h 05, iraysyvalo a écrit :
Le 21 octobre 2005 - 17 h 06, gege38 a écrit :
Sans vouloir jouer les rootfakes
|
Et c'est quoi ca ??
|
Rootfake(n.m., néologisme gégéïen) : Provient de la contraction de 2 mots d'origine anglaise, root et fake, littérallement "fausse racine". Oxymore visant à mettre en contradiction l'idée root, signifiant la maîtrise d'un domaine de compétence informatique ("Ah, quel root en prog, celui-là !"), avec l'idée fake, désignant la tromperie ou encore la supercherie ("Laisse béton, c't'un fake c't'image !"). En résumé, désigne une personne désireuse de se faire connaître comme une professionnelle de la discipline, alors qu'en résumé, elle n'en maîtrise quedalle, comme qui dirait. Voir les mots-clés Science, Tartine, Etaler.
|
|
| |
" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld
|
kha
Google is your best friend
Messages : 1 235 Inscrit le 01/03/02
Ville : Montreal
Non connecté
|
|
Posté le 25 octobre 2005 - 00 h 19 m 57 s |
|
|
Pour ton programme, tu devrais plus opter pour un systeme du meme genre que ceux qui verifient par example une licence.
1. Tu choisis des valeurs accessibles via Java qui vont te permettre d identifier une machine, comme :
- line.separator
- user.home
- c:\winnt ou c:\windows ou /
- os.name
- ip
- ...
Va voir dans System.getProperties tout ce qui est accessible.
2. Tu regroupe toutes ces donnees dans un string et tu applique un SHA-256 sur l ensemble pour te donner un hash.
PROPRIETES_CORRECTES -> HASH
2. Tu cree un fichier qui contient ce hash et tu le fourni a cote du jar.
3. lors du lancement du jar, tu refais dans une classe la manipulation : tu prends les properietes du systeme en cours et tu recalcule un hash
PROPRIETES_COURANTES -> HASH_A_VALIDER
4. Tu lis dans le fichier le HASH et tu compare HASH avec HASH_A_VALIDER. Si les 2 correspondent, c est que les proprietes utilisees pour le calcul etaient les memes (a tres fortes chances car les collisions sur un hash de 256bits restent faibles pour cet exemple)
Et si les proprietes sont les memes, c est que ya de fortes chance d etre sur la meme machine !
|
|
| |
|
kha
Google is your best friend
Messages : 1 235 Inscrit le 01/03/02
Ville : Montreal
Non connecté
|
|
Posté le 25 octobre 2005 - 01 h 06 m 47 s |
|
|
Voila code vite fait ce que je veux dire. Il y a deux fichiers : Main.java et HostValidator.java
1. //rtfm
2. /**
3. * @Main.java 2005-10-24 18:21:44
4. */
5.
6. /**
7. * @author carbom02
8. */
9. public final class Main
10. {
11. /**
12. */
13. private Main()
14. {
15. super();
16. }
17.
18. /**
19. * @param args -
20. */
21. public static void main(String[] args)
22. {
23. final HostValidator hv = new HostValidator("licence.lic");
24. if (hv.hasLicence())
25. {
26. System.out.println("There is a licence file...");
27. if (hv.isValid())
28. {
29. System.out.println(".. and it is valid !");
30. }
31. else
32. {
33. System.out.println(".. and it is NOT valid !");
34. }
35. }
36. else
37. {
38. System.out.println("No licence file ! We create a new one...");
39. hv.createLicence();
40. System.out.println("Launch again the program to check this licence file");
41. }
42. }
43. }
1. //rtfm
2. import java.io.File;
3. import java.io.FileInputStream;
4. import java.io.FileOutputStream;
5. import java.io.IOException;
6. import java.security.MessageDigest;
7. import java.security.NoSuchAlgorithmException;
8. import java.util.Properties;
9.
10. /**
11. * @HostValidator.java 2005-10-24 18:21:26
12. */
13.
14. /**
15. * @author carbom02
16. */
17. public class HostValidator
18. {
19. /**
20. * Environement variable to check
21. */
22. public static final String[] ENV =
23. {
24. "file.separator",
25. "user.language",
26. "user.home",
27. "os.version",
28. "os.name",
29. "java.io.tmpdir",
30. "user.country",
31. "path.separator",
32. };
33.
34. /**
35. * Resources to check
36. */
37. public static final String[] RESOURCES =
38. {
39. "c:/winnt",
40. "c:/windows",
41. "/root"
42. };
43.
44. private File file;
45.
46. /**
47. * @param resourceFile file to write licence info to and reteive licence info from
48. */
49. public HostValidator(String resourceFile)
50. {
51. this.file = new File(resourceFile);
52. }
53.
54. /**
55. * @return True if the licence fiel can be read
56. */
57. public boolean hasLicence()
58. {
59. return file.exists() && file.canRead();
60. }
61.
62. /**
63. * Check if a lcience file is valid
64. * @return True id licence key is valid
65. */
66. public boolean isValid()
67. {
68. if (hasLicence())
69. {
70. try
71. {
72. final Properties p = new Properties();
73. final String id = getSystemId();
74. final String hash = getHash("SHA-256", id);
75.
76. p.load(new FileInputStream(file));
77. final String licence = p.getProperty("licence.key");
78.
79. System.out.println("[isValid] from file: " + file.getAbsolutePath());
80. System.out.println("[isValid] licence retreived: " + licence);
81. System.out.println("[isValid] id computed: " + id);
82. System.out.println("[isValid] hash computed: " + hash);
83.
84. return hash.equalsIgnoreCase(licence);
85. }
86. catch (NoSuchAlgorithmException e)
87. {
88. throw new RuntimeException(e.getMessage(), e);
89. }
90. catch (IOException e)
91. {
92. throw new RuntimeException(e.getMessage(), e);
93. }
94. }
95. return false;
96. }
97.
98. /**
99. * Create a licence file
100. */
101. public void createLicence()
102. {
103. try
104. {
105. final Properties p = new Properties();
106. final String id = getSystemId();
107. final String hash = getHash("SHA-256", id);
108.
109. System.out.println("[createLicence] id computed: " + id);
110. System.out.println("[createLicence] hash computed: " + hash);
111. System.out.println("[createLicence] writing to file: " + file.getAbsolutePath());
112.
113. p.setProperty("licence.key", hash);
114. p.store(new FileOutputStream(file), "Licence key");
115. }
116. catch (NoSuchAlgorithmException e)
117. {
118. throw new RuntimeException(e.getMessage(), e);
119. }
120. catch (IOException e)
121. {
122. throw new RuntimeException(e.getMessage(), e);
123. }
124. }
125.
126. private String getSystemId()
127. {
128. final StringBuffer sb = new StringBuffer();
129. for (int i = 0; i < ENV.length; i++)
130. {
131. sb.append(ENV[i]).append("=").append(System.getProperty(ENV[i]));
132. }
133. for (int i = 0; i < RESOURCES.length; i++)
134. {
135. sb.append(RESOURCES[i]).append("=").append(new File(RESOURCES[i]).exists());
136. }
137. return sb.toString();
138. }
139.
140. /**
141. * Hash an object
142. *
143. * @param algorithm The algorith to use. See http://java.sun.com/j2se/1.4.2/docs/guide/security/CryptoSpec.html
144. * @param o The object to hash
145. * @return A string representation of the hashing
146. * @throws NoSuchAlgorithmException If algorithm is unknown
147. */
148. public static String getHash(final String algorithm, Object o) throws NoSuchAlgorithmException
149. {
150. if (o == null)
151. {
152. return null;
153. }
154. final MessageDigest md = MessageDigest.getInstance(algorithm);
155. md.update(o.toString().getBytes());
156. return byteArrayToHexString(md.digest());
157. }
158.
159. /**
160. * Convert a byte[] array to readable string format. This makes the "hex" readable!
161. *
162. * @return result String buffer in String format
163. * @param in byte[] buffer to convert to string format
164. */
165. public static String byteArrayToHexString(final byte[] in)
166. {
167. if (in == null || in.length <= 0)
168. {
169. return null;
170. }
171.
172. final char[] pseudo = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
173. final StringBuffer out = new StringBuffer(in.length * 2);
174.
175. for (int i = 0; i < in.length; i++)
176. {
177. out.append(pseudo[(in[i] >>> 4) & 0xF]);
178. out.append(pseudo[in[i] & 0xF]);
179. }
180.
181. return out.toString();
182. }
183. }
Sortie a la premiere execution :
1. No licence file ! We create a new one...
2. [createLicence] id computed: file.separator=\user.language=fruser.home=C:\Documents and Settings\carbom02os.version=5.1os.name=Windows XPjava.io.tmpdir=C:\TEMP\user.country=CApath.separator=;c:/winnt=falsec:/windows=true/root=false
3. [createLicence] hash computed: 3240EAD232AA2AF2814EF244B16BF95371B77C9312C8F0B1741AE9D20C8D21E3
4. [createLicence] writing to file: C:\axa\projects\tpp-one\PrimeEnLigneProject\licence.lic
5. Launch again the program to check this licence file
Sortie a la deuxieme execution :
1. There is a licence file...
2. [isValid] from file: C:\axa\projects\tpp-one\PrimeEnLigneProject\licence.lic
3. [isValid] licence retreived: 3240EAD232AA2AF2814EF244B16BF95371B77C9312C8F0B1741AE9D20C8D21E3
4. [isValid] id computed: file.separator=\user.language=fruser.home=C:\Documents and Settings\carbom02os.version=5.1os.name=Windows XPjava.io.tmpdir=C:\TEMP\user.country=CApath.separator=;c:/winnt=falsec:/windows=true/root=false
5. [isValid] hash computed: 3240EAD232AA2AF2814EF244B16BF95371B77C9312C8F0B1741AE9D20C8D21E3
6. .. and it is valid !
|
|
| |
|
kha
Google is your best friend
Messages : 1 235 Inscrit le 01/03/02
Ville : Montreal
Non connecté
|
|
Posté le 25 octobre 2005 - 01 h 08 m 28 s |
|
|
NB : pour reformater le code, mettre dans Eclipse et faire CTRL+SHIFT+F
|
|
| |
|