• Hiện tại trang web đang trong quá hình chuyển đổi và tái cấu trúc lại chuyên mục nên có thể một vài chức năng chưa hoàn thiện, một số bài viết và chuyên mục sẽ thay đổi. Nếu sự thay đổi này làm bạn phiền lòng, mong bạn thông cảm. Chúng tôi luôn hoan nghênh mọi ý kiến đóng góp để chúng tôi hoàn thiện và phát triển. Cảm ơn

HTC ARTEMIS & LOVE

newland

New Member
Funtiger hướng dẫn rõ thêm cách back-up ROM được không?

Tôi tìm thông tin về bkondisk thì thấy ghi rằng "bkondisk is a tool to access a SamsungOneNAND chip via the lowlevel PocketStoreII driver, giving access to the bootloader and other non-os sections." Như vậy liệu chương trình này có giúp back-up ROM của Artemis với chip OMAP được không?

PPB

PPB nói đúng, cái này thì đúng là phải chú ý thiệt. Vì mình đã thử dùng bkondisk để up bản rom cho con P3300 nhưng mà đâu có thấy hiện tượng gì sảy ra đâu (ko chạy gì hết trơn). Bạn Funtiger ơi bạn đâu rồi có thể hướng dẫn thêm không?
 

newland

New Member
ROM RUS cũng được, Bạn Backup và Up lên cho anh em thử nhé, nếu vào được Win thì có thể mua KKK để Up bản khác được rồi. thank!

Hix mình cũng muốn backup lại bản ROM của mình theo cách của Funtiger chỉ lắm, nhưng khổ nỗi là khi chạy bkondisk thì không được. Đành phải đợi Funtiger hướng dẫn thêm về cách dùng cái backup này vậy. Xin lỗi nha khi nào backup được sẽ up lên liền.
 

Funtiger

New Member
Mình ko có thời gian để thử hết các cách cứu, có khá nhiều cách để up lại rom cho dòng này, dưới đây là địa chỉ rom của dòng này, và cách dùng lệnh pmemdump để kiểm tra ver boot loader ( như mình đã nói, boot loader thực ra chỉ là 1 chương trình, chia làm IPL và SPL để quản lý), vì vậy nếu có máy các Bạn thử hạ boot loader xuống trước khi up bằng tools "pnewbootloader.exe" ( kiếm trên mạng đầy. Mình gởi luôn 1 phiên bản boot loader các Bạn ngâm cứu thử, các bản boot loader khá phổ biến hiện nay: 3.17.03, 3.19.01, 4.00.01, 4.00.05,.....
ví dụ nhé:


C:\pnewbootloader.exe bl515.nb0
protection found at 8c0d62d8
result: 00000000 00000000

Còn muốn bakup bản rom thì các Bạn có thể làm tương tự như hermes, tùy theo tools sẽ có định dạng là: .img hay raw,..., thấy bà con trên mạng hay bakup bằng perl, cái này cũng giống ngôn ngữ C vậy, nhưng bà con lại thích, chắc tại gần gũi với người dùng hơn. Mình up lên, up xuống, up qua, up lại mà máy vẫn ko chết:(( :((
 

rainsea

New Member
Thank Funtiger! nhưng bạn có thể hướng dẫn step by step cho anh em được không, chúng tôi gà mờ về tin học mà. Rất mong hỗ trợ.
 

Funtiger

New Member
Bạn nào có nhu cầu tìm hiểu về hợp ngữ và các kết cấu bên trong ppc thì pm cho mình, chúng ta sẽ cùng tìm hiểu, ko nên múa rìu trên diễn đàn, mọi người cười chết.
Dưới đây là đoạn code dùng để edit cid đối với những dòng sử dụng boot loader phiên bản cũ, viết bằng perl:


#!perl -w
use strict;
use Getopt::Long;

#
# pdocread -n 1 0 0x10000 cid-block.nb
# perl typhooncidedit.pl cid-block.nb -c GSMK-000 -w cid-gsmk.nb
# pdocwrite -n 1 cid-gsmk.nb
#
# bootloader command 'info 2' should return the current cid
# bootloader command 'set 32 0' should return the current security level
#
# csum= dword_sum(data[0..0xfff7])
# checksum: decrypt({csum, csum}, encrypt(data[0x010..0x017], key(g+19)) )

# keyix= encrypt(data[0x1a0..0x1a7], key(g+53))[3]
# cid = encrypt(data[0x160..0x17f], encrypt(data_1200[keyix], key(g+77)) )

# 0x0000-0x0004 - version
# 0x0010-0x0018 - checksum cryptkey
# 0x0140-0x0148 - imei
# 0x0160-0x0180 - cid
# 0x01a0-0x01a8 - keyindex at byte +3
# 0x1200-0x1a00 - cid cryptkey
# 0x1c80-0x1c88 - lockflag
# 0x1d00-0x1f00 - lockcodes
# 0x4000-0x4400 - mccmnc
# 0xfff8-0xffff - checksum of 0-0xfff8

# parts changed from default value:
# 0000-0003 version
# 0140-0147 imei
# 0160-017f cid
# 01a0-01a7 keyindex
# 16b0-16b7 cidcryptkey
# 1c80-1c87 lockflag
# 4000-400f mccmnc
# fff8-ffff checksum
#
use Crypt::DES;
use IO::File;
my @keylist= (
pack("C*", 0x51, 0x0F, 0x54, 0x3A, 0xD7, 0xBF, 0xBE, 0xCF),
pack("C*", 0xE1, 0x87, 0xEF, 0xDB, 0x1F, 0xEA, 0xB4, 0x07),
pack("C*", 0x64, 0xFD, 0x18, 0x47, 0xA9, 0x62, 0x85, 0x67),
pack("C*", 0x55, 0x7A, 0x2B, 0xE7, 0xBC, 0xD7, 0xA5, 0x08),
pack("C*", 0xE5, 0xF0, 0xDA, 0x27, 0x90, 0x19, 0x22, 0x4A),
pack("C*", 0x77, 0xB2, 0xAB, 0xF9, 0xD5, 0x9E, 0x1A, 0x4F),
pack("C*", 0x25, 0xF7, 0x75, 0x50, 0x2C, 0xFF, 0x40, 0x7D),
pack("C*", 0x39, 0x5A, 0xE6, 0xA6, 0xAC, 0x7B, 0x5B, 0x00),
pack("C*", 0xB5, 0x5D, 0x00, 0x77, 0x5E, 0x73, 0xC7, 0x45),
pack("C*", 0xCC, 0xE1, 0x97, 0xC4, 0xC1, 0xEC, 0xF2, 0x80),
pack("C*", 0x66, 0xAF, 0xD5, 0x91, 0x48, 0x10, 0xDF, 0x28),
pack("C*", 0xA0, 0xF3, 0xB6, 0x67, 0xD7, 0xAE, 0xA7, 0x76),
pack("C*", 0x49, 0xBC, 0x8C, 0xD3, 0x4A, 0xB5, 0xF3, 0xE9),
pack("C*", 0x66, 0x7D, 0x7C, 0xE5, 0xED, 0xBC, 0x83, 0xC5),
pack("C*", 0xB0, 0x8F, 0xFF, 0xB1, 0x05, 0x7E, 0xAA, 0x8F),
pack("C*", 0x11, 0xAD, 0x63, 0xD2, 0x46, 0x56, 0xD0, 0x92),
pack("C*", 0x2A, 0x76, 0x47, 0xE2, 0x5A, 0xC7, 0xEF, 0x5E),
pack("C*", 0xCF, 0xEF, 0x22, 0x03, 0x61, 0xF7, 0x16, 0x44),
pack("C*", 0x89, 0xFE, 0xBD, 0x59, 0x6B, 0x2F, 0xE9, 0xDB),
pack("C*", 0x14, 0xF0, 0xB4, 0x8E, 0x00, 0x5C, 0x1F, 0x7E),
pack("C*", 0xDF, 0xF4, 0xF9, 0x4D, 0x98, 0x91, 0x03, 0xCB),
pack("C*", 0x8F, 0x9E, 0x51, 0xC7, 0x24, 0x83, 0xF3, 0x25),
pack("C*", 0x7C, 0x64, 0xD5, 0x31, 0x83, 0x0C, 0xE4, 0x33),
pack("C*", 0x31, 0x24, 0x72, 0x44, 0x0D, 0xA9, 0xDC, 0x5F),
pack("C*", 0xF0, 0x9D, 0x6A, 0xBB, 0x0C, 0xFC, 0x76, 0x58),
pack("C*", 0x2C, 0xF1, 0xD1, 0xD8, 0x3D, 0x4A, 0x62, 0x91),
pack("C*", 0x0E, 0x2A, 0x10, 0xE0, 0x54, 0xFD, 0xE3, 0xC0),
pack("C*", 0xF1, 0xB1, 0x65, 0x9B, 0x76, 0x24, 0x4F, 0x60),
pack("C*", 0xE6, 0xD8, 0x61, 0xD5, 0xBD, 0xEE, 0x92, 0x2F),
pack("C*", 0x30, 0x52, 0x69, 0xE0, 0xB7, 0x33, 0xAB, 0xB0),
pack("C*", 0xC9, 0xB6, 0x36, 0x0F, 0xE6, 0xEB, 0x2D, 0xA9),
pack("C*", 0xDB, 0x00, 0x55, 0x3C, 0x42, 0xB4, 0xBF, 0xA6),
pack("C*", 0x48, 0x0F, 0xA8, 0x43, 0xB3, 0x50, 0x9D, 0x75),
pack("C*", 0x23, 0x28, 0xE3, 0x84, 0x97, 0x25, 0x15, 0xA9),
pack("C*", 0x34, 0x71, 0x0F, 0x65, 0x42, 0xBC, 0x0B, 0x17),
pack("C*", 0x78, 0x77, 0x0A, 0xCE, 0x79, 0x43, 0x76, 0x5C),
pack("C*", 0x9E, 0xA9, 0x05, 0xAC, 0xF6, 0x0B, 0xE0, 0x55),
pack("C*", 0x8B, 0xDA, 0x05, 0x6E, 0xE7, 0x0A, 0xE9, 0xA5),
pack("C*", 0xD7, 0xC3, 0x62, 0x8B, 0x6F, 0x5A, 0xC5, 0x32),
pack("C*", 0x4E, 0x7F, 0x4B, 0xFA, 0x24, 0xB8, 0xBA, 0xA8),
pack("C*", 0x71, 0x0E, 0x41, 0xB8, 0x8F, 0x05, 0xA3, 0xF5),
pack("C*", 0xF2, 0xD2, 0x98, 0x46, 0xAF, 0xC9, 0x70, 0xCB),
pack("C*", 0x3B, 0x15, 0xF9, 0x28, 0x75, 0xAB, 0xA3, 0x21),
pack("C*", 0xE7, 0x81, 0xE2, 0x68, 0x49, 0xFA, 0xD4, 0xB2),
pack("C*", 0x47, 0xA5, 0x24, 0x10, 0x85, 0x28, 0x2E, 0x7D),
pack("C*", 0xDF, 0x77, 0x63, 0xB3, 0xF5, 0x4A, 0xEF, 0x44),
pack("C*", 0xE7, 0xCD, 0x9A, 0xE5, 0x5D, 0x99, 0xEC, 0x0D),
pack("C*", 0xCB, 0xE3, 0x95, 0xBF, 0xF3, 0xF3, 0x0C, 0xA3),
pack("C*", 0xAB, 0xD8, 0x75, 0x5C, 0xE0, 0x5B, 0xC8, 0x16),
pack("C*", 0xDB, 0x31, 0x30, 0x5E, 0xC3, 0x75, 0xB1, 0x37),
pack("C*", 0x63, 0x55, 0x0E, 0x6A, 0x2E, 0x0B, 0xEA, 0x1D),
pack("C*", 0x80, 0x0F, 0x2D, 0xA7, 0x27, 0x8A, 0xA9, 0xA3),
pack("C*", 0x22, 0x0E, 0xFE, 0x43, 0xA8, 0x85, 0xBA, 0xE8),
pack("C*", 0x6D, 0x68, 0xC5, 0xEF, 0x20, 0x32, 0xFD, 0xCD),
pack("C*", 0x38, 0x13, 0x1D, 0x5E, 0xF0, 0xE8, 0xE3, 0x7A),
pack("C*", 0x90, 0x6B, 0x72, 0xCA, 0xEF, 0xA7, 0xF5, 0xD9),
pack("C*", 0x36, 0xB0, 0x85, 0x6E, 0xE6, 0x90, 0x4D, 0x1A),
pack("C*", 0x1D, 0x84, 0xEB, 0x0D, 0x15, 0x69, 0x1A, 0x2D),
pack("C*", 0xED, 0x71, 0x8E, 0x6A, 0xAC, 0x1A, 0x20, 0x4B),
pack("C*", 0x83, 0x61, 0x2B, 0xCD, 0x52, 0x32, 0x36, 0x6E),
pack("C*", 0x6E, 0x24, 0xD3, 0x85, 0xA2, 0x63, 0xC6, 0xD4),
pack("C*", 0x73, 0xED, 0x6A, 0x60, 0xA8, 0x02, 0x51, 0x81),
pack("C*", 0x0A, 0xD5, 0x2B, 0x35, 0x69, 0x88, 0xE9, 0xB9),
pack("C*", 0xDF, 0x57, 0x22, 0x5B, 0x59, 0x14, 0xB5, 0x8A),
pack("C*", 0x52, 0xD3, 0xB0, 0x2F, 0xE2, 0xE6, 0x70, 0x40),
pack("C*", 0xF8, 0x0C, 0x0A, 0x91, 0xE3, 0xE5, 0xEA, 0xEE),
pack("C*", 0x18, 0xA9, 0xBA, 0x68, 0x2F, 0x1A, 0x86, 0xEC),
pack("C*", 0x2E, 0xB7, 0x1D, 0x1A, 0x0A, 0x33, 0xBA, 0x53),
pack("C*", 0x6B, 0x25, 0xE3, 0x14, 0xB0, 0x01, 0x92, 0x83),
pack("C*", 0x33, 0x47, 0x93, 0x48, 0xCE, 0xFA, 0x2D, 0x9E),
pack("C*", 0x9E, 0x54, 0x04, 0xAA, 0x06, 0xB8, 0x3E, 0x0B),
pack("C*", 0xF7, 0xE8, 0xE5, 0xB2, 0x6F, 0x78, 0x8C, 0xF4),
pack("C*", 0x40, 0x83, 0x36, 0xDD, 0x13, 0x9C, 0x73, 0xC8),
pack("C*", 0xAC, 0x07, 0xCC, 0x2C, 0x70, 0x2A, 0x61, 0xB9),
pack("C*", 0x24, 0x3E, 0xD1, 0xA4, 0xF7, 0x4A, 0x5A, 0x3F),
pack("C*", 0xC3, 0x52, 0x42, 0xCC, 0x90, 0xCB, 0x75, 0x93),
pack("C*", 0x5A, 0x53, 0x6F, 0x32, 0x14, 0x9F, 0x5C, 0x35),
pack("C*", 0xEC, 0xB5, 0x7E, 0xE6, 0xD1, 0x5B, 0xD0, 0x66),
pack("C*", 0x32, 0xCF, 0xE9, 0xFD, 0x09, 0xB8, 0x22, 0xAF),
pack("C*", 0x19, 0x5D, 0xFB, 0x10, 0x73, 0x15, 0xBB, 0x59),
pack("C*", 0x3F, 0xFE, 0x57, 0xBA, 0xB9, 0xF2, 0x95, 0xF2),
pack("C*", 0x7A, 0xB7, 0x71, 0x1E, 0xF9, 0x76, 0xC0, 0xCE),
pack("C*", 0x51, 0x6F, 0x13, 0x5E, 0x45, 0xEA, 0xDE, 0x84),
pack("C*", 0x81, 0x71, 0xDA, 0x25, 0x22, 0x3C, 0xA7, 0x6D),
pack("C*", 0x79, 0xED, 0xB6, 0x1E, 0x0C, 0x7E, 0x66, 0x28),
pack("C*", 0xDE, 0x77, 0x6D, 0x7B, 0xF1, 0x64, 0x7A, 0x19),
pack("C*", 0x08, 0x86, 0x19, 0x6F, 0xB1, 0xC9, 0xD6, 0xE5),
pack("C*", 0x83, 0xF6, 0xA5, 0xB4, 0xA5, 0x2A, 0x81, 0xF7),
pack("C*", 0x90, 0x87, 0x54, 0x06, 0x15, 0x29, 0x17, 0xFF),
pack("C*", 0xA1, 0x5B, 0x3A, 0xA5, 0xC0, 0x0B, 0x46, 0x6E),
pack("C*", 0xE0, 0x7C, 0xC1, 0xD7, 0x58, 0x3B, 0x52, 0xFB),
pack("C*", 0xA8, 0x54, 0x25, 0x64, 0x02, 0xC5, 0x91, 0x21),
pack("C*", 0x0A, 0x33, 0xF8, 0x18, 0xDB, 0xDC, 0xEF, 0x9E),
pack("C*", 0x4A, 0xCD, 0x9F, 0x45, 0x6E, 0x55, 0x6B, 0xF5),
pack("C*", 0x60, 0xB9, 0xD4, 0x3F, 0x3F, 0x29, 0x99, 0xED),
pack("C*", 0x77, 0xF3, 0x22, 0xDE, 0x43, 0xF7, 0x1E, 0x11),
pack("C*", 0x71, 0x5B, 0x6C, 0xFF, 0x66, 0x80, 0x37, 0x2E),
pack("C*", 0x61, 0x34, 0x66, 0x03, 0x04, 0x29, 0x33, 0xD8),
pack("C*", 0x10, 0xA5, 0x19, 0x4E, 0x70, 0x7C, 0xF4, 0xE4),
pack("C*", 0x79, 0x3C, 0x64, 0xC9, 0x70, 0xA7, 0x72, 0xEF),
);

my $keyix;
my $writefile;
my $newcid;
my $docid;

sub usage {
return <<__EOF__
Usage: typhooncidedit [-i DOCID] [-k keyix] [-w outfile] [-c newcid] infile
__EOF__
}

GetOptions(
"k=s"=> \$keyix,
"w=s"=> \$writefile,
"c=s"=> \$newcid,
"i=s"=> sub { $docid=pack("H*", $_[1]); },
) or die usage();
my $fn= shift || die usage();
my $fh= IO::File->new($fn, "r") or die "opening: $fn: $!\n";
binmode $fh;

my $g_securityblock;
$fh->read($g_securityblock, -s $fh) or die "reading $fn: $!\n";
$fh->close();

printf("0x0000 - version : %08lx\n", unpack("V", substr($g_securityblock, 0, 4)));

if (length($docid)) {
use integer;
my $keyix= unpack('%32C*', $docid)*(unpack('%32C*', substr($docid, 12, 4))-0x13dc25bb);

# 96 == 2**32 % 100
$keyix = ($keyix+96)%100;
$keyix += 100 if ($keyix<0);
}
if (!defined $keyix) {
$keyix= find_key_index();
if (!defined $keyix) {
die "could not determine a key index\n";
}
}
sub hex_or_quoted {
my $data= shift;
if ($data =~ /^([[:print:]]+)\x00*$/) {
return "'$1'";
}
else {
return unpack("H*", $data);
}
}
my $blockix= calc_1200_block_index($keyix);
printf("0x01a0 - keyindex: %s -> %d\n", unpack("H*", get_01a0_block($keyix)), $blockix);

my $cidkey= get_cid_decryption_key($keyix, $blockix);
printf("0x%04x - cid key : %s\n", 8*$blockix+0x1200, hex_or_quoted($cidkey));


my $ciddata= get_cid_data($cidkey, 0x160, 0x20);
my $cidkeylen=unpack("v", $ciddata);
printf("0x0160 - cid : %04x:'%s' %s\n", $cidkeylen, substr($ciddata, 2, $cidkeylen), unpack("H*", substr($ciddata, 2+$cidkeylen)));
printf("0x1c80 - lockflag: %s\n", unpack("H*", get_cid_data($cidkey, 0x1c80, 8)));

my $imei= unpack("H*", get_cid_data($cidkey, 0x140, 8));
$imei =~ s/(.)(.)/$2$1/g;
printf("0x0140 - imei : %s\n", $imei);

# for (my $ofs =0; $ofs<8; $ofs++) {
# my $ixblock= des_encrypt(substr($g_securityblock, $ofs*8+0x190, 8), $keylist[($keyix+53)%100]);
# printf(" 0x%04x: %s\n", 0x190+$ofs*8, unpack("H*", $ixblock));
# }
#
# for (my $kix= 0 ; $kix<0x100 ; $kix++) {
# my $key= des_encrypt(substr($g_securityblock, 8*$kix+0x1200, 8), $keylist[($keyix+77)%100]);
# printf(" 0x%04x: %s\n", 0x1200+8*$kix, unpack("H*", $key));
# }
for (my $kix= 0 ; $kix<5 ; $kix++) {
my $dd= get_cid_data($cidkey, 0x1d00+0x10*$kix, 0x10);
my $de= decrypt_with_2keys($keyix, $dd, $kix);
printf("0x%04x - lock %2d : %s\n", 0x1d00+0x10*$kix, $kix, hex_or_quoted($de));
}

printf("0x4000 - mncmcc : %s\n", unpack("H*", get_cid_data($cidkey, 0x4000, 0x20)));


if ($newcid) {
printf("olddata: %s\n", unpack("H*", substr($g_securityblock, 0x160, 0x20)));

substr($g_securityblock, 0x160, 0x20)= encrypt_cid_data($cidkey, $newcid);
printf("newdata: %s\n", unpack("H*", substr($g_securityblock, 0x160, 0x20)));

my $newsum= calcsum($g_securityblock, 0xfff8);
my $sumenc= decrypt_cid_checksum($keyix, pack("VV", $newsum, $newsum));
substr($g_securityblock, 0xfff8, 8)= $sumenc;

printf("newsum=%08lx encsum=%s\n", $newsum, unpack("H*", $sumenc));

if ($writefile) {
my $ofh= IO::File->new($writefile, "w") or die "openfile: $writefile: $!\n";
binmode $ofh;

$ofh->print($g_securityblock);
$ofh->close();
}
}

exit(0);

sub find_key_index {
my $sum= calcsum($g_securityblock, 0xfff8);
for (my $i=0 ; $i<100 ; $i++) {
my $sumdec= decrypt_cid_checksum($i, pack("VV", $sum, $sum));
my $stored= substr($g_securityblock, 0xfff8, 8);
if ($sumdec eq $stored) {
printf("0xfff8 - checksum: keyix=%d: %08lx - %s\n", $i, $sum, unpack("H*", $sumdec));
return $i;
}
}
return undef;
}

sub get_cid_data {
my ($cidkey, $ofs, $len)= @_;
return decrypt_cid_data($cidkey, substr($g_securityblock, $ofs, $len));
}
sub get_cid_decryption_key {
my ($keyix, $blockix)= @_;
return des_encrypt(substr($g_securityblock, 8*$blockix+0x1200, 8), $keylist[($keyix+77)%100]);
}
sub decrypt_with_2keys {
my ($keyix, $data, $ix)= @_;
return join("", map { des_encrypt(substr($data, 8*$_, 8), $keylist[($keyix+$ix+$_)%100]) } (0..length($data)/8));
}
sub decrypt_cid_data {
my ($cidkey, $data)= @_;
return des_encrypt($data, $cidkey);
}
sub encrypt_cid_data {
my ($cidkey, $cid)= @_;
return des_decrypt(pack("va30", length($cid), $cid), $cidkey);
}
sub decrypt_cid_checksum {
my ($keyix, $sumsum)= @_;

my $key= des_encrypt(substr($g_securityblock, 0x10, 8), $keylist[($keyix+19)%100]);

return des_decrypt($sumsum, $key);
}

# ???
sub encrypt_cid_checksum {
my ($keyix, $sumsum)= @_;

my $key= des_encrypt(substr($g_securityblock, 0x10, 8), $keylist[($keyix+19)%100]);

return des_encrypt($sumsum, $key);
}

sub get_01a0_block {
my ($keyix)= @_;
my $ixblock= des_encrypt(substr($g_securityblock, 2*8+0x190, 8), $keylist[($keyix+53)%100]);
}

sub calc_1200_block_index {
my ($keyix)= @_;
my $ixblock= get_01a0_block($keyix);
return ord(substr($ixblock, 3,1));
}

sub calcsum {
my ($data, $length)= @_;

return unpack("%32V*", substr($data, 0, $length));
}


sub des_encrypt {
my ($data, $key)= @_;

#$key &= "\xfe" x 8;

my $des= Crypt::DES->new($key);

my $result= "";
for (my $i=0 ; $i<length($data) ; $i+=8) {
$result .= $des->encrypt(substr($data,$i,8));
}
return $result;
}
sub des_decrypt {
my ($data, $key)= @_;

#$key &= "\xfe" x 8;

my $des= Crypt::DES->new($key);

my $result= "";
for (my $i=0 ; $i<length($data) ; $i+=8) {
$result .= $des->decrypt(substr($data,$i,8));
}
return $result;
}


==> Sau khi có code này, người ta bắt đầu unlock cid, ví dụ unlock cho Wizard:

+ pdocread -n 1 0 0x10000 cidblock.nb

+ perl typhooncidedit.pl cidblock.nb

+ perl typhooncidedit.pl cidblock.nb -c newcid -w modifiedcidblock.nb
+ pdocwrite -n 1 modifiedcid.nb 0 0x10000

==> cid-unlocking

Dựa vào đó ta có thể tìm hiểu về cách unlock cid của mọi người, với dòng máy chúng ta đang tìm hiểu thì boot loader phiên bản cao hơn nhiều.

Mình sẽ ko bàn về vấn đề này nữa, Bạn nào có nhu cầu và chung sở thích với mình thì pm riêng cho mình, mình sẽ cố gắng giúp trong khả năng có thể, thanks
 

ntphuong

New Member
Các bác cho em hỏi chút. Vừa mua 1 chú P3300 thông số như sau:
ARTE100
ROM: 1.25.707.2 WWE 10/4/06
Radio: 02.67.90
Protocol: 4.1.13.28
Ko có Extended ROM (chắc do chủ cũ cài máy reset máy lúc vừa xong, e còn chưa HR phát nào vì thấy nó chạy nhanh)

Tra ở trong phần XDA-developer thì em thấy có sự khác biệt giữa ROM và Radio.
( ARTE100 HTC HTC P3300 Europe QWERTY Unlocked OS 5.1.342 (Build 15096.3.0.0) 1.12.405.1 9/12/06 WWE 1.12.405.101 02.67.90 4.1.13.28)

Cái ROM version thì thuộc về Dopod

(ARTE100 Dopod P800W Thailand/Indonesia QWERTY Unlocked OS 5.1.342 (Build 15096.3.0.0) 1.25.707.2 10/4/06 WWE 1.25.707.102 02.69.90 4.1.13.30)

Như thế thì nghĩa là máy em có Unlock CID chưa hay đây chỉ là Up OS thôi ah?

Bản ROM này chạy nhanh hơn hẳn 1.25.206.2 WWE của con Orbit của vợ em.
Tiện thể em hỏi lạc đề 1 chú là e vừa mua con Orbit này cho vợ, mọi thông số đều giống hệt con Orbit UK, vậy nó có phải hàng UK không các bác? E mua ở TQ ah.
 

hoamai

New Member
Bác PhamQuang và mấy anh em aicó ROM tiếng đức cho O2 Orbit không ?
Bạn nào biết làm ơn chỉ dùm mình nha đợi tin các bạn.
 

nghianga

New Member
ROM Love

LOVE của tôi ra đi rồi, thấy giao diện mới của bạn Tom làm đẹp quá, không chờ mua KKK được tôi Up thử và khởi động lại bị treo ngay ở màn hình khởi động. Tôi đã Up thử các bản:
- ARTE300_DOPOD_WWE_LOVE_1.28.717.1_02.69.90
- ART_HTCWWE_11240501_026790_WWE_Ship
- RUU_Artemis_O2_DE_1.25.207.1_02.67.90_Ship_R2
Cả 3 bản đều không Up quá được 3%.
Không nghe bác Phạm Quang và các thành viên nên gay quá. Có bạn nào ở HN biết cách khắc phục không tôi mang tới giúp với. Thank!
Bạn thử liên hệ với: 0988776841 xem
Mình mới nhờ họ sửa P3300 của đấy.
 

nghianga

New Member
ROM Love

ROM v2.00.02 PDAVIET for HTC Love

=== Giao diện Crossbow ===




Sau vài ngày test tôi và Mod. Tom_codon đã hoàn thành phiên bản ROM v2.00.02 LOVE có giao diện Crossbow cho dòng HTC Love.
- ROM chạy khá nhẹ nhàng.
- Có giao diện và âm thanh đặc trưng Crossbow.
- Tích hợp khá đủ các Fonts TV, kể cả System Fonts TV.
- Tích hợp khá nhiều các ứng dụng hữu ích.
- Tốc độ ROM cải thiện rõ rệt.

Tốt nhất nên Up cho các HTC Love đã được UnlockCID !!!

- Kết nối máy với PC.
- Chạy Tool Upgrade ROM.
- Sau khi hoàn thành HR lại máy.
- Vào Win xong nên SR lại một lần nữa để hệ thống làm việc tốt.


Screen001-171.jpg
Screen002-132.jpg


Screen003-56.jpg
Screen004-51.jpg


Lưu ý:

Phiên bản ROM này có thể Up cho cả HTC Love và cả HTC Artemis đều TỐT.

Link tải ROM:

http://www.pdaviet-media.info/PhamQuang/ROM/LOVE/ARTE300_WWE_v2.00.02_LOVE_PDAVIET.rar


Pass. giải nén: PDAVIET

Bác Quang ạ
Em thấy bản ROM này giao diện bàn phím vẫn là nguyên bản không thấy như trong hình.
Chương trình Audio Booster không thể đánh dấu vào mục Equalizer được, tức là không có tác dụng chỉnh âm thanh.
Bác xem lại xem
 

PhamQuang

Manager
Bác Quang ạ
Em thấy bản ROM này giao diện bàn phím vẫn là nguyên bản không thấy như trong hình.
Chương trình Audio Booster không thể đánh dấu vào mục Equalizer được, tức là không có tác dụng chỉnh âm thanh.
Bác xem lại xem

Đó là bàn phím PPCLink Keyboad VN cài thêm.

Còn Audio Booster chỉnh các núm tốt, bạn kiểm tra lại.
ROM này mình dùng cả hơn tuần nay, khá ổn. Tất nhiên đã có chỉnh sửa chút ít về Icon và là v2.00.03PV rồi. :D
 

nghianga

New Member
ROM Love

Đó là bàn phím PPCLink Keyboad VN cài thêm.

Còn Audio Booster chỉnh các núm tốt, bạn kiểm tra lại.
ROM này mình dùng cả hơn tuần nay, khá ổn. Tất nhiên đã có chỉnh sửa chút ít về Icon và là v2.00.03PV rồi. :D

Em dang dùng máy P3300 đã up bản ROM của bác nhưng không thể dùng Eq được, không có tác dụng bác ạ. Bản ROM của bác có EXT không vậy?
Khi em up ROM xong không thấy chạy EXT nhưng báo EXT PDAVIET. Đấy là giá trị trong REG. Nhưng tực tế thì không thấy EXT đâu. Trong bản ROM bác Up không có EXT.
Bác xem lại hộ em. Em rất khoái cái vụ EQ này. Thank bác!
 
L

letuanhuk

Guest
Máy mình chưa unlock CID nên không unlock được ExtRom. Mình thử thấy ghi :"Exclusive access to the storage card is denied (#29). Please close any application which may be accessing files on the storage card" Có bạn nào giúp được mình ko nhỉ? Thanks
 

PhamQuang

Manager
Máy mình chưa unlock CID nên không unlock được ExtRom. Mình thử thấy ghi :"Exclusive access to the storage card is denied (#29). Please close any application which may be accessing files on the storage card" Có bạn nào giúp được mình ko nhỉ? Thanks

UnlockCID không liên quan gì tới Unlock Extended_ROM cả.
Quan trọng là đến thời điểm này chỉ có thể Unhide ExtROM chứ chưa thể Unlock ExtROM để sử dụng đâu bạn ạ.
Người ta sử dụng Tool của Hermes áp dụng cho Artemis nhưng chỉ được 1/2 mà thôi.
 

symbian

New Member
Đã tìm được rom Orbit gốc , ai ở HN bị die có thể đến cửa hàng mình ở 270 Bà Triệu để mình thử up + bàn luận thêm về PPC :D , vì khi mình lấy được rom thì khách nó cũng "Bỏ của chạy lấy người" rồi nên hổng có cơ hội up ^^ .... Nhân đây có 1 vấn đề khúc mắc nhờ anh em giải thích và giúp đỡ : Sáng nay có ông khách mang con Charmer đến nói là " Đã đi chạy phần mềm chỗ khác và nó đã chạy rom của mini vào(cái này ai mới làm đt cũng khó phân biệt)" .Giờ nó bật chỉ nháy sáng 1 chút rồi ngủ luôn.Ko vào bootloader đc nữa .Xin hỏi có cách nào làm testpoint cho nó để up lại ko vậy.Xin mọi người chỉ giúp!!! Thanks All....
 

symbian

New Member
Hix , đã có 1 người anh em trên pda mang Orbit đến thử và kết quả = 0 , mặc dù đúng là rom Ger của Orbit .Xin cáo lỗi ...và tiếp tục chờ đợi...
 
O

O2_Orbit

Guest
"- Cần HR máy của bạn và khi vào màn hình căn chỉnh thì kết nối máy với PC với Option "Guest". Như vậy quy trình Up đè sẽ nhanh và tiện hơn."<===== Các bạn có thể giải thích cho mình biết là "vào màn hình căn chỉnh" là lúc nào ko vậy? và Option "Guest" là thế nào ko? Mình thử up bản 02 của Tom mà ko được, ko hiểu sao nữa. Cảm ơn các bạn nhiều nha. Thanks
 

Wantoknow

New Member
"- Cần HR máy của bạn và khi vào màn hình căn chỉnh thì kết nối máy với PC với Option "Guest". Như vậy quy trình Up đè sẽ nhanh và tiện hơn."<===== Các bạn có thể giải thích cho mình biết là "vào màn hình căn chỉnh" là lúc nào ko vậy? và Option "Guest" là thế nào ko? Mình thử up bản 02 của Tom mà ko được, ko hiểu sao nữa. Cảm ơn các bạn nhiều nha. Thanks

"Vào màn hình căn chỉnh" tức là sau khi hard reset hoặc sau khi up ROM xong thì PPC Phone sẽ đứng lại ở Align Screen

Option "Guest" tức là ngay sau khi cắm sync cable để nối PC với PPC thì Microsoft ActiveSync trên PC sẽ xuất hiện 1 cửa sổ wizard để tạo kết nối Partner, ta không nhấn Next để tạo kết nối này, mà nhấn Cancel để cho PC và PPC kết nối với nhau là Guest.
 

Yaiba

New Member
Hiện nay mình đã làm thành công 2 con Orbit bị đứng treo ở màn hình chữ O2.Chạy tiếng Anh phe phé,dùng ầm ầm luôn.Ai có nhu cầu xin liên hệ 0936707422 nha.
 

Yaiba

New Member
Đã tìm được rom Orbit gốc , ai ở HN bị die có thể đến cửa hàng mình ở 270 Bà Triệu để mình thử up + bàn luận thêm về PPC :D , vì khi mình lấy được rom thì khách nó cũng "Bỏ của chạy lấy người" rồi nên hổng có cơ hội up ^^ .... Nhân đây có 1 vấn đề khúc mắc nhờ anh em giải thích và giúp đỡ : Sáng nay có ông khách mang con Charmer đến nói là " Đã đi chạy phần mềm chỗ khác và nó đã chạy rom của mini vào(cái này ai mới làm đt cũng khó phân biệt)" .Giờ nó bật chỉ nháy sáng 1 chút rồi ngủ luôn.Ko vào bootloader đc nữa .Xin hỏi có cách nào làm testpoint cho nó để up lại ko vậy.Xin mọi người chỉ giúp!!! Thanks All....
Con này bác tháo máy ra và kẹp dòng vào.Chắc chắn sẽ lên boot.Nhưng theo em nghĩ khả năng con này bị chết flash rất cao.Bác cứ thử chạy xem rùi viết lên xem tình hình thế nào anh em nghiên cứu nha ;)
 
O

O2_Orbit

Guest
"Vào màn hình căn chỉnh" tức là sau khi hard reset hoặc sau khi up ROM xong thì PPC Phone sẽ đứng lại ở Align Screen

Option "Guest" tức là ngay sau khi cắm sync cable để nối PC với PPC thì Microsoft ActiveSync trên PC sẽ xuất hiện 1 cửa sổ wizard để tạo kết nối Partner, ta không nhấn Next để tạo kết nối này, mà nhấn Cancel để cho PC và PPC kết nối với nhau là Guest.

Mình đã làm đúng các bước rồi, tại sao nó cứ hiện ra thế này nhỉ: "Could not update itsutils.dll to the current version, maybe it í inuse? try restarting your divice, or restart activesync" Mình đã thử nhiều lần rồi, đều bị vậy. Mình đang thử up bản 02 của Tom. Mọi người giải thíc dùm mình với. Thanks!
 
Top