1. Trang chủ
  2. » Công Nghệ Thông Tin

Hacker Professional Ebook part 130 pdf

6 224 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Hacker Professional Ebook Part 130 Pdf
Trường học University of Information Technology
Chuyên ngành Computer Science
Thể loại Bài viết
Năm xuất bản 2025
Thành phố Ho Chi Minh City
Định dạng
Số trang 6
Dung lượng 124,22 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Vậy thuật toán của giải thuật của chúng ta bây giờ là : Quote: While byte string is not exhausted Begin Top = top_byte of register ; Register = Register shifted 8 bits left ORred with a

Trang 1

Vậy thuật toán của giải thuật của chúng ta bây giờ là :

Quote:

While (byte string is not exhausted)

Begin

Top = top_byte of register ;

Register = Register shifted 8 bits left ORred with a new byte from string ;

Register = Register XORred by value from precomputedTable at position Top ; End

The direct Table Algorithm

Giải thuật đã được nêu trong phần trên có thể được tối ưu Các byte từ byte string không cần phải dịch chuyển qua tòan bộ thanh ghi trước khi chúng được sử dụng Với giải thuật mới này chúng ta có thể XOR một cách trực tiếp một byte từ một byte string với byte đã được dịch chuyển ra ngoài thanh ghi Kết quả sẽ trỏ tới một giá trị trong bảng đã được tính từ trước mà sẽ đựơc đem XOR với thanh ghi Tôi cũng không biết được một cách chính xác rằng tại sao chúng đều cho ra cùng một kết quả , nhưng nó lại có một thuận lợi rất lớn là bạn sẽ không phải thêm các bít hoặc byte 0 vào byte string của bạn (if you know why, pleaz tell me :)

Hãy hình dung về giải thuật :

http://pg.photos.yahoo.com/ph/kienbi &.dnm=a05f.jpg

Kết thúc nốt phần I của Tut này :

The 'reflected' direct Table Algorithm :

Để làm cho mọi thứ trở nên phức tạp hơn có một phiên bản ‘reflected’ của chính giải thuật này.Một Reflected value/register là giá trị mà các bít được trao đổi xung quanh vị chính giữa Lấy vị dụ 0111011001 chính là giá trị reflection của

1001101110

Điều này được nêu ra bời vì UART (chip that performs serial IO) nó gửi từng byte với bit đầu tiên có ý nghĩa ít nhất và bít cuối cùng có ý nghĩa lớn nhất (this is the reverse of the normal situation.)

Do đó tất cả các byte khác nữa cũng được reflected , thay vì việc phải reflecting từng byte trước khi xử lý Lợi ích của quá trình này là nó cho ta một đoạn code

Trang 2

ngắn gọn, cô đọng hơn trong quá trình thi hành Vì vậy trong quá trình tính toán table , các bit được dịch sang bên phải và poly thì được reflected Còn trong việc tính toán CRC thì thanh ghi được dịch sang bên phải (of course) và

reflected table được sử dụng Minh họa :

http://pg.photos.yahoo.com/ph/kienbi 2573.jpg<br />

Some implementations in Assembly :

Để giải quyết cho tất cả những gì đã đề cập ở trên sau đây là thông tin đầy đủ về CRC-32 :

Name : "CRC-32"

Width : 32

Poly : 04C11DB7

Initial value : FFFFFFFF

Reflected : True

XOR out with : FFFFFFFF

Thêm vào đó là thông tin về CRC-16 cho những ai muốn tìm hiểu thêm

Name : "CRC-16"

Width : 16

Poly : 8005

Initial value : 0000

Reflected : True

XOR out with : 0000

‘XOR out with’ là giá trị mà đã được XOR với giá trị cuối cùng của thanh ghi trước khi chúng ta có được kết quả cuối cùng là CRC Đó cũng chính là việc

'reversed' CRC poly's nhưng chúng không thích hợp trong bài viết này Để làm việc với assembly tôi sử dụng 32 bit code trong môi trường DOS 16 bit , vì vậy bạn sẽ thấy sự trộn lận của 32 bit code và 16 bit code nhưng cũng rất dễ dàng để convert nó hoàn toàn sang 32 bit code Chú ý rằng đoạn code bằng assembly này

đã được test rất kỹ để sao cho nó hoạt động chính xác nhất.Đoạn code này cũng có thể được chuyển hóa sang C hoặc Java Ok sau đây là đoạn code bằng hợp ngữ dùng để tính toán CRC-32 table :

Code:

xor ebx, ebx ;ebx=0, because it will be used whole as pointer

Trang 3

InitTableLoop:

xor eax, eax ;eax=0 for new entry

mov al, bl ;lowest 8 bits of ebx are copied into lowest 8 bits of eax

;generate entry

xor cx, cx

entryLoop:

test eax, 1

jz no_topbit

shr eax, 1

xor eax, poly

jmp entrygoon

no_topbit:

shr eax, 1

entrygoon:

inc cx

test cx, 8

jz entryLoop

mov dword ptr[ebx*4 + crctable], eax

inc bx

test bx, 256

jz InitTableLoop

Notes: - crctable is an array of 256 dwords

- eax is shifted to the right because the CRC-32 uses reflected Algorithm

- also therefore the lowest 8 bits are processed

In Java or C (int is 32 bit):

for (int bx=0; bx<256; bx++){

int eax=0;

eax=eax&0xFFFFFF00+bx&0xFF; // the 'mov al,bl' instruction

for (int cx=0; cx<8; cx++){

if (eax&&0x1) {

eax>>=1;

eax^=poly;

}

else eax>>=1;

Trang 4

}

crctable[bx]=eax;

}

The implementation for computing CRC-32 using the table:

computeLoop:

xor ebx, ebx

xor al, [si]

mov bl, al

shr eax, 8

xor eax, dword ptr[4*ebx+crctable]

inc si

loop computeLoop

xor eax, 0FFFFFFFFh

Notes: - ds:si points to the buffer where the bytes to process are

- cx contains the number of bytes to process

- eax contains current CRC

- crctable is the table computed with the code above

- the initial value of the CRC is in the case of CRC-32: FFFFFFFF

- after complete calculation the CRC is XORred with: FFFFFFFF

which is the same as NOTting

In Java or C it is like this:

for (int cx=0; cx>=8;

eax^=crcTable[ebx];

}

eax^=0xFFFFFFFF;

Cuối cùng bây giờ chúng ta cũng đã đi đến phần cuối của phần một : The CRC tutorial.Nếu bạn muốn tìm hiểu sâu hơn nữa về CRC tôi khuyên bạn nên tìm đọc thêm các tài liệu mà tác giả đã khuyến cáo sau đây :

Quote:

References

> A painless guide to CRC error detection algorithm

ftp://ftp.adelaide.edu.au/pub/rocksoft/crc_v3.txt

Trang 5

(I bet this 'painless guide' is more painfull then my 'short' one ;)

> I also used a random source of a CRC-32 algorithm to understand the algorithm better

> Link to crc calculation progs hmmm search for 'CRC.ZIP' or 'CRC.EXE' or something

alike at ftpsearch (http://ftpsearch.lycos.com?form=advanced)

Trong phần sau chúng ta sẽ đến phần 2 không kém phần hấp dẫn : Reversing CRC! Ok Hẹn trong tut sau Thanx ( Sorry nếu như có chỗ tôi dịch chưa sát nghĩa lắm)

Kienmanowar(REA)

Encrypting data with the Blowfish algorithm

Ặc ặc, keke

(Đó là những từ cảm thán mà tui học được trên NET Tui yêu NET và con người ảo của NET ở chổ này hihi )

Gác kiếm đã lâu đang ngâm trầm cái khác, híhí , bài này cũng đã viết lâu rồi (từ lúc mới wen NINI trên NET có send cho ẻm đọan vào đề :) ) Hôm nay lục ra ,thấy cũng giống như một bài luận nên post cho các bạn xem chơi Đọan analysis thuật tóan và cracking cắt bỏ Mong các bạn thông cảm vì em đã lỡ dại gác rồi

VÀO ĐỀ:

Lúc bé, tui thường ở nhà với bà nội , vì mẹ tôi phải đi dạy học xa Và tui là một trong những đứa cháu nội được yêu thương nhất Bà nội tui lúc nào cũng muốn những điều tốt lành cho tôi Bà thường mong muốn: Nếu lớn lên tôi sẽ được làm nghề “gỏ dây thép”, vì nghề này chỉ ngồi ở trong mát lại lương cao.Và ngày hôm nay khi nghiên cứu về mã hóa bổng tôi rất nhớ đến bà TUT này ngòai việc chia sẽ cho các bạn, tui cũng muốn gởi tặng linh hồn Nội tôi Rất rất nhớ bà !!!.huhu

Thưa các bạn, thật ra viết tut ko cần dài dòng như benina hay làm Nhưng vì đối tượng đọc tut mà benina muốn share là các newbie như benina vậy Thật là vất vả cho newbie khi trên các diễn đàn cracker tiếng Việt chưa nhiều tài liệu hướng dẫn

cụ thể Và thường , các newbie ko biết bắt đầu từ đâu Vì vậy bắt buộc benina biết

Trang 6

gì thì sẽ share ngay cho các bạn Thật là vui vẽ khi chúng ta cùng tiến bộ

Như trên tui có nói, bà nội tui rất thích nghề “gỏ dây thép” Vì những năm 60, kỹ thuật còn lạc hậu so với bây giờ, nghề “gỏ dây thép” rất sang trọng, là một nghề

Ngày đăng: 04/07/2014, 11:20

TỪ KHÓA LIÊN QUAN