Tcpdump সহ HTTP শিরোনামগুলির জন্য মানব পাঠযোগ্য বিন্যাস


69

আমি লিনাক্স মেশিনে অ্যাপাচি (পোর্ট 80 এ শুনছি) টমক্যাট (4080 বন্দরে) পাঠানো এইচটিটিপি শিরোনামগুলি দেখতে চাই।

উইকিপিডিয়া অনুসারে ,

শিরোনাম ক্ষেত্রগুলি স্পষ্ট-পাঠ্য স্ট্রিং বিন্যাসে কোলন-বিভক্ত নাম-মান জোড়া।

আমি নিম্নলিখিত tcpdumpকমান্ডের কিছু বৈকল্পিক চেষ্টা করেছি :

$ sudo tcpdump -lnX dst port 4080 -c 10

11:29:28.605894 IP SOME_IP.33273 > SOME_IP.4080: P 0:49(49) ack 1 win 23 <nop,nop,timestamp 1191760962 509391143>
    0x0000:  4500 0065 3a9f 4000 3f06 0084 628a 9ec4  E..e:.@.?...b...
    0x0010:  628a 9c97 81f9 0ff0 9e87 eee0 144b 90e1  b............K..
    0x0020:  8018 0017 fb43 0000 0101 080a 4708 d442  .....C......G..B
    0x0030:  1e5c b127 4845 4144 202f 6461 7070 6572  .\.'HEAD./dapper
    0x0040:  5f73 6572 7669 6e67 2f41 644d 6f6e 6b65  _serving/AdMonke
    0x0050:  793f                                     y?

ফলাফল সর্বদা একই ছিল - গিব্বারিজ এবং ইংরেজি শব্দের একটি অদ্ভুত মিশ্রণ (উদাহরণস্বরূপ HEAD)।

আমি কীভাবে শিরোনামগুলি একটি মানব-পঠনযোগ্য ফর্ম্যাটে দেখতে পারি?


টিসিপিডম্প পুরো প্যাকেটটি দেখায়। এর মধ্যে রয়েছে আইপি, এবং টিসিপি শিরোনাম। আফাইক, আপনি কেবলমাত্র টিসিপি পে-লোড প্রদর্শন করতে পারবেন না।
জোরডাচি

উত্তর:


93

এখানে একটি ওয়ান-লাইনারের অনুরোধ এবং প্রতিক্রিয়া প্রদর্শনের জন্য হাজির হলাম HTTP শিরোনামগুলি ব্যবহার করে tcpdump(যা আপনার ক্ষেত্রেও কার্যকর হবে):

sudo tcpdump -A -s 10240 'tcp port 4080 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' | egrep --line-buffered "^........(GET |HTTP\/|POST |HEAD )|^[A-Za-z0-9-]+: " | sed -r 's/^........(GET |HTTP\/|POST |HEAD )/\n\1/g'

এটি 10Kb এ প্যাকেটটি কেটে ফেলার সীমাবদ্ধ করে এবং কেবল জিইটি, পোস্ট এবং হেড কমান্ড জানে, তবে এটি বেশিরভাগ ক্ষেত্রেই যথেষ্ট হওয়া উচিত।

সম্পাদনা : এটি আরও প্রতিক্রিয়াশীল করার জন্য প্রতিটি পদক্ষেপে বাফারগুলি থেকে মুক্তি পাওয়ার জন্য এটি সংশোধন করে। যদিও এখন পার্ল এবং এসডিবিউফের প্রয়োজন, তাই আপনার যদি না থাকে তবে আসল সংস্করণটি ব্যবহার করুন: সম্পাদনা করুন : পরিবর্তিত স্ক্রিপ্ট পোর্ট টার্গেটগুলি 80 থেকে 4080 পর্যন্ত পরিবর্তিত হয়েছে, ইতিমধ্যে অ্যাপাচি দিয়ে যাওয়া ট্র্যাফিকের জন্য শুনতে পোর্টে সরাসরি বাইরের ট্র্যাফিকের পরিবর্তে 80:

sudo stdbuf -oL -eL /usr/sbin/tcpdump -A -s 10240 "tcp port 4080 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)" | egrep -a --line-buffered ".+(GET |HTTP\/|POST )|^[A-Za-z0-9-]+: " | perl -nle 'BEGIN{$|=1} { s/.*?(GET |HTTP\/[0-9.]* |POST )/\n$1/g; print }'

কিছু ব্যাখ্যা:

  • sudo stdbuf -oL -eL tcpdump রান লাইন-বাফার করে তোলে
  • tcpdump ম্যাজিক ফিল্টারটি এখানে বিশদে বিশদভাবে ব্যাখ্যা করা হয়েছে: https://stackoverflow.com/questions/11757477/ বোঝার জন্য-tcpdump-filter-bit-masking
  • গ্রেপ জিইটি, এইচটিটিপি / বা পোস্টের সাথে কোনও লাইন অনুসন্ধান করছে; অথবা যে কোনও লাইন যা শিরোনামের মতো দেখাচ্ছে (অক্ষর এবং সংখ্যাগুলি কোলন অনুসারে অনুসরণ করবে)
  • BEGIN {$ | = 1 পার্ল লাইন-বাফার চালিত করে
  • ? গুলি /.* (Get | HTTP- র / [0-9।] * | পোষ্ট) / \ N $ 1 / ছ প্রতিটি নতুন অনুরোধ বা প্রতিক্রিয়ার শুরুর আগে একটি newline যোগ

1
দুর্দান্ত কাজ করে। আপনি কী দয়া করে সেই টিসিপিডাম্প এক্সপ্রেশনটি কাজ করেন তার আরও বিশদ যুক্ত করতে পারেন?
বিবেক থমাস

1
পেরেন্সে 'আইপি' অংশটি এখানে ব্যাখ্যা করা হয়েছে, উদাহরণস্বরূপ: স্ট্যাকওভারফ্লো.
com

তুমি আমাকে এত মাথা ব্যাথা থেকে বাঁচিয়েছ। লজ্জা আমি কেবল +1 করতে পারি।
অ্যারন ডাবিং

19

আপনি যা ব্যবহার করতে চান তার কাছাকাছি কিছু পেতে পারেন -A, যেমন

E....c@.@...
.....Ng.d.P..Ch.).....s.......
.A...u.BHEAD / HTTP/1.1
User-Agent: curl/7.29.0
Host: www.google.com
Accept: */*

-s 0আপনি পুরো প্যাকেটটি পেয়েছেন তা নিশ্চিত করার জন্য ব্যবহার করতে ভুলবেন না।

বিকল্পভাবে আপনি wiresharkশিরোনামটি ইন্টারেক্টিভভাবে দেখতে ব্যবহার করতে পারেন ।


1
চেষ্টা করেছেন -Aএবং -s 0, একই ফলাফল পেয়েছেন।
আদম মতান

2
ছাড়া চেষ্টা করুন -X
ফ্লাট

tcpdump -s 0 -A dst port 4080দেয় E..e..@.?.$bb...b....:......w........Q.....G..1.b..HEAD /dapper_serving/AdMonkey?ping=1 HTTP/1.0
আদম মতান

... যা আপনি চান কাছাকাছি কিছু। 'হেড' থেকে পড়ুন - এটি এইচটিটিপি পে-লোড। যদি আপনি অবশ্যই ব্যবহার করেছেন -s 0এবং এর পরে কিছুই নেই HTTP/1.0, অনুরোধে কোনও HTTP শিরোনাম নেই।
ফ্লপ

ধন্যবাদ। কেবল টেক্সট শিরোনামগুলি প্রিন্ট করার কোনও উপায় আছে, বাইনারি পেডলোডকে স্যান করে?
অ্যাডাম মতান

-1

Http://justniffer.sourceforge.net/ ব্যবহার করার চেষ্টা করুন এটি "টিসিপি ফ্লো অনুসরণ করুন" বিকল্পের সাহায্যে ভাল সরঞ্জাম বা ওয়্যারশার্ক, হেডারগুলি দেখার জন্য টিসিপিডাম্পের চেয়ে আরও অনেক ভাল বিকল্প রয়েছে (অনুরোধ / প্রতিক্রিয়া)


1
কীভাবে এই কাজ করা যায় তার একটি উদাহরণও যোগ করুন
vikas027

আপনি ম্যান পেজ পড়তে পারেন? justniffer.sourceforge.net/#!/man_page
ড্যানিলা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.