Đây là thiết kế lệnh thỏ có thể được chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi, chẳng hạn như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS
CHƯƠNG TRÌNH:
TÊN
thiết kế - đăng ký ứng dụng cho máy tính đồ thị TI
SYNOPSIS
thiết kế [ lựa chọn ] [ -o hồ sơ ứng dụng ] [ -k tài liệu quan trọng ] tập tin hex ...
thiết kế [ lựa chọn ] [ -k tài liệu quan trọng ] -c tập tin hex ...
MÔ TẢ
thiết kế là một triển khai các thuật toán ký RSA và Rabin của Texas Instruments, như
được sử dụng trên máy tính vẽ đồ thị TI-73, TI-83 Plus, TI-84 Plus, TI-89 và TI-92 Plus.
Các thuật toán này được sử dụng để ký các ứng dụng Flash và hệ điều hành để
máy tính có thể nhận ra chúng là hợp lệ.
thiết kế, giống như các chương trình ký kết chính thức của Texas Instruments, cần một khóa riêng (một cặp
số nguyên tố lớn) để ký ứng dụng. Để ứng dụng được chấp nhận,
khóa công khai tương ứng (sản phẩm của họ) phải có trên máy tính. Về điều này
viết, khóa cá nhân `` phần mềm chia sẻ '' số 0104, được sử dụng để ký các ứng dụng cho
TI-83 Plus và TI-84 Plus, có sẵn thông qua SDK của TI. Thật không may, việc ký hệ điều hành
các phím, cũng như các phím ký ứng dụng cho TI-73, TI-89 và TI-92 Plus, chưa được
được phát hành, có nghĩa là chỉ TI mới có thể ký ứng dụng và hệ điều hành cho những máy tính đó.
LỰA CHỌN
-a Cố gắng khớp với đầu ra của Peter-Martijn Kuipers ' ký hiệu ứng dụng chương trình, để thử nghiệm
mục đích. Tệp đầu ra kết quả sẽ có kết thúc dòng kiểu Unix và
do đó sẽ không tương thích với tất cả các chương trình. Tùy chọn này không được khuyến nghị cho
sử dụng thông thường.
-b Giả sử tệp đầu vào là tệp nhị phân thô. Nếu tùy chọn này không được cung cấp, tệp
loại được phát hiện tự động.
-c Không ký ứng dụng; thay vào đó, hãy kiểm tra xem chữ ký của các ứng dụng được chỉ định có
có giá trị. Trạng thái thoát là 0 nếu tất cả ứng dụng hợp lệ, 1 nếu một hoặc nhiều ứng dụng bị lỗi hoặc 2 nếu
có một lỗi không phải toán học.
-f Bỏ qua các lỗi không nghiêm trọng và buộc ký đơn nếu có thể. (Tất cả các
Tuy nhiên, trong số những thông báo này là có lý do và rất có thể nếu ứng dụng của bạn
tạo ra bất kỳ cái nào trong số chúng, nó cũng sẽ không xác thực được hoặc làm hỏng máy tính.
Bạn đã được cảnh báo.)
-g Ghi tệp đầu ra ở định dạng GraphLink `` TIFL ''. (Theo mặc định và lịch sử
lý do, ứng dụng và hệ điều hành cho TI-73 và TI-83 Plus được viết bằng TI Hex đơn giản
định dạng thay thế; bạn có thể dùng góixxk(1) để chuyển đổi các tệp này sang định dạng TIFL.)
Các ứng dụng và hệ điều hành cho TI-89 và TI-92 Plus luôn được viết ở định dạng TIFL. Nhìn thấy
ỨNG DỤNG FILE M FORU ĐƠN dưới đây để biết thêm thông tin.
-k tài liệu quan trọng
Đọc các khóa ký và / hoặc xác nhận từ tệp đã cho. Tệp này phải nằm trong một
của các định dạng được sử dụng bởi các công cụ SDK của TI. (Nhìn thấy KEY FILE M FORU ĐƠN bên dưới.) Theo mặc định,
thiết kế tìm kiếm khóa có tên trong tiêu đề ứng dụng (ví dụ: 0104. khóa cho
Ứng dụng `` phần mềm chia sẻ '' TI-83 Plus.)
-K id Tìm kiếm chìa khóa với cái đã cho id (một số thập lục phân nhỏ) thay vì
ID được chỉ định trong tiêu đề ứng dụng.
-n Cố gắng ký chương trình nguyên trạng, không sửa đổi tiêu đề. (Tùy chọn này có thể
không tạo ra một tệp mà máy tính sẽ thực sự chấp nhận; nó được dành cho
thử nghiệm và chữ ký cho mục đích đặc biệt, không dành cho ký ứng dụng thông thường.)
-o ô uế
Chỉ định tệp đầu ra. Theo mặc định, các tệp đầu ra được đặt tên bằng cách lấy tên của
tệp đầu vào, xóa bất kỳ hậu tố nào và thêm hậu tố `.app 'hoặc` .8xk' tùy thuộc vào
về việc -g được quy định. (Nếu tệp đầu vào đã có `.app 'hoặc` .8xk'
hậu tố, `-signed 'được chèn vào, vì vậy` myapp.8xk' sẽ trở thành `myapp-sign.8xk '.)
Nếu dấu `- 'được chỉ định làm tệp đầu vào, điều đó cho biết đầu vào tiêu chuẩn, và
kết quả có dấu được ghi theo mặc định vào đầu ra tiêu chuẩn.
-p Sửa tiêu đề trang ứng dụng. Điều này không được thực hiện theo mặc định vì một trang không chính xác
tiêu đề thường là một dấu hiệu của một vấn đề nghiêm trọng hơn nhiều.
-P Nếu ứng dụng kết thúc gần ranh giới trang, hãy thêm một trang bổ sung để giữ
chữ ký. (Chữ ký ứng dụng trên TI-73 và TI-83 Plus không được phép
để mở rộng ranh giới trang.) Hãy nhớ rằng điều này cực kỳ lãng phí, vì nó
tiêu thụ 16384 byte Flash để chứa khoảng 69 byte dữ liệu; nếu là của bạn
ứng dụng đang ở trong tình huống này, bạn nên xem xét cố gắng giảm kích thước của nó
hoặc cách khác, thêm nhiều dữ liệu hơn để tận dụng lợi thế của Flash bổ sung
.
-q Không in các thông báo cảnh báo không nghiêm trọng.
-r Ký lại ứng dụng đã ký trước đó (tức là hủy chữ ký trước đó
đang ký.)
-R n Để ký các ứng dụng TI-73 và TI-83 Plus, hãy sử dụng số gốc n (0 ≤ n ≤ 3) đúng hơn
so với mặc định, số gốc 0. Tất cả bốn gốc đều hợp lệ, mặc dù khác biệt,
chữ ký, vì vậy tùy chọn này chủ yếu là để gỡ lỗi.
Gốc 0 được tính toán sao cho phù hợp với m^ [(p+1) / 4] mô-đun p và m^ [(q+1) / 4]
hình thức q. Gốc 1 là phủ định của modulo gốc 0 p, root 2 mô-đun phủ định q,
và gốc 3 phủ định cả hai modulo p và modulo q.
Tùy chọn này không có hiệu lực khi ký hệ điều hành hoặc ứng dụng TI-89/92 Plus,
sử dụng thuật toán RSA thay vì Rabin.
-t kiểu
Chỉ định rõ ràng loại chương trình (ví dụ: `` 8xk '' cho ứng dụng TI-83 Plus,
hoặc `73u 'cho hệ điều hành TI-73.) Hành vi mặc định là suy ra
loại chương trình từ tên của tệp đầu vào. (Nếu tệp đầu vào không có
hậu tố được công nhận, loại được đoán dựa trên nội dung của chương trình
tiêu đề.)
-u Tắt tính năng phát hiện trang tự động và giả sử các tệp đầu vào không được sắp xếp. Điều này có nghĩa là
ranh giới trang đó phải được xác định rõ ràng. (Nhìn thấy ỨNG DỤNG FILE M FORU ĐƠN
bên dưới.) Tùy chọn này không có hiệu lực trong hệ nhị phân (-b) chế độ.
-v Dài dòng; in ra tên của các ứng dụng và chữ ký của chúng khi chúng được ký.
Sử dụng -vv để biết thêm thông tin chi tiết về tính toán.
--Cứu giúp In ra một bản tóm tắt các tùy chọn.
--phiên bản
In thông tin phiên bản.
ỨNG DỤNG FILE M FORU ĐƠN
Intel Hex
Intel hex là một định dạng tệp ASCII tiêu chuẩn được nhiều lập trình viên PROM sử dụng và là một định dạng phổ biến
định dạng đầu ra của trình hợp dịch. Mỗi dòng (hoặc `` bản ghi '') bao gồm những điều sau:
:NNAAAATTDDDDDD ... CC
: Kí tự đầu tiên của dòng là dấu hai chấm; cái này chỉ được sử dụng để xác định
định dạng.
NN Hai ký tự tiếp theo là số byte dữ liệu trên dòng này, được viết bằng
chữ hoa ASCII thập lục phân.
AAAA Bốn chữ số tiếp theo là địa chỉ của dữ liệu trên dòng này. thiết kế có thể
nhìn vào 14 bit thấp của giá trị này.
TT Hai chữ số này xác định `` loại '' của bản ghi. Intel hex xác định một số
các loại bản ghi cho các mô hình địa chỉ khác nhau; các loại duy nhất có ý nghĩa đối với
Máy tính TI là loại 00 (dữ liệu thông thường) và 01 (cuối tệp.)
Đ ... 2*NN các chữ số hex theo sau, dữ liệu thực tế.
CC Cuối cùng, tổng kiểm tra ngược được thêm vào, để cộng lại tất cả các byte trên
dòng cho tổng số 256 modulo là XNUMX. (Như một phần mở rộng, thiết kế cho phép bạn
sử dụng hai chữ hoa `X thay cho một tổng kiểm tra.)
Vì địa chỉ chỉ có 16 bit nên định dạng này không thể đại diện rõ ràng cho các ứng dụng
lớn hơn 64 kilobyte. Để cho phép tạo các ứng dụng nhiều trang, thiết kế
cố gắng phát hiện các ranh giới trang tự động, bắt đầu một trang mới cho mỗi trường với
một địa chỉ số không. Do đó, để tạo một ứng dụng nhiều trang, bạn có thể chỉ cần kết hợp một số Intel
Các tệp hex, ví dụ:
cat trang0.hex page1.hex | thiết kế thỏ - -o hoàn thành.app
Điều này sẽ chỉ hoạt động nếu các bản ghi được sắp xếp chính xác trong mỗi trang. (Nếu
trình hợp dịch không tạo các bản ghi theo thứ tự, bạn có thể tự sắp xếp các trường bằng cách sử dụng
lệnh như `sort -k1.8,1.9 -k1.4,1.7 '.)
Để tắt tính năng phát hiện trang tự động này, hãy sử dụng -u Lựa chọn. Trong trường hợp này, bạn phải
xác định ranh giới trang một cách rõ ràng bằng cách sử dụng định dạng TI Hex.
TI Hex
Hex `` TI '' là một phần mở rộng của Intel hex, cung cấp sự thể hiện rõ ràng về
ứng dụng nhiều trang. Nó thêm các bản ghi của biểu mẫu
: 0200000200NNCC
chỉ ra rằng dữ liệu tiếp theo được đặt trên số trang tương đối NN. (Ghi nhớ
rằng TI-83 và 84 Plus cài đặt các ứng dụng `` ngược '', vì vậy nếu trang tương đối 0 thì
được lưu trữ trên trang tuyệt đối 69, trang tương đối 1 sẽ được lưu trữ trên trang tuyệt đối 68, và như vậy
thứ tư.)
Một số trình lắp ráp có thể tạo dữ liệu nhiều trang bằng cách sử dụng bản ghi loại 4 thay vì loại 2;
thiết kế coi chúng tương đương với loại 2.
Để tương thích với phần mềm khác tạo ra các giả định nhất định về định dạng,
thiết kế sẽ viết 32 byte trên mỗi dòng và sẽ kết thúc các dòng bằng dấu xuống dòng kiểu DOS
trở lại và nguồn cấp dữ liệu dòng.
Đồ thị liên kết TIFL
Định dạng GraphLink tiêu chuẩn (mới hơn) bao gồm một tiêu đề nhị phân 78 byte được thêm vào
ở đầu tệp hex hoặc tệp nhị phân. Nội dung của tiêu đề này như sau:
0x00-07
Chuỗi `** TIFL ** '.
0x08 Số phiên bản chính (`` ID ứng dụng '') của ứng dụng.
0x09 Số phiên bản nhỏ (`` Bản dựng ứng dụng '') của ứng dụng.
Cờ 0x0A; dường như nhằm mục đích cho biết liệu nội dung của tệp có phải là tệp nhị phân hay không
(0) hoặc TI Hex (1). Tuy nhiên, giá trị này không được thiết lập nhất quán bởi phần mềm khác.
0x0B trường `` Loại đối tượng ''; rõ ràng chỉ ra một cái gì đó về loại dữ liệu. Bộ
thành 0x88 trong hầu hết các tệp TI-73 và TI-83 Plus; được đặt thành 0 trong các tệp TI-89 và TI-92 Plus.
0x0C-0F
Tháng thập phân được mã hóa nhị phân tháng (một byte), ngày (một byte) và năm (hai byte, lớn
endian) khi ứng dụng đã được ký.
Độ dài 0x10 của tên ứng dụng.
0x11-18
Tên của ứng dụng.
0x19-2F
Đã đặt trước, luôn được đặt thành XNUMX.
Loại máy tính 0x30 (0x73 = TI-83 Plus, 0x74 = TI-73, 0x88 = TI-92 Plus, 0x98 = TI-89.)
0x31 Loại dữ liệu (0x23 = nâng cấp hệ điều hành, 0x24 = ứng dụng, 0x25 = chứng chỉ.)
0x32-49
Đã đặt trước, luôn được đặt thành XNUMX.
0x4A-4D
Độ dài cuối nhỏ của dữ liệu sau (độ dài của tệp hex, không phải trên-
kích thước máy tính của ứng dụng.)
Cũng tồn tại các tệp TIFL nhiều phần, chỉ bao gồm hai hoặc nhiều tệp TIFL
hòa hợp với nhau. (Ví dụ: thỏa thuận cấp phép phần mềm hoặc tệp chứng chỉ
có thể được đính kèm vào một ứng dụng.) thiết kế xử lý các tệp này theo một cách hạn chế: nó
sẽ chỉ đọc phần đầu tiên có kiểu dữ liệu được công nhận, bỏ qua bất kỳ dữ liệu nào khác trong
tập tin. thiết kế không thể tạo tệp TIFL nhiều phần, nhưng chúng có thể được tạo bằng cách sử dụng
góixxk(1) (hoặc đơn giản là sử dụng làm sao(1).)
Nhị phân
thiết kế cũng có thể đọc các tệp ứng dụng nhị phân; chúng được cho là liền kề, vì vậy khi
ký một ứng dụng nhiều trang, mỗi trang trừ trang cuối cùng phải được điền đầy đủ 16k.
KEY FILE M FORU ĐƠN
Các tệp khóa chứa dữ liệu cần thiết để ký và xác thực các ứng dụng. (Phần
của tệp khóa được sử dụng để xác thực được gọi là khóa `` công khai ''; phần được sử dụng cho
ký là khóa `` riêng tư ''. Chỉ khóa công khai được lưu trữ trên chính máy tính.)
Các tệp khóa chính thức từ TI có hai dạng, được gọi là định dạng `` Rabin '' và `` RSA ''.
Lưu ý rằng thiết kế hiện hỗ trợ sử dụng tệp khóa kiểu Rabin để tạo RSA
chữ ký, nhưng không phải là ngược lại.
Rabin chính định dạng
Định dạng tệp khóa Rabin thường được sử dụng để ký ứng dụng TI-73 và TI-83 Plus
chìa khóa. Nó bao gồm ba dòng, mỗi dòng chứa một số nguyên lớn. Dòng đầu tiên là
khóa công khai, n; thứ hai và thứ ba là hai yếu tố của nó, p và q.
Mỗi dòng bắt đầu bằng hai chữ số thập lục phân, cho biết độ dài của số tính bằng byte,
theo sau là các byte, được viết bằng hệ thập lục phân theo thứ tự cuối con số nhỏ.
RSA chính định dạng
Định dạng tệp khóa RSA thường được sử dụng để ký ứng dụng TI-89 và TI-92 Plus
chìa khóa. Nó bao gồm ba dòng: ID khóa, khóa công khai nvà số mũ ký kết
d. (d là nghịch đảo của số mũ xác thực, 17, modulo ϕ (n), và do đó tính toán d
về mặt tính toán tương đương với bao thanh toán n.)
ID khóa là một số thập lục phân ngắn, phải khớp với nội dung của 811x
trường tiêu đề. Những con số n và d được viết dưới dạng số nguyên lớn, như trong khóa Rabin
định dạng.
Sử dụng thiết kế thỏ trực tuyến bằng các dịch vụ onworks.net