উত্তর:
আপনি টিসিপি, বা ইউনিক্স ডোমেন সকেট বা ইউনিক্স ডোমেন সকেটে অ্যাবস্ট্রাক্ট নেমস্পেসের মাধ্যমে এক্স 11 নিয়ে কথা বলতে পারেন ।
যখন DISPLAY সেট করা থাকে host:4
, এর জন্য সংক্ষিপ্ত tcp/host:4
, ক্লায়েন্টরা সার্ভারের সাথে সংযোগ করতে টিসিপি ব্যবহার করে। টিসিপি পোর্টটি তখন 6000 প্লাস প্রদর্শন সংখ্যা (সেই ক্ষেত্রে 6004)।
সেক্ষেত্রে আপনি যে কোনও নেটওয়ার্ক স্নিফার সহ ট্র্যাফিক ক্যাপচার করতে পারেন tcpdump
বা wireshark
সেই বন্দরে টিসিপি ট্র্যাফিক ক্যাপচারের মাধ্যমে করতে পারেন ।
যখন $DISPLAY
কেবল :4
(সংক্ষিপ্ত unix/:4
) হয়, তখন ক্লায়েন্টরা একটি ইউনিক্স ডোমেন সকেট ব্যবহার করে। উভয় ক্ষেত্রেই /tmp/.X11-unix/X4
বা একই পথ বিমূর্ত নামস্থান (সাধারণত হিসাবে দেখানো @/tmp/.X11-unix/X4
মধ্যে netstat
আউটপুট)।
ট্র্যাফিক ক্যাপচার করা তখন আরও জটিল।
যদি আপনার এক্স সার্ভারটি টিসিপি শুনে (তবে তারা আজকাল আর তেমন প্রবণতা রাখে না) তবে লুপব্যাক ইন্টারফেসে 6004 পোর্টে নেটওয়ার্ক ট্র্যাফিকের পরিবর্তে পরিবর্তিত DISPLAY
হয়ে ক্যাপচার করা সহজ ।localhost:4
:4
যদি এটি না হয় তবে আপনি মাঝখানে এমন socat
একজন মানুষ হিসাবে ব্যবহার করতে পারেন যিনি সংযোগগুলিকে টিসিপি হিসাবে গ্রহণ করেন এবং তাদের ইউনিক্স বা বিমূর্ত হিসাবে ফরোয়ার্ড করতে পারেন :
socat tcp-listen:6004,reuseaddr,fork unix:/tmp/.X11-unix/X4
তারপরে আপনি উপরের মতো নেটওয়ার্ক ট্র্যাফিক সেট $DISPLAY
করতে localhost:4
এবং ক্যাপচার করতে পারেন বা socat
এটি ডাম্প করতে বলতে পারেন -x -v
।
এখন, আপনি যদি পরিবর্তন করতে না $DISPLAY
পারেন এবং ইউনিক্স ডোমেন সকেট ব্যবহার করে এমন একটি ইতিমধ্যে চলমান স্থানীয় এক্স অ্যাপ্লিকেশনটির ট্র্যাফিক ক্যাপচার করতে চান তবে এটিই জটিল।
strace
এক্স অ্যা সার্ভারের সাথে যোগাযোগের জন্য আপনার অ্যাপ্লিকেশনটি যে প্রেরণ / গ্রহণযোগ্য সিস্টেম কলগুলি সনাক্ত করতে এটি ব্যবহার করতে (বা আপনার সিস্টেমে সমপরিমাণ কমান্ডটি লিনাক্স না হলে) ব্যবহার করতে পারে।
এর জন্য এখানে xterm
, আমি মান্য এটা আছে writev()
, recvfrom()
এবং recvmsg()
যে জন্য ফাইল বর্ণনাকারী 3 সিস্টেম কল। সুতরাং আমি এটি করতে পারি:
strace -qqxxttts9999999 -e writev,recvmsg,recvfrom -p "$xterm_pid" 2>&1 |
perl -lne '
if (($t,$f,$p) = /^([\d.]+) (writev|recvmsg|recvfrom)\(3, (.*)/) {
@p = ($p =~ /\\x(..)/g);
$dir = $f eq "writev" ? "O" : "I";
while (@p) {print "$dir $t 0000 " . join(" ", splice @p,0,64000)}
}' | text2pcap -T6000,1234 -Dqt %s. - - | wireshark -ki -
(বা tshark -Vi -
)
আউটপুট থেকে পাঠানো টাইমস্ট্যাম্প এবং বাইটগুলি উত্তোলন করা এবং তা খাওয়ানোর আগে এটিকে (6000 বন্দরটিতে ডামি টিসিপি হেডার যুক্ত করে ) রূপান্তর করতে strace
ব্যবহার text2pcap
করার ধারণা । আমরা পিসিপি রেকর্ডের সর্বোচ্চ দৈর্ঘ্যে 64kiB সীমা এড়াতে প্যাকেটগুলিও বিভক্ত করি।pcap
-T6000,1234
wireshark
নোট করুন যে text2pcap
ট্র্যাফিকের দিকনির্দেশটি সঠিকভাবে পাওয়ার জন্য সঠিকভাবে কাজ করার জন্য আপনার ওয়্যারশার্কের তুলনামূলক সাম্প্রতিক সংস্করণ প্রয়োজন।
আপনি যদি মূলত এক্স 11 প্রোটোকলটিতে আগ্রহী হন এবং অন্তর্নিহিত টিসিপি / আইপি এবং ইথারনেট স্টাফ না করে এবং আপনি ক্লায়েন্ট বা সার্ভার সেটিংস সামঞ্জস্য করতে সক্ষম হন তবে আপনি এক্স 11 এর মধ্যে ট্র্যাফিক ক্যাপচার এবং ডিকোড করার জন্য বিশেষভাবে পরিকল্পিত একটি সরঞ্জাম ব্যবহার করতে পারেন ক্লায়েন্ট এবং একটি এক্স 11 সার্ভার। wireshark
এক্স 11 ডিসেক্টর থেকে ভিন্ন , এই সরঞ্জামগুলি পুরোপুরি এর সাথে জড়িত থাকার কারণে ট্র্যাফিক দ্বারা বিভ্রান্ত হওয়ার সম্ভাবনা কম।
প্রধানটি হ'ল এক্সস্কোপ যা কিছু ইউনিক্স বা লিনাক্স বিতরণের জন্য বাইনারি হিসাবে উপস্থিত না হওয়া সত্ত্বেও উত্স থেকে সহজেই তৈরি করা যায় ।
বিকল্পভাবে, এছাড়াও xtruss এবং xtrace আছে তবে তাদের সাথে আমার কোনও অভিজ্ঞতা নেই।
এই সমস্ত সরঞ্জাম রিভার্স-প্রক্সিগুলির সাথে বাস্তব এক্স 11 সার্ভারে সংযোগ রিলে করার মতো কাজ করে। প্রক্সিটির সাথে সংযোগ স্থাপন করতে ক্লায়েন্টরা কেবল একটি পৃথক DISPLAY পরিবর্তনশীল (বা -ডিসপ্লে যুক্তি) ব্যবহার করে।
উদাহরণ:
$ wget http://xorg.freedesktop.org/archive/individual/app/xscope-1.4.1.tar.gz
..
$ tar xzf xscope-1.4.1.tar.gz
..
$ cd xscope-1.4.1
$ ./configure && ./make
..
$ ./xscope & sleep 5; xclock -display :1
...
0.00: Client --> 12 bytes
byte-order: LSB first
major-version: 000b
minor-version: 0000
0.00: 692 bytes <-- X11 Server
protocol-major-version: 000b
protocol-minor-version: 0000
release-number: 00adfef8
resource-id-base: 04c00000
resource-id-mask: 001fffff
motion-buffer-size: 00000100
image-byte-order: LSB first
bitmap-format-bit-order: LSB first
bitmap-format-scanline-unit: 20
bitmap-format-scanline-pad: 20
min-keycode: 8 (^H)
max-keycode: 255 (\377)
vendor: "The X.Org Foundation"
pixmap-formats: (7)
roots: (1)
0.00: Client --> 20 bytes
............REQUEST: QueryExtension
name: "BIG-REQUESTS"
0.00: 32 bytes <-- X11 Server
..............REPLY: QueryExtension
present: True
major-opcode: 85
দ্রষ্টব্য: যদি কোনও কারণে আপনি X11 ক্লায়েন্ট সেটিংস (ডিসপ্লে) পরিবর্তন করতে না পারেন তবে আপনি অন্য কোনও পোর্ট (সাধারণত 6001 বনাম 6000) শোনার জন্য সার্ভারটি পুনরায় কনফিগার করতে সক্ষম হবেন এবং তারপরে xscope
মূল পোর্ট (6000) শোনার জন্য কনফিগার করতে পারবেন।
xtrace -D:1 -d:0 -k
। (বা এক্স 11 ট্রেস, যেমন এক্সিকিউটেবলের নাম কিছু ডিস্ট্রোতে রাখা হয়েছে)
এক্স 11 টিসিপিটিকে তার পরিবহন প্রোটোকল হিসাবে ব্যবহার করে। টিসিপি পোর্টের পরিসীমাটি এক্স 11 এর জন্য সাধারণত 6000-6063 হয় তবে সম্ভবত আপনি দেখতে পাবেন টিসিপি পোর্ট 6000 ব্যবহৃত হচ্ছে।
সুতরাং, আপনার এই বন্দর পরিসীমা এবং প্রশ্নে থাকা হোস্টের জন্য ফিল্টারিং করে ট্র্যাফিক পর্যবেক্ষণ করতে আপনার পছন্দসই কোনও নেটওয়ার্ক মনিটর ব্যবহার করতে সক্ষম হওয়া উচিত। আমি আরও জানি, wireshark
উদাহরণস্বরূপ, ইতিমধ্যে x11
আপনার আগ্রহী ট্র্যাফিক নিরীক্ষণের জন্য একটি ফিল্টার প্রিসেট রয়েছে ।
উদাহরণস্বরূপ, স্থানীয় মেশিনে সমস্ত এক্স 11 ট্র্যাফিক নিরীক্ষণের জন্য (যদি টিসিপি ব্যবহার করে; @ স্টাফেন চ্যাজেলাসের উত্তরটি দেখুন) নীচের ফিল্টারটি ব্যবহার করুন:
x11 and ip.src=127.0.0.1 and ip.dst=127.0.0.1
lsof -U | grep '^X'
।