GSM Shop GSM Shop
GSM-Forum  

Welcome to the GSM-Forum forums.

You are currently viewing our boards as a guest which gives you limited access to view most discussions and access our other features.
Only registered members may post questions, contact other members or search our database of over 8 million posts.

Registration is fast, simple and absolutely free so please - Click to REGISTER!

If you have any problems with the registration process or your account login, please contact contact us .

Go Back   GSM-Forum > Other Gsm/Mobile Related Forums > GSM Programming & Reverse Engineering

GSM Programming & Reverse Engineering Here you can post all Kind of GSM Programming and Reverse Engineering tools and Secrets.

Reply
 
LinkBack Thread Tools Display Modes
Old 01-08-2002, 03:53   #1 (permalink)
Junior Member
 
Join Date: Sep 2001
Posts: 1
Member: 6495
Status: Offline
Thanks Meter: 0
Post Siemens MAP MAKER, SOURCE CODE here


I don't know DELPHI programming<br />but i hope this will help us

------------------------

Unit SiemUnitM;

Interface

Uses<br /> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,<br /> OoMisc, AdPort, ComCtrls, Gauges, StdCtrls, ExtCtrls, Mask, Registry;

Type<br /> MyArr = Array[1..04] of Byte;<br /> Arr10 = Array[1..10] of Byte;<br /> Arr08 = Array[1..08] of Byte;<br /> TIForm = Class(TForm)<br /> MyStatus: TStatusBar;<br /> MyPages: TPageControl;<br /> CalcPage: TTabSheet;<br /> TabSheet1: TTabSheet;<br /> ComPort: TApdComPort;<br /> GetBtn: TButton;<br /> MySave: TSaveDialog;<br /> MyOpen: TOpenDialog;<br /> MyTimer: TTimer;<br /> OKButton: TButton;<br /> Label1: TLabel;<br /> MyMemo: TMemo;<br /> PortPage: TTabSheet;<br /> Label4: TLabel;<br /> OldIMEICombo: TComboBox;<br /> PassPage: TTabSheet;<br /> Gro*****1: TGro*****;<br /> TxtEdit: TEdit;<br /> TxtLab: TLabel;<br /> Gro*****3: TGro*****;<br /> ActivateBtn: TButton;<br /> StringRad: TRadioButton;<br /> HEXRad: TRadioButton;<br /> PortBox: TGro*****;<br /> Label18: TLabel;<br /> BaudCombo: TComboBox;<br /> Label6: TLabel;<br /> Dongle: TComboBox;<br /> Gro*****2: TGro*****;<br /> Image1: TImage;<br /> Image2: TImage;<br /> MyPanel: TPanel;<br /> LiveProgress: TProgressBar;<br /> ResetBtn: TButton;<br /> Gro*****4: TGro*****;<br /> Label3: TLabel;<br /> Label2: TLabel;<br /> PhoneID: TComboBox;<br /> NewIMEICombo: TComboBox;<br /> IMEIEdit: TMaskEdit;<br /> IDEdit: TMaskEdit;<br /> Edit1: TEdit;<br /> Edit2: TEdit;<br /> ReadBtn: TGro*****;<br /> SaveBtn: TButton;<br /> OpenBtn: TButton;<br /> AddBtn: TButton;<br /> PhoneCombo: TComboBox;<br /> Label5: TLabel;<br /> MPhoneCombo: TComboBox;<br /> Label7: TLabel;<br /> PhoneEdit: TEdit;<br /> Edit3: TEdit;<br /> Procedure ComPortTriggerAvail(CP: TObject; Count: Word);<br /> Function SendHexString(St, Response: String; Stp: Integer): Boolean;<br /> Function SendHexCRCString(St, Response: String; Stp: Integer): Boolean;<br /> Function GetCOMData(Count: Integer): String;<br /> Function GetIMEIString(St: String): String;<br /> Procedure CreateBlocks5009And76(How: Byte);<br /> Procedure DoSomeTrickyCalculations(Vls: Byte; Var Arr: Arr10);<br /> Procedure ConvertToBCD(Idx: Integer; MyIMEI: String);<br /> Function DoLikeProcedure0323: Word;<br /> Procedure ConvertIMEIToWords;<br /> Procedure Operation01WithWords01;<br /> Function GetCRCOfWords01: Word;<br /> Procedure CreateIMEISpecificBlocks(Im, ID: String);<br /> Procedure GetPhoneID(Var Cod18: MyArr; Idx: Integer);<br /> Procedure FormCreate(Sender: TObject);<br /> Procedure GetCounter;<br /> Procedure FormActivate(Sender: TObject);<br /> Procedure MyTimerTimer(Sender: TObject);<br /> Procedure OKButtonClick(Sender: TObject);<br /> Procedure ActivateBtnClick(Sender: TObject);<br /> Procedure CreateIMEISpecificBlocksC45;

Procedure CRCTheStrangeHeader;<br /> Procedure CRCTheMainPartOf5008;<br /> Procedure CRCTheMainPartOf5077;

procedure FormClose(Sender: TObject; var Action: TCloseAction);<br /> Procedure CreateAdditionalySomeIMEI(Im, ID: String);<br /> Procedure ConvertToC30BCD(St: String);

Procedure GetR4R5(Idx: Integer; MyIMEI: String; Dn: Byte);<br /> Procedure GosubC750B8(Var Cod10: Arr08; Var Cod18: MyArr; Var Cod0C: MyArr; Var Cod00: Arr10);<br /> Procedure GosubC75038Next(Var Cod10: Arr08; Var Cod00: Arr10; Var Cod0C: MyArr);<br /> Procedure GosubC75038(Var Cod10: Arr08; Var Cod00: Arr10; Var Cod0C: MyArr);<br /> Procedure Encript(Mask: Array of Byte; Var Target: Array of Byte; ImSn, Size, Off, Sbs: Word);<br /> Procedure DoSomeTrickyCalculationsC35(Vls: Byte; Var Arr: Arr10);<br /> Procedure CreateIMEISpecificBlocksC35(IMEI: String; ID: String);<br /> Procedure CreateIMEISpecificBlocksC30(IMEI: String; ID: String);<br /> Procedure GetPhoneIDC35(Var Cod18: MyArr; Idx: Integer);<br /> Procedure GetConvertedIMEI(Var Cod00: Arr10);<br /> Function ConvertIDIntoDWord(XKey: Word; Var Enc00: Array of Byte): DWord;<br /> Procedure EncriptC30HiddenBlocks(Ln: Word; XKey: Word; Var Decod: Array of Byte; Ad: Word);<br /> Procedure ConvertToPhoneID(ID: String);<br /> Procedure Gosub4FD7EC(Key, Ln: Word);<br /> procedure AddBtnClick(Sender: TObject);<br /> Procedure EnableSaveButton;<br /> procedure MPhoneComboClick(Sender: TObject);<br /> procedure PhoneIDClick(Sender: TObject);<br /> procedure NewIMEIComboClick(Sender: TObject);<br /> procedure PhoneComboClick(Sender: TObject);<br /> Procedure C30LongIDCorrection;<br /> procedure OpenBtnClick(Sender: TObject);<br /> Function GetPhoneModelIndex(St: String): Integer;<br /> Procedure ReadTheLOGFile;<br /> procedure SaveBtnClick(Sender: TObject);<br /> Function GetTotalSize: Integer;<br /> End;

Var<br /> Nb: Byte;<br /> BCD: Arr08;<br /> CRC, Nw: Word;<br /> IForm: TIForm;<br /> DWordID: DWord;<br /> DoStop: Boolean;<br /> MyReg: TRegistry;<br /> OldPhone: Integer = 1;<br /> BGs, RNDCode: Integer;<br /> SkipMask: Boolean = False;<br /> Res, Keys, Const10, Const11: Word;<br /> SReads, SUnlock, PhoneID, NewIMEI, Paths, ReString: String;<br /> B08Sz: Array[0..9] of Word = ($5FC, $D2, $D2, $E0, $E0, $E0, $E0, $E0, $E0, $E0);<br /> B77Sz: Array[0..9] of Word = ($000, $DE, $DE, $E8, $E8, $E8, $E8, $E8, $E8, $E8);<br /> Ssz: Array[0..9] of Integer = ($1C8, $1B0, $1B0, $1C8, $1C8, $1C8, $010, $1C8, $1C8, $1C8);<br /> CmxAr: Array[0..9] of Integer = (00, 01, 02, 03, 04, 05, 06, 07, 08, 09);<br /> Cmd: Array[0..9] of Byte = ($80, $81, $82, $83, $84, $85, $86, $87, $88, $89);<br /> Baud: Array[0..6] of Integer = (9600, 19200, 28800, 38400, 57600, 115200, 1200);<br /> InSt, IMEI, MyName, St, Im, B5009Text, B0001Text, IMEIIDString, Ctr: String;

Pars: Array[0..9, 0..7] of Byte = (($E1,$CD,$3D,$A1,$E6,$71,$21,$FE), // C30<br /> ($E8,$2D,$AA,$92,$E1,$0E,$9F,$51), // C35<br /> ($E8,$2D,$AA,$92,$E1,$0E,$9F,$51), // S35<br /> ($F1,$14,$AE,$46,$4F,$44,$15,$39), // A35<br /> ($F1,$14,$AE,$46,$4F,$44,$15,$39), // A36<br /> ($F1,$14,$AE,$46,$4F,$44,$15,$39), // A40<br /> ($42,$77,$DE,$8F,$37,$1A,$12,$83), // C45<br /> ($42,$77,$DE,$8F,$37,$1A,$12,$83), // S45<br /> ($42,$77,$DE,$8F,$37,$1A,$12,$83), // Me45<br /> ($F1,$14,$AE,$46,$4F,$44,$15,$39)); // SL45

// Siemens C30 ............. 80<br />// Siemens C35 ............. 81<br />// Siemens S35 ............. 82<br />// Siemens A35 ............. 83<br />// Siemens A36 ............. 84<br />// Siemens A40 ............. 85<br />// Siemens C45 ............. 86<br />// Siemens S45 ............. 87<br />// Siemens Me45 ............ 88<br />// Siemens SL45 ............ 89

CodROM00: Array[1..20] of Byte = ($A0, $0D, $3D, $F4, 0,0,0,0, $48, $4F, $3D, $03, 0,0,0,0, $DB, $00, $28, $C2);<br /> CodROM01: Array[1..28] of Byte = ($88, $60, $88, $70, 0,0,0,0, $98, $60, $CB, $00, 0,0,0,0, $F0, $7D, $F0, $4E, 0,0,0,0, $02, $00, $D4, $26);<br /> CodeTable00: Array[0..15] of Byte = ($02, $06, $0A, $0E, $00, $05, $07, $09, $0B, $01, $0D, $03, $0F, $0C, $04, $08);<br /> CodeTable01: Array[0..15] of Byte = ($04, $0D, $02, $06, $01, $0F, $00, $0C, $03, $08, $0B, $07, $0E, $0A, $05, $09);<br /> CodeTable02: Array[0..15] of Byte = ($00, $0F, $0A, $0A, $0B, $06, $02, $09, $0A, $0C, $0E, $08, $01, $05, $00, $0E);<br /> CodeTable03: Array[0..15] of Byte = ($0B, $00, $07, $0D, $03, $00, $0C, $0F, $0E, $00, $0F, $08, $02, $05, $01, $09);

StrangeHeader: Array[1..$18] of Byte = ($00, $03, $00, $00, $00, $67, $00, $00,<br /> $00, $00, $00, $00, $FF, $00, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $00, $FF, $62, $64);

MainBody5008: Array[1..$B2] of Byte = ($FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $1F, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $70, $E0);

MainBody5077: Array[1..$DA] of Byte = ($FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $1F, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,<br /> $13, $88, $3D, $11, $41, $07, $3D, $11,<br /> $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00,<br /> $EF, $3D);

Def2E: Array[0..41] of Byte = ($00, $00, $00, $00, $02, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $A0, $20, $00, $00, $00, $00, $00, $00, $10, $41);

Def0C: Array[0..07] of Byte = ($29, $55, $30, $30, $09, $40, $27, $71);

Def10: Array[0..11] of Byte = ($02, $FE, $00, $0A, $0A, $0A, $0A, $0A, $0A, $0A, $0A, $A5);

Def22: Array[0..29] of Byte = ($24, $24, $2C, $24, $50, $24, $2E, $2E, $0A, $0A, $0A, $00,<br /> $00, $0A, $00, $00, $00, $00, $00, $00, $00, $01, $01, $01,<br /> $00, $00, $00, $00, $41, $10);

Def44: Array[0..63] of Byte = ($11, $11, $22, $22, $FF, $FF, $FF, $FF, $11, $11, $22, $22, $FF, $FF, $FF, $FF,<br /> $11, $11, $22, $22, $FF, $FF, $FF, $FF, $11, $11, $22, $22, $FF, $FF, $FF, $FF,<br /> $11, $11, $22, $22, $FF, $FF, $FF, $FF, $11, $11, $22, $22, $FF, $FF, $FF, $FF,<br /> $11, $11, $22, $22, $FF, $FF, $FF, $FF, $11, $11, $22, $22, $FF, $FF, $FF, $FF);

Def40: Array[0..59] of Byte = ($32, $00, $01, $00, $00, $00, $00, $20, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $80, $00, $00, $80, $00, $00, $80, $00, $00, $55);

DefFF: Array[0..255] of Byte = ($00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,<br /> $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00);

Idx, Stt, VMax, Step, Code, Cout, DvID, Cmx: Integer;<br /> Data: Array[1..65536] of Byte;<br /> Bytes01: Array[1..08] of Byte;<br /> Bytes02: Array[1..08] of Byte;<br /> Bytes03: Array[1..05] of Byte;<br /> Bytes04: Array[1..05] of Byte;<br /> Words00: Array[1..64] of Word;<br /> Words01: Array[1..64] of Word;<br /> Bytes05, B5009, B0001: Arr10;<br /> Outs: Array[1..1000] of Byte;<br /> Resp: Array[1..50] of String;<br /> Enc5008: Array[0..223] of Byte;<br /> Enc5077: Array[0..233] of Byte;<br /> Blc5008: Array[1..224] of Byte;<br /> Blc5077: Array[1..234] of Byte;<br /> MyBoot: Array[0..$10000] of Byte;<br /> ButKey: Array[0..$02000] of Byte;<br /> Encod: Array[0..65000] of Byte;<br /> Cod08: Array[0..258] of Byte;<br /> Enc00: Array[0..11] of Byte;<br /> Dec00: Array[0..11] of Byte;<br /> CodE2: Array[0..3] of DWord;<br /> Cod00: Array[0..7] of Byte;

SMask00: Array[1..$B4] of Byte;<br /> SMask02: Array[1..$DC] of Byte;<br /> SMask01: Array[1..$1A] of Byte;<br /> Def00: Array[0..1023] of Byte;<br /> PhID: Array[0..07] of Byte;<br /> Cod0C: MyArr;

Procedure GosubC7D524(Var Cods08: Array of Byte; Var CodsE2: Array of DWord; Num: Byte);<br />Procedure GosubC7D5CE(Var Cods08: Array of Byte; Var Encod: Array of Byte; Idx: Word; Var Cods00: Array of Byte; Num: Byte);

Implementation

Uses PWrite;

{$R *.DFM}

Procedure TIForm.CreateBlocks5009And76(How: Byte);<br />Var<br /> BP09, BP07, BP0A, BP0B, BP0C: Byte;<br /> I,J, SI: Integer;<br /> Res, BP04: Word;<br /> Ss, Sm: String;<br />Begin

For I := 1 to 8 Do<br /> Begin<br /> Bytes01[I] := 0;<br /> Bytes02[I] := 0;<br /> End;

J := 1; SI := 1;<br /> ConvertToBCD(0, IMEI);<br /> Res := DoLikeProcedure0323;<br /> BP04 := (Res And $FF);<br /> Bytes01[1] := 10; I := 1;<br /> While I &lt; 15 Do<br /> Begin<br /> St := Copy(IMEI, I, 1);<br /> Val(St, BP07, Code);<br /> If (I Mod 2) &lt;&gt; 0 Then<br /> Begin<br /> BP09 := (BP07 Shl 04);<br /> Bytes01[J] := Bytes01[J] Or BP09;<br /> Inc(J);<br /> Inc(I);<br /> Bytes02[SI] := 0;<br /> Bytes02[SI] := Bytes02[SI] Or BP07;<br /> End<br /> Else<br /> Begin<br /> Bytes01[J] := 0;<br /> Bytes01[J] := Bytes01[J] Or BP07;<br /> Bytes02[SI] := Bytes02[SI] Or (BP07 Shl 04);<br /> Inc(SI);<br /> Inc(I);<br /> End;<br /> End;<br /> Bytes02[SI] := Bytes02[SI] Or (BP04 Shl 4);<br /> I := 1;<br /> BP0A := 0;<br /> BP0B := 0;<br /> While I &lt;= 8 Do<br /> Begin<br /> If (I Mod 2) &lt;&gt; 0 Then BP0B := BP0B Xor Bytes02[I]<br /> Else BP0A := BP0A Xor Bytes02[I];<br /> Inc(I);<br /> End;<br /> BP0C := Not (BP0A Xor BP0B);<br /> I := 1;<br /> While I &lt;= 9 Do<br /> Begin<br /> B5009[I] := Bytes02[I];<br /> B0001[I] := Bytes02[I];<br /> Inc(I);<br /> End;<br /> B5009[09] := BP0A;<br /> B0001[09] := BP0B;<br /> B5009[10] := BP0C;<br /> B0001[10] := BP0C;

DoSomeTrickyCalculations(Pars[Cmx, 0], B5009);<br /> DoSomeTrickyCalculations(Pars[Cmx, 1], B0001);<br /> DoSomeTrickyCalculations(Pars[Cmx, 2], B5009);<br /> DoSomeTrickyCalculations(Pars[Cmx, 3], B0001);<br /> DoSomeTrickyCalculations(Pars[Cmx, 4], B5009);<br /> DoSomeTrickyCalculations(Pars[Cmx, 5], B0001);<br /> DoSomeTrickyCalculations(Pars[Cmx, 6], B5009);<br /> DoSomeTrickyCalculations(Pars[Cmx, 7], B0001);

St := '';<br /> Ss := '';<br /> Sm := '';<br /> For I := 1 to 10 Do<br /> Begin<br /> If I = 10 Then Sm := '';<br /> St := St + '0x' + IntToHex(B5009[I], 02) + Sm + ' ';<br /> Ss := Ss + '0x' + IntToHex(B0001[I], 02) + Sm + ' ';<br /> End;<br /> B0001Text := Ss;<br /> B5009Text := St;<br />End;

Procedure TIForm.DoSomeTrickyCalculations(Vls: Byte; Var Arr: Arr10);<br />Var<br /> I, Nm: Integer;<br /> J: Byte;<br />Begin<br /> Bytes05 := Arr;

For I := 1 to 5 Do<br /> Begin<br /> J := (Arr[I] Shr 04) And $0F;<br /> If Cmx = 6 Then Nm := CodeTable02[J]<br /> Else Nm := CodeTable00[J];<br /> Bytes03[I] := (Nm Shl 04);<br /> J := (Arr[I] And $0F);<br /> If Cmx = 6 Then Nm := CodeTable03[J]<br /> Else Nm := CodeTable01[J];<br /> Bytes03[I] := Bytes03[I] Or Nm;<br /> End;

For I := 1 to 5 Do<br /> If (I Mod 2) &lt;&gt; 0 Then Bytes04[I] := Bytes03[I] Xor Vls<br /> Else Bytes04[I] := (Not Bytes03[I]) Xor Vls;

For I := 1 to 5 Do<br /> Arr[I] := Bytes04[I] Xor Bytes05[I + 5];<br /> For I := 1 to 5 Do<br /> Arr[I + 5] := Bytes05[I];<br />End;

Function TIForm.DoLikeProcedure0323: Word;<br />Var<br /> BP10, BP12: Word;<br />Begin<br /> ConvertIMEIToWords;<br /> Operation01WithWords01;<br /> CRC := GetCRCOfWords01;<br /> BP10 := (CRC Mod 10);<br /> BP12 := (CRC Div 10);<br /> If BP10 = 0 Then Result := 0<br /> Else Result := (BP12+1)*10-CRC;<br />End;

Procedure TIForm.ConvertToBCD(Idx: Integer; MyIMEI: String);<br />Var<br /> I: Integer;<br />Begin<br /> I := 1;<br /> Im := MyIMEI;

BCD[I] := 10;<br /> While I &lt; 8 Do<br /> Begin<br /> St := Copy(Im, 1, 1);<br /> Val(St, Nb, Code);<br /> BCD[I] := BCD[I] Or (Nb Shl 04);<br /> St := Copy(Im, 2, 1);<br /> Val(St, Nb, Code);<br /> Inc(I);<br /> BCD[I] := Nb;<br /> Im := Copy(Im, 3, Length(Im));<br /> End;<br />End;

Procedure TIForm.ConvertIMEIToWords;<br />Var<br /> I: Integer;<br />Begin<br /> For I := 1 to 14 Do<br /> Begin<br /> St := Copy(IMEI, I, 1);<br /> Val(St, Nw, Code);<br /> Words00[I] := Nw;<br /> End;<br /> Words00[15] := $0000;<br /> Words00[16] := $FFFF;<br />End;

Procedure TIForm.Operation01WithWords01;<br />Var<br /> I, J: Integer;<br /> BP06: Word;<br /> BP0C: Word;<br /> BP0E: Word;<br />Begin<br /> I := 1; J := 1;<br /> While Words00[I] &lt;&gt; $FFFF Do<br /> Begin<br /> If (I Mod 2) &lt;&gt; 0 Then<br /> Words01[J] := Words00[I]<br /> Else<br /> Begin<br /> BP06 := (Words00[I] Shl 01);<br /> If BP06 &lt;= 09 Then Words01[J] := BP06<br /> Else<br /> Begin<br /> BP0C := (BP06 Mod 10);<br /> BP0E := (BP06 Div 10);<br /> Words01[J+0] := BP0E;<br /> Words01[J+1] := BP0C;<br /> Inc(J);<br /> End;<br /> End;<br /> Inc(I);<br /> Inc(J);<br /> End;<br /> Words01[J] := $FFFF;<br />End;

Function TIForm.GetCRCOfWords01: Word;<br />Var<br /> I: Integer;<br />Begin<br /> I := 1;<br /> Result := 0;<br /> While Words01[I] &lt;&gt; $FFFF Do<br /> Begin<br /> Result := Result + Words01[I];<br /> Inc(I);<br /> End;<br />End;

Function TIForm.GetIMEIString(St: String): String;<br />Begin<br /> Result := Copy(St, 01, 06);<br /> Result := Result + Copy(St, 08, 02);<br /> Result := Result + Copy(St, 11, 06);<br /> Result := Result + Copy(St, 18, 02);<br />End;

Function TIForm.GetCOMData(Count: Integer): String;<br />Var<br /> I: Integer;<br />Begin<br /> Result := '';<br /> For I := 1 to Count Do<br /> Result := Result + IntToHex(Byte(ComPort.GetChar), 02);<br />End;

Procedure TIForm.ComPortTriggerAvail(CP: TObject; Count: Word);<br />Var<br /> Rs: String;<br /> I, Ct: Integer;<br />Begin<br /> Ct := 0;<br /> If Step = 40 Then<br /> Begin<br /> For I := 1 to Count Do<br /> Begin<br /> Inc(Ct);<br /> Outs[Idx] := Byte(ComPort.GetChar);<br /> If Idx = VMax Then Break;<br /> Inc(Idx);<br /> End;<br /> If Idx = VMax Then Inc(Step);<br /> LiveProgress.Position := Stt + Idx;<br /> End;<br /> Dec(Count, Ct);<br /> If Count = 0 Then Exit;<br /> If Step &gt; 40 Then Step := 1;<br /> InSt := GetCOMData(Count);<br /> Rs := Resp[Step];<br /> If Pos(Rs, InSt) &gt; 0 Then Inc(Step);<br />End;

Function TIForm.SendHexCRCString(St, Response: String; Stp: Integer): Boolean;<br />Var<br /> I, Lg, Cd: Integer;<br /> Bt, CRC: Byte;<br />Begin<br /> I := 1;<br /> CRC := 0;<br /> Result := True;<br /> Lg := Length(St);<br /> Resp[Stp] := Response;<br /> While I &lt; Lg Do<br /> Begin<br /> Val('$' + Copy(St, I, 2), Bt, Cd);<br /> ComPort.PutChar(Char(Bt));<br /> CRC := CRC Xor Bt;<br /> Inc(I, 2);<br /> End;<br /> ComPort.PutChar(Char(CRC));<br /> If Stp = 0 Then Exit;

Step := Stp;<br /> While Step = Stp Do<br /> If DoStop Then Exit Else<br /> Application.ProcessMessages;

Result := False;<br />End;

Function TIForm.SendHexString(St, Response: String; Stp: Integer): Boolean;<br />Var<br /> I, Lg, Cd: Integer;<br /> Bt: Byte;<br />Begin<br /> I := 1;<br /> Result := True;<br /> Lg := Length(St);<br /> Resp[Stp] := Response;<br /> While I &lt; Lg Do<br /> Begin<br /> Val('$' + Copy(St, I, 2), Bt, Cd);<br /> ComPort.PutChar(Char(Bt));<br /> Inc(I, 2);<br /> End;

If Stp = 0 Then Exit;

Step := Stp;<br /> While Step = Stp Do<br /> If DoStop Then Exit Else<br /> Application.ProcessMessages;

Result := False;<br />End;

Procedure TIForm.CreateIMEISpecificBlocks(Im, ID: String);<br />Var<br /> Cod18: MyArr;<br /> Nb: Integer;<br />Begin<br /> IMEIIDString := ID;<br /> DoStop := False;<br /> GetPhoneID(Cod18, -1);<br /> ComPort.Open := False;<br /> ComPort.ComNumber := Dongle.ItemIndex + 1;<br /> ComPort.Baud := 115200; ComPort.Open := True;

Sleep(100);<br /> VMax := Ssz[Cmx];<br /> MyTimer.Enabled := True;<br /> MyTimer.Interval := 1000;<br /> MyTimer.Interval := 2000;<br /> MyPanel.Visible := True;

ComPort.PutChar(Char(Cmd[Cmx]));<br /> For Nb := 1 to 4 Do<br /> ComPort.PutChar(Char(Cod18[Nb]));<br /> For Nb := 1 to 8 Do<br /> ComPort.PutChar(Char(BCD[Nb]));

Idx := 1;<br /> Step := 40;<br /> DoStop := False;

While Step = 40 Do<br /> If DoStop Then Exit Else<br /> Application.ProcessMessages;

If Cmx &lt;&gt; 6 Then<br /> Begin<br /> For Nb := 0 to $DF Do<br /> Enc5008[Nb] := Outs[Nb + 1];<br /> For Nb := $E0 to $1C7 Do<br /> Enc5077[Nb - $E0] := Outs[Nb + 1];<br /> End<br /> Else<br /> Begin<br /> CodE2[00] := (Outs[01] Shl 00) Or (Outs[02] Shl 08) Or (Outs[03] Shl 16) Or (Outs[04] Shl 24);<br /> CodE2[01] := (Outs[05] Shl 00) Or (Outs[06] Shl 08) Or (Outs[07] Shl 16) Or (Outs[08] Shl 24);<br /> CodE2[02] := (Outs[09] Shl 00) Or (Outs[10] Shl 08) Or (Outs[11] Shl 16) Or (Outs[12] Shl 24);<br /> CodE2[03] := (Outs[13] Shl 00) Or (Outs[14] Shl 08) Or (Outs[15] Shl 16) Or (Outs[16] Shl 24);<br /> End;

MyTimer.Enabled := False;<br /> CreateAdditionalySomeIMEI(Im, ID);<br /> ComPort.Open := False;<br />End;

Procedure TIForm.GetPhoneID(Var Cod18: MyArr; Idx: Integer);<br />Var<br /> ID: Integer;<br />Begin<br /> Val('$' + IMEIIDString, ID, Code);<br /> Cod18[1] := (ID Shr 24) And $FF;<br /> Cod18[2] := (ID Shr 16) And $FF;<br /> Cod18[3] := (ID Shr 08) And $FF;<br /> Cod18[4] := (ID Shr 00) And $FF;<br />End;

Procedure TIForm.FormCreate(Sender: TObject);<br />Var<br /> Dg, Bd, Cd, Pn, Idx: Integer;<br />Begin<br /> Cout := -1;<br /> MyTimer.Enabled := False;<br /> MyPanel.Visible := False;<br /> LiveProgress.Position := 0;<br /> BaudCombo.ItemIndex := 5;<br /> PhoneCombo.ItemIndex := 1;<br /> OldPhone := PhoneCombo.ItemIndex;<br /> Paths := ExtractFilePath(Application.ExeName);<br /> Dongle.ItemIndex := 1;<br /> MyReg := TRegistry.Create;<br /> If MyReg.KeyExists('Software\Albun') Then<br /> Begin<br /> MyReg.OpenKey('Software\Albun', True);<br /> If MyReg.ReadString('X35Acknowledge') = 'Present' Then<br /> Begin<br /> St := MyReg.ReadString('X35LogActivePage'); Val(St, Idx, Cd);<br /> St := MyReg.ReadString('X35LogDongleCOM'); Val(St, Dg, Cd);<br /> St := MyReg.ReadString('X35LogPhoneType'); Val(St, Pn, Cd);<br /> St := MyReg.ReadString('X35LogBaudRate'); Val(St, Bd, Cd);<br /> MyPages.ActivePageIndex := Idx;<br /> PhoneCombo.ItemIndex := Pn;<br /> BaudCombo.ItemIndex := Bd;<br /> Dongle.ItemIndex := Dg;<br /> End;<br /> End<br /> Else<br /> MyReg.OpenKey('Software\Albun', True);<br /> OldPhone := PhoneCombo.ItemIndex;<br /> PhoneComboClick(Sender); <br /> EnableSaveButton;<br /> MyReg.Free;<br />End;

Procedure TIForm.GetCounter;<br />Begin<br /> Cout := -1;<br /> DoStop := False;<br /> MyPanel.Visible := False;<br /> Ctr := 'No hardware detected';<br /> Application.ProcessMessages;

ComPort.ComNumber := Dongle.ItemIndex + 1;<br /> ComPort.Baud := Baud[BaudCombo.ItemIndex];<br /> ComPort.Open := True;<br /> ComPort.PutChar(#$52);

Idx := 1;<br /> Step := 40;<br /> VMax := 30;<br /> LiveProgress.Max := 1000;

While Idx &lt; 5 Do<br /> If DoStop Then<br /> Begin<br /> ComPort.Open := False;<br /> Exit;<br /> End<br /> Else<br /> Application.ProcessMessages;

Cout := (Outs[1] Shl 08) Or (Outs[2] Shl 00);<br /> DvID := (Outs[4] Shl 08) Or (Outs[3] Shl 00);<br />// If Cout &lt;&gt; 0 Then Ctr := 'Counter: ' + IntToStr(Cout) + ', Device ID: ' + IntToHex(DvID, 04)<br /> If Cout &lt;&gt; 0 Then Ctr := 'Device ID: ' + IntToHex(DvID, 04)<br /> Else Ctr := 'Counter expired';<br /> ComPort.Open := False;<br />End;

Procedure TIForm.FormActivate(Sender: TObject);<br />Begin<br /> MyTimer.Enabled := True;<br /> MyTimer.Interval := 2000;<br /> MyTimer.Interval := 1000;<br /> MyStatus.Panels.Items[0].Text := 'Detecting hardware ...';<br /> GetCounter; MyStatus.Panels.Items[0].Text := Ctr;<br /> MyTimer.Enabled := False;<br />End;

Procedure TIForm.MyTimerTimer(Sender: TObject);<br />Begin<br /> DoStop := True;<br />End;

Procedure TIForm.OKButtonClick(Sender: TObject);<br />Begin<br /> MyPages.ActivePage := CalcPage;<br />End;

Procedure TIForm.ActivateBtnClick(Sender: TObject);<br />Begin<br /> DoStop := False;<br /> MyTimer.Enabled := True;<br /> MyTimer.Interval := 3000;<br /> MyTimer.Interval := 2000;<br /> MyStatus.Panels.Items[0].Text := 'Activating dongle ...';<br /> ComPort.ComNumber := Dongle.ItemIndex + 1;<br /> ComPort.Baud := 115200; ComPort.Open := True;<br /> If StringRad.Checked Then<br /> Begin<br /> Idx := 1;<br /> Step := 40;<br /> VMax := 30;

ComPort.PutString(TxtEdit.Text);<br /> ComPort.PutChar(#$00);

While (Idx &lt; 3) And (Not DoStop) Do<br /> Application.ProcessMessages;

Cout := (Outs[1] Shl 08) Or (Outs[2] Shl 00);<br /> If DoStop Then MyStatus.Panels.Items[0].Text := 'Incorrect password'<br /> Else FormActivate(Sender);<br /> End;

If HEXRad.Checked Then<br /> Begin<br /> Idx := 1;<br /> Step := 40;<br /> VMax := 30;

SendHexString(TxtEdit.Text, '00', 00);

While (Idx &lt; 3) And (Not DoStop) Do<br /> Application.ProcessMessages;

Cout := (Outs[1] Shl 08) Or (Outs[2] Shl 00);<br /> If DoStop Then MyStatus.Panels.Items[0].Text := 'Incorrect password'<br /> Else FormActivate(Sender);<br /> End;

MyTimer.Enabled := False;<br /> ComPort.Open := False;<br />End;

Procedure TIForm.FormClose(Sender: TObject; var Action: TCloseAction);<br />Begin<br /> DoStop := True;<br /> MyReg := TRegistry.Create;<br /> MyReg.OpenKey('Software\Albun', True);<br /> MyReg.WriteString('X35LogActivePage', IntToStr(MyPages.ActivePageIndex));<br /> MyReg.WriteString('X35LogBaudRate', IntToStr(BaudCombo.ItemIndex));<br /> MyReg.WriteString('X35LogDongleCOM', IntToStr(Dongle.ItemIndex));<br /> MyReg.WriteString('X35LogPhoneType', IntToStr(PhoneCombo.ItemIndex));<br /> MyReg.WriteString('X35Acknowledge', 'Present');<br /> MyReg.Free;<br />End;

Procedure GosubC7D524(Var Cods08: Array of Byte; Var CodsE2: Array of DWord; Num: Byte);<br />Var<br /> Nb, Nc00, Nc01, Nc02: Byte;<br /> Cd01: Array[0..15] of Byte;<br />Begin<br /> Nc01 := 00;<br /> Num := Num Shr 03;<br /> Cod08[00] := 00;<br /> Cod08[01] := 00;<br /> Cod08[02] := 00;<br /> For Nb := 0 to $FF Do<br /> Cods08[Nb + 03] := Nb;

For Nb := 0 to 3 Do<br /> Begin<br /> Cd01[Nb*4 + 00] := CodsE2[Nb] Shr 00;<br /> Cd01[Nb*4 + 01] := CodsE2[Nb] Shr 08;<br /> Cd01[Nb*4 + 02] := CodsE2[Nb] Shr 16;<br /> Cd01[Nb*4 + 03] := CodsE2[Nb] Shr 24;<br /> End;

For Nb := 0 to $FF Do<br /> Begin<br /> Nc00 := Nb Mod Num;<br /> Nc00 := Cd01[Nc00];<br /> Nc01 := Nc01 + Nc00 + Cods08[Nb + 3];<br /> Nc00 := Cods08[Nc01 + 3];<br /> Nc02 := Cods08[Nb + 3];<br /> Cods08[Nb + 3] := Nc00;<br /> Cods08[Nc01 + 3] := Nc02;<br /> End;<br />End;

Procedure GosubC7D5CE(Var Cods08: Array of Byte; Var Encod: Array of Byte; Idx: Word; Var Cods00: Array of Byte; Num: Byte);<br />Var<br /> Rl6, Rl3, Rl1, Rl7, Nb: Byte;<br />Begin<br /> Rl6 := Cods08[00];<br /> Rl3 := Cods08[01];<br /> Rl1 := Cods08[02];<br /> For Nb := 0 to (Num - 1) Do<br /> Begin<br /> Inc(Rl6);<br /> Rl1 := Rl1 + Cods08[Rl6 + 3];<br /> Rl3 := Rl3 + Rl1;<br /> Rl7 := Rl1 + Cods08[Rl3 + 3];<br /> Cods08[Rl6 + 3] := Cods08[Rl3 + 3];<br /> Cods08[Rl3 + 3] := Rl1;<br /> Rl1 := Cods00[Nb] Xor Cods08[Rl7 + 3];<br /> Encod[Nb + Idx] := Rl1;<br /> End;<br /> Cods08[00] := Rl6;<br /> Cods08[01] := Rl3;<br /> Cods08[02] := Rl1;<br />End;

Procedure TIForm.CRCTheStrangeHeader;<br />Var<br /> I: Integer;<br /> Bt01, Bt02: Byte;<br />Begin<br /> Bt01 := 0;<br /> Bt02 := 0;<br /> For I := 1 to $16 Do<br /> Begin<br /> Bt01 := Bt01 + StrangeHeader[I];<br /> Bt02 := Bt02 Xor StrangeHeader[I];<br /> End;<br /> StrangeHeader[$17] := Bt01;<br /> StrangeHeader[$18] := Bt02;<br />End;

Procedure TIForm.CRCTheMainPartOf5008;<br />Var<br /> I: Integer;<br /> Bt01, Bt02: Byte;<br />Begin<br /> Bt01 := 0;<br /> Bt02 := 0;<br /> For I := 1 to $B0 Do<br /> Begin<br /> Bt01 := Bt01 + MainBody5008[I];<br /> Bt02 := Bt02 Xor MainBody5008[I];<br /> End;<br /> MainBody5008[$B1] := Bt01;<br /> MainBody5008[$B2] := Bt02;<br />End;

Procedure TIForm.CRCTheMainPartOf5077;<br />Var<br /> I: Integer;<br /> Bt01, Bt02: Byte;<br />Begin<br /> Bt01 := 0;<br /> Bt02 := 0;<br /> For I := 1 to $D8 Do<br /> Begin<br /> Bt01 := Bt01 + MainBody5077[I];<br /> Bt02 := Bt02 Xor MainBody5077[I];<br /> End;<br /> MainBody5077[$D9] := Bt01;<br /> MainBody5077[$DA] := Bt02;<br />End;

Procedure TIForm.CreateIMEISpecificBlocksC45;<br />Var<br /> RNDNumberA, RNDNumberB: Word;<br />Begin<br />// CRCTheStrangeHeader;<br />// CRCTheMainPartOf5008;<br />// CRCTheMainPartOf5077;

RNDNumberA := Trunc(Random*65536);<br /> RNDNumberB := Trunc(Random*65536);<br /> Cod00[00] := RNDNumberA Shl 00;<br /> Cod00[01] := RNDNumberA Shr 08;<br /> Cod00[02] := RNDNumberB Shl 00;<br /> Cod00[03] := RNDNumberB Shr 08;<br /> GosubC7D524(Cod08, CodE2, $80);<br /> GosubC7D5CE(Cod08, Enc5008, $00, Cod00, $08);<br /> GosubC7D5CE(Cod08, Enc5008, $08, StrangeHeader, $18);

RNDNumberA := Trunc(Random*65536);<br /> RNDNumberB := Trunc(Random*65536);<br /> Cod00[00] := RNDNumberA Shl 00;<br /> Cod00[01] := RNDNumberA Shr 08;<br /> Cod00[02] := RNDNumberB Shl 00;<br /> Cod00[03] := RNDNumberB Shr 08;<br /> GosubC7D524(Cod08, CodE2, $80);<br /> GosubC7D5CE(Cod08, Enc5008, $20, Cod00, $08);<br /> GosubC7D5CE(Cod08, Enc5008, $28, MainBody5008, $B8);

RNDNumberA := Trunc(Random*65536);<br /> RNDNumberB := Trunc(Random*65536);<br /> Cod00[00] := RNDNumberA Shl 00;<br /> Cod00[01] := RNDNumberA Shr 08;<br /> Cod00[02] := RNDNumberB Shl 00;<br /> Cod00[03] := RNDNumberB Shr 08;<br /> GosubC7D524(Cod08, CodE2, $80);<br /> GosubC7D5CE(Cod08, Enc5077, $00, Cod00, $08);<br /> GosubC7D5CE(Cod08, Enc5077, $08, MainBody5077, $E0);<br />End;

Procedure TIForm.CreateIMEISpecificBlocksC35(IMEI: String; ID: String);<br />Var<br /> Nb: Integer;<br />Begin<br /> IMEIIDString := ID;<br /> GetR4R5(-1, IMEI, 00);<br /> Const10 := Cod0C[1] Or Cod0C[2] Shl 08;<br /> Const11 := Cod0C[3] Or Cod0C[4] Shl 08;

CRCTheStrangeHeader;<br /> CRCTheMainPartOf5008;<br /> CRCTheMainPartOf5077;

RNDCode := Trunc(Random*65536)*0;<br /> Encript(StrangeHeader, SMask01, Const10, $18, 02, 00);<br /> SMask01[1] := RNDCode Shr 00;<br /> SMask01[2] := RNDCode Shr 08;

RNDCode := Trunc(Random*65536)*0;<br /> Encript(SMask01, Blc5008, Const11, $1A, 02, 00);<br /> Blc5008[1] := RNDCode Shr 00;<br /> Blc5008[2] := RNDCode Shr 08;

RNDCode := Trunc(Random*65536)*0;<br /> Encript(MainBody5008, SMask00, Const10, $B2, $02, 00);<br /> SMask00[1] := RNDCode Shr 00;<br /> SMask00[2] := RNDCode Shr 08;

RNDCode := Trunc(Random*65536)*0;<br /> Encript(SMask00, Blc5008, Const11, $B4, $1E, 00);<br /> Blc5008[29] := RNDCode Shr 00;<br /> Blc5008[30] := RNDCode Shr 08;

RNDCode := Trunc(Random*65536)*0;<br /> Encript(MainBody5077, SMask02, Const10, $DA, $02, 00);<br /> SMask02[1] := RNDCode Shr 00;<br /> SMask02[2] := RNDCode Shr 08;

RNDCode := Trunc(Random*65536)*0;<br /> Encript(SMask02, Blc5077, Const11, $DC, $02, 00);<br /> Blc5077[1] := RNDCode Shr 00;<br /> Blc5077[2] := RNDCode Shr 08;

For Nb := 0 to $D1 Do<br /> Enc5008[Nb] := Blc5008[Nb + 1];<br /> For Nb := 0 to $DD Do<br /> Enc5077[Nb] := Blc5077[Nb + 1];<br />End;

Procedure TIForm.Encript(Mask: Array of Byte; Var Target: Array of Byte; ImSn, Size, Off, Sbs: Word);<br />Var<br /> My: DWord;<br /> Bt, I: Word;<br />Begin<br /> I := 0;<br /> While I &lt; Size Do<br /> Begin<br /> Bt := Mask[I + 1] Shl 08;<br /> Bt := Bt + Mask[I];<br /> My := (RNDCode Shl 16) + Bt;<br /> RNDCode := My Mod ImSn;<br /> Res := My Div ImSn;<br /> Target[(Size-I)-02+Off-Sbs] := Res Shr 00;<br /> Target[(Size-I)-01+Off-Sbs] := Res Shr 08;<br /> Inc(I, 02);<br /> End;<br />End;

Procedure TIForm.GetPhoneIDC35(Var Cod18: MyArr; Idx: Integer);<br />Var<br /> ID: Integer;<br />Begin<br /> Val('$' + IMEIIDString, ID, Code);<br /> Cod18[1] := (ID Shr 24) And $FF;<br /> Cod18[2] := (ID Shr 16) And $FF;<br /> Cod18[3] := (ID Shr 08) And $FF;<br /> Cod18[4] := (ID Shr 00) And $FF;<br />End;

Procedure TIForm.GetConvertedIMEI(Var Cod00: Arr10);<br />Var<br /> I: Integer;<br />Begin<br /> Cod00[2] := 08;<br /> For I := 1 to 8 Do<br /> Cod00[I + 2] := BCD[I];<br />End;

Procedure TIForm.GetR4R5(Idx: Integer; MyIMEI: String; Dn: Byte);<br />Var<br /> Cod00: Arr10;<br /> Cod10: Arr08;<br /> Cod18: MyArr;<br /> I: Integer;<br /> RL6, RL1: Byte;<br />Begin<br /> ConvertToBCD(Idx, MyIMEI);<br /> GetPhoneIDC35(Cod18, Idx);<br /> GetConvertedIMEI(Cod00);<br /> For I := 1 to 4 Do<br /> Begin<br /> If Dn = 0 Then<br /> Begin<br /> RL6 := Cod00[I + 6];<br /> RL1 := Cod00[I + 2] And $55;<br /> Cod00[I + 2] := RL1 Xor RL6;<br /> End<br /> Else<br /> Begin<br /> RL6 := Cod00[I + 6];<br /> RL1 := Cod00[I + 2] And $AA;<br /> Cod00[I + 2] := RL1 Xor RL6;<br /> End;<br /> End;<br /> GosubC750B8(Cod10, Cod18, Cod0C, Cod00);<br /> GosubC75038(Cod10, Cod00, Cod0C);<br /> GosubC75038Next(Cod10, Cod00, Cod0C);<br />End;

Procedure TIForm.DoSomeTrickyCalculationsC35(Vls: Byte; Var Arr: Arr10);<br />Var<br /> I, Nm: Integer;<br /> J: Byte;<br />Begin<br /> Bytes05 := Arr;

For I := 1 to 5 Do<br /> Begin<br /> J := (Arr[I] Shr 04) And $0F;<br /> Nm := CodeTable00[J];<br /> Bytes03[I] := (Nm Shl 04);<br /> J := (Arr[I] And $0F);<br /> Nm := CodeTable01[J];<br /> Bytes03[I] := Bytes03[I] Or Nm;<br /> End;

For I := 1 to 5 Do<br /> If (I Mod 2) &lt;&gt; 0 Then Bytes04[I] := Bytes03[I] Xor Vls<br /> Else Bytes04[I] := (Not Bytes03[I]) Xor Vls;

For I := 1 to 5 Do<br /> Arr[I] := Bytes04[I] Xor Bytes05[I + 5];<br /> For I := 1 to 5 Do<br /> Arr[I + 5] := Bytes05[I];

End;

Procedure TIForm.GosubC750B8(Var Cod10: Arr08; Var Cod18: MyArr; Var Cod0C: MyArr; Var Cod00: Arr10);<br />Var<br /> I, J: Integer;<br /> RL3, RL4, RL5, RL6: Byte;<br /> R3, R4: Word;<br />Begin<br /> For I := 1 to 4 Do<br /> Cod0C[I] := Cod00[I + 2];

For I := 1 to 4 Do<br /> Begin<br /> RL6 := Cod18[I];<br /> For J := 1 to 4 Do<br /> Cod10[J] := Cod0C[J];<br /> For J := 3 to 4 Do<br /> Begin<br /> R3 := (Cod0C[J] Shr 04) And $0F;<br /> R4 := (Cod0C[J] And $0F);<br /> RL4 := CodeTable00[R3];<br /> RL5 := CodeTable01[R4];<br /> RL4 := (RL4 Shl 04);<br /> Cod10[5 + J - 3] := RL4 Or RL5;<br /> End;

For J := 0 to 1 Do<br /> If J &lt;&gt; 0 Then Cod10[J + 7] := (Not Cod10[J + 5]) Xor RL6<br /> Else Cod10[J + 7] := Cod10[J + 5] Xor RL6;

For J := 0 to 1 Do // 5146<br /> Begin<br /> Cod0C[J + 1] := Cod10[J + 3];<br /> Cod0C[J + 3] := Cod10[J + 7] Xor Cod10[J + 1];<br /> End;<br /> End;

For J := 1 to 4 Do<br /> Begin<br /> RL3 := Cod0C[J];<br /> RL4 := Cod00[J + 2];<br /> Cod0C[J] := RL3 Xor RL4;<br /> End;<br />End;

Procedure TIForm.GosubC75038(Var Cod10: Arr08; Var Cod00: Arr10; Var Cod0C: MyArr);<br />Var<br /> Addrs: Integer;<br /> I, J, Ad: Integer;<br /> RL3, RL4, RL5, RL6: Byte;<br /> R3, R4: Word;<br />Begin<br /> Addrs := $04065A;<br /> While Addrs &lt; $04066E Do<br /> Begin<br /> Ad := Addrs - $04065A;<br /> For I := 1 to 4 Do<br /> Cod00[I] := CodROM00[I + Ad];

For I := 1 to 4 Do<br /> Begin<br /> RL6 := Cod0C[I];<br /> For J := 1 to 4 Do<br /> Cod10[J] := Cod00[J];<br /> For J := 3 to 4 Do<br /> Begin<br /> R3 := (Cod00[J] Shr 04) And $0F;<br /> R4 := (Cod00[J] And $0F);<br /> RL4 := CodeTable00[R3];<br /> RL5 := CodeTable01[R4];<br /> RL4 := (RL4 Shl 04);<br /> Cod10[5 + J - 3] := RL4 Or RL5;<br /> End;

For J := 0 to 1 Do<br /> If J &lt;&gt; 0 Then Cod10[J + 7] := (Not Cod10[J + 5]) Xor RL6<br /> Else Cod10[J + 7] := Cod10[J + 5] Xor RL6;

For J := 0 to 1 Do // 5146<br /> Begin<br /> Cod00[J + 1] := Cod10[J + 3];<br /> Cod00[J + 3] := Cod10[J + 7] Xor Cod10[J + 1];<br /> End;<br /> End;

For J := 1 to 4 Do<br /> Begin<br /> RL3 := Cod00[J];<br /> RL4 := CodROM00[J + Ad];<br /> Cod00[J] := RL3 Xor RL4;<br /> End;

For J := 1 to 4 Do<br /> Cod0C[J] := Cod00[J];

Inc(Addrs, 08);<br /> End;<br />End;

Procedure TIForm.GosubC75038Next(Var Cod10: Arr08; Var Cod00: Arr10; Var Cod0C: MyArr);<br />Var<br /> Addrs: Integer;<br /> I, J, Ad: Integer;<br /> RL3, RL4, RL5, RL6: Byte;<br /> R3, R4: Word;<br />Begin<br /> Addrs := $031E002C;<br /> While Addrs &lt; $031E004C Do<br /> Begin<br /> Ad := Addrs - $031E002C;<br /> For I := 1 to 4 Do<br /> Cod00[I] := CodROM01[I + Ad];

For I := 1 to 4 Do<br /> Begin<br /> RL6 := Cod0C[I];<br /> For J := 1 to 4 Do<br /> Cod10[J] := Cod00[J];<br /> For J := 3 to 4 Do<br /> Begin<br /> R3 := (Cod00[J] Shr 04) And $0F;<br /> R4 := (Cod00[J] And $0F);<br /> RL4 := CodeTable00[R3];<br /> RL5 := CodeTable01[R4];<br /> RL4 := (RL4 Shl 04);<br /> Cod10[5 + J - 3] := RL4 Or RL5;<br /> End;

For J := 0 to 1 Do<br /> If J &lt;&gt; 0 Then Cod10[J + 7] := (Not Cod10[J + 5]) Xor RL6<br /> Else Cod10[J + 7] := Cod10[J + 5] Xor RL6;

For J := 0 to 1 Do // 5146<br /> Begin<br /> Cod00[J + 1] := Cod10[J + 3];<br /> Cod00[J + 3] := Cod10[J + 7] Xor Cod10[J + 1];<br /> End;<br /> End;

For J := 1 to 4 Do<br /> Begin<br /> RL3 := Cod00[J];<br /> RL4 := CodROM01[J + Ad];<br /> Cod00[J] := RL3 Xor RL4;<br /> End;

For J := 1 to 4 Do<br /> Cod0C[J] := Cod00[J];

Inc(Addrs, 08);<br /> End;<br />End;

Procedure TIForm.ConvertToC30BCD(St: String);<br />Var<br /> Nb, Cd: Integer;<br /> Sp: String;<br />Begin<br /> For Nb := 0 to 7 Do<br /> Begin<br /> Sp := Copy(St, Nb*02 + 2, 1) + Copy(St, Nb*02 + 1, 1);<br /> Val('$' + Sp, Def00[Nb], Cd);<br /> End;<br />End;

Procedure TIForm.ConvertToPhoneID(ID: String);<br />Var<br /> Nb, Cd: Integer;<br /> St: String;<br />Begin<br /> For Nb := 0 to 7 Do<br /> Begin<br /> St := Copy(ID, Nb*2 + 1, 2);<br /> Val('$' + St, PhID[Nb], Cd);<br /> End;<br />End;

Function TIForm.ConvertIDIntoDWord(XKey: Word; Var Enc00: Array of Byte): DWord;<br />Var<br /> Nc08, Nc03: Word;<br />Begin<br /> Nc08 := PhID[01] Xor PhID[03] Xor PhID[04] Xor PhID[06];<br /> Nc03 := PhID[00] Xor PhID[02] Xor PhID[05] Xor PhID[07];<br /> Keys := (Enc00[01] Shl 08) Or (Enc00[00] Shl 00);<br /> Nc08 := Nc08 - Nc03 + (Nc03 Shl 08);<br /> Result := Nc08 Xor XKey Xor Keys;<br />End;

Procedure TIForm.Gosub4FD7EC(Key, Ln: Word);<br />Var<br /> Nb: Word;<br /> Bt, Bp: Byte;<br />Begin<br /> Ln := Ln And $FFFE;<br /> If (Key And $2000) &lt;&gt; 0 Then<br /> For Nb := 0 to (Ln - 1) Do<br /> Begin<br /> Bt := Dec00[Nb*02 + 00] And $F0;<br /> Bt := Bt Or (Dec00[Nb*02 + 01] Shr $04);<br /> Bp := Dec00[Nb*02 + 01] And $0F;<br /> Bp := Bp Or (Dec00[Nb*02 + 00] Shl $04);<br /> Dec00[Nb*02 + 00] := Bt;<br /> Dec00[Nb*02 + 01] := Bp;<br /> End<br /> Else<br /> For Nb := 0 to (Ln - 1) Do<br /> Begin<br /> Bp := Dec00[Nb*02 + 00] And $0F;<br /> Bp := Bp Or (Dec00[Nb*02 + 01] Shl $04);<br /> Bt := Dec00[Nb*02 + 01] And $F0;<br /> Bt := Bt Or (Dec00[Nb*02 + 00] Shr $04);<br /> Dec00[Nb*02 + 00] := Bp;<br /> Dec00[Nb*02 + 01] := Bt;<br /> End;<br />End;

Procedure TIForm.EncriptC30HiddenBlocks(Ln: Word; XKey: Word; Var Decod: Array of Byte; Ad: Word);<br />Var<br /> Nb: Word;<br />Begin<br /> Encod[Idx + Ln + 02] := 00;<br /> Encod[Idx + 00] := Trunc(Random*256) And $00;<br /> Encod[Idx + 01] := Trunc(Random*256) And $FF;<br /> For Nb := 0 to (Ln - 1) Do Dec00[Nb] := Decod[Nb];<br /> DWordID := ConvertIDIntoDWord(XKey, Encod[Idx]);<br /> For Nb := 0 to (Ln - 1) Do<br /> Encod[Idx + Ln + 02] := Encod[Idx + Ln + 02] Xor Dec00[Nb];<br /> Gosub4FD7EC(Keys, Ln);<br /> For Nb := 0 to (Ln - 1) Do<br /> Begin<br /> DWordID := (DWordID*$2455 + $C091) Mod $38F40;<br /> Encod[Idx + Nb + 02] := Dec00[Nb] Xor (DWordID*$FFFF Div $038F40);<br /> End;<br /> Inc(Idx, Ln + Ad + 4);<br /> Encod[Idx - 01] := Trunc(Random*256);<br />End;

Procedure TIForm.CreateIMEISpecificBlocksC30(IMEI: String; ID: String);<br />Begin<br /> Idx := 0;<br /> ConvertToPhoneID(ID);<br /> ConvertToC30BCD(IMEI);<br /> EncriptC30HiddenBlocks($08, $000A, Def00, 00);<br /> EncriptC30HiddenBlocks($08, $09E4, Def0C, 00);<br /> EncriptC30HiddenBlocks($1C, $0F40, Def22, 02);<br /> EncriptC30HiddenBlocks($3C, $0F62, Def40, 00);<br /> EncriptC30HiddenBlocks($0C, $0FA2, Def10, 00);<br /> EncriptC30HiddenBlocks($28, $0FB2, Def2E, 02);<br /> EncriptC30HiddenBlocks($40, $0FE0, Def44, 00);<br /> EncriptC30HiddenBlocks($FC, $0A40, DefFF, 00);<br /> EncriptC30HiddenBlocks($FC, $0B40, DefFF, 00);<br /> EncriptC30HiddenBlocks($FC, $0C40, DefFF, 00);<br /> EncriptC30HiddenBlocks($FC, $0D40, DefFF, 00);<br /> EncriptC30HiddenBlocks($FC, $0E40, DefFF, 00);<br />End;

Procedure TIForm.CreateAdditionalySomeIMEI(Im, ID: String);<br />Begin<br /> If (Cmx = 1) Or (Cmx = 2) Then<br /> CreateIMEISpecificBlocksC35(Im, ID);

If (Cmx = 0) Then<br /> CreateIMEISpecificBlocksC30(Im, ID);

If (Cmx = 6) Then<br /> CreateIMEISpecificBlocksC45;<br />End;

Procedure TIForm.AddBtnClick(Sender: TObject);<br />Begin<br /> PhoneID.Items.Add(IDEdit.Text);<br /> NewIMEICombo.Items.Add(IMEIEdit.Text);<br /> MPhoneCombo.Items.Add(PhoneCombo.Items.Strings[PhoneCombo.ItemIndex]);<br /> OldIMEICombo.Items.Add('XXXXXX-XX-XXXXXX');<br /> OldIMEICombo.ItemIndex := PhoneID.Items.Count - 1;<br /> NewIMEICombo.ItemIndex := PhoneID.Items.Count - 1;<br /> MPhoneCombo.ItemIndex := PhoneID.Items.Count - 1;<br /> PhoneID.ItemIndex := PhoneID.Items.Count - 1;<br /> EnableSaveButton;<br />End;

Procedure TIForm.EnableSaveButton;<br />Begin<br /> SaveBtn.Enabled := PhoneID.Items.Count &lt;&gt; 0;<br />End;

Procedure TIForm.MPhoneComboClick(Sender: TObject);<br />Begin<br /> SkipMask := True;<br /> PhoneID.ItemIndex := MPhoneCombo.ItemIndex;<br /> NewIMEICombo.ItemIndex := MPhoneCombo.ItemIndex;<br /> IMEIEdit.Text := NewIMEICombo.Items.Strings[NewIMEICombo.ItemIndex];<br /> PhoneEdit.Text := MPhoneCombo.Items.Strings[MPhoneCombo.ItemIndex];<br /> C30LongIDCorrection;<br /> SkipMask := False;<br />End;

Procedure TIForm.PhoneIDClick(Sender: TObject);<br />Begin<br /> SkipMask := True;<br /> MPhoneCombo.ItemIndex := PhoneID.ItemIndex;<br /> NewIMEICombo.ItemIndex := PhoneID.ItemIndex;<br /> IMEIEdit.Text := NewIMEICombo.Items.Strings[NewIMEICombo.ItemIndex];<br /> PhoneEdit.Text := MPhoneCombo.Items.Strings[MPhoneCombo.ItemIndex];<br /> C30LongIDCorrection;<br /> SkipMask := False;<br />End;

Procedure TIForm.NewIMEIComboClick(Sender: TObject);<br />Begin<br /> SkipMask := True;<br /> PhoneID.ItemIndex := NewIMEICombo.ItemIndex;<br /> MPhoneCombo.ItemIndex := NewIMEICombo.ItemIndex;<br /> IMEIEdit.Text := NewIMEICombo.Items.Strings[NewIMEICombo.ItemIndex];<br /> PhoneEdit.Text := MPhoneCombo.Items.Strings[MPhoneCombo.ItemIndex];<br /> C30LongIDCorrection;<br /> SkipMask := False;<br />End;

Procedure TIForm.PhoneComboClick(Sender: TObject);<br />Begin<br /> If SkipMask Then Exit;<br /> If PhoneCombo.ItemIndex = 0 Then<br /> Begin<br /> IDEdit.EditMask := 'aaaaaaaaaaaaaaaa;1;';<br /> IDEdit.Text := '0000000000000000';<br /> OldPhone := PhoneCombo.ItemIndex;<br /> End<br /> Else<br /> If OldPhone = 0 Then<br /> Begin<br /> IDEdit.EditMask := 'aaaaaaaa;1;';<br /> IDEdit.Text := '00000000';<br /> OldPhone := PhoneCombo.ItemIndex;<br /> End;<br /> PhoneEdit.Text := PhoneCombo.Items.Strings[PhoneCombo.ItemIndex];<br />End;

Procedure TIForm.C30LongIDCorrection;<br />Begin<br /> If MPhoneCombo.Items.Strings[PhoneID.ItemIndex] = PhoneCombo.Items.Strings[0] Then<br /> IDEdit.EditMask := 'aaaaaaaaaaaaaaaa;1;'<br /> Else IDEdit.EditMask := 'aaaaaaaa;1;';<br /> IDEdit.Text := PhoneID.Items.Strings[PhoneID.ItemIndex];<br />End;

Procedure TIForm.OpenBtnClick(Sender: TObject);<br />Var<br /> St: String;<br /> Nb: Integer;<br />Begin<br /> MyOpen.FilterIndex := 1;<br /> If Not MyOpen.Execute Then Exit;<br /> MyOpen.InitialDir := ExtractFilePath(MyOpen.FileName);<br /> Application.ProcessMessages;<br /> ReadTheLOGFile;<br /> If DoStop Then<br /> ShowMessage('Error in the log file.');<br /> St := IntToStr(PhoneID.Items.Count);<br /> For Nb := 1 to 3 - Length(St) Do<br /> St := '0' + St;<br /> EnableSaveButton;<br />End;

Procedure TIForm.ReadTheLOGFile;<br />Var<br /> New, IDs, ZSt, Mdl: String;<br /> Fil: TextFile;<br /> Ps, Nb, Cd, Md: Integer;<br />Begin<br /> DoStop := True;<br /> MyName := MyOpen.FileName;<br /> AssignFile(Fil, MyName); Reset(Fil);<br /> ReadLn(Fil, St);<br /> While St = '' Do<br /> ReadLn(Fil, St);<br /> If EOF(Fil) Then Exit;<br /> If Pos('LOG File', St) &lt; 0 Then Exit;<br /> St := Copy(St, Pos('Version', St) + 9, 1);<br /> Val(St, Nb, Cd);<br /> If (Pos('Version', St) &lt; 0) Or (Nb &lt; 3 ) Then<br /> Begin<br /> ShowMessage('Sorry, generated Log file at least of 3.00 version required');<br /> DoStop := False;<br /> Exit;<br /> End;<br /> ReadLn(Fil, St);<br /> While St = '' Do<br /> ReadLn(Fil, St);

ReadLn(Fil, St);<br /> While St = '' Do<br /> ReadLn(Fil, St);

St := Copy(St, 1, 10);<br /> If St &lt;&gt; '**********' Then Exit;

PhoneID.Clear;<br /> OldIMEICombo.Clear;<br /> NewIMEICombo.Clear;

While Not EOF(Fil) Do<br /> Begin<br /> ReadLn(Fil, ZSt);<br /> While (ZSt = '') And (Not EOF(Fil)) Do<br /> ReadLn(Fil, ZSt);<br /> If (ZSt = '') And (EOF(Fil)) Then Break;<br /> DoStop := True;<br /> Ps := Pos('[Model: ', ZSt); If Ps &lt;= 0 Then Exit;<br /> St := Copy(ZSt, Ps + 8, Length(ZSt));<br /> Ps := Pos(']', St); If Ps &lt;= 0 Then Exit;<br /> Mdl := Copy(St, 1, Ps - 1);<br /> Md := GetPhoneModelIndex(Mdl);<br /> If Md = -1 Then<br /> Begin<br /> ShowMessage('The log file contains phone ' + Mdl + ' which is not supported by programm');<br /> DoStop := False;<br /> Exit;<br /> End;<br /> Ps := Pos('[PhoneID: ', ZSt);<br /> If Ps &lt;= 0 Then Exit;<br /> St := Copy(ZSt, Ps + 10, Length(ZSt));<br /> If Md = 0 Then IDs := Copy(St, 1, 16)<br /> Else IDs := Copy(St, 1, 8);<br /> Ps := Pos('[Desired IMEI: ', ZSt);<br /> If Ps &lt;= 0 Then Exit;<br /> St := Copy(ZSt, Ps + 15, Length(ZSt));<br /> New := Copy(St, 1, 16);

PhoneID.Items.Add(IDs);<br /> NewIMEICombo.Items.Add(New);<br /> MPhoneCombo.Items.Add(Mdl);

DoStop := False;<br /> If EOF(Fil) Then Break;<br /> End;

PhoneID.ItemIndex := 0;<br /> OldIMEICombo.ItemIndex := 0;<br /> NewIMEICombo.ItemIndex := 0;<br /> C30LongIDCorrection;

IDEdit.Text := PhoneID.Items.Strings[0];<br /> IMEIEdit.Text := NewIMEICombo.Items.Strings[0];<br /> PhoneEdit.Text := MPhoneCombo.Items.Strings[0];<br /> DoStop := False;<br />End;

Function TIForm.GetPhoneModelIndex(St: String): Integer;<br />Var<br /> Nb: Integer;<br />Begin<br /> Result := -1;<br /> For Nb := 0 to PhoneCombo.Items.Count - 1 Do<br /> If PhoneCombo.Items.Strings[Nb] = St Then<br /> Begin<br /> Result := Nb;<br /> Exit;<br /> End;<br />End;

Procedure TIForm.SaveBtnClick(Sender: TObject);<br />Var<br /> Fil: TextFile;<br /> St, Pt, Od, FSName: String;<br /> J, Nb,Idx: Integer;<br />Begin<br /> Stt := 0;<br /> DoStop := False;<br /> MySave.FilterIndex := 1;<br /> St := ExtractFileName(MyName);<br /> Nb := Pos('.', St);<br /> If Nb &gt; 0 Then<br /> St := Copy(St, 1, Nb - 1);<br /> MySave.FileName := St;

If Not MySave.Execute Then Exit;<br /> FSName := MySave.FileName;<br /> Application.ProcessMessages;<br /> MySave.InitialDir := ExtractFilePath(FSName);<br /> LiveProgress.Max := GetTotalSize;<br /> AssignFile(Fil, FSName); Rewrite(Fil);<br /> LiveProgress.Position := 0;

ComPort.Open := False;<br /> ComPort.ComNumber := Dongle.ItemIndex + 1;<br /> ComPort.Baud := 115200;<br /> ComPort.Open := True;

For Nb := 1 to PhoneID.Items.Count Do<br /> Begin<br /> If Cout = 0 Then Break;<br /> Od := 'XXXXXX-XX-XXXXXX';<br /> Pt := PhoneID.Items.Strings[Nb - 1];<br /> St := NewIMEICombo.Items.Strings[Nb - 1];<br /> Cmx := GetPhoneModelIndex(MPhoneCombo.Items.Strings[Nb - 1]);<br /> IMEI := GetIMEIString(St); CreateBlocks5009And76(01);<br /> MyStatus.Panels.Items[0].Text := 'Calculating IMEI ' + IntToStr(Nb);<br /> CreateIMEISpecificBlocks(GetIMEIString(St), Pt);<br /> If DoStop Then Break;<br /> WriteLn(Fil, '******************** Section ********************');<br /> If Cmx = 0 Then WriteLn(Fil, '************* ID: ' + Pt + ' **************')<br /> Else WriteLn(Fil, '***************** ID: ' + Pt + ' ******************');<br /> WriteLn(Fil, '********** Old IMEI = ' + Od + ' **********');<br /> WriteLn(Fil, '********** New IMEI = ' + St + ' **********');<br /> WriteLn(Fil, '************************************************* ');<br /> WriteLn(Fil, '');<br /> If Cmx = 0 Then St := 'C30 Resurrect data'<br /> Else St := 'IMEI Block 00';<br /> St := St + ' [' + MPhoneCombo.Items.Strings[Nb - 1] + ']';<br /> WriteLn(Fil, St);<br /> If Cmx &lt;&gt; 0 Then<br /> Begin<br /> WriteLn(Fil, B5009Text); WriteLn(Fil, '');<br /> WriteLn(Fil, 'IMEI Block 01');<br /> WriteLn(Fil, B0001Text); WriteLn(Fil, '');<br /> WriteLn(Fil, 'IMEI Block 02');<br /> End;

Idx := 0;<br /> While Idx &lt; B08Sz[Cmx] Do<br /> Begin<br /> St := '';<br /> For J := 1 to 10 Do<br /> Begin<br /> If Cmx = 0 Then St := St + '0x' + IntToHex(Encod[Idx], 2) + ' '<br /> Else St := St + '0x' + IntToHex(Enc5008[Idx], 2) + ' ';<br /> Inc(Idx); If Idx = B08Sz[Cmx] Then Break;<br /> End;<br /> WriteLn(Fil, St);<br /> End;

Idx := 0;<br /> If B77Sz[Cmx] &lt;&gt; 0 Then<br /> Begin<br /> WriteLn(Fil, '');<br /> WriteLn(Fil, 'IMEI Block 03');<br /> End;

While Idx &lt; B77Sz[Cmx] Do<br /> Begin<br /> St := '';<br /> For J := 1 to 10 Do<br /> Begin<br /> St := St + '0x' + IntToHex(Enc5077[Idx], 2) + ' ';<br /> Inc(Idx); If Idx = B77Sz[Cmx] Then Break;<br /> End;<br /> WriteLn(Fil, St);<br /> End;

WriteLn(Fil, '************************************************* ');<br /> WriteLn(Fil, '');<br /> Inc(Stt, SSz[Cmx]);<br /> Dec(Cout);<br /> End;

CloseFile(Fil);<br /> ComPort.Open := False;<br /> If DoStop Then<br /> ShowMessage('Calculating IMEI Error. Try Again');<br /> Sleep(200);<br /> MyTimer.Enabled := True;<br /> MyTimer.Interval := 2000;<br /> MyTimer.Interval := 1000;<br /> GetCounter; MyStatus.Panels.Items[0].Text := Ctr;<br /> LiveProgress.Position := 0;<br /> MyTimer.Enabled := False;<br />End;

Function TIForm.GetTotalSize;<br />Var<br /> Nb, Md: Integer;<br />Begin<br /> Result := 0;<br /> For Nb := 0 to MPhoneCombo.Items.Count - 1 Do<br /> Begin<br /> Md := GetPhoneModelIndex(MPhoneCombo.Items.Strings[Nb]);<br /> Result := Result + SSz[Md];<br /> End;<br />End;

End.

<br />---------------------------------------

Best Regards and Sorry for the FLOOD
  Reply With Quote
Old 01-11-2002, 07:35   #2 (permalink)
sat
Freak Poster
 
Join Date: Aug 2001
Location: GSMLAND
Posts: 479
Member: 5764
Status: Offline
Thanks Meter: 2
Post

there must be OoMisc.pas, AdPort.pas or OoMisc.dcu, AdPort.dcu files...<br />could you get them please?
  Reply With Quote
Old 06-21-2002, 20:44   #3 (permalink)
Junior Member
 
Join Date: Jun 2002
Location: Latvia
Age: 55
Posts: 28
Member: 13092
Status: Offline
Thanks Meter: 0
AdPort.pas and oomisc.pas is a part of AsynsProffesional for Delphi. If You need i put to You - full or partial, can You want
  Reply With Quote
Old 06-21-2002, 21:56   #4 (permalink)
Freak Poster
 
maxxnskk's Avatar
 
Join Date: Oct 2001
Location: Novosibirsk
Posts: 277
Member: 6791
Status: Offline
Thanks Meter: 0
this code already available half year
And can help you only to make map maker for C30/C35
Did you need it?
  Reply With Quote
Old 06-22-2002, 20:07   #5 (permalink)
Freak Poster
 
Join Date: Mar 2002
Location: LONDON UK
Age: 41
Posts: 132
Member: 9857
Status: Offline
Thanks Meter: 0
Question Hello M8's

Hello M8's

@Zeus

Thankyou for the source code i appreciate it very much m8 but need the files mentioned in other replies, Also no Offence but shouldn't this post be moved into another thread [GSM PROGRAMMING]
http://forum.gsmhosting.com/vbb/foru...?s=&forumid=83

If Iam wrong Please Correct Me But I Am Only Helping On The Way

Best Regards

Adam Rest

Vast Gsm
  Reply With Quote
Reply

Bookmarks


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
thread Thread Starter Forum Replies Last Post
Siemens map generator source? gsmsalers GSM Programming & Reverse Engineering 2 12-13-2003 18:19
!!! FREE all new Siemens Source codes here !!! zulea Siemens-Benq RingTones and WallPapers 23 09-05-2003 18:30
DCT4 Flasher Source Code HERE !!! Dehghani GSM Programming & Reverse Engineering 0 08-19-2003 14:29
Wanted Siemens MAP maker for A50, C55 dongle etc. DrMobile Wanted Products 0 04-16-2003 21:45
siemens map maker/ writer dgtulga x1x to x45/x50 1 01-19-2002 12:26

 



All times are GMT +1. The time now is 10:51.



Powered by Searchlight © 2024 Axivo Inc.
vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
- GSM Hosting Ltd. - 1999-2023 -
Page generated in 0.44976 seconds with 9 queries

SEO by vBSEO