Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4659 connectés 

 


Dernière réponse
Sujet : Algorithme...
stef_dobermann si y'an n'a d'autre qui ont autre chose ca serait cool :D

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
stef_dobermann si y'an n'a d'autre qui ont autre chose ca serait cool :D
stef_dobermann Je te remercie  :jap: , je ne connais pas trop le C mais c pas grave je vais m'i m'être  :sweat:
deathsharp g trouver ca sur google si ca peut t'aider (condition que tu connaissent c++ )
 

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <process.h>
  4. #include <stdlib.h>
  5. #include <ctype.h>
  6. #include <conio.h>
  7. unsigned char huge Data[100001];
  8. unsigned char keystream[1001];
  9. int Rpoint[300];
  10. void main (int argc,char *argv[]) {
  11. FILE *fd;
  12. int  i,j,k;
  13. int size;
  14. char ch;
  15. char *name;
  16. int cracked;
  17. int sizemask;
  18. int maxr;
  19. int rsz;
  20. int pos;
  21. int Rall[300]; /* recource allocation table */
  22. if (argc<2) {
  23.  printf("usage: glide filename (username)" );
  24.  exit(1);
  25. }
  26. /* read PWL file */
  27. fd=fopen(argv[1],"rb" );
  28. if(fd==NULL) {
  29.  printf("can't open file %s",argv[1]);
  30.  exit(1);
  31. }
  32. size=0;
  33. while(!feof(fd)) {
  34.  Data[size++]=fgetc(fd);
  35. }
  36. size--;
  37. fclose(fd);
  38. /* find username */
  39. name=argv[1];
  40. if(argc>2) name=argv[2];
  41. printf("Username: %s\n",name);
  42. /* copy encrypted text into keystream */
  43. cracked=size-0x0208;
  44. if(cracked<0) cracked=0;
  45. if(cracked>1000) cracked=1000;
  46. memcpy(keystream,Data+0x208,cracked );
  47. /* generate 20 bytes of keystream */
  48. for(i=0;i<20;i++) {
  49.  ch=toupper(name[i]);
  50.  if(ch==0) break;
  51.  if(ch=='.') break;
  52.  keystream[i]^=ch;
  53. };
  54. cracked=20;
  55. /* find allocated recources */
  56. sizemask=keystream[0]+(keystream[1]<<8);
  57. printf("Sizemask: %04X\n",sizemask);
  58. for(i=0;i<256;i++) Rall[i]=0;
  59. maxr=0;
  60. for(i=0x108;i<0x208;i++) {
  61.  if(Data[i]!=0xff) {
  62.   Rall[Data[i]]++;
  63.   if (Data[i]>maxr) maxr=Data[i];
  64.  }
  65. }
  66. maxr=(((maxr/16)+1)*16); /* recource pointer table size appears to be divisable by 16 */
  67. /* search after recources */
  68. Rpoint[0]=0x0208+2*maxr+20+2; /* first recource */
  69. for(i=0;i<maxr;i++) {
  70.  /* find size of current recource */
  71.  pos=Rpoint[i];
  72.  rsz=Data[pos]+(Data[pos+1]<<8);
  73.  rsz^=sizemask;
  74.  printf("Analyzing block with size: %04x\t(%d:%d)\n",rsz,i,Rall[i]);
  75.  if( (Rall[i]==0) && (rsz!=0) ) {
  76.   printf("unused resource has nonzero size !!!\n" );
  77.   printf("If last line produced any : You may try to recover\n" );
  78.   printf("press y to attempt recovery\n" );
  79.   ch=getch();
  80.   if(ch!='y') exit(0);
  81.   rsz=2;
  82.   i-=1;
  83.  }
  84.  pos+=rsz;
  85.  /* Resources have a tendency to have the wrong size for some reason */
  86.  /* check for correct size */
  87.  if(i<maxr-1) {
  88.   while(Data[pos+3]!=keystream[1]) {
  89.    printf(":",Data[pos+3]);
  90.    pos+=2; /* very rude may fail */
  91.   }
  92.  }
  93.  pos+=2; /* include pointer in size */
  94.  Rpoint[i+1]=pos;
  95. }
  96. Rpoint[maxr]=size;
  97. /* insert Table data into keystream */
  98. for(i=0;i <= maxr;i++) {
  99.  keystream[20+2*i]^=Rpoint[i] & 0x00ff;
  100.  keystream[21+2*i]^=(Rpoint[i] >> 8) & 0x00ff;
  101. }
  102. cracked+=maxr*2+2;
  103. printf("%d bytes of keystream recovered\n",cracked);
  104. /* decrypt resources */
  105. for(i=0;i < maxr;i++) {
  106.  rsz=Rpoint[i+1]-Rpoint[i];
  107.  if (rsz>cracked) rsz=cracked;
  108.  printf("Recource[%d] (%d)\n",i,rsz);
  109.  for(j=0;j<rsz;j++) printf("%c",Data[Rpoint[i]+j]^keystream[j]);
  110.  printf("\n" );
  111. }
  112. exit(0);
  113. }


 
g pas tester, g pas lu, g rien fait

stef_dobermann Je cherche l'algorithme qui permet de décoder les fichier pwl,
le but (uniquement perso) le coder en Perl :D
 
J'ai chercher sur Google mais je n'ai trouvé que des prog déjà tou fait !!
 
Voili voila M'sieur,Dames et les autres......
 
je vous avez des truc ca m'intersse  
je sais que pas bien mon bon on ne peut pas programmer tou les jours la même chose :lol:

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)