Witam, posiadam zagłostkę.
Buduję w mojej firmie baze danych sprzedaży, i chcę podłączyć ją pod jak największą liczbę zewnętrznych hurtowni.
Dostałem się do plików jednej hurtowni - pliki są używane przez ich katalog. Chcę aby mój program aktualizował cennik automatycznie (20000 produktów - przepisywanie cen ręcznie nie wchodzi w gre).
Z tej bazy wyłuskałem ceny, jednak są zakodowane:
',"N3 38.52
'*"M9 36.48
',"M3 38.42
+*"O8 76.67
)$"R7 50.96
--"K8 99.27
))"K: 55.29
na pierwszy rzut oka wydaje się to prostym przesunięciem znaków, jednak te przesunięcia są zmienne dla różnych indeksów.
tutaj jak widać jest już inne przesunięcie
96"-' 84.93
Nie potrafię rozszyfrować na jakiej zasadzie obliczane jest przesunięcie znaków.
Znalazłem za to kontrolkę dll która ma wyeksportowane dwie funkcje KODUJ oraz DEKODUJ. Śmiem sądzić że to prosta funkcja kodująca STRING na STRING jednak nie jestem w stanie jej użyć, próbowałem standardowym
function Dekoduj(Input: PChar): PChar; stdcall; external 'cb.dll' name 'Dekoduj';
ale wywala mi błąd.
usunięty link to ta kontrolka dll z tymi dwiema funkcjami.
to kod z deasemblera:
Dekoduj:
push ebp
mov ebp,esp
add esp,FFFFF004h
push eax
add esp,FFFFFF7Ch
push [ebp+08h]
call SUB_L004029EC
pop ecx
mov [ebp-04h],eax
push [ebp+0Ch]
call SUB_L004029EC
pop ecx
mov [ebp-08h],eax
push 00000004h
push 00000000h
push [ebp+10h]
call SUB_L0040290C
add esp,0000000Ch
push [ebp-08h]
push [ebp+0Ch]
lea eax,[ebp-00001084h]
push eax
call SUB_L004014EC
add esp,0000000Ch
xor edx,edx
mov [ebp-18h],edx
cmp dword ptr [ebp-04h],00000000h
jz L004018E2
Zapłacę za złamanie tego szyfru, jest mi to niezmiernie potrzebne do pracy, od tego zależy mój chleb. Pomocy