]>
git.ipfire.org Git - thirdparty/pdns.git/blob - pdns/dnsscan.cc
7 // this is needed because boost multi_index also uses 'L', as do we (which is sad enough)
10 #include <arpa/nameser.h>
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>
21 using namespace boost
;
22 using namespace ::boost::multi_index
;
26 int main(int argc
, char** argv
)
29 PcapPacketReader
pr(argv
[1]);
30 Socket
sock(InterNetwork
, Datagram
);
32 IPEndpoint
remote(argc
> 2 ? argv
[2] : "127.0.0.1",
33 argc
> 3 ? atoi(argv
[3]) : 5300);
36 while(pr
.getUDPPacket()) {
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);
45 if(mdp
.d_qtype
> 256 || mdp
.d_qclass
!=1 ) {
46 // sock.sendTo(string(pr.d_payload, pr.d_payload + pr.d_len), remote);
49 for(MOADNSParser::answers_t::const_iterator i
=mdp
.d_answers
.begin(); i
!=mdp
.d_answers
.end(); ++i
) {
54 catch(MOADNSException
&e
) {
55 cout
<<"Error: "<<e
.what()<<"\n";
56 sock
.sendTo(string(pr
.d_payload
, pr
.d_payload
+ pr
.d_len
), remote
);
62 cout
<<"Fatal: "<<e
.what()<<endl
;