2012-02-03 28 views
18

Đây là nỗ lực đầu tiên của tôi về kỹ thuật đảo ngược, và thực sự, tôi không biết làm thế nào để đi về nó. Tôi có một loại tư duy về thủ tục và không có nền tảng kiến ​​thức về các phương pháp mã hóa phổ biến. Tuy nhiên, có vẻ như với tôi, nếu tôi có dữ liệu rất nhỏ ở định dạng đúng, và biết rằng có một sự xuất hiện trong dữ liệu của một từ hoặc từ nào đó, và từ đó bắt đầu và kết thúc ở đâu dữ liệu - rằng tôi bằng cách nào đó có thể khám phá ra phương pháp giải mã toàn bộ tệp.Kỹ sư đảo ngược Định dạng tệp

----- ENCRYPTED ------------------------------------------- 
HEX  44 5E 12 47 55 5E 53 17 4C 5C 49 4F 4F 
ACII D^? G U^S ? L \ I O O 
DEC  68 94 63 71 85 94 83 63 76 92 73 79 79 
BIN  01000100 01011110 00111111 01000111 01010101 01011110 01010011 00111111 01001100 01011100 01001001 01001111 01001111 
----- DECRYPTED ------------------------------------------- 
HEX  74 6F 20 74 61 6B 65 20 74 65 73 74 73 
ASCII t o  t a k e  t e s t s 
DEC  116 111 32 116 97 107 101 32 116 101 115 116 115 
BIN  01110100 01101111 00100000 01110100 01100001 01101011 01100101 00100000 01110100 01100101 01110011 01110100 01110011 

Đây chỉ là mẫu dữ liệu. Tôi biết nơi thông tin tiêu đề bắt đầu và kết thúc bởi vì tôi đã kiểm tra hai tệp với các tiêu đề khác nhau - vì vậy tôi biết những từ này dịch đúng từ - nhưng tôi phải đi từ đâu để xác định quy trình mã hóa?

* Tôi biết mọi người sẽ hỏi tại sao: Đây là định dạng tệp VCE (kỳ thi) và tôi muốn dịch thành XML hoặc JSON. Điều này sẽ làm cho nó dễ dàng cho tôi để viết một chương trình so sánh các câu hỏi và câu trả lời từ nhiều tập tin thi, nối thêm, loại bỏ các bản sao, và tạo ra những cái mới. *

+0

Tôi đoán những gì bạn đọc là * mã hóa * phần từ trên cao? Nhưng bạn đã nhận được phần * DECRYPTED * từ đâu, khi nó thực sự không được giải mã? Cảm ơn –

+2

@NiklasR Tôi đã có thể so sánh nhiều tệp mà tôi biết là giống hệt 100%, ngoại trừ một giá trị mà tôi đã tạo. Do đó tôi biết văn bản trên sẽ là 'để thực hiện kiểm tra' sau khi giải mã. – Markus

+0

Bạn định giá vé như thế nào? Tôi đã nhìn vào làm một cái gì đó tương tự. – WernerCD

Trả lời

5

Thử XOR hai chuỗi lại với nhau. Những gì bạn nhận được là

HEX  30 31 32 33 34 35 36 37 38 39 3A 3B 3C 
ASCII 0 1 2 3 4 5 6 7 8 9 : ; < 

Xem mẫu chưa?

+0

hehe không bao giờ nhớ :) +1 –

+0

Có hoạt động bit, có điều đó trong tâm trí của tôi nhưng không nhìn vào nó. Làm thế nào bạn biết rằng quá nhanh? Tôi đã nhìn chằm chằm vào điều này một lúc! – Markus

+1

@Markus: Đó là điều đầu tiên tôi thử. (Điều thứ hai sẽ là cộng và trừ modulo 256.) Ngoài ra, so sánh kiểu dữ liệu được mã hóa và giải mã gợi ý một cái gì đó như thế, vì mã ASCII gần đó (chẳng hạn như hai khoảng trống trong văn bản đã giải mã) nhưng không giống hệt nhau). –

1

Luôn thử XOR'ing (Hoạt động bit-khôn ngoan) trước khi bạn có tệp hex và bạn cho rằng nó đã được mã hóa ..
Có nhiều lý do cho việc này.

  • Khi bạn áp dụng mã hóa bằng cách XOR bạn có thể de-crypt nó bằng cách áp dụng XOR lại
  • Vì vậy nó là cách rất đơn giản để mã hóa một cái gì đó.
    Bạn có thể đi qua các trang wiki sau đây để biết thêm chi tiết:
    XOR_wiki
    Ngoài ra nếu bạn có quyền truy cập vào các Nghệ thuật lập trình (và cũng thời gian để tham khảo mà: D) đi qua phần hoạt động chút khôn ngoan.
    Nó được giải thích rất rõ. Worth reading mate :)
+0

Xem Câu hỏi sau. Nó trả lời truy vấn của bạn. [Tại sao Xor được sử dụng trong mã hóa] (http://stackoverflow.com/questions/1379952/why-is-xor-used-on-cryptography) –

2

Trường câu hỏi Giá trị XOR bắt đầu bằng 19 và sau đó là mọi ký tự thứ hai.

mã hóa:

6D 1A 74 1C 3D 1E 6B 20 40 22 48 24 40 26 07 28 5D 2A 4E 2C 5E 2E 5B 30 42 32

XOR:

19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32

giãi mã như:

t?o? ?t?a?k?e? ?t?e?s?t?s?

+1

Có thể nó được mã hóa dưới dạng UTF-16 và không chỉ ASCII với "mọi thứ khác tính cách"? – danfuzz