Notification texts go here Contact Us Buy Now!

[Bản dịch] SECCON CTF 2013 vòng loại trực tuyến forensics 400

Đây là một giải pháp pháp y 2013 điểm cho vòng loại trực tuyến SECCON CTF 400.
Tôi không thể giải quyết nó trong suốt cuộc thi, vì vậy tôi đã dành thời gian để giải quyết nó sau khi nó kết thúc.
Vấn đề: Đọc các đoạn mã QR
Một mảnh mã QR bị thiêu rụi dưới chân núi Phú Sĩ đã được phát hiện. Thiệt hại nghiêm trọng. Sẽ có thể khôi phục nội dung?
Ảnh QR.jpg

Tôi không biết nhiều về các thông số kỹ thuật của mã QR, vì vậy tôi đã tra cứu nó.
  • Phiên bản có sẵn (1-40)
  • Mức sửa lỗi (L, M, Q, H)
  • Có một chế độ (số, chữ và số, byte 8 bit, kanji)
  • Có một chỉ báo chế độ cho biết chế độ nào được sử dụng.
  • Có một chỉ báo số ký tự để cho biết độ dài của chuỗi /dữ liệu.
  • Mã QR để cải thiện độ chính xác đọcXử lý mặt nạ đang được thực 
  • Có một tài liệu tham khảo mẫu mặt nạ cho biết loại mặt nạ nào được treo Nó đã được minh họa trong phiên bản Wikipedia tiếng Anh.

Các điểm đánh dấu được gắn ở 3 góc của mã QR, xung quanh điểm đánh dấu bên trái là mức sửa lỗi (Error Correction Level), tham chiếu mẫu mặt nạ (Mask Pattern), hiệu chỉnh được tính từ mức sửa lỗi và tham chiếu mẫu mặt nạ Bits (Format error correction) ược sắp xếp.
Phần còn lại, bên dưới điểm đánh dấu trên cùng bên phải, là 8 bit dưới cùng của bit hiệu chỉnh này. 

Đây là những gì chúng ta biết cho đến nay...
Mã QR bị che nhưng không thể biết mẫu mặt nạ nào bị che trừ khi có tham chiếu mẫu mặt nạ.
→ Nhưng mã QR trong ảnh không có nửa bên trái nên không biết mẫu mặt nạ là gì.
→Ngoài ra, tôi không biết mức độ sửa lỗi.
Bây giờ tôi tập trung vào hình ảnh sau đây từ Wikipedia tiếng Anh:
Đây là hình ảnh giải thích cách sắp xếp mã của mã QR phiên bản 3 với mức sửa lỗi H.
Tạm thời hãy tổng hợp mã QR của bức ảnh bằng...
Kích thước và vị trí của các chấm thật hoàn hảo phải không?
Rõ ràng, cái trong hình có vẻ là phiên bản 3 và giả sử đó là mã QR có mức sửa lỗi là H thì có vẻ như tất cả các vùng dữ liệu vẫn còn nguyên.
Không thể sửa lỗi được, nhưng nếu đọc được phần này thì có vẻ như có thể quản lý được.
Tuy nhiên, vì mặt nạ đã bị che nên việc đọc nó như vậy sẽ không có ý nghĩa gì.
→ Tôi muốn biết mẫu mặt nạ bằng cách nào đó
→ Bạn có thể thấy 8 bit thấp hơn của bit hiệu chỉnh được gắn dưới điểm đánh dấu phía trên bên phải (phần màu đỏ trong hình trên)!
Hình như bên trái là bit bậc cao nên nếu đọc đến đây bạn sẽ thấy 8bit bậc thấp là 10001001.


↑Theo trang này, mức sửa lỗi (Error Correction Level), tham chiếu mẫu mặt nạ (Mask Pattern) và bit sửa (Format error correction) được tính từ mức sửa lỗi và tham chiếu mẫu mặt nạ được gọi là thông tin định dạng. Nó dường như được thể hiện trong 15bit.
Trong số 15 bit, 5 bit đầu tiên (mức sửa lỗi 2 bit + tham chiếu mẫu mặt nạ 3 bit) được mã hóa BCH để tạo thành các bit sửa 10 bit, người ta nói rằng XOR sẽ được khắc vào mã QR.
Ở đây, giả sử mức sửa lỗi là H (2 bit trên là 10), có tổng cộng 8 loại mẫu mặt nạ, vì vậy...
Các bit hiệu chỉnh 10 bit thu được bằng mã hóa BCH 10000, 10001, 10010, 10011, 10100, 10101, 10110 và 10111 được thêm vào mỗi bit đó và nếu có 10001001 trong 8 bit thấp hơn của XORed, thì mẫu mặt nạ là có thể được xác định.
Vì vậy, khi tính toán, tham chiếu mẫu mặt nạ 000 là tham chiếu khớp với 8 bit thấp hơn.
Nếu bạn vẽ mã QR từ mã QR ảnh và thông tin định dạng đã xác định thì sẽ như sau.
(Nó chưa thể được đọc bằng đầu đọc, v.v.)
Mặt nạ cho tham chiếu mẫu mặt nạ 000 là (i+j) mod 2 = 0, do đó mặt nạ trông giống như mẫu bàn cờ.
Nếu đắp mặt nạ lại sẽ trở về như ban đầu, nên nếu đắp mặt nạ theo hình bàn cờ vào những vùng đã loại trừ dấu mã QR và thông tin định dạng ở trên, đồng thời tổng hợp sơ đồ bố cục mã trước đó sẽ bị như sau.
Nếu bạn đọc từ D1 đến D26 theo quy tắc sắp xếp bit,

^ Theo trang này, 4 bit đầu tiên là chỉ báo chế độ, trong trường hợp này là 0010, vì vậy đó là chế độ chữ và số và 9 bit tiếp theo là chỉ báo số ký tự, 000100011, vì vậy nó có 35 ký tự ở dạng thập phân.
Sau đó, có vẻ như nó nên được phân tách bằng 11 bit và chuyển đổi 11 bit được phân tách thành số thập phân như sau.
(Vì nó có 35 ký tự nên đọc 6 bit trên của ký tự cuối cùng và chuyển thành số thập phân)
Giá trị của số thập phân này là hai ký tự chữ và số, nó là tổng của mã của ký tự đầu tiên nhân với 45 và mã của ký tự thứ hai.
(Bảng tương ứng mã ký tự bên dưới)
Vì vậy, tôi đã tính toán tất cả các mẫu. Ổn định C (lòng trắng mắt

Kết quả thực hiện dưới đây

Nó sẽ luôn là một số duy nhất nên nếu bạn tìm kiếm danh sách có số được chuyển thành số thập phân thì sẽ tương ứng như sau.
Khi xếp cạnh nhau sẽ là 「CONGRATS. FLAG IS VIVA REED-SOLOMON」 và phím là 「VIVA REED-SOLOMON」
Phần thưởng: Mã QR được khôi phục hoàn toàn
Ấn tượng: Đó là một cơ hội tốt để tìm hiểu mã QR!
(Xin đừng đốt tờ giấy in mã QR nữa > Anh K)

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main(void) {
 int i,j;
 for(i=0;i<=44;i++){
  for(j=0;j<=44;j++){
   printf("45*%d+%d=%d\n",i,j,45*i+j);
  }
 }
 return 0;
}


Nguồn: Eleclog

إرسال تعليق

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.