]> git.ipfire.org Git - thirdparty/pdns.git/blob - pdns/dnsscan.cc
fix david g's bug one level up as well - we used to do the wrong thing with truncated...
[thirdparty/pdns.git] / pdns / dnsscan.cc
1 #include <bitset>
2 #include "statbag.hh"
3 #include "dnspcap.hh"
4 #include "sstuff.hh"
5 #include "anadns.hh"
6
7 // this is needed because boost multi_index also uses 'L', as do we (which is sad enough)
8 #undef L
9
10 #include <arpa/nameser.h>
11 #include <set>
12 #include <deque>
13
14 #include <boost/format.hpp>
15 #include <boost/utility.hpp>
16 #include <boost/multi_index_container.hpp>
17 #include <boost/multi_index/ordered_index.hpp>
18 #include <boost/multi_index/key_extractors.hpp>
19 #include <cctype>
20
21 using namespace boost;
22 using namespace ::boost::multi_index;
23 using namespace std;
24 StatBag S;
25
26 int main(int argc, char** argv)
27 try
28 {
29 PcapPacketReader pr(argv[1]);
30 Socket sock(InterNetwork, Datagram);
31
32 IPEndpoint remote(argc > 2 ? argv[2] : "127.0.0.1",
33 argc > 3 ? atoi(argv[3]) : 5300);
34
35
36 while(pr.getUDPPacket()) {
37 try {
38 MOADNSParser mdp((const char*)pr.d_payload, pr.d_len);
39 for(int i=0; i < mdp.d_qname.length(); ++i)
40 if(!isalnum(mdp.d_qname[i]) && mdp.d_qname[i]!='.' && mdp.d_qname[i]!='-' && mdp.d_qname[i]!='_') {
41 // cout<<mdp.d_qname<<"|"<<mdp.d_qtype<<"|"<<mdp.d_qclass<<"\n";
42 // sock.sendTo(string(pr.d_payload, pr.d_payload + pr.d_len), remote);
43 break;
44 }
45 if(mdp.d_qtype > 256 || mdp.d_qclass!=1 ) {
46 // sock.sendTo(string(pr.d_payload, pr.d_payload + pr.d_len), remote);
47
48 }
49 for(MOADNSParser::answers_t::const_iterator i=mdp.d_answers.begin(); i!=mdp.d_answers.end(); ++i) {
50
51 }
52
53 }
54 catch(MOADNSException &e) {
55 cout<<"Error: "<<e.what()<<"\n";
56 sock.sendTo(string(pr.d_payload, pr.d_payload + pr.d_len), remote);
57 }
58 }
59 }
60 catch(exception& e)
61 {
62 cout<<"Fatal: "<<e.what()<<endl;
63 }
64