কীভাবে ডিএনএস একটি রেকর্ড অনুরোধ সংগ্রহ করবেন?


15

আমাকে Aরেডহ্যাট পিসিতে সমস্ত আউটগোয়িং রেকর্ড রেকর্ড করতে হবে । আমি ব্যবহার করার চেষ্টা করেছি tcpdump:

tcpdumpdns=OUTPUT-FILENAME-HERE
nohup tcpdump -K dst port 53 -w $tcpdumpdns > /dev/null 2>&1 &

এটি একটি আউটপুট ফাইল তৈরি করে:

19:26:12.185392 IP 172.16.0.6.57977 > google-public-dns-a.google.com.domain: 51198+ A? yahoo.com. (27)

সুতরাং আমার এটি প্রক্রিয়া করা দরকার yahoo.com:

echo $tcpdumpdns | awk '/ A\? / {u = NF - 1; print $u}' | sed 's/^www.//g; s/.$//g' | sort -u

বহির্গামী সমস্ত Aরেকর্ড অনুরোধ সংগ্রহ করার জন্য এর চেয়ে ভাল সমাধান কি আছে ?

পিএস: ডিএনএস সংগ্রহ করা একটি রেকর্ডগুলির কেবলমাত্র এইচটিটিপিএস এর মাধ্যমে অ্যাক্সেসযোগ্য ওয়েবসাইটগুলির একটি আধুনিক তালিকা থাকতে হবে। তাই আমি এইচটিটিপিএসএসইওয়ারি ফায়ারফক্স অ্যাড-অনের জন্য এক্সএমএল ফাইল তৈরি করতে পারি। সুতরাং এটি একটি স্ক্রিপ্টের কেবল একটি অংশ।


আপনি যে সমাধানটি দিয়েছিলেন তাতে কী সমস্যা?
মাইকেল মরোজেক

আপনার যদি জিইআইআই এনভিউ থাকে, যদি তাই হয় তবে ওয়্যারশার্ক-জিটিকে ব্যবহার করা সহজ সমাধান, কারণ আপনি সেখানে খুব সহজেই ফিল্টার করতে পারেন।
হানান এন।

@ হানান এন .: জিইউআই কোনও বিকল্প নয়। এটি স্বয়ংক্রিয় হওয়া দরকার।
ল্যান্সবায়নেস

@ মিশেল মরোজেক: আমি আশা করি কিছুই হবে না। তবে আমি জিজ্ঞাসা করেছি কারণ আমি বিকল্প সমাধানের জন্য উন্মুক্ত।
ল্যান্সবায়নেস

উত্তর:


12

ওয়্যারশার্ক ব্যবহার করুন:

tshark -f "udp port 53" -Y "dns.qry.type == A and dns.flags.response == 0"

2
আমি পেয়েছিtshark: "A" cannot be found among the possible values for dns.qry.type.
জ্যাক ও'কনোর

3
@ জ্যাকও'কনর ইস্যুটি সমাধান করতে, টাইপ এ ডিএনএস রেকর্ডের দশমিক মান ১. সুতরাং, এটি কাজ করা উচিত:tshark -f "udp port 53" -Y "dns.qry.type == 1 and dns.flags.response == 0"
রোলিনহ

13

আপনার যদি ওয়্যারশার্ক ইনস্টল না থাকে তবে

tcpdumpdns=/tmp/tcpdumps
tcpdump -lvi any "udp port 53" | tee $tcpdumpdns

আপনার জন্য কাজ করা উচিত। যেহেতু আপনি আউটপুটটিকে শেষের দ্বিতীয় থেকে সীমাবদ্ধ করতে চেয়েছিলেন তাই আমি আপনার লগ ফাইলটি এর সাথে পার্স করব:

grep -E 'A\?' $tcpdumpdns |sed -e 's/^.*A? //' -e 's/ .*//'|sort -u

আপনি যদি এটি সরাসরি চান তবে:

tcpdump -lvi any "udp port 53" 2>/dev/null|grep -E 'A\?'|awk '{print $(NF-1)}'

এটি করা উচিত, (এখানে সেড এবং অ্যাজক বিনিময়যোগ্য; এবং আমি বিশ্রী বাছাই করব))


grep -E 'A\?' $tcpdumpdns |sed 's/^.*A? //;s/ .*//'|sort -uটাইপ করতে কম
অ্যালেক্সেক্স রোচে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.