Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [An toàn thông tin] Trích xuất chuỗi ký tự in được từ bản sao bộ nhớ

    Công cụ kinh điển strings trong điều tra số dùng để quét một bản sao bộ nhớ (memory dump) hoặc ảnh đĩa nhị phân và trích ra các đoạn ký tự ASCII in được liên tiếp có độ dài đủ lớn — thường là nơi ẩn chứa mật khẩu, URL, đường dẫn tệp hay các chuỗi đáng ngờ khác.

    Cho một bản dump dạng chuỗi hex và một ngưỡng độ dài tối thiểu LLL, hãy trích ra mọi đoạn byte liên tiếp mà toàn bộ đều là ký tự ASCII in được (mã từ 0x20 đến 0x7E, bao gồm khoảng trắng) và có độ dài từ LLL trở lên, theo đúng thứ tự xuất hiện trong dump. Một byte không in được (ngoài khoảng 0x20–0x7E) luôn kết thúc đoạn đang xét (dù đoạn đó có được giữ lại hay bị loại vì quá ngắn).

    Ví dụ: dump 00 48 65 6C 6C 6F 00 57 6F 72 6C 64 00 (các byte 00 không in được xen giữa hai từ Hello và World) với L=4L = 4L=4 cho ra hai chuỗi: Hello và World.

    • Định dạng đầu vào:

      Dòng 1: chuỗi hex (độ dài chẵn, có thể rỗng) biểu diễn các byte của bản dump. Dòng 2: số nguyên LLL (L≥1L \ge 1L≥1) — độ dài tối thiểu của chuỗi cần trích xuất.

    • Định dạng đầu ra:

      Nếu có ít nhất một chuỗi thoả điều kiện: in mỗi chuỗi trên một dòng riêng, theo đúng thứ tự xuất hiện trong dump. Nếu không có chuỗi nào thoả điều kiện (kể cả khi dump rỗng): in NONE.

    Ví dụ:

    Đầu vào:

    0048656c6c6f00576f726c6400
    4

    Đầu ra:

    Hello
    World
    

    Đầu vào:

    0048656c6c6f00
    10

    Đầu ra:

    NONE
    

    Đang tải editor...