RodDoSanz commited on
Commit
1fbf466
·
1 Parent(s): dc8fed0

feat: add tools

Browse files
subdomains/subdomains.txt ADDED
@@ -0,0 +1,999 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ www
2
+ mail
3
+ ftp
4
+ localhost
5
+ webmail
6
+ smtp
7
+ pop
8
+ ns1
9
+ webdisk
10
+ ns2
11
+ cpanel
12
+ whm
13
+ autodiscover
14
+ autoconfig
15
+ m
16
+ imap
17
+ test
18
+ ns
19
+ blog
20
+ pop3
21
+ dev
22
+ www2
23
+ admin
24
+ forum
25
+ news
26
+ vpn
27
+ ns3
28
+ mail2
29
+ new
30
+ mysql
31
+ old
32
+ lists
33
+ support
34
+ mobile
35
+ mx
36
+ static
37
+ docs
38
+ beta
39
+ shop
40
+ sql
41
+ secure
42
+ demo
43
+ cp
44
+ calendar
45
+ wiki
46
+ web
47
+ media
48
+ email
49
+ images
50
+ img
51
+ www1
52
+ intranet
53
+ portal
54
+ video
55
+ sip
56
+ dns2
57
+ api
58
+ cdn
59
+ stats
60
+ dns1
61
+ ns4
62
+ www3
63
+ dns
64
+ search
65
+ staging
66
+ server
67
+ mx1
68
+ chat
69
+ wap
70
+ my
71
+ svn
72
+ mail1
73
+ sites
74
+ proxy
75
+ ads
76
+ host
77
+ crm
78
+ cms
79
+ backup
80
+ mx2
81
+ lyncdiscover
82
+ info
83
+ apps
84
+ download
85
+ remote
86
+ db
87
+ forums
88
+ store
89
+ relay
90
+ files
91
+ newsletter
92
+ app
93
+ live
94
+ owa
95
+ en
96
+ start
97
+ sms
98
+ office
99
+ exchange
100
+ ipv4
101
+ mail3
102
+ help
103
+ blogs
104
+ helpdesk
105
+ web1
106
+ home
107
+ library
108
+ ftp2
109
+ ntp
110
+ monitor
111
+ login
112
+ service
113
+ correo
114
+ www4
115
+ moodle
116
+ it
117
+ gateway
118
+ gw
119
+ i
120
+ stat
121
+ stage
122
+ ldap
123
+ tv
124
+ ssl
125
+ web2
126
+ ns5
127
+ upload
128
+ nagios
129
+ smtp2
130
+ online
131
+ ad
132
+ survey
133
+ data
134
+ radio
135
+ extranet
136
+ test2
137
+ mssql
138
+ dns3
139
+ jobs
140
+ services
141
+ panel
142
+ irc
143
+ hosting
144
+ cloud
145
+ de
146
+ gmail
147
+ s
148
+ bbs
149
+ cs
150
+ ww
151
+ mrtg
152
+ git
153
+ image
154
+ members
155
+ poczta
156
+ s1
157
+ meet
158
+ preview
159
+ fr
160
+ cloudflare-resolve-to
161
+ dev2
162
+ photo
163
+ jabber
164
+ legacy
165
+ go
166
+ es
167
+ ssh
168
+ redmine
169
+ partner
170
+ vps
171
+ server1
172
+ sv
173
+ ns6
174
+ webmail2
175
+ av
176
+ community
177
+ cacti
178
+ time
179
+ sftp
180
+ lib
181
+ facebook
182
+ www5
183
+ smtp1
184
+ feeds
185
+ w
186
+ games
187
+ ts
188
+ alumni
189
+ dl
190
+ s2
191
+ phpmyadmin
192
+ archive
193
+ cn
194
+ tools
195
+ stream
196
+ projects
197
+ elearning
198
+ im
199
+ iphone
200
+ control
201
+ voip
202
+ test1
203
+ ws
204
+ rss
205
+ sp
206
+ wwww
207
+ vpn2
208
+ jira
209
+ list
210
+ connect
211
+ gallery
212
+ billing
213
+ mailer
214
+ update
215
+ pda
216
+ game
217
+ ns0
218
+ testing
219
+ sandbox
220
+ job
221
+ events
222
+ dialin
223
+ ml
224
+ fb
225
+ videos
226
+ music
227
+ a
228
+ partners
229
+ mailhost
230
+ downloads
231
+ reports
232
+ ca
233
+ router
234
+ speedtest
235
+ local
236
+ training
237
+ edu
238
+ bugs
239
+ manage
240
+ s3
241
+ status
242
+ host2
243
+ ww2
244
+ marketing
245
+ conference
246
+ content
247
+ network-ip
248
+ broadcast-ip
249
+ english
250
+ catalog
251
+ msoid
252
+ mailadmin
253
+ pay
254
+ access
255
+ streaming
256
+ project
257
+ t
258
+ sso
259
+ alpha
260
+ photos
261
+ staff
262
+ e
263
+ auth
264
+ v2
265
+ web5
266
+ web3
267
+ mail4
268
+ devel
269
+ post
270
+ us
271
+ images2
272
+ master
273
+ rt
274
+ ftp1
275
+ qa
276
+ wp
277
+ dns4
278
+ www6
279
+ ru
280
+ student
281
+ w3
282
+ citrix
283
+ trac
284
+ doc
285
+ img2
286
+ css
287
+ mx3
288
+ adm
289
+ web4
290
+ hr
291
+ mailserver
292
+ travel
293
+ sharepoint
294
+ sport
295
+ member
296
+ bb
297
+ agenda
298
+ link
299
+ server2
300
+ vod
301
+ uk
302
+ fw
303
+ promo
304
+ vip
305
+ noc
306
+ design
307
+ temp
308
+ gate
309
+ ns7
310
+ file
311
+ ms
312
+ map
313
+ cache
314
+ painel
315
+ js
316
+ event
317
+ mailing
318
+ db1
319
+ c
320
+ auto
321
+ img1
322
+ vpn1
323
+ business
324
+ mirror
325
+ share
326
+ cdn2
327
+ site
328
+ maps
329
+ tickets
330
+ tracker
331
+ domains
332
+ club
333
+ images1
334
+ zimbra
335
+ cvs
336
+ b2b
337
+ oa
338
+ intra
339
+ zabbix
340
+ ns8
341
+ assets
342
+ main
343
+ spam
344
+ lms
345
+ social
346
+ faq
347
+ feedback
348
+ loopback
349
+ groups
350
+ m2
351
+ cas
352
+ loghost
353
+ xml
354
+ nl
355
+ research
356
+ art
357
+ munin
358
+ dev1
359
+ gis
360
+ sales
361
+ images3
362
+ report
363
+ google
364
+ idp
365
+ cisco
366
+ careers
367
+ seo
368
+ dc
369
+ lab
370
+ d
371
+ firewall
372
+ fs
373
+ eng
374
+ ann
375
+ mail01
376
+ mantis
377
+ v
378
+ affiliates
379
+ webconf
380
+ track
381
+ ticket
382
+ pm
383
+ db2
384
+ b
385
+ clients
386
+ tech
387
+ erp
388
+ monitoring
389
+ cdn1
390
+ images4
391
+ payment
392
+ origin
393
+ client
394
+ foto
395
+ domain
396
+ pt
397
+ pma
398
+ directory
399
+ cc
400
+ public
401
+ finance
402
+ ns11
403
+ test3
404
+ wordpress
405
+ corp
406
+ sslvpn
407
+ cal
408
+ mailman
409
+ book
410
+ ip
411
+ zeus
412
+ ns10
413
+ hermes
414
+ storage
415
+ free
416
+ static1
417
+ pbx
418
+ banner
419
+ mobil
420
+ kb
421
+ mail5
422
+ direct
423
+ ipfixe
424
+ wifi
425
+ development
426
+ board
427
+ ns01
428
+ st
429
+ reviews
430
+ radius
431
+ pro
432
+ atlas
433
+ links
434
+ in
435
+ oldmail
436
+ register
437
+ s4
438
+ images6
439
+ static2
440
+ id
441
+ shopping
442
+ drupal
443
+ analytics
444
+ m1
445
+ images5
446
+ images7
447
+ img3
448
+ mx01
449
+ www7
450
+ redirect
451
+ sitebuilder
452
+ smtp3
453
+ adserver
454
+ net
455
+ user
456
+ forms
457
+ outlook
458
+ press
459
+ vc
460
+ health
461
+ work
462
+ mb
463
+ mm
464
+ f
465
+ pgsql
466
+ jp
467
+ sports
468
+ preprod
469
+ g
470
+ p
471
+ mdm
472
+ ar
473
+ lync
474
+ market
475
+ dbadmin
476
+ barracuda
477
+ affiliate
478
+ mars
479
+ users
480
+ images8
481
+ biblioteca
482
+ mc
483
+ ns12
484
+ math
485
+ ntp1
486
+ web01
487
+ software
488
+ pr
489
+ jupiter
490
+ labs
491
+ linux
492
+ sc
493
+ love
494
+ fax
495
+ php
496
+ lp
497
+ tracking
498
+ thumbs
499
+ up
500
+ tw
501
+ campus
502
+ reg
503
+ digital
504
+ demo2
505
+ da
506
+ tr
507
+ otrs
508
+ web6
509
+ ns02
510
+ mailgw
511
+ education
512
+ order
513
+ piwik
514
+ banners
515
+ rs
516
+ se
517
+ venus
518
+ internal
519
+ webservices
520
+ cm
521
+ whois
522
+ sync
523
+ lb
524
+ is
525
+ code
526
+ click
527
+ w2
528
+ bugzilla
529
+ virtual
530
+ origin-www
531
+ top
532
+ customer
533
+ pub
534
+ hotel
535
+ openx
536
+ log
537
+ uat
538
+ cdn3
539
+ images0
540
+ cgi
541
+ posta
542
+ reseller
543
+ soft
544
+ movie
545
+ mba
546
+ n
547
+ r
548
+ developer
549
+ nms
550
+ ns9
551
+ webcam
552
+ construtor
553
+ ebook
554
+ ftp3
555
+ join
556
+ dashboard
557
+ bi
558
+ wpad
559
+ admin2
560
+ agent
561
+ wm
562
+ books
563
+ joomla
564
+ hotels
565
+ ezproxy
566
+ ds
567
+ sa
568
+ katalog
569
+ team
570
+ emkt
571
+ antispam
572
+ adv
573
+ mercury
574
+ flash
575
+ myadmin
576
+ sklep
577
+ newsite
578
+ law
579
+ pl
580
+ ntp2
581
+ x
582
+ srv1
583
+ mp3
584
+ archives
585
+ proxy2
586
+ ps
587
+ pic
588
+ ir
589
+ orion
590
+ srv
591
+ mt
592
+ ocs
593
+ server3
594
+ meeting
595
+ v1
596
+ delta
597
+ titan
598
+ manager
599
+ subscribe
600
+ develop
601
+ wsus
602
+ oascentral
603
+ mobi
604
+ people
605
+ galleries
606
+ wwwtest
607
+ backoffice
608
+ sg
609
+ repo
610
+ soporte
611
+ www8
612
+ eu
613
+ ead
614
+ students
615
+ hq
616
+ awstats
617
+ ec
618
+ security
619
+ school
620
+ corporate
621
+ podcast
622
+ vote
623
+ conf
624
+ magento
625
+ mx4
626
+ webservice
627
+ tour
628
+ s5
629
+ power
630
+ correio
631
+ mon
632
+ mobilemail
633
+ weather
634
+ international
635
+ prod
636
+ account
637
+ xx
638
+ pages
639
+ pgadmin
640
+ bfn2
641
+ webserver
642
+ www-test
643
+ maintenance
644
+ me
645
+ magazine
646
+ syslog
647
+ int
648
+ view
649
+ enews
650
+ ci
651
+ au
652
+ mis
653
+ dev3
654
+ pdf
655
+ mailgate
656
+ v3
657
+ ss
658
+ internet
659
+ host1
660
+ smtp01
661
+ journal
662
+ wireless
663
+ opac
664
+ w1
665
+ signup
666
+ database
667
+ demo1
668
+ br
669
+ android
670
+ career
671
+ listserv
672
+ bt
673
+ spb
674
+ cam
675
+ contacts
676
+ webtest
677
+ resources
678
+ 1
679
+ life
680
+ mail6
681
+ transfer
682
+ app1
683
+ confluence
684
+ controlpanel
685
+ secure2
686
+ puppet
687
+ classifieds
688
+ tunet
689
+ edge
690
+ biz
691
+ host3
692
+ red
693
+ newmail
694
+ mx02
695
+ sb
696
+ physics
697
+ ap
698
+ epaper
699
+ sts
700
+ proxy1
701
+ ww1
702
+ stg
703
+ sd
704
+ science
705
+ star
706
+ www9
707
+ phoenix
708
+ pluto
709
+ webdav
710
+ booking
711
+ eshop
712
+ edit
713
+ panelstats
714
+ xmpp
715
+ food
716
+ cert
717
+ adfs
718
+ mail02
719
+ cat
720
+ edm
721
+ vcenter
722
+ mysql2
723
+ sun
724
+ phone
725
+ surveys
726
+ smart
727
+ system
728
+ twitter
729
+ updates
730
+ webmail1
731
+ logs
732
+ sitedefender
733
+ as
734
+ cbf1
735
+ sugar
736
+ contact
737
+ vm
738
+ ipad
739
+ traffic
740
+ dm
741
+ saturn
742
+ bo
743
+ network
744
+ ac
745
+ ns13
746
+ webdev
747
+ libguides
748
+ asp
749
+ tm
750
+ core
751
+ mms
752
+ abc
753
+ scripts
754
+ fm
755
+ sm
756
+ test4
757
+ nas
758
+ newsletters
759
+ rsc
760
+ cluster
761
+ learn
762
+ panelstatsmail
763
+ lb1
764
+ usa
765
+ apollo
766
+ pre
767
+ terminal
768
+ l
769
+ tc
770
+ movies
771
+ sh
772
+ fms
773
+ dms
774
+ z
775
+ base
776
+ jwc
777
+ gs
778
+ kvm
779
+ bfn1
780
+ card
781
+ web02
782
+ lg
783
+ editor
784
+ metrics
785
+ feed
786
+ repository
787
+ asterisk
788
+ sns
789
+ global
790
+ counter
791
+ ch
792
+ sistemas
793
+ pc
794
+ china
795
+ u
796
+ payments
797
+ ma
798
+ pics
799
+ www10
800
+ e-learning
801
+ auction
802
+ hub
803
+ sf
804
+ cbf8
805
+ forum2
806
+ ns14
807
+ app2
808
+ passport
809
+ hd
810
+ talk
811
+ ex
812
+ debian
813
+ ct
814
+ rc
815
+ 2012
816
+ imap4
817
+ blog2
818
+ ce
819
+ sk
820
+ relay2
821
+ green
822
+ print
823
+ geo
824
+ multimedia
825
+ iptv
826
+ backup2
827
+ webapps
828
+ audio
829
+ ro
830
+ smtp4
831
+ pg
832
+ ldap2
833
+ backend
834
+ profile
835
+ oldwww
836
+ drive
837
+ bill
838
+ listas
839
+ orders
840
+ win
841
+ mag
842
+ apply
843
+ bounce
844
+ mta
845
+ hp
846
+ suporte
847
+ dir
848
+ pa
849
+ sys
850
+ mx0
851
+ ems
852
+ antivirus
853
+ web8
854
+ inside
855
+ play
856
+ nic
857
+ welcome
858
+ premium
859
+ exam
860
+ sub
861
+ cz
862
+ omega
863
+ boutique
864
+ pp
865
+ management
866
+ planet
867
+ ww3
868
+ orange
869
+ c1
870
+ zzb
871
+ form
872
+ ecommerce
873
+ tmp
874
+ plus
875
+ openvpn
876
+ fw1
877
+ hk
878
+ owncloud
879
+ history
880
+ clientes
881
+ srv2
882
+ img4
883
+ open
884
+ registration
885
+ mp
886
+ blackboard
887
+ fc
888
+ static3
889
+ server4
890
+ s6
891
+ ecard
892
+ dspace
893
+ dns01
894
+ md
895
+ mcp
896
+ ares
897
+ spf
898
+ kms
899
+ intranet2
900
+ accounts
901
+ webapp
902
+ ask
903
+ rd
904
+ www-dev
905
+ gw2
906
+ mall
907
+ bg
908
+ teste
909
+ ldap1
910
+ real
911
+ m3
912
+ wave
913
+ movil
914
+ portal2
915
+ kids
916
+ gw1
917
+ ra
918
+ tienda
919
+ private
920
+ po
921
+ 2013
922
+ cdn4
923
+ gps
924
+ km
925
+ ent
926
+ tt
927
+ ns21
928
+ at
929
+ athena
930
+ cbf2
931
+ webmail3
932
+ mob
933
+ matrix
934
+ ns15
935
+ send
936
+ lb2
937
+ pos
938
+ 2
939
+ cl
940
+ renew
941
+ admissions
942
+ am
943
+ beta2
944
+ gamma
945
+ mx5
946
+ portfolio
947
+ contest
948
+ box
949
+ mg
950
+ wwwold
951
+ neptune
952
+ mac
953
+ pms
954
+ traveler
955
+ media2
956
+ studio
957
+ sw
958
+ imp
959
+ bs
960
+ alfa
961
+ cbf4
962
+ servicedesk
963
+ wmail
964
+ video2
965
+ switch
966
+ sam
967
+ sky
968
+ ee
969
+ widget
970
+ reklama
971
+ msn
972
+ paris
973
+ tms
974
+ th
975
+ vega
976
+ trade
977
+ intern
978
+ ext
979
+ oldsite
980
+ learning
981
+ group
982
+ f1
983
+ ns22
984
+ ns20
985
+ demo3
986
+ bm
987
+ dom
988
+ pe
989
+ annuaire
990
+ portail
991
+ graphics
992
+ iris
993
+ one
994
+ robot
995
+ ams
996
+ s7
997
+ foro
998
+ gaia
999
+ vpn3
tdagent/tools/get_domain_information.py CHANGED
@@ -4,12 +4,13 @@ from concurrent.futures import ThreadPoolExecutor
4
  from pathlib import Path
5
  from typing import Any
6
 
7
- import dns.resolver as dnsenum
8
  import gradio as gr
9
  import requests
10
  import urllib3
 
11
 
12
 
 
13
  _DNS_RECORD_TYPES = [
14
  "A",
15
  "AAAA",
@@ -27,7 +28,7 @@ _DNS_RECORD_TYPES = [
27
  "RRSIG",
28
  ]
29
 
30
- _COMMON_SUBDOMAINS_TXT_PATH = Path("subdomains.txt")
31
 
32
 
33
  def get_geolocation(ip: str) -> dict[str, Any] | str:
@@ -69,6 +70,31 @@ def get_geolocation(ip: str) -> dict[str, Any] | str:
69
  except Exception as e: # noqa: BLE001
70
  return str(e)
71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  # see: https://thepythoncode.com/article/dns-enumeration-with-python
73
  # https://dnspython.readthedocs.io
74
  def enumerate_dns(domain_name: str) -> dict[str, Any] | None:
@@ -131,24 +157,16 @@ def enumerate_dns(domain_name: str) -> dict[str, Any] | None:
131
  The domain's DNS configuration.
132
  """
133
  enumeration = {}
134
- resolver = dnsenum.Resolver()
135
- resolver.port = 443
136
  for record_type in _DNS_RECORD_TYPES:
137
  try:
138
- record = resolver.resolve(
139
- domain_name,
140
- record_type,
141
- ).rrset
142
  if record:
143
- enumeration[record_type] = record.to_text()
144
  except Exception as e: # noqa: BLE001, PERF203
145
  enumeration[record_type] = str(e)
146
- continue
147
  return enumeration if enumeration else None
148
 
149
-
150
-
151
- def resolve_subdomain(domain: str) -> str | None:
152
  """Resolve the IPv4 address of a domain.
153
 
154
  Args:
@@ -160,11 +178,7 @@ def resolve_subdomain(domain: str) -> str | None:
160
  is returned.
161
  """
162
  try:
163
- dnsenum.resolve(
164
- domain,
165
- "A",
166
- lifetime=0.1,
167
- )
168
  return domain # noqa: TRY300
169
  except Exception: # noqa: BLE001
170
  return None
@@ -208,7 +222,7 @@ def scrap_subdomains_for_domain(domain_name: str) -> list[str]:
208
 
209
  potential_subdomains = [f"{subdomain}.{domain_name}" for subdomain in subdomains]
210
  with ThreadPoolExecutor(max_workers=5) as executor:
211
- results = executor.map(resolve_subdomain, potential_subdomains)
212
  return [domain for domain in results if domain]
213
 
214
  def retrieve_ioc_from_threatfox(potentially_ioc: str) -> str:
 
4
  from pathlib import Path
5
  from typing import Any
6
 
 
7
  import gradio as gr
8
  import requests
9
  import urllib3
10
+ from dns import message
11
 
12
 
13
+ _DNS_SERVER = "https://dns.google/dns-query" # can use others
14
  _DNS_RECORD_TYPES = [
15
  "A",
16
  "AAAA",
 
28
  "RRSIG",
29
  ]
30
 
31
+ _COMMON_SUBDOMAINS_TXT_PATH = Path("./subdomains/subdomains.txt")
32
 
33
 
34
  def get_geolocation(ip: str) -> dict[str, Any] | str:
 
70
  except Exception as e: # noqa: BLE001
71
  return str(e)
72
 
73
+
74
+ def _request_dns_record(domain: str, record_type: str) -> str:
75
+ """Utility to build dns resolve requests that do not use port 53.
76
+
77
+ Args:
78
+ domain: domain to investigate
79
+ record_type: record type
80
+
81
+ Returns:
82
+ Information about the dns record type for the domain.
83
+ """
84
+ q = message.make_query(domain, record_type)
85
+ response = requests.post(
86
+ _DNS_SERVER,
87
+ headers={
88
+ "Content-Type": "application/dns-message",
89
+ "Accept": "application/dns-message",
90
+ },
91
+ data=q.to_wire(),
92
+ verify=True,
93
+ timeout=0.2,
94
+ )
95
+ dns_message = message.from_wire(response.content)
96
+ return [str(rdata) for rdata in dns_message.answer[0]] if dns_message.answer else []
97
+
98
  # see: https://thepythoncode.com/article/dns-enumeration-with-python
99
  # https://dnspython.readthedocs.io
100
  def enumerate_dns(domain_name: str) -> dict[str, Any] | None:
 
157
  The domain's DNS configuration.
158
  """
159
  enumeration = {}
 
 
160
  for record_type in _DNS_RECORD_TYPES:
161
  try:
162
+ record = _request_dns_record(domain_name, record_type)
 
 
 
163
  if record:
164
+ enumeration[record_type] = record
165
  except Exception as e: # noqa: BLE001, PERF203
166
  enumeration[record_type] = str(e)
 
167
  return enumeration if enumeration else None
168
 
169
+ def resolve_subdomain_ipv4(domain: str) -> str | None:
 
 
170
  """Resolve the IPv4 address of a domain.
171
 
172
  Args:
 
178
  is returned.
179
  """
180
  try:
181
+ _request_dns_record(domain, "A")
 
 
 
 
182
  return domain # noqa: TRY300
183
  except Exception: # noqa: BLE001
184
  return None
 
222
 
223
  potential_subdomains = [f"{subdomain}.{domain_name}" for subdomain in subdomains]
224
  with ThreadPoolExecutor(max_workers=5) as executor:
225
+ results = executor.map(resolve_subdomain_ipv4, potential_subdomains)
226
  return [domain for domain in results if domain]
227
 
228
  def retrieve_ioc_from_threatfox(potentially_ioc: str) -> str: