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

Hacker Professional Ebook part 135 ppt

6 119 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

Định dạng
Số trang 6
Dung lượng 138,36 KB

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

Nội dung

Đó là thuật tóan MD5 Theo benina, các bạn newbie trước khi làm quen với cách tạo keygen, ngòai việc biết code bằng một ngôn ngữ lập trình nào đó như ASM chẳng hạn , các bạn nên học qua c

Trang 1

+}

+

+static inline void crypto_chksum_digest(struct crypto_tfm *tfm,

+struct scatterlist *sg,

+unsigned int nsg, u32 *out)

+{

+BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CHKSUM); +tfm->crt_chksum.cht_digest(tfm, sg, nsg, out);

+}

+

/*

* HMAC support

*/

Clay Haapala (chaapala@cisco.com) Cisco Systems SRBU +1 763-398-1056

6450 Wedgwood Rd, Suite 130 Maple Grove MN 55311 PGP: C89240AD Funny, I didn't think Haliburton was into aerospace

Visual Basic

Code:

Public Class CRC32

' This is v2 of the VB CRC32 algorithm provided by Paul

' (wpsjr1@succeed.net) - much quicker than the nasty

' original version I posted Excellent work!

Private crc32Table() As Integer

Private Const BUFFER_SIZE As Integer = 1024

Public Function GetCrc32(ByRef stream As System.IO.Stream) As Integer

Dim crc32Result As Integer

crc32Result = &HFFFFFFFF

Dim buffer(BUFFER_SIZE) As Byte

Trang 2

Dim readSize As Integer = BUFFER_SIZE

Dim count As Integer = stream.Read(buffer, 0, readSize)

Dim i As Integer

Dim iLookup As Integer

Dim tot As Integer = 0

Do While (count > 0)

For i = 0 To count - 1

iLookup = (crc32Result And &HFF) Xor buffer(i)

crc32Result = ((crc32Result And &HFFFFFF00) \ &H100) And

&HFFFFFF ' nasty shr 8 with vb :/

crc32Result = crc32Result Xor crc32Table(iLookup)

Next i

count = stream.Read(buffer, 0, readSize)

Loop

GetCrc32 = Not (crc32Result)

End Function

Public Sub New()

' This is the official polynomial used by CRC32 in PKZip

' Often the polynomial is shown reversed (04C11DB7)

Dim dwPolynomial As Integer = &HEDB88320

Dim i As Integer, j As Integer

ReDim crc32Table(256)

Dim dwCrc As Integer

For i = 0 To 255

dwCrc = i

For j = 8 To 1 Step -1

If (dwCrc And 1) Then

dwCrc = ((dwCrc And &HFFFFFFFE) \ 2&) And &H7FFFFFFF dwCrc = dwCrc Xor dwPolynomial

Else

dwCrc = ((dwCrc And &HFFFFFFFE) \ 2&) And &H7FFFFFFF End If

Trang 3

Next j

crc32Table(i) = dwCrc

Next i

End Sub

End Class

Zombie(REA)

MD5 Algorithm

Tác giả: Benina thu lượm :)

Đây là bản beta, mong ý kiến đóng góp của các bạn

Sau bao ngày ngâm cứu , tốn kém bao nhiêu là nước mũi (do bị cảm) và bao nhiêu

là nước mắt (do vừa hút thuốc vừa đọc màn hình vi tính), hôm nay benina xin

“trình làng” kết quả “công trình ngâm cứu” dài hơi này Đó là thuật tóan MD5 Theo benina, các bạn newbie trước khi làm quen với cách tạo keygen, ngòai việc biết code bằng một ngôn ngữ lập trình nào đó như ASM chẳng hạn , các bạn nên học qua các thuật tóan mã hóa Vì việc học cho tốt ASM, chưa chắc các bạn tạo keygen được Luyện đọc code ASM cho tốt là một việc nên làm, nhưng đọc code giỏi cũng chưa chắc các bạn nắm hết ý nghĩa của đọan code để tạo keygen Vì các soft mới sau này ( nhất là các soft lớn) họ dùng các cách mã hóa làm phức tạp quá trình crack Khi ta ko nắm vững một số thuật tóan mã hóa , thì dù cho bạn có thiệt

là giỏi , bạn cũng phải mất rất nhiều thời gian để code một keygen Nhưng nếu bạn nắm được thuật tóan mã hóa của nó… thì đến lúc “gặp mặt” nhau, “tay nắm mặt mừng” và … “Hi, chào MD5” hihi Lúc đó, keygen là “chiện nhỏ như con thỏ” Đây ko phải là “cách học làm sang”, benina chưa bao giờ học gì quá sức mình Mà thiết nghĩ, đây là điều căn bản mà các Newbie cần phải có để bắt đầu đi vào con

Trang 4

đường “tội lỗi chuyên nghiệp” Tôi chưa thấy các bạn quan tâm lắm về các thuật tóan Học thuật tóan chúng ta học được rất nhiều điều Nó giống như các bảng cửu chương mà lúc tiểu học chúng ta đã thuộc nằm lòng Chúng ta phải học thuộc các lọai thuật tóan mã hóa, quen với nó, thấy nó làm việc, trò chuyện với nó , nói

chung là tạo tình “bằng hữu thắm thiết”….để khi gặp nó, hay con cháu của nó, hoặc một cái gì lai căn nó thì chúng ta biết ngay …đó là người “bà con”đã quen biết Đó là những gì benina muốn nói với các bạn newbie

Dẫn nhập đầu tiên mà benina muốn nói với các bạn về MD5 là:

Mỗi một người có một “dấu lăn tay” (fingerprint) riêng ko ai giống ai đúng ko các bạn? Lúc 15 tuổi tui làm giấy CMND cho đến nay “dấu lăn tay” của tui vẫn vậy

Và có khi nào bạn hỏi: Ai đã tạo ra nó thế?! Xin trả lời: đó là do Ông Trời tạo ra bạn ạ!!!.(lãng xẹt) Hihi

Từ những ý tưởng đó , con người mới nghĩ ra việc : tại sao chúng ta ko làm Ông Trời một phen Chúng ta thử tạo ra “dấu lăn tay” cho 1 cái gì đó để phân biệt

chúng với nhau Ví dụ như tên của mỗi người chẳng hạn (các bạn nên có khái niệm tên (name) là một chuổi các ký tự được gọi là string) Hêhêhê Do vậy , trong IT người ta bắt đầu nghiên cứu các “cái máy” tạo ra “dấu lăn tay” cho các chuổi

string Một trong những “cái máy” đó là “Thuật toán MD5” mà chúng ta sắp

nghiên cứu đây

“Dấu lăn tay” do Thuật tóan MD5 (gọi tắt là MD5) từ một string gọi là message digest (tín hiệu digest, gọi tắt là md) hay còn gọi là “MD5 hashes” (gọi tắt là

hashes) Một tín hiệu hashes là một chuổi các ký tự hexa ( bao gồm số 0-9 và a-f, các số hex ấy mà!!) Về nguyên tắt tạo ra hashes là :

-Bất cứ string nào cũng điều có duy nhất một hashes, ko bao giờ có 2 hashes cho 1 string

-Hai string khác nhau thì có 2 hashes khác nhau, ko bao giờ trùng nhau

-Hảy nhớ điều này: từ 1 hashes ta tìm ngược lại string của nó được ko? Điều này

ko bao giờ làm được Ko một “máy” nào làm được.Chúng ta nên nhớ điều này

Đó là những gì mà thuật tóan MD5 làm ra

TUT này chúng ta ko tìm hiểu sâu thật sâu về MD5, như là tại sao làm như thuật tóan thì đáp ứng các điều kiện trên vừa nói, đó là việc của các nhà phát minh, các nhà tóan học.Chúng ta chỉ tìm hiểu cách thực hiện của MD5 mà thôi Từ đó chúng

ta có thể ứng dụng nó để nhận dạng ra chương trình nào sử dụng MD5, và sau đó

Trang 5

….keygen nó …hihi

Sau đây tui xin trích dẫn một số tài liệu về MD5 mà tui tìm hiểu được trên Net Các bạn đọc từ từ nhé ko thôi bị mắc nghẹn à

MỘT SỐ THÔNG TIN CĂN BẢN:

MD5 LÀ GÌ ?

MD để chỉ cho “message digest” (Lấy 2 chử đầu) MD5 là một thuật tóan lấy một tín hiệu vào có chiều dài bất kỳ và đưa ra một tín hiệu digest có chiều dài cố định (128-bit, 32 ký tự hexa), được làm ra từ 1 giá trị hexa (chú ý : mỗi ký tự hex là 4 bit, do đó 128bit là 32 ký tự hex) OK, bây giờ nói rõ hơn một chút : MD5 là cách căn bản để lấy chùm ký tự ( là digits, alphabeic hay gì khác ), được gọi là string nhập vào, và thay đổi chúng thành một chùm ký tự dài 32 ký tự , được gọi là tín hiệu digest (message digest) hay hashes của string được nhập vào, chuổi 32 ký tự này được tạo ra từ các ký tự hexa ( những digits: 0-9 và các chử a-f) Điều này có nghĩa là, với một string nhập vào có chiều dài bất kỳ , MD5 sẽ luôn luôn cài đặt

“một vài thứ” để thành một chuổi string dài 32 ký tự, mà các ký tự là các ký tự hexa Tín hiệu digest sẽ ko có khỏang trống, hay dấu hoặc kép hay bất cứ thứ gì khác 0-9 và a-f trong tín hiệu hashes được xuất ra

MD5 hashes có tiện dụng là những hashes tạo ra trông khác nhau hòan tòan từ những tín hiệu nhập vào hơi hơi giống nhau Ví dụ sau sẽ làm rỏ hơn về điều này:

• The MD5 hash of jim is 5e027396789a18c37aeda616e3d7991b

• The MD5 hash of Jim is d54b3c8fcd5ba07e47b400e69a287966

• The MD5 hash of Jimmy is 495b3121d23f5988b133882b36aa7214

Như bạn thấy đó, có ba tín hiệu nhập vào “hơi hơi giống nhau” nhưng các tín hiệu MD5 hashes xuất ra hòan tòan khác nhau Ví dụ này cũng chứng minh hai ký tự j

và J là 2 ký tự khác nhau Do đó chúng ta thấy “máy đẻ” ra MD5 hashes là lọai rất nhạy cảm Ở đây cần chú ý thêm là trong ví dụ thứ 3 chỉ thêm vào 2 ký tự (my) ở cuối chuổi của ví dụ 2 , và hashes của nó đã thay đổi hòan tòan Vì vậy chúng ta ko thể có hashes của chuổi “Blehlo” từ hashes của chuổi “Bleh” bằng cách “vá viếu” thêm vài ký tự - thay đổi trong chuổi string nhập vào thì tín hiệu hashes của nó

Trang 6

cũng sẽ thay đổi hòan tòan Và ở đây cũng nên chú ý với 3 string nhập vào có chiều dài ko giống nhau nhưng các hash sinh ra đều có chiều dài là 32 ký tự (bao gồm các số 0-9 và a-f), ở ví dụ sau cùng ta cũng thấy chuổi string nhập vào dài hơn

2 ký tự so với 2 string trước nhưng chuổi hash của nó cũng chỉ có 32 ký tự chử số hex

Mặc dù tín hiệu MD5 hashes xuất ra ngẫu nhiên từ string nhập vào , nhưng thật ra chúng ta có một kiểu mẫu tạo hashes MD5(một thuật tóan MD5) được sử dụng để

“quay” string nhập vào thành một md hay một hashes Nếu bạn muốn sử dụng nó thì bạn có thể đọc ở tut này ở phần sau Bởi vì MD5 được sử dụng một thuật tóan giống nhau cho mỗi lần tính tóan nên MD5 hashes của chuổi jim luôn luôn là 5e027396789a18c37aeda616e3d7991b

Trong thực tế , một số chương trình còn thêm vào một vào vài lọai thuật tóan khác khi md được sinh ra , làm cho MD5 cực kỳ thông dụng và là 1 công cụ rất mạnh

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

TỪ KHÓA LIÊN QUAN