Skip to content

The X Y Problem

Posted on:December 23, 2019

Vấn đề là gì?

The X Y Problem, hay Vấn đề X Y là việc hỏi về một giải pháp bạn đang suy nghĩ thay vì hỏi về vấn đề gốc.

Hệ quả của nó chính là mất thời gian và công sức của cả đôi bên, cả người hỏi lẫn người được hỏi.

Ta có thể mô tả vấn đề này đơn giản như sau:

Giải quyết nó ra sao?

Ví dụ

Ví dụ 1

Bạn T muốn lấy file extensions, nhưng thay vì hỏi đúng vấn đề, bạn ấy lại đi hỏi cách lấy 3 ký tự cuối của một chuỗi

T: Làm thế nào tôi có thể lấy được 3 ký tự cuối của một chuỗi ?

Kien: Nếu nó là một biến rồi thì chỉ đơn giản echo ${foo: -3} là được.

Kien: À nhưng mà sao lại lấy 3 ký tự cuối làm gì ?

Kien: Có phải cậu muốn lấy file extension?

T: À đúng.

Kien: HÃY HỎI ĐÚNG THỨ CẬU CẦN! không phải lúc nào file extension cũng chỉ có 3 ký tự, nên việc cậu lấy 3 ký tự cuối đâu có giải quyết được vấn đề đâu (canloi).

Kien: echo ${foo##*.}

Ví dụ 2

Nếu đơn giản bạn C nói là “mình muốn không cho người khác biết thông tin OS của mình” thì câu chuyện đã đơn giản hơn rất nhiều.

C: ‘nmap -O -A 127.0.0.1’ trả về message có ‘OS:‘. Làm cách nào tôi có thể thay thế nó?

Kien: Xem trong source code của nmap, xem chỗ nào nó detect Linux, sau đó viết lại đoạn đó để nó không in ra nữa.

C: Yeah, nhưng tôi chẳng biết chút nào về Linux api cả.

Kien: Vốn fingerprint của nmap được xây dựng trên cách hoạt động của TCP/IP stack, thế nên thực ra không có phương phương án nào khác ngoài việc viết lại một phần trong stack đó.

C: Tôi thực sự cần tránh message đó xuất hiện. iptables có thể làm điều đó không nhỉ?

Kien: Vậy, đừng sử dụng OS detection hay version scanning nữa.

C: Tôi muốn không cho người khác biết là mình đang sử dụng OS nào.

Tham khảo