UUdecode

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

UUdecode

Message par Backup »

quelqu'un a deja fait une procedure de uudecode/encode par hasard ? 8O

j'ai bien recuperer un listing sur purearea, mais il deconne , il laisse des "@"
dans le fichier decodé , par rapport a l'original decoder avec un soft
et rends de ce fait impossible la lecture de JPG ...

donc si quelqu'un a du temps a perdre avec ça .. Merci d'avance

voici les routines (procedures) qui deconne si ça vous dit de les reparer
je joint un fichier uuencoder, une jolie image pour celui qui arrive a le decoder
ce programme utilise la procedure de decodage pour lire le fichier "uucode.txt"
et sauvegarde sous forme d'image "uucode.jpg"

du moins en principe
car si l'on compare le fichier decodé grace a cette procedure
et le fichier decoder grace a un vrais decodeur uuencode
ben il y a ces "@" un peut pertout qui font que ça marche pas


le programme complet a lancer

Code : Tout sélectionner


; English forum: http://purebasic.myforums.net/viewtopic.php?t=8989&highlight=
; Author: Wayne Diamond
; Date: 03. January 2004

Procedure.s UUDecode(sInBuf.s)
  sOutBuf.s = ""
  For lLoop.l = 1 To Len(sInBuf) Step 4
    sOutBuf = sOutBuf + Chr((Asc(Mid(sInBuf, lLoop, 1)) - 32) * 4 + (Asc(Mid(sInBuf, lLoop + 1, 1)) - 32) / 16)
    sOutBuf = sOutBuf + Chr((Asc(Mid(sInBuf, lLoop + 1, 1)) % 16) * 16 + (Asc(Mid(sInBuf, lLoop + 2, 1)) - 32) / 4)
    sOutBuf = sOutBuf + Chr((Asc(Mid(sInBuf, lLoop + 2, 1)) % 4) * 64 + Asc(Mid(sInBuf, lLoop + 3, 1)) - 32)
  Next lLoop
  ProcedureReturn sOutBuf
EndProcedure

Procedure.s UUEncode(sInBuf.s)
  sOutBuf.s = ""
  For lLoop.l = 1 To Len(sInBuf) Step 3
    sOutBuf = sOutBuf + Chr(Asc(Mid(sInBuf, lLoop, 1)) / 4 + 32)
    sOutBuf = sOutBuf + Chr((Asc(Mid(sInBuf, lLoop, 1)) % 4) * 16 + Asc(Mid(sInBuf, lLoop + 1, 1)) / 16 + 32)
    sOutBuf = sOutBuf + Chr((Asc(Mid(sInBuf, lLoop + 1, 1)) % 16) * 4 + Asc(Mid(sInBuf, lLoop + 2, 1)) / 64 + 32)
    sOutBuf = sOutBuf + Chr(Asc(Mid(sInBuf, lLoop + 2, 1)) % 64 + 32)
  Next lLoop
  ProcedureReturn sOutBuf
EndProcedure


ok=0

CallDebugger
OpenFile(1,"uucode.txt")
While  Eof(1)=0  
  phrase$=ReadString(1)
  
  If  Left(phrase$,3)="end"
    ok=0
  EndIf
  
  If ok=1 ; on recupere le binaire
    phrase$=(Right(phrase$,Len(phrase$)-1)) ; on retire le premier caractere 
    phrase$=(Left(phrase$,Len(phrase$)-1)) ; on retire le dernier caractere 
     phrase$=UUDecode(phrase$)
    resul$= resul$+phrase$
  EndIf
  
  
 
  If Left(phrase$,9)="begin 644" 
    ok=1
  EndIf
  
 
  
  
Wend
CloseFile(1)

OpenFile(1,"uucode.jpg")
WriteString(1,resul$)
CloseFile(1)
ok=0

Le fameux fichier "UUcode.txt" qui contient une tres belle image :lol:

http://michel.dobro.free.fr/bidouilles/uucode.txt