|
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 . |
|
Register | FAQ | Donate | Forum Rules | Root any Device | ★iPhone Unlock★ | ★ Direct Codes ★ | Direct Unlock Source | Today's Posts | Search |
GSM Programming & Reverse Engineering Here you can post all Kind of GSM Programming and Reverse Engineering tools and Secrets. |
| LinkBack | Thread Tools | Display Modes |
01-08-2002, 03:53 | #1 (permalink) |
Junior Member Join Date: Sep 2001
Posts: 1
Member: 6495 Status: Offline Thanks Meter: 0 | Siemens MAP MAKER, SOURCE CODE here ------------------------ 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 < 15 Do<br /> Begin<br /> St := Copy(IMEI, I, 1);<br /> Val(St, BP07, Code);<br /> If (I Mod 2) <> 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 <= 8 Do<br /> Begin<br /> If (I Mod 2) <> 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 <= 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) <> 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 < 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] <> $FFFF Do<br /> Begin<br /> If (I Mod 2) <> 0 Then<br /> Words01[J] := Words00[I]<br /> Else<br /> Begin<br /> BP06 := (Words00[I] Shl 01);<br /> If BP06 <= 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] <> $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 > 40 Then Step := 1;<br /> InSt := GetCOMData(Count);<br /> Rs := Resp[Step];<br /> If Pos(Rs, InSt) > 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 < 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 < 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 <> 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 < 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 <> 0 Then Ctr := 'Counter: ' + IntToStr(Cout) + ', Device ID: ' + IntToHex(DvID, 04)<br /> If Cout <> 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 < 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 < 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 < 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) <> 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 <> 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 < $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 <> 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 < $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 <> 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) <> 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 <> 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) < 0 Then Exit;<br /> St := Copy(St, Pos('Version', St) + 9, 1);<br /> Val(St, Nb, Cd);<br /> If (Pos('Version', St) < 0) Or (Nb < 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 <> '**********' 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 <= 0 Then Exit;<br /> St := Copy(ZSt, Ps + 8, Length(ZSt));<br /> Ps := Pos(']', St); If Ps <= 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 <= 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 <= 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 > 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 <> 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 < 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] <> 0 Then<br /> Begin<br /> WriteLn(Fil, '');<br /> WriteLn(Fil, 'IMEI Block 03');<br /> End; While Idx < 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 |
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 | 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 |
Bookmarks |
| |
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 |
|