PDA

View Full Version : DCT4 Dongle (calculator)



waszka
25-02-2003, 03:55 PM
Hello
I need a help :confused:

I downloaded the MasterCode DCT4 Dongle (calculator) from this forum, but I have a problem. When I write an IMEI and Operator code, instead of getting seven digit number I get message "DONGLE NOT RESPOND". Why is that? What I can do? Where is a problem? Please help me. THX

Alinus
25-02-2003, 04:29 PM
simple:
u need to buy dongle - LPT hardware key that protects the program - without it the program will not respond

waszka
25-02-2003, 11:08 PM
Originally posted by Alinus
simple:
u need to buy dongle - LPT hardware key that protects the program - without it the program will not respond
THX, do U have that key maybe, or do U know where can I get it?

Duane
27-02-2003, 11:46 PM
ITS THE CHEAPEST IVE SEEN AND THEY ARE RELIABLE


http://www.pecmobiledata.co.uk/acatalog/PEC_MobileData_Nokia_100.html

Unique
28-02-2003, 12:16 AM
THEY ARE RELIABLE

I highly disagree. I have had a number of bad trades with PEC:mad:

John

Duane
28-02-2003, 08:08 AM
these were recommended by a friend what problems have you had

DavieB
28-02-2003, 09:17 AM
I wouldn't use PEC any more either!

I bought a broken IR eye from them, had to send it back..
And a cheap, poorly made 8310 mbus head which killed my 8310 on connection (and when I told them they never responded to my email - for fear I would ask them to replace my 8310!)

VERY bad traders..

Scotty1973
28-02-2003, 02:45 PM
Hi,

I found this in another forum, where people where discussing about the dct4 calc with donlge too...

I don't have the slightest idea, whether it is useful or not, also no1 in the other forum...

So I'm just posting it, maybe some1 can use it...

regards Scotty :)

unit algounit_dct4;

interface
uses MBUS_Constants;
type
Array8= array[0..7] of byte;
var
MirrorRecdIMEI, Calced8Bytes, RecdIMEI, XOREncodedIMEI: array8;
Lookup1Cntr, RollOver1, RollOver2: byte;
const
{$I maskarr.inc} //maskarray
{$I tblook1.inc}
{$I tblook2.inc}
{$I tblook3.inc}
DecodeIMEIMask:array8=($4A,$33,$78,$90,$11,$AF,$F2
,$3C);
EncodeIMEIMask:array8=($30,$49,$02,$EA,$6B,$D5,$88
,$46);
BitsOrder:array[0..16] of byte=(0,3,6,1,4,7,2,5,0,3,6,1,4,7,2,5,0);


procedure dct4_CalcSP(SomeImei: string; var SLMatrix: TSLMatrix);

implementation

procedure XORIMEI(Mask,SourceImei: array8; var DestIMEI: array8);
var f: integer;
a: byte;
begin
for f:=0 to 7 do begin
a:=Mask[f];
DestIMEI[f]:=SourceIMEI[f] xor a;
end;
end;

procedure MaskIMEI(var SomeRollOver: byte; Idx: integer; SomeMirror: array8; var DestIMEI: array8);
var f,g: integer;
a: byte;
begin
g:=0;
for f:=Idx to (Idx+7) do begin
a:=MaskArray[f] xor $FF;
inc(SomeRollOver,a);
DestIMEI[g]:=SomeMirror[g] xor a;
inc(g);
end;
end;

function Lookup1(var Counter: byte; SomeXorEncodedIMEI: array8):byte;
var a,R0,R6,R7: byte;
f: integer;
begin
Lookup1:=0;
if Counter>136 then exit;
R6:=Counter;a:=R6;
inc(Counter);
a:=a and 7;
a:=SomeXOREncodedIMEI[a];
R7:=a;
a:=R6;

//a:=(a shr 3) and $1F;
asm
push ax
mov al,a
rcr al,1
rcr al,1
rcr al,1
and al,$1F
mov a,al
pop ax
end;
a:=BitsOrder[a];
R0:=a;
a:=R7;
//inc(R0);
for f:=1 to R0 do begin
asm
push ax
mov al,a
rol al,1
mov a, al
pop ax
end;
end;
R7:=a;
a:=R6;
a:=TblLookup3[a] xor $FF;
inc(a,R7);
R7:=a;
Lookup1:=R7;
end;

procedure Calc_1(SomeXorEncodedIMEI: array8; var DestIMEI: array8);
var
f: integer;
LookUpCtr: byte;
a,b: byte;
begin
LookupCtr:=0;
for f:=0 to 7 do begin
//no-lookup operations here
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
DestIMEI[0]:=DestIMEI[0] xor a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
DestIMEI[1]:=DestIMEI[1] + a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
DestIMEI[2]:=DestIMEI[2] + a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
DestIMEI[3]:=DestIMEI[3] xor a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
DestIMEI[4]:=DestIMEI[4] xor a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
DestIMEI[5]:=DestIMEI[5] + a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
DestIMEI[6]:=DestIMEI[6] + a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
DestIMEI[7]:=DestIMEI[7] xor a;
//Lookup operations here
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
b:=TblLookup1[DestIMEI[0]] xor $FF;
DestIMEI[0]:=b+a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
b:=TblLookup2[DestIMEI[1]] xor $FF;
DestIMEI[1]:=b xor a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
b:=TblLookup2[DestIMEI[2]] xor $FF;
DestIMEI[2]:=b xor a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
b:=TblLookup1[DestIMEI[3]] xor $FF;
DestIMEI[3]:=b+a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
b:=TblLookup1[DestIMEI[4]] xor $FF;
DestIMEI[4]:=b+a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
b:=TblLookup2[DestIMEI[5]] xor $FF;
DestIMEI[5]:=b xor a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
b:=TblLookup2[DestIMEI[6]] xor $FF;
DestIMEI[6]:=b xor a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
b:=TblLookup1[DestIMEI[7]] xor $FF;
DestIMEI[7]:=b+a;
//Permutations here
a:=DestIMEI[0]; //perm 1
inc(a,DestIMEI[1]);
DestIMEI[1]:=a;
inc(a,DestIMEI[0]);
DestIMEI[0]:=a;
a:=DestIMEI[2]; //perm 2
inc(a,DestIMEI[3]);
DestIMEI[3]:=a;
inc(a,DestIMEI[2]);
DestIMEI[2]:=a;
a:=DestIMEI[4]; //perm 3
inc(a,DestIMEI[5]);
DestIMEI[5]:=a;
inc(a,DestIMEI[4]);
DestIMEI[4]:=a;
a:=DestIMEI[6]; //perm 4
inc(a,DestIMEI[7]);
DestIMEI[7]:=a;
inc(a,DestIMEI[6]);
DestIMEI[6]:=a;
a:=DestIMEI[0]; //perm 5
inc(a,DestIMEI[2]);
DestIMEI[2]:=a;
inc(a,DestIMEI[0]);
DestIMEI[0]:=a;
a:=DestIMEI[4]; //perm 6
inc(a,DestIMEI[6]);
DestIMEI[6]:=a;
inc(a,DestIMEI[4]);
DestIMEI[4]:=a;
a:=DestIMEI[1]; //perm 7
inc(a,DestIMEI[3]);
DestIMEI[3]:=a;
inc(a,DestIMEI[1]);
DestIMEI[1]:=a;
a:=DestIMEI[5]; //perm 8
inc(a,DestIMEI[7]);
DestIMEI[7]:=a;
inc(a,DestIMEI[5]);
DestIMEI[5]:=a;
a:=DestIMEI[0]; //perm 9
inc(a,DestIMEI[4]);
DestIMEI[4]:=a;
inc(a,DestIMEI[0]);
DestIMEI[0]:=a;
a:=DestIMEI[1]; //perm 10
inc(a,DestIMEI[5]);
DestIMEI[5]:=a;
inc(a,DestIMEI[1]);
DestIMEI[1]:=a;
a:=DestIMEI[2]; //perm 11
inc(a,DestIMEI[6]);
DestIMEI[6]:=a;
inc(a,DestIMEI[2]);
DestIMEI[2]:=a;
a:=DestIMEI[3]; //perm 12
inc(a,DestIMEI[7]);
DestIMEI[7]:=a;
inc(a,DestIMEI[3]);
DestIMEI[3]:=a;
//Final swap //perm 13
a:=DestIMEI[1];
DestIMEI[1]:=DestIMEI[4];
DestIMEI[4]:=DestIMEI[2];
DestIMEI[2]:=a;
a:=DestIMEI[3];
DestIMEI[3]:=DestIMEI[5];
DestIMEI[5]:=DestIMEI[6];
DestIMEI[6]:=a;
end;

a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
DestIMEI[0]:=DestIMEI[0] xor a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
DestIMEI[1]:=DestIMEI[1] + a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
DestIMEI[2]:=DestIMEI[2] + a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
DestIMEI[3]:=DestIMEI[3] xor a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
DestIMEI[4]:=DestIMEI[4] xor a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
DestIMEI[5]:=DestIMEI[5] + a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
DestIMEI[6]:=DestIMEI[6] + a;
a:=lookup1(LookUpCtr,SomeXorEncodedIMEI);
DestIMEI[7]:=DestIMEI[7] xor a;
end;

function Hex2int(Digit: Char): byte;
var b: byte;
c: char;
begin
c:=Digit;
b:=ord(c);
if (b<=$39) and (b>=$30) then b:=b-$30
else
b:=b-$41+10;
Hex2Int:=b;
end;

procedure dct4_CalcSP(SomeImei: string; var SLMatrix: TSLMatrix);
var
f,g,h: integer;
a,b: byte;
begin
f:=0;g:=0;
FillChar(SLMatrix,SizeOf(SLMatrix),0);
repeat
a:=(Hex2Int(SomeIMEI[f+1]))*16;
b:=Hex2Int(SomeIMEI[f+2]);
RecdIMEI[g]:=a + b;
inc(f,2);
inc(g);
until f=14;
RecdIMEI[7]:=$00;

for f:=0 to 7 do MirrorRecdIMEI[f]:=0; //Initialize mirror array

XORIMEI(DecodeIMEIMask,RecdIMEI,XOREncodedIMEI); //calculate XOR Encoded IMEI
RollOver1:=0; RollOver2:=0; //init CRC counters
f:=0;
repeat
MaskIMEI(RollOver1, f, MirrorRecdIMEI, Calced8Bytes);
Calc_1(XorEncodedIMEI, Calced8Bytes);
h:=0;
for g:=f to (f+7) do begin
a:=Calced8Bytes[h];
mirrorrecdimei[h]:=a;
SLMatrix[g]:=a; inc(h);
inc(RollOver2,a);
end;
inc(f,8);
until f=$3a0;

//Here calculation of verification data
Calced8Bytes[0]:=RollOver1;
Calced8Bytes[1]:=not RollOver1;
Calced8Bytes[2]:=RollOver2;
Calced8Bytes[3]:=not RollOver2;
Calced8Bytes[4]:=$5B;
Calced8Bytes[5]:=$72;
Calced8Bytes[6]:=$AE;
Calced8Bytes[7]:=$36;
XORIMEI(EncodeIMEIMask,RecdIMEI,XOREncodedIMEI);
Calc_1(XorEncodedIMEI, Calced8Bytes);
for f:=$3a0 to $3a7 do SLMatrix[f]:=Calced8Bytes[f-$3a0];
end;

end.

page
28-02-2003, 03:03 PM
can you tell me in which forum you found it?
thanks page

Paradox
28-02-2003, 03:27 PM
Is it possible to make a dongle by my own? Is it only LPT with some kind of integrated circuit or is it programmed hardware?

Paradox

Scotty1973
28-02-2003, 03:29 PM
http://www.gsmfreeboard.com/

- Mobilfunk
- Nokia Forum
- DCT-4 Flasher Forum (Flash / Update / Unlock)
- MastercodeGenerator DTC4 erstellt von coyote77

first page, 6th post from the top...

regards Scotty :)

ahib
28-02-2003, 03:38 PM
hi if you open the JIC unlocker the one everyone uses for old dct4 8310prior to v557 look in the files/xtensions e.t.c you will see tblook & algopas unit open th4ese in notepad you will come up with the printout that you just displayed above.NOT sure if its exactly same as this could be NEW BUT I think its OLD:(

Scotty1973
28-02-2003, 04:18 PM
it was worth a try...

Scotty :)

scottjohnmiller
28-02-2003, 11:04 PM
The coding is Pascal/Delphi and cannot be compiled because it relies up on several files, MBUS_Commands, and some matrix table element inc files.

If these files were found it would be possible to progress a lot further into the generation of unlock codes for dct4, so if anyone has the files, post up.

Miller