Hướng dẫn lệnh chuỗi Linux cho người mới bắt đầu (5 ví dụ)

theanh

Administrator
Nhân viên
Việc tìm kiếm bên trong tệp nhị phân/thực thi để lấy các chuỗi mà con người có thể đọc được không phải là loại công việc mà mọi người đều làm, nhưng nếu bạn được yêu cầu làm điều này thì sao? Mở tệp trong trình soạn thảo và tìm kiếm thủ công các thứ không phải là giải pháp tinh tế. Vậy, phải làm gì? Vâng, bạn đoán đúng rồi - có một tiện ích dòng lệnh thực hiện việc này cho bạn.

Công cụ được đề cập có tên là Strings và trong hướng dẫn này, chúng ta sẽ thảo luận về những điều cơ bản của lệnh này bằng một số ví dụ dễ hiểu. Nhưng trước khi thực hiện, chúng ta cần lưu ý rằng tất cả các ví dụ trong bài viết này đều đã được thử nghiệm trên máy Ubuntu 16.04 LTS.

Lệnh Strings của Linux​

Lệnh Strings về cơ bản sẽ in các chuỗi ký tự có thể in được trong các tệp. Sau đây là cú pháp của nó:
Mã:
strings [OPTIONS] FILENAME
Và đây là cách trang hướng dẫn của công cụ mô tả nó:
Mã:
Đối với mỗi tệp được cung cấp, GNU strings in ra các chuỗi ký tự có thể in được
 dài ít nhất 4 ký tự (hoặc số lượng được cung cấp với
 các tùy chọn bên dưới) và theo sau là một ký tự không thể in được.

 Tùy thuộc vào cách chương trình strings được cấu hình, nó sẽ mặc định
 hiển thị tất cả các chuỗi có thể in được mà nó có thể tìm thấy trong
 mỗi tệp hoặc chỉ những chuỗi nằm trong các phần dữ liệu
 đã khởi tạo, có thể tải được. Nếu kiểu tệp không thể nhận dạng hoặc nếu chuỗi đang đọc từ stdin thì nó sẽ luôn hiển thị tất cả các chuỗi có thể in được mà nó có thể tìm thấy.

 Để tương thích ngược, bất kỳ tệp nào xuất hiện sau tùy chọn dòng lệnh just - cũng sẽ được quét toàn bộ, bất kể có tùy chọn -d nào không.

 chuỗi chủ yếu hữu ích để xác định nội dung của các tệp không phải văn bản.
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách lệnh Strings hoạt động.

Câu hỏi 1. Làm thế nào để sử dụng lệnh strings?​

Cách sử dụng cơ bản khá dễ - chỉ cần truyền tên tệp làm đầu vào và thực thi lệnh.

Xin lưu ý rằng vì Strings chủ yếu được sử dụng để trích xuất thông tin từ các tệp nhị phân/có thể thực thi, nên chúng tôi sẽ sử dụng một tệp như vậy trong tất cả các ví dụ của mình.

Ví dụ:
Mã:
strings test
Đây là đầu ra mà lệnh này tạo ra trên hệ thống của tôi:


Câu hỏi 2. Làm thế nào để áp dụng giới hạn ký tự tùy chỉnh?​

Như đã giải thích ở phần đầu, hành vi mặc định của công cụ Strings là chỉ in các chuỗi ký tự có độ dài ít nhất 4 ký tự. Tuy nhiên, nếu muốn, bạn có thể thay đổi giới hạn này bằng tùy chọn dòng lệnh -n (yêu cầu bạn phải truyền một số biểu thị giới hạn mới).

Ví dụ: Nếu bạn muốn đặt giới hạn thành 2, sau đây là cách bạn có thể thực hiện:
Mã:
strings -n 2 test


Vì vậy, bây giờ bạn cũng có thể thấy hai và ba chuỗi ký tự trong đầu ra.

Câu hỏi 3. Làm thế nào để tạo chuỗi in offset của chuỗi ký tự?​

Nếu bạn muốn Strings cũng hiển thị offset của chuỗi ký tự mà nó hiển thị trong đầu ra, thì điều này có thể được thực hiện bằng tùy chọn dòng lệnh -t, yêu cầu bạn cung cấp một ký tự đầu vào chỉ định cơ số của offset - 'o' cho hệ bát phân, 'x' cho hệ thập lục phân hoặc 'd' cho hệ thập phân.

Ví dụ:
Mã:
strings -t d test
Và đây là đầu ra mà nó tạo ra trên hệ thống của tôi:



Vì vậy, bạn có thể thấy các chuỗi trong đầu ra hiện được đặt trước bởi offset tương ứng của chúng.

Câu hỏi 4. Làm thế nào để Strings quét toàn bộ tệp?​

Tùy thuộc vào cách Strings được cấu hình, nó có thể hoặc không quét toàn bộ tệp đầu vào. Tuy nhiên, nếu bạn muốn chắc chắn tuyệt đối rằng công cụ đọc toàn bộ tệp (và không chỉ các phần dữ liệu đã khởi tạo, có thể tải), hãy sử dụng tùy chọn dòng lệnh -a.

Ví dụ:
Mã:
strings -a test
Ngược lại, nếu bạn muốn Strings chỉ hiển thị các chuỗi từ các phần dữ liệu đã khởi tạo, đã tải trong tệp, hãy sử dụng tùy chọn dòng lệnh -d.
Mã:
strings -d test

Câu hỏi 5. Làm thế nào để thay đổi dấu phân cách?​

Như bạn đã thấy, theo mặc định, dấu phân cách mà Strings sử dụng là dấu xuống dòng. Tuy nhiên, nếu muốn, bạn có thể có dấu phân cách tùy chỉnh bằng cách sử dụng tùy chọn dòng lệnh -s.

Ví dụ:
Mã:
strings -s [[[]]] test

Kết luận​

Lệnh Strings là một công cụ cực kỳ hữu ích nếu bạn muốn đào sâu các tệp nhị phân/tệp thực thi để tìm thông tin hữu ích. Chúng tôi đã thảo luận một số tùy chọn dòng lệnh quan trọng tại đây. Vì vậy, hãy thực hành chúng và khi bạn hoàn tất, hãy đến trang hướng dẫn của công cụ để biết thêm thông tin.
 
Back
Bên trên