2016-11-15 2 views
-2

Je veux connaître le contenu réel du fichier binaire. Le fichier a été créé par l'application basée sur Deplhi (FreePascal?).Lecture du contenu réel du fichier binaire de Pascal

  • Nom du fichier est FDane.bin
  • Je n'ai pas le code source de cette application

Après désassemblage application, je vois que (partie du code désassemblé qui contiennent mot FDane.bin):

procedure TFrmDroga.ReadLinesFromFile(Sender : TObject); 
begin 
(* 
005F0BB0 55      push ebp 
005F0BB1 8BEC     mov  ebp, esp 
005F0BB3 83C4E0     add  esp, -$20 
005F0BB6 53      push ebx 
005F0BB7 56      push esi 
005F0BB8 57      push edi 
005F0BB9 8945FC     mov  [ebp-$04], eax 
005F0BBC 8D75EF     lea  esi, [ebp-$11] 
005F0BBF 33C0     xor  eax, eax 
005F0BC1 55      push ebp 
005F0BC2 681A135F00    push $005F131A 
005F0BC7 64FF30     push dword ptr fs:[eax] 
005F0BCA 648920     mov  fs:[eax], esp 

| 
005F0BCD E8DAC4E1FF    call 0040D0AC 
005F0BD2 DD1D6C936000   fstp qword ptr [$0060936C] 
005F0BD8 9B      wait 
005F0BD9 B201     mov  dl, $01 

* Reference to class TMemoryStream 
| 
005F0BDB A144EB4100    mov  eax, dword ptr [$0041EB44] 

| 
005F0BE0 E84735E1FF    call 0040412C 
005F0BE5 8945F8     mov  [ebp-$08], eax 
005F0BE8 B201     mov  dl, $01 

* Reference to class TMemoryStream 
| 
005F0BEA A144EB4100    mov  eax, dword ptr [$0041EB44] 

| 
005F0BEF E83835E1FF    call 0040412C 
005F0BF4 8945F4     mov  [ebp-$0C], eax 

* Possible String Reference to: 'FDane.bin' 
| 
005F0BF7 BA30135F00    mov  edx, $005F1330 
005F0BFC 8B45F4     mov  eax, [ebp-$0C] 

| 
005F0BFF E8C834E3FF    call 004240CC 
005F0C04 6A00     push $00 
005F0C06 6A00     push $00 
005F0C08 8B45F8     mov  eax, [ebp-$08] 

| 
005F0C0B E8EC2CE3FF    call 004238FC 
005F0C10 6A00     push $00 
005F0C12 6A00     push $00 
005F0C14 8B45F4     mov  eax, [ebp-$0C] 

| 
005F0C17 E8E02CE3FF    call 004238FC 
005F0C1C 8B45F4     mov  eax, [ebp-$0C] 
005F0C1F 8B10     mov  edx, [eax] 
005F0C21 FF12     call dword ptr [edx] 
005F0C23 85C0     test eax, eax 
005F0C25 7E3B     jle  005F0C62 
005F0C27 8945E8     mov  [ebp-$18], eax 
005F0C2A BB01000000    mov  ebx, $00000001 
005F0C2F 8BD6     mov  edx, esi 
005F0C31 B901000000    mov  ecx, $00000001 
005F0C36 8B45F4     mov  eax, [ebp-$0C] 
005F0C39 8B38     mov  edi, [eax] 

* Possible reference to virtual method TMemoryStream.OFFS_0C 
| 
005F0C3B FF570C     call dword ptr [edi+$0C] 
005F0C3E 8BC3     mov  eax, ebx 
005F0C40 B9C8000000    mov  ecx, $000000C8 
005F0C45 99      cdq 
005F0C46 F7F9     idiv ecx 
005F0C48 80C220     add  dl, $20 
005F0C4B 3016     xor  [esi], dl 
005F0C4D 8BD6     mov  edx, esi 
005F0C4F B901000000    mov  ecx, $00000001 
005F0C54 8B45F8     mov  eax, [ebp-$08] 
005F0C57 8B38     mov  edi, [eax] 

* Possible reference to virtual method TMemoryStream.OFFS_10 
| 
005F0C59 FF5710     call dword ptr [edi+$10] 
005F0C5C 43      inc  ebx 
005F0C5D FF4DE8     dec  dword ptr [ebp-$18] 
005F0C60 75CD     jnz  005F0C2F 
005F0C62 6A00     push $00 
005F0C64 6A00     push $00 
005F0C66 8B45F8     mov  eax, [ebp-$08] 

| 
005F0C69 E88E2CE3FF    call 004238FC 
005F0C6E 8B45F4     mov  eax, [ebp-$0C] 

| 
005F0C71 E80634E3FF    call 0042407C 
005F0C76 8B45FC     mov  eax, [ebp-$04] 

* Reference to control TFrmDroga.CDSBrutto : TClientDataSet 
| 
005F0C79 8B8098040000   mov  eax, [eax+$0498] 
005F0C7F 8B55F8     mov  edx, [ebp-$08] 

| 
005F0C82 E8A180F0FF    call 004F8D28 
005F0C87 8B45FC     mov  eax, [ebp-$04] 

* Reference to control TFrmDroga.CDSBrutto : TClientDataSet 
| 
005F0C8A 8B8098040000   mov  eax, [eax+$0498] 

Après avoir utilisé les chaînes 'FDane.bin | head -n 50' get (ce qui est une partie):

&'(1*+,*. 
0120456 
82s_f\UM%27 
6GFFHIJKLB 
>6)5?# 
,8-05_^^`abcdn* 
srrtuvwxq 
!"#$%hg,)g 
./0323446789:;<[email protected] 
BL{~sm 
nbfeVWXZZ[\_^_`abcd;& 
hijklmno 
2ytDDGDD7GMEN 
Re,' 
2342678?:;<=>? 
EEFGHIJK 
EPbdchh 
klkj[\]V_`aecdefgh) 
lnopqrstu 
7ryNILAC2 
s"!"#$%&' 
7896;<[email protected] 
KJKLMNOP 
^U`aheg 
`jlo`abndefkhijklm 
0}qstuvwxy 
<w~H 
&&'()*+,-./61 
z89:*<<>[email protected] 
doj[\]L_aaccdefghi$+ 
mnopqrstu([email protected]@3C 
!"#$%& 
Zi + 
678/::<8>[email protected] 
/IIJKLMNO 
YTffgdd 
gokn_`aucee`ghijkl 
prstuvwx9 
;v}MI 
b{&%&'()*+ 
;<=%?AAHCDEFGH 
ONOPQRST 
RYlklac 
\WTSdef{hhj`lmnopq 
twxyz{|} 
!"#$e 
**+,-./0 
@ABcDDFHHIJKLMn 
QSTUVWXY 
V^fPQ^^)YWWXYjklLnnparstuvw8 

Après 200 lignes de données devient:

MKEUNF/:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
!"#$%&'()*+,-./:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
!"#$%&'()*+,-./:;<=>[email protected] 
5797; 
ghijklmnopqrstuvwxyz{|}~ 
!"#$%&7cFFNF 
]AAF]V89:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
!"#$%&'()*+,-./:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
!"#$%&'()*+,-./:;<=>[email protected][G 
xyz{|}~ 
!"#$%&'()*;gBBJZT 
a[FO]KRS^<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
!"#$%&'()*+,-./:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
!"#$%&'()*+,-./:;<=>[email protected][\]^_x1)3D, 
_R  T 
Vyz{|}~ 
!"#$%&'()*+,-. 
cTDDBXMHW\ 
t/-')d 
)-)3.$;,n 
r)t:x8vYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
!"#$%&'()*+,-./:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
!"#$%&'()*+,-./:;<=>[email protected][\]^_`abcU5-7H: 
!"#$%&'()*+,-./012-da} 
qW\I]NJM5*666$f 
4,!9:RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
!"#$%&'()*+,-./:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
!"#$%&'()*+,-./:;<=>[email protected][\]^_`abcdefgs, 
Z(5856 
!"#$%&'()*+,-./:snx 
EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
iyi|v{123456789:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
!"#$%&'()*+,-./:;<=>[email protected][\]^_`abcdefghijkg&9$P93?1846xyz{|}~ 
!"#$%&'()*+,-./:!f\U 
!%;c 
?)3'>/k 
VWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
ibg#$%&'()*+,-./:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
!"#$%&'()*+,-./:;<=>[email protected]RSTUVWXYZ[\]^_`abcdefghijklmnoj+"S2'7#+:2:?5^ 
!"#$%&'()*+,-./:;<=>2 
     MNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
!"#$%&'()*+,-./:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
!"#$%&'()*+,-./:;<=>[email protected][\]^_`abcdefghijklmnopqrsS& 
!"#$%&'()*+,-./:;<=>[email protected]_ 
*6&$'#.l 
+#17;!!u 
`abcdefghijklmnopqrstuvwxyz{|}~ 
OVLJ 
aikfh 
456789:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
!"#$%&'()*+,-./:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwX# 
!"#$%&'()*+,-./:;<=>[email protected] 
-)7o 
97>=6,9=y  
55:D6H&Fijklmnopqrstuvwxyz{|}~ 
HDOJG_HB 
yegenk 
456789:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
!"#$%&'()*+,-./:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{N6 
!"#$%&'()*+,-./:;<=>[email protected] 
UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
idolslr'()*+,-./:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
!"#$%&'()*+,-./:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 
!"#$%&'()*+,-./:;<=>[email protected] 
YZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 

Il est semble qu'il y ait des données de caractères (je vois ASCII jusqu'à 127 personnages). Je ne suis pas un programmeur Pascal, Delphi. Je connais Python, certains C et Java. Est-il possible de décoder?

+0

Cela revient à "décoder" 5 en 2 + 3. – AmigoJack

+0

peut-être que vous pouvez me dire que cela ressemble à un flux de caractères ou quelque chose. Ce serait utile dans l'utilisation quelque chose comme http://wiki.freepascal.org/Fichier – dymbol

+2

Ce fichier pourrait être n'importe quoi. Contactez l'auteur de l'application qui génère le fichier et demandez-leur. Ce n'est pas * s'il vous plaît deviner le contenu d'un fichier binaire aléatoire *. –

Répondre

0

Quelques conseils:

Le démontage montre TMemoryStream, puis TClientDataSet appelle. Cela en fait un delphi, et delphi/bcb seul (l'équivalent de FreePascal s'appelle TBufDataset)

TClientdataset .cds est un format de streaming propriétaire d'un ensemble de données. Il pourrait être dépendant de la version de Delphi. Les versions ultérieures (D2010 +? Rad studio only?) Sont fournies avec des sources TClientDataset que vous pouvez inspecter.

La recherche de "format de fichier .cds tclientdataset" pourrait également donner quelque chose, et espérer qu'il ne supporte pas le cryptage.