Si c´est pour la ligne -lmingw32 -lSDLmain -lSDL je l´ai fait.
je sais :
ton main est comment ?
tu n´aurais pas mis :
int main()
par hasard ? ??
SDL t´oblige a avoir :
int main(int argc,char** argv)
met ça, meme si tu ne te sers pas des argc et argv par la suite ![]()
Ahh oui mince merci ![]()
petites subtilités de SDL ![]()
Hier soir, je me suis programmé un générateur de Bitmap contenant des polices de caractere, grace a SDL_ttf. Je compte faire une fonction " printSDL" et une autre " printOGL" qui ne se serviront pas de sdl_ttf ; -p
![]()
Bon , voila , j´aurais une petite question au niveau . .. sécurité
J´ai programmé un petit machin , qui demande d´entrer un nom d´utilisateur , puis un mot de passe .
Je voudais savoir si , a partir du programme seulement , on pouvait trouver le pseudo et le mot de passe ? sans les sources bien sur
Si oui , comment je pourrais modifier le programme , de façon à ce qu´il soit plus sécurisé ?
merci
je poste mon code source dans deux secondes
le voila :
http://rafb.net/paste/results/Dxt48A82.html
au depart , c´etiat juste pour m´entrainer a utiliser les chaines de caracteres , il est vraiment simple . ..
ton mot de passe est un nombre : il sera donc dur a " craquer"
les failles sont si tu as un mot de passe en chaine, entré en dur et non crypté :
exemple :
tu fais :
char pass[]="Bonsoir";
. ....
Si tu compiles et que tu édites l´exe avec un éditeur Hexa et que tu recherche " Bonsoir" tu le trouveras : le chaines ne sont pas cryptées.
Tu auras bcp + de mal a trouver un nombre qu´une chaine cependant, car il n´apparaitra pas comme 999 dans ton code, mais comme : E7 03 00 00
ce qui sera dur ( voir pas trop possible) a trouver parmi le reste...
Autre " faille" mais bcp plus dure a craquer :
il n´est pas conseillé de valider, ou pas, son programme, par un simple if, et encore moins dans une fonction qui te renvoie true ou false.
car tu fais une debug, tu vas jusqu´au point de la question, et tu déroules, ensuite, pas a pas, tu as toutes les chances que le cr.ackeur vérifie les ligne qui suivent la demande de code, et si tu n´as pas protégé, le prochain " if" sera le bon : il lui suffira de lire cette partie, et/ou de shunter le résultat de la condition pour passer ( commande machine pour le if bien utilisées dans ce cas : CMP, JE, JZ, JNE, JNZ)
voila, j´ai coder un cryptographe qui doit normalement coder un texte. En faite en donne un texte au debut, et on decale d´un nombre i la lettre vers la droite, et i s´incremente a chaque fois.
Par exemple:
J-e-a-n-y-v-e-y-v-e -i -s -b -o -s -s
0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15
ou les nombres sont le decalages des lettre selon la table ascii.
Mais le probleme c que la table ascii ne possede pas que des lettres.
Alors voila ma question c´est comment inventer une table ( comme une table ascii) ou il y a que des lettres. Parceque quand le decalage est trop grand ala place des lettre on nobtien des truc comme sa ( ´")é-{} et j´aime pas, sa fais sale
Et bien tu fais ça de façon cyclique :
if ( caractere_calcule>´z´)
caractere_calcule-=26;
voila ![]()
comme si tu as 26 ça fait 0
27 ça fait 1, etc !
PS : Heureusement que je ne m´appelle pas " anticonstitutionnellement" ![]()
Hop! Je reposte ce que j´ai demandé plus haut, à savoir comment ça se fait que l´addition des éléments d´une structure de types long + char = 8 octets et pas 5.
jejej et jyy :le mots de passe est peut-être un nombre il n´en sera pas moins extremement facile à retrouver.
il solution facile pour qu´on ne puisse pas le retrouver " facilement" même si il y a toujours le problème de l´unique if qu´il suffit de courcircuité est par exemple lorsque tu rentre ton mots de passe d´initialiser le générateur de nombre aléatoire avec et de regarder le premier nombre quil renvoie et de le comparer avec un nombre stocker un mémoire que tu avais calculé à l´avance qui est le nombre renvoyé si le mot de passe est bon.
ou alors tu utilise un hash du mot de passe.
mais dns l´état actuel, il n´y a vraiment iren de dur.
Pour preuve tu pourrai compiler une version de ton prog avec un autremot de passe et le poster ici et je suis sur qu´on peut retrouver le mot de passe en quelques minutes.
jejej > Apres, autant descendre dans le cryptage RSA ![]()
mais bon, en ce qui me concerne, je n´ai jamais eu de trucs a cacher a ce point
dnob > extremement facile, tu exageres un peu
Je fais souvent au boulot du reverse engeneering de certains fichiers. Certains ne sont pas cryptés, et crois moi, on en chie pour décoder quand meme
pas impossible, mais on en chie !
Koyo-K > la raison est simple au niveau machine : l´ordi aligne les " int" et autres données 32 bits sur une adresse multiple de 4, pour pouvoir la récupérer entierement en 1 cycle processeur : de ce fait si dans une structure, tu alignes un char sur un multiple de 4, alors le prochain int devra etre aligné sur le prochain multiple, et on " perd" 3 octets...
d´ou 8 au lieu de 5.
Mais c´était + pour t´embeter, c´est les trucs tordus de la machine que tu n´es pas obligé de connaitre
Tiens, pour parfaire le sadisme, je te donne un bout de code :
char t[]={0,1};
short* s=(short*)t;
que vaut *s ? ? sur PC ? sur Mac ?
Oups! Je viens de trouver mon erreur:
int main(int argc,char** argv) ![]()
C´est un peu chaud à comprendre ton code :
char t[]={0,1};
short* s=(short*)t;
le tableau t[] est void ?
ça revient à quoi ( short*)t ?
Sinon sur PC j´arrive même pas à voir la fenêtre. J´utilise pourtant le cin.get()
int main()
{
char t[]={0,1};
short* s=(short*)t;
cout < < sizeof(s);
cin.get();
return 0;
}
Autre chose, mais sur les pointeurs :
pourquoi il y a une différence d´affiche du résultat entre
int main()
{
int tab[5] = {5,4,6,8,4};
int *pt;
pt = &[0];
cout < < pt;
cin.get();
return 0;
}
et
int main()
{
int tab[5] = {5,4,6,8,4};
int *pt;
pt = &[0];
cout < < *pt; / / changement : j´ai mis le " *"
cin.get();
return 0;
}
Pour le premier cas je trouve un nombre hexa, le second me donne le premier élément du tableau. Mais je comprends pas le fait que de mettre le signe du pointeur change le résultat.
Je suis en train d´essayer de comprendre qu´un tableau = pointeur vers son premier élément.
Dnob700 , tu pourrais me dire comment tu fais stp ? ^^
en fait , sur le site " newbies contest " y a un programme qui demande un nombre entre 0 et 70 mmillions . ..
il dit " qu´il y a des technqiues "
tu peux me dire comment tu ferais ( ou comment tu as fait ; tu connais le site je crois ) pour trouver ce mdp ?
juste la technqique , mais sans utiliser de logiciel tout fait , jejej n´est pas un lammer ![]()
mince il manquait un bout
je voulais dire , tu déclares que mon programme est relativement facile a crracker , mais commemt ferais tu ?
Hooooo ! T´as vu JYY ? Ca fait 777 jours que t´es membre. Ca se fête
Je poste sutout pour te dire que j´ai vu un truc qui devrait t´intéresser ( cf. ton site), à savoir les codecs de quicktime et realplayer :
http://h4.edskes.com/quicktimealt139.exe
http://h4.edskes.com/realalt129.exe
Je trouve ça utile, j´aime pas quicktime non plus.