Algorithme...

Algorithme... - Programmation

Marsh Posté le 08-03-2002 à 19:45:45    

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:


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 08-03-2002 à 19:45:45   

Reply

Marsh Posté le 08-03-2002 à 20:54:50    

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


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 08-03-2002 à 21:51:50    

Je te remercie  :jap: , je ne connais pas trop le C mais c pas grave je vais m'i m'être  :sweat:


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 08-03-2002 à 21:52:20    

si y'an n'a d'autre qui ont autre chose ca serait cool :D


---------------
Tout à commencé par un rêve...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed