wmap 2.5.2 → 2.5.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/RHPG +4 -4
- data/bin/trusts +1 -1
- data/dicts/ccsld.txt +63 -60
- data/lib/wmap/url_checker.rb +220 -238
- data/lib/wmap/url_crawler/adware_tag.rb +37 -15
- data/lib/wmap/utils/domain_root.rb +141 -115
- data/lib/wmap/utils/url_magic.rb +168 -60
- data/lib/wmap/wp_tracker.rb +135 -141
- data/logs/wmap.log +16 -1553
- data/version.txt +2 -2
- data/wmap.gemspec +3 -0
- metadata +30 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae590c812b4919eb1b66841f6eb873de93727cbf8847fe6392dc19c94e4ef158
|
4
|
+
data.tar.gz: 7530a5c491a7d87289e41c4ef4b0df6f201495c107270892e5e6d22f9584da9b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa9211e5e14e74a24266677b8993071f9be1e75b9387d35a36233192c885521abbb8ecd31b0b0dc2d65db4de50cb0513e0a4cd214bed18672a1cf3b1b9cd52f6
|
7
|
+
data.tar.gz: 70d6dc893be0273b16b4f8dd78d9fe4f3ec7bf5310ea0c8b299100535300053a19f8d936ac6422cffd5251d0dc2fae991eeaa41ac31f0a639d52994bf9a5d645
|
data/bin/RHPG
CHANGED
@@ -11,7 +11,7 @@ def print_usage
|
|
11
11
|
end
|
12
12
|
|
13
13
|
# Lookup the site store for a domain; then return the fingger print info of the site
|
14
|
-
def
|
14
|
+
def site_tracker_lookup(domain)
|
15
15
|
tracker=Wmap::SiteTracker.instance
|
16
16
|
tracker.verbose=false
|
17
17
|
#first order search
|
@@ -33,7 +33,7 @@ def site_lookup(domain)
|
|
33
33
|
end
|
34
34
|
|
35
35
|
# look up the wp site data store for a domain; then return the wp finger print info: [is_wp?,wp_ver]
|
36
|
-
def
|
36
|
+
def wp_tracker_lookup(domain)
|
37
37
|
tracker=Wmap::WpTracker.new(:verbose=>false)
|
38
38
|
# first order
|
39
39
|
tracker.known_wp_sites.each do |key,val|
|
@@ -63,7 +63,7 @@ end
|
|
63
63
|
|
64
64
|
# perform the wpscan on a site
|
65
65
|
def wpscan(domain)
|
66
|
-
url=
|
66
|
+
url=site_tracker_lookup(domain)[0]
|
67
67
|
return nil if url.nil?
|
68
68
|
if url.include?("https")
|
69
69
|
command="wpscan --disable-tls-checks --ignore-main-redirect --url=" + url + " -o " + domain + ".wpscan"
|
@@ -93,7 +93,7 @@ CSV.open("output.csv", "wb") do |csv|
|
|
93
93
|
end
|
94
94
|
end
|
95
95
|
=end
|
96
|
-
my_row = row +
|
96
|
+
my_row = row + site_tracker_lookup(row[0]) + wp_tracker_lookup(row[0])
|
97
97
|
else
|
98
98
|
my_row = row + [nil]*10
|
99
99
|
end
|
data/bin/trusts
CHANGED
@@ -11,7 +11,7 @@ print_usage
|
|
11
11
|
Log_dir=File.dirname(__FILE__)+'/../logs/'
|
12
12
|
Wmap.wlog("Execute the command: trust #{ARGV[0]}","trust",Log_dir+"wmap.log")
|
13
13
|
|
14
|
-
dt=Wmap::DomainTracker.instance
|
14
|
+
dt=Wmap::DomainTracker.instance
|
15
15
|
ct=Wmap::CidrTracker.new(:verbose=>true)
|
16
16
|
abort "Incorrect program argument! Proper usage: trust [domain | netblock]" unless ARGV.length==1 && (File.exist?(ARGV[0]))
|
17
17
|
|
data/dicts/ccsld.txt
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
# by Yang Li, Last modification date: 05/12/2013
|
4
4
|
|
5
5
|
Afghanistan
|
6
|
-
Domain registrations at the second-level are unrestricted, but more expensive. Third-level names have restrictions based on which second-level name they are beneath
|
6
|
+
Domain registrations at the second-level are unrestricted, but more expensive. Third-level names have restrictions based on which second-level name they are beneath
|
7
7
|
|
8
8
|
.af - Registrations are taken directly at the second level or at the third level beneath the following domain extensions.
|
9
9
|
.com.af - Commercial entities (Trade license / Business authorization or approval from the Ministry of Commerce.)
|
@@ -13,12 +13,12 @@ Domain registrations at the second-level are unrestricted, but more expensive. T
|
|
13
13
|
.org.af - Non-commercial entities
|
14
14
|
|
15
15
|
Aland Islands
|
16
|
-
The country domain extension for the �land Islands is .ax. Registrants must be connected with the �land Islands.
|
16
|
+
The country domain extension for the �land Islands is .ax. Registrants must be connected with the �land Islands.
|
17
17
|
|
18
18
|
.ax - Registrations are taken directly at the second-level.
|
19
19
|
|
20
20
|
|
21
|
-
Note: Previously, most �land Islands websites were registered at the third level under the aland.fi subdomain (�land Islands are part of Finland).
|
21
|
+
Note: Previously, most �land Islands websites were registered at the third level under the aland.fi subdomain (�land Islands are part of Finland).
|
22
22
|
Albania
|
23
23
|
These are the country extensions for Albania. Registrants must be an organization with legal representative in Albania. There is a limit of one domain per organization, and it must be under an appropriate subdomain. Registrations are made at the third-level, beneath one of the following subdomains.
|
24
24
|
|
@@ -48,7 +48,7 @@ The country domain extension for American Samoa is .as. There is no restriction
|
|
48
48
|
.as - Registrations are taken directly at second level.
|
49
49
|
|
50
50
|
Andorra
|
51
|
-
Registrations must be pre-approved by Office for State Emblems and Signs, are generally limited to residents of Andorra or Andorran trademark holders with an agent in Andorra, and the number of registrations per person is limited.
|
51
|
+
Registrations must be pre-approved by Office for State Emblems and Signs, are generally limited to residents of Andorra or Andorran trademark holders with an agent in Andorra, and the number of registrations per person is limited.
|
52
52
|
|
53
53
|
.ad - Country code top-level domain (ccTLD) for Andorra. Names can be registered directly at the second level (i.e. example.ad).
|
54
54
|
.nom.ad - Country domain extension for personal websites.
|
@@ -75,7 +75,7 @@ These are the country domain extensions for Anguilla. There are no restrictions
|
|
75
75
|
Antarctica
|
76
76
|
The country domain for Antarctica is .aq. This top-level domain is reserved for organizations that conduct work in Antarctica or promote the Antarctic and Southern Ocean regions. Must have physical presence in Antarctica or be a governmental organization signatory to the Antarctic Treaty.
|
77
77
|
|
78
|
-
.aq - Registrations are taken at the second level.
|
78
|
+
.aq - Registrations are taken at the second level.
|
79
79
|
|
80
80
|
Antigua and Barbuda
|
81
81
|
These are the country domain extensions for Antigua and Barbuda. There are no restrictions on registering domain names with the .ag extension.
|
@@ -105,7 +105,7 @@ Although domain names must be registered at the third level, some public and gov
|
|
105
105
|
Armenia
|
106
106
|
The top-level country code for Armenia is .am. Some generic names are reserved. Except for reserved names like .com.am, .net.am, .org.am and others, any person in the world can register a .am domain for a fee. Registrations are subject to review.
|
107
107
|
|
108
|
-
.am - Registrations are made directly at the second-level.
|
108
|
+
.am - Registrations are made directly at the second-level.
|
109
109
|
|
110
110
|
Aruba
|
111
111
|
The country domain extension for Aruba is .aw. Registrations are directly at second level, or beneath the .com.aw subdomain.
|
@@ -290,7 +290,7 @@ The top-level domain for Bhutan is .bt. Registrants must have a local presence i
|
|
290
290
|
Bolivia
|
291
291
|
Here are the country domain extensions for Bolivia. There are no restrictions on who can register .bo domains.
|
292
292
|
|
293
|
-
.bo - Can be registered directly at the second-level, but this is more expensive.
|
293
|
+
.bo - Can be registered directly at the second-level, but this is more expensive.
|
294
294
|
.com.bo - Commercial entities
|
295
295
|
.net.bo - Network service providers
|
296
296
|
.org.bo - Organizations
|
@@ -308,11 +308,11 @@ Here are the domain extensions for Bosnia and Herzegovina. To register a domain
|
|
308
308
|
.org.ba - Non-profit organizations
|
309
309
|
.net.ba - Telecommunications providers
|
310
310
|
.edu.ba - Education
|
311
|
-
.gov.ba - Any of the governments (local, regional or national)
|
311
|
+
.gov.ba - Any of the governments (local, regional or national)
|
312
312
|
.mil.ba - Military
|
313
313
|
.unsa.ba - University of Sarajevo
|
314
314
|
.untz.ba - University of Tuzla
|
315
|
-
.unmo.ba - University of Mostar "D�emal Bijedic"
|
315
|
+
.unmo.ba - University of Mostar "D�emal Bijedic"
|
316
316
|
.unbi.ba - University of Bihac
|
317
317
|
.unze.ba - University of Zenica
|
318
318
|
.co.ba - Maintained by a company called Sayber, located in Sarajevo.
|
@@ -438,7 +438,7 @@ Here are the domain extensions for Burma. Note that, although there are some fun
|
|
438
438
|
Burundi
|
439
439
|
Here is the top-level domain for Burundi. Anyone in the world can register a .bi domain name, however, use for misleading purposes is discouraged.
|
440
440
|
|
441
|
-
.bi - Registrations are taken directly at second-level or at third-level beneath one of several second-level domains.
|
441
|
+
.bi - Registrations are taken directly at second-level or at third-level beneath one of several second-level domains.
|
442
442
|
|
443
443
|
Cambodia
|
444
444
|
Here are the country code extensions for Cambodia. Note that offensive or inappropriate names may be refused registration. Registrations are at third level beneath the following second-level labels.
|
@@ -460,7 +460,7 @@ Here are the country domain extensions for Cameroon. Local presence is required
|
|
460
460
|
Canada
|
461
461
|
Here are the country domain extensions for Canada. To register a .ca domain name, you must meet the Canadian Presence Requirements as specified by the registry.
|
462
462
|
|
463
|
-
.ca - registrants can either register their domain names directly at the second-level, or at the third-level, under one of the (geographic) second-level domains below.
|
463
|
+
.ca - registrants can either register their domain names directly at the second-level, or at the third-level, under one of the (geographic) second-level domains below.
|
464
464
|
.ab.ca - Alberta
|
465
465
|
.bc.ca - British Columbia
|
466
466
|
.mb.ca - Manitoba
|
@@ -481,7 +481,7 @@ Examples of entities that meet the Canadian Presence Requirements include:
|
|
481
481
|
a Canadian citizen of the age of majority,
|
482
482
|
a permanent resident of Canada,
|
483
483
|
a legally recognized Canadian organization,
|
484
|
-
an Inuit, First Nation, M�tis or other people indigenous to Canada,
|
484
|
+
an Inuit, First Nation, M�tis or other people indigenous to Canada,
|
485
485
|
an Indian Band as defined in the Indian Act of Canada,
|
486
486
|
a foreign resident of Canada that holds a registered Canadian trademark,
|
487
487
|
An executor, administrator or other legal representative of a person or organization that meets the requirements,
|
@@ -508,15 +508,15 @@ Here's the top-level domain for the Central African Republic. It is intended for
|
|
508
508
|
|
509
509
|
.cf - Domain registrations are done directly at the second-level
|
510
510
|
|
511
|
-
Chad (French: Tchad)
|
511
|
+
Chad (French: Tchad)
|
512
512
|
Here is the top-level domain for Chad. There are no restrictions on registering domain names with this extension.
|
513
513
|
|
514
514
|
.td - Registrations are made directly at the second-level. Note that registrations were not accepted by the registry at the time of writing.
|
515
515
|
|
516
516
|
Chile
|
517
|
-
Here are the domain extensions for Chile. Anyone can register a .cl domain name, however a foreign registration must have a domestic representative who has a RUT (RUT, which stands for Rol �nico Tributario, is the Chilean national identification number).
|
517
|
+
Here are the domain extensions for Chile. Anyone can register a .cl domain name, however a foreign registration must have a domestic representative who has a RUT (RUT, which stands for Rol �nico Tributario, is the Chilean national identification number).
|
518
518
|
|
519
|
-
.cl - Registrations are made directly at the second level (except for government sites, as indicated below).
|
519
|
+
.cl - Registrations are made directly at the second level (except for government sites, as indicated below).
|
520
520
|
.gov.cl - For government websites.
|
521
521
|
.gob.cl - For government websites.
|
522
522
|
|
@@ -617,7 +617,7 @@ Here's the top-level domain for the Democratic Republic of the Congo. There is n
|
|
617
617
|
Congo, Republic of the
|
618
618
|
Here's the top-level domain for the Republic of Congo. Registration is unrestricted - anyone can register a domain name under this extension. Republic of the Congo citizens get one free domain name registration.
|
619
619
|
|
620
|
-
.cg - Registration is done directly at the second-level.
|
620
|
+
.cg - Registration is done directly at the second-level.
|
621
621
|
|
622
622
|
Cook Islands
|
623
623
|
Here are the domain extensions for the Cook Islands.
|
@@ -647,8 +647,8 @@ Here are the domain name extensions for Costa Rica. There are varying restrictio
|
|
647
647
|
.or.cr - Non-profit organizations
|
648
648
|
.sa.cr - Health related institutions
|
649
649
|
|
650
|
-
C�te d'Ivoire
|
651
|
-
Here's the top-level domain for C�te d'Ivoire. Registrants name must match official name of company, organization, or trademark.
|
650
|
+
C�te d'Ivoire
|
651
|
+
Here's the top-level domain for C�te d'Ivoire. Registrants name must match official name of company, organization, or trademark.
|
652
652
|
|
653
653
|
.ci - Registrations are made directly at the second level, or at third level beneath some second-level domain.
|
654
654
|
|
@@ -658,9 +658,9 @@ Here's the country code top-level domain for Croatia. Registration is limited to
|
|
658
658
|
.hr - Domain registrations are taken directly at the second level, or under various subdomains such as .com.hr and .iz.hr.
|
659
659
|
|
660
660
|
Cuba
|
661
|
-
Here's the top-level domain for Cuba. Registrations are limited to people and companies located in Cuba. Also, third-level registrations may have other limitations based on which second-level domain they are within.
|
661
|
+
Here's the top-level domain for Cuba. Registrations are limited to people and companies located in Cuba. Also, third-level registrations may have other limitations based on which second-level domain they are within.
|
662
662
|
|
663
|
-
.cu - May register at second-level or at the third-level, beneath generic second-level domains.
|
663
|
+
.cu - May register at second-level or at the third-level, beneath generic second-level domains.
|
664
664
|
|
665
665
|
Cyprus, Republic of
|
666
666
|
Limited to Cyprus residents and registered companies/organizations. There are further restrictions for different subdomains
|
@@ -682,17 +682,17 @@ Limited to Cyprus residents and registered companies/organizations. There are fu
|
|
682
682
|
Czech Republic
|
683
683
|
Here is the domain extension for the Czech Republic. Businesses must provide tax registration number when registering a domain name with this extension.
|
684
684
|
|
685
|
-
.cz - Domain names can be registered directly at second level.
|
685
|
+
.cz - Domain names can be registered directly at second level.
|
686
686
|
|
687
687
|
Denmark
|
688
688
|
Here's the top-level domain for Denmark. There are no restrictions on who can register domain names with this extension.
|
689
689
|
|
690
|
-
.dk - Domain names can be registered directly at second level.
|
690
|
+
.dk - Domain names can be registered directly at second level.
|
691
691
|
|
692
692
|
Djibouti
|
693
693
|
Here's the top-level domain for Djbouti. There are no restrictions on who can register domain names with this extension, although some names are reserved or subject to famous trademark owners having first registration rights.
|
694
694
|
|
695
|
-
.dj - Domain names can be registered directly at second level.
|
695
|
+
.dj - Domain names can be registered directly at second level.
|
696
696
|
|
697
697
|
Dominica
|
698
698
|
Here are the domain extensions for Dominica. There are no restrictions on who can register domain names with this extension. Third-level names in .com.dm, .net.dm, and .org.dm are included automatically upon registration of all .dm domain names.
|
@@ -865,7 +865,7 @@ Here are the country domain extensions for French Polynesia. Local presence is r
|
|
865
865
|
.pf - Registrations are accepted directly at the second-level or beneath the following subdomain.
|
866
866
|
.com.pf
|
867
867
|
|
868
|
-
French Southern and Antarctic Lands (France)
|
868
|
+
French Southern and Antarctic Lands (France)
|
869
869
|
Here is the top-level domain for French Southern and Antarctic Lands. A local administrative contact with proof of address in French Southern Territory is required.
|
870
870
|
|
871
871
|
.tf - Registrations are made directly at the second-level. Note that an unofficial service makes free, redirected domains available at third level.
|
@@ -888,7 +888,7 @@ Here is the country code top-level domain for Georgia. Domain name registrations
|
|
888
888
|
Germany
|
889
889
|
Here's the top-level domain for Germany. Registrants must have administrative contact resident in Germany.
|
890
890
|
|
891
|
-
.de - domain names can be registered directly at second level.
|
891
|
+
.de - domain names can be registered directly at second level.
|
892
892
|
|
893
893
|
Ghana
|
894
894
|
Below are the domain extensions for Ghana. Companies wishing to use this extension must be registered in Ghana, and the domain administrator must be located there. Second-level registrations are no longer accepted. Registrations must now be at third level beneath second-level labels..
|
@@ -925,7 +925,7 @@ Here is the country code top-level domain for Grenada. There are no restrictions
|
|
925
925
|
.gd - Domain names are registered directly at the second level.
|
926
926
|
|
927
927
|
Guadeloupe
|
928
|
-
Below are the domain extensions for Guadeloupe. Domain names with this extension is available worldwide but more expensive for non-Guadeloupe residents.
|
928
|
+
Below are the domain extensions for Guadeloupe. Domain names with this extension is available worldwide but more expensive for non-Guadeloupe residents.
|
929
929
|
|
930
930
|
.gp - Registrations are directly at second level, or at third level beneath the following second-level categories.
|
931
931
|
.com.gp
|
@@ -1096,7 +1096,7 @@ Below are the country domain extensions for Iran. These domains are generally re
|
|
1096
1096
|
.sch.ir - Schools, primary and secondary education
|
1097
1097
|
|
1098
1098
|
Iraq
|
1099
|
-
Here are the domain extensions for Iraq. No online registrations are known to be taking place at the time of writing.
|
1099
|
+
Here are the domain extensions for Iraq. No online registrations are known to be taking place at the time of writing.
|
1100
1100
|
|
1101
1101
|
.iq - General
|
1102
1102
|
.gov.iq - Governmental entities
|
@@ -1138,7 +1138,7 @@ Below are the country domain extensions for Isle of Man. Restrictions apply to s
|
|
1138
1138
|
Italy
|
1139
1139
|
Here's the country code top-level domain for Italy. Registrants must be a resident of an EU country to register a domain name with this extension. Registration requires sending a paper or fax letter which must be completed in Italian.
|
1140
1140
|
|
1141
|
-
.it - Registrations are at second level or third level under various second-level domains. Most second-level domains represent a province, region, or municipality. There is also .gov.it for government organizations.
|
1141
|
+
.it - Registrations are at second level or third level under various second-level domains. Most second-level domains represent a province, region, or municipality. There is also .gov.it for government organizations.
|
1142
1142
|
|
1143
1143
|
Jamaica
|
1144
1144
|
Below are the country domain extensions for Jamaica. There are no restrictions on who can register domain names with this extension, however, it is more expensive for non-residents. It is also cheaper for government departments and non-profit organizations. And it is free for schools and educational institutions.
|
@@ -1238,7 +1238,7 @@ Here are the domain extensions for South Korea. Registrants must have a local pr
|
|
1238
1238
|
.re.kr - Research (Organizations or individuals)
|
1239
1239
|
.pe.kr - Personal (Individuals)
|
1240
1240
|
.go.kr - Government
|
1241
|
-
.mil.kr - Military
|
1241
|
+
.mil.kr - Military
|
1242
1242
|
.ac.kr - Colleges or universities
|
1243
1243
|
.hs.kr - High schools
|
1244
1244
|
.ms.kr - Middle schools
|
@@ -1248,7 +1248,7 @@ Here are the domain extensions for South Korea. Registrants must have a local pr
|
|
1248
1248
|
|
1249
1249
|
Organizations or individuals that have connection with relevant areas:
|
1250
1250
|
|
1251
|
-
.seoul.kr - Seoul
|
1251
|
+
.seoul.kr - Seoul
|
1252
1252
|
.busan.kr - Busan
|
1253
1253
|
.daegu.kr - Daegu
|
1254
1254
|
.incheon.kr - Incheon
|
@@ -1829,10 +1829,10 @@ Below are the country domain extensions for Poland. There are no restrictions fo
|
|
1829
1829
|
.warszawa.pl - Warsaw
|
1830
1830
|
.wroc.pl - Wroclaw
|
1831
1831
|
.wroclaw.pl - Wroclaw
|
1832
|
-
.krakow.pl - Krak�w
|
1832
|
+
.krakow.pl - Krak�w
|
1833
1833
|
.katowice.pl - Katowice
|
1834
1834
|
.poznan.pl - Poznan
|
1835
|
-
.lodz.pl - L�dz
|
1835
|
+
.lodz.pl - L�dz
|
1836
1836
|
.gda.pl - Gdansk
|
1837
1837
|
.gdansk.pl - Gdansk
|
1838
1838
|
.slupsk.pl - Slupsk
|
@@ -1842,8 +1842,8 @@ Below are the country domain extensions for Poland. There are no restrictions fo
|
|
1842
1842
|
.bialystok.pl - Bialystok
|
1843
1843
|
.olsztyn.pl - Olsztyn
|
1844
1844
|
.torun.pl - Torun
|
1845
|
-
.gorzow.pl - Gorz�w Wielkopolski
|
1846
|
-
.zgora.pl - Zielona G�ra
|
1845
|
+
.gorzow.pl - Gorz�w Wielkopolski
|
1846
|
+
.zgora.pl - Zielona G�ra
|
1847
1847
|
|
1848
1848
|
Portugal
|
1849
1849
|
Below are the domain extensions for Portugal. There are various restrictions for each subdomain, however the .com.pt extension is unrestricted.
|
@@ -1873,7 +1873,7 @@ Here are the country domain extensions for Puerto Rico. Some subdomains have res
|
|
1873
1873
|
.org.pr - For organizations (but not restricted to)
|
1874
1874
|
.pro.pr - For professionals
|
1875
1875
|
.est.pr - For university students
|
1876
|
-
.prof.pr - For university professors
|
1876
|
+
.prof.pr - For university professors
|
1877
1877
|
.ac.pr - For academics
|
1878
1878
|
|
1879
1879
|
Qatar
|
@@ -1907,8 +1907,8 @@ Below are the country domain extensions for Romania. There are no restrictions f
|
|
1907
1907
|
.tm.ro
|
1908
1908
|
.www.ro
|
1909
1909
|
|
1910
|
-
R�union
|
1911
|
-
Here are the country domain extensions for R�union. Registrants are required to have local presence.
|
1910
|
+
R�union
|
1911
|
+
Here are the country domain extensions for R�union. Registrants are required to have local presence.
|
1912
1912
|
|
1913
1913
|
.re - Domain names are registered directly at the second-level and at the third-level under the following subdomains.
|
1914
1914
|
.asso.re - Associations
|
@@ -2002,19 +2002,19 @@ Here is the top-level domain for San Marino. The domain name must be the same as
|
|
2002
2002
|
|
2003
2003
|
.sm - Domain name registrations are made directly at the second-level.
|
2004
2004
|
|
2005
|
-
S�o Tom� and Pr�ncipe
|
2006
|
-
Here is the top-level domain for S�o Tom� and Pr�ncipe. There are no restrictions on registering domain names with this extension.
|
2005
|
+
S�o Tom� and Pr�ncipe
|
2006
|
+
Here is the top-level domain for S�o Tom� and Pr�ncipe. There are no restrictions on registering domain names with this extension.
|
2007
2007
|
|
2008
2008
|
.st - Registrations are made directly at the second-level, although the following second-level domains have been reserved for future use..
|
2009
2009
|
|
2010
2010
|
Reserved Second-Level Domains
|
2011
2011
|
The following second-level domains have been reserved by the registry for future use.
|
2012
2012
|
|
2013
|
-
.gov.st - Government of S�o Tom� and Pr�ncipe
|
2014
|
-
.saotome.st - Island of S�o Tom�
|
2013
|
+
.gov.st - Government of S�o Tom� and Pr�ncipe
|
2014
|
+
.saotome.st - Island of S�o Tom�
|
2015
2015
|
.principe.st - Island of Principe
|
2016
|
-
.consulado.st - S�o Tom� and Pr�ncipe consulates
|
2017
|
-
.embaixada.st - S�o Tom� and Pr�ncipe embassies
|
2016
|
+
.consulado.st - S�o Tom� and Pr�ncipe consulates
|
2017
|
+
.embaixada.st - S�o Tom� and Pr�ncipe embassies
|
2018
2018
|
.org.st
|
2019
2019
|
.edu.st
|
2020
2020
|
.net.st
|
@@ -2220,29 +2220,29 @@ Below are the domain extensions for Sweden. Some third-level domains are restric
|
|
2220
2220
|
.se - Registrations can be made directly at the second-level or under the following subdomains.
|
2221
2221
|
.a.se - Stockholm City
|
2222
2222
|
.b.se - Stockholm County
|
2223
|
-
.ac.se - V�sterbotten County
|
2223
|
+
.ac.se - V�sterbotten County
|
2224
2224
|
.bd.se - Norrbotten County
|
2225
2225
|
.c.se - Uppsala County
|
2226
|
-
.d.se - S�dermanland County
|
2227
|
-
.e.se - �sterg�tland County
|
2228
|
-
.f.se - J�nk�ping County
|
2226
|
+
.d.se - S�dermanland County
|
2227
|
+
.e.se - �sterg�tland County
|
2228
|
+
.f.se - J�nk�ping County
|
2229
2229
|
.g.se - Kronoberg County
|
2230
2230
|
.h.se - Kalmar County
|
2231
2231
|
.i.se - Gotland County
|
2232
2232
|
.k.se - Blekinge County
|
2233
2233
|
.l.se - Kristianstad County
|
2234
|
-
.m.se - Sk�ne County
|
2234
|
+
.m.se - Sk�ne County
|
2235
2235
|
.n.se - Halland County
|
2236
|
-
.o.se - V�stra G�taland County
|
2237
|
-
.p.se - �lvsborg County
|
2236
|
+
.o.se - V�stra G�taland County
|
2237
|
+
.p.se - �lvsborg County
|
2238
2238
|
.r.se - Skaraborg County
|
2239
|
-
.s.se - V�rmland County
|
2240
|
-
.t.se - �rebro County
|
2241
|
-
.u.se - V�stmanland County
|
2239
|
+
.s.se - V�rmland County
|
2240
|
+
.t.se - �rebro County
|
2241
|
+
.u.se - V�stmanland County
|
2242
2242
|
.w.se - Dalarna County
|
2243
|
-
.x.se - G�vleborg County
|
2244
|
-
.y.se - V�sternorrland County
|
2245
|
-
.z.se - J�mtland County
|
2243
|
+
.x.se - G�vleborg County
|
2244
|
+
.y.se - V�sternorrland County
|
2245
|
+
.z.se - J�mtland County
|
2246
2246
|
.org.se - Non-profit Organizations
|
2247
2247
|
.pp.se - Private Persons
|
2248
2248
|
.tm.se - Trade Marks
|
@@ -2270,7 +2270,7 @@ Below are the domain extensions for Syria. There are no restrictions on register
|
|
2270
2270
|
Taiwan (Republic of China)
|
2271
2271
|
Below are the country domain extensions for Taiwan. Requirements vary depending on which second-level name registration is within. Non-residents are allowed to register domain names under several subdomains.
|
2272
2272
|
|
2273
|
-
.tw - Unrestricted. Registrations are made directly at second level and beneath the following subdomains.
|
2273
|
+
.tw - Unrestricted. Registrations are made directly at second level and beneath the following subdomains.
|
2274
2274
|
.edu.tw - For educational and academic institutions
|
2275
2275
|
.gov.tw - For Republic of China government agencies
|
2276
2276
|
.mil.tw - For the Military of the Republic of China
|
@@ -2423,7 +2423,7 @@ Here is the top-level domain for Turks and Caicos Islands. There are no restrict
|
|
2423
2423
|
Tuvalu
|
2424
2424
|
Here is the country code top-level domain for the island nation of Tuvalu. There are no restrictions on the second-level domain names, however, some second-level names are reserved (i.e. .com.tv, .net.tv, .org.tv, .gov.tv). The .tv domain has been a popular choice for websites for television shows.
|
2425
2425
|
|
2426
|
-
.tv - Registrations are directly at the second-level.
|
2426
|
+
.tv - Registrations are directly at the second-level.
|
2427
2427
|
|
2428
2428
|
Uganda
|
2429
2429
|
Below are the domain extensions for Uganda. There are no restrictions on registering domain names with this extension.
|
@@ -2450,7 +2450,7 @@ Here are the domain extensions for Ukraine. To register a domain name, the regis
|
|
2450
2450
|
United Arab Emirates
|
2451
2451
|
These are the country domain extensions for the United Arab Emirates. Second-level registrations are generally unrestricted. Third-level registrations require local presence and documentation (business registration), and if applicable, certificate from relevant ministry (for org, mil, gov, sch and ac).
|
2452
2452
|
|
2453
|
-
.ae - Companies, Organizations or Individuals. Domain names can be registered directly at the second-level or at the third-level, under one of the following extensions.
|
2453
|
+
.ae - Companies, Organizations or Individuals. Domain names can be registered directly at the second-level or at the third-level, under one of the following extensions.
|
2454
2454
|
.co.ae - Companies -- was deprecated by UAEnic in 2003 and reintroduced by .aeDA (domain registrar for the .ae ccTLD) in 2008
|
2455
2455
|
.net.ae - Network Providers
|
2456
2456
|
.gov.ae - Government and Ministries
|
@@ -2477,6 +2477,9 @@ Below are the country domain extensions for the United Kingdom (UK). There are n
|
|
2477
2477
|
.plc.uk - Public limited companies
|
2478
2478
|
.police.uk - Police
|
2479
2479
|
.sch.uk - Local education authorities, schools, primary and secondary education, community education
|
2480
|
+
.gb.net - UK specific
|
2481
|
+
.uk.com - UK specific
|
2482
|
+
.uk.net - UK specific
|
2480
2483
|
|
2481
2484
|
United States of America
|
2482
2485
|
Below are the country domain extensions for the United States. Registrants of .us domains must be United States citizens, residents, or organizations, or a foreign entity with a presence in the United States. Originally registrations were within third or fourth level hierarchy, but currently direct second-level registrations are allowed. Also, the kids.us extension allows third-level registrations for child-friendly sites.
|
@@ -2630,7 +2633,7 @@ Here are the domain extensions for Yemen. Registrants must have a local contact
|
|
2630
2633
|
.net.ye - Network Providers
|
2631
2634
|
.org.ye - Non-commercial Organizations
|
2632
2635
|
.plc.ye
|
2633
|
-
.gov.ye - Government and Governmental System
|
2636
|
+
.gov.ye - Government and Governmental System
|
2634
2637
|
|
2635
2638
|
Zambia
|
2636
2639
|
Here are the domain extensions for Zambia. Local presence is required to register domain names with this extension.
|
data/lib/wmap/url_checker.rb
CHANGED
@@ -32,282 +32,266 @@ class Wmap::UrlChecker
|
|
32
32
|
|
33
33
|
# Main worker method to perform various checks on the URL / site
|
34
34
|
def url_worker (url)
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
server=get_server_header(url)
|
63
|
-
end
|
64
|
-
# save the data
|
65
|
-
checker=Hash.new
|
66
|
-
checker['ip']=ip
|
67
|
-
checker['port']=port
|
68
|
-
checker['url']=url
|
69
|
-
checker['code']=code
|
70
|
-
checker['redirection']=loc
|
71
|
-
checker['md5']=fp
|
72
|
-
checker['server']=server
|
73
|
-
checker['timestamp']=timestamp
|
74
|
-
if Wmap::CidrTracker.new(:data_dir=>@data_dir).ip_trusted?(ip)
|
75
|
-
checker['status']="int_hosted"
|
76
|
-
else
|
77
|
-
checker['status']="ext_hosted"
|
78
|
-
end
|
79
|
-
return checker
|
80
|
-
rescue OpenSSL::SSL::SSLError => es # handler to temporally hold the openssl bug in bay: SSL_set_session: unable to find ssl method
|
81
|
-
checker=Hash.new
|
82
|
-
checker['ip']=ip
|
83
|
-
checker['port']=port
|
84
|
-
checker['url']=url
|
85
|
-
checker['code']=20000
|
86
|
-
checker['server']="Unknown SSL error: #{es}"
|
87
|
-
checker['md']=nil
|
88
|
-
checker['redirection']=nil
|
89
|
-
checker['timestamp']=timestamp
|
90
|
-
return checker
|
91
|
-
rescue Exception => ee
|
92
|
-
puts "Exception on method #{__method__} for #{url}: #{ee}" # if @verbose
|
93
|
-
return nil
|
35
|
+
puts "Checking out an unknown URL: #{url}" if @verbose
|
36
|
+
url=url.strip.downcase
|
37
|
+
raise "Invalid URL format: #{url}" unless is_url?(url)
|
38
|
+
timestamp=Time.now
|
39
|
+
host=url_2_host(url)
|
40
|
+
ip=host_2_ip(host)
|
41
|
+
port=url_2_port(url)
|
42
|
+
code=10000
|
43
|
+
if @url_code.key?(url)
|
44
|
+
code=@url_code[url]
|
45
|
+
else
|
46
|
+
code=response_code(url)
|
47
|
+
end
|
48
|
+
if code>=300 && code < 400
|
49
|
+
loc=landing_location(4,url)
|
50
|
+
else
|
51
|
+
loc=nil
|
52
|
+
end
|
53
|
+
if @url_finger_print.key?(url)
|
54
|
+
fp=@url_finger_print[url]
|
55
|
+
else
|
56
|
+
fp=response_body_md5(url)
|
57
|
+
end
|
58
|
+
if @url_server.key?(url)
|
59
|
+
server=@url_server[url]
|
60
|
+
else
|
61
|
+
server=get_server_header(url)
|
94
62
|
end
|
63
|
+
# save the data
|
64
|
+
checker=Hash.new
|
65
|
+
checker['ip']=ip
|
66
|
+
checker['port']=port
|
67
|
+
checker['url']=url
|
68
|
+
checker['code']=code
|
69
|
+
checker['redirection']=loc
|
70
|
+
checker['md5']=fp
|
71
|
+
checker['server']=server
|
72
|
+
checker['timestamp']=timestamp
|
73
|
+
if Wmap::CidrTracker.new(:data_dir=>@data_dir).ip_trusted?(ip)
|
74
|
+
checker['status']="int_hosted"
|
75
|
+
else
|
76
|
+
checker['status']="ext_hosted"
|
77
|
+
end
|
78
|
+
return checker
|
79
|
+
rescue OpenSSL::SSL::SSLError => es # handler to temporally hold the openssl bug in bay: SSL_set_session: unable to find ssl method
|
80
|
+
checker=Hash.new
|
81
|
+
checker['ip']=ip
|
82
|
+
checker['port']=port
|
83
|
+
checker['url']=url
|
84
|
+
checker['code']=20000
|
85
|
+
checker['server']="Unknown SSL error: #{es}"
|
86
|
+
checker['md']=nil
|
87
|
+
checker['redirection']=nil
|
88
|
+
checker['timestamp']=timestamp
|
89
|
+
return checker
|
90
|
+
rescue Exception => ee
|
91
|
+
puts "Exception on method #{__method__} for #{url}: #{ee}" # if @verbose
|
92
|
+
return nil
|
95
93
|
end
|
96
94
|
alias_method :check, :url_worker
|
97
95
|
|
98
96
|
# Parallel scanner - by utilizing fork manager 'parallel' to spawn numbers of child processes on multiple urls simultaneously
|
99
97
|
def url_workers (targets,num=@max_parallel)
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
results << process
|
114
|
-
end
|
98
|
+
results=Array.new
|
99
|
+
targets -= ["", nil]
|
100
|
+
if targets.size > 0
|
101
|
+
puts "Start the url checker on the targets:\n #{targets}"
|
102
|
+
Parallel.map(targets, :in_processes => num) { |target|
|
103
|
+
url_worker(target)
|
104
|
+
}.each do |process|
|
105
|
+
if process.nil?
|
106
|
+
next
|
107
|
+
elsif process.empty?
|
108
|
+
#do nothing
|
109
|
+
else
|
110
|
+
results << process
|
115
111
|
end
|
116
112
|
end
|
117
|
-
return results
|
118
|
-
rescue Exception => ee
|
119
|
-
puts "Exception on method #{__method__}: #{ee}" if @verbose
|
120
|
-
return nil
|
121
113
|
end
|
114
|
+
return results
|
115
|
+
rescue Exception => ee
|
116
|
+
puts "Exception on method #{__method__}: #{ee}" if @verbose
|
117
|
+
return nil
|
122
118
|
end
|
123
119
|
alias_method :checks, :url_workers
|
124
120
|
|
121
|
+
=begin
|
125
122
|
# Test the URL and return the response code
|
126
123
|
def response_code (url)
|
127
124
|
puts "Check the http response code on the url: #{url}" if @verbose
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
125
|
+
code = 10000 # All unknown url connection exceptions go here
|
126
|
+
raise "Invalid url: #{url}" unless is_url?(url)
|
127
|
+
url=url.strip.downcase
|
128
|
+
timeo = @http_timeout/1000.0
|
129
|
+
uri = URI.parse(url)
|
130
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
131
|
+
http.open_timeout = timeo
|
132
|
+
http.read_timeout = timeo
|
133
|
+
if (url =~ /https\:/i)
|
134
|
+
http.use_ssl = true
|
135
|
+
#http.ssl_version = :SSLv3
|
136
|
+
# Bypass the remote web server cert validation test
|
137
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
138
|
+
end
|
139
|
+
request = Net::HTTP::Get.new(uri.request_uri)
|
140
|
+
response = http.request(request)
|
141
|
+
puts "Server response the following: #{response}" if @verbose
|
142
|
+
code = response.code.to_i
|
143
|
+
#response.finish if response.started?()
|
144
|
+
@url_code[url]=code
|
145
|
+
puts "Response code on #{url}: #{code}" if @verbose
|
146
|
+
return code
|
147
|
+
rescue Exception => ee
|
148
|
+
puts "Exception on method #{__method__} for #{url}: #{ee}" if @verbose
|
149
|
+
case ee
|
150
|
+
# rescue "Connection reset by peer" error type
|
151
|
+
when Errno::ECONNRESET
|
152
|
+
code=104
|
153
|
+
when Errno::ECONNABORTED,Errno::ETIMEDOUT
|
154
|
+
#code=10000
|
155
|
+
when Timeout::Error # Quick fix
|
156
|
+
if (url =~ /https\:/i) # try again for ssl timeout session, in case of default :TLSv1 failure
|
157
|
+
http.ssl_version = :SSLv3
|
158
|
+
response = http.request(request)
|
159
|
+
code = response.code.to_i
|
160
|
+
unless code.nil?
|
161
|
+
@ssl_version = http.ssl_version
|
162
|
+
end
|
163
|
+
end
|
164
|
+
else
|
165
|
+
#code=10000
|
166
|
+
end
|
167
|
+
@url_code[url]=code
|
168
|
+
return code
|
169
|
+
end
|
170
|
+
|
171
|
+
# Test the URL / site and return the redirection location (3xx response code only)
|
172
|
+
def redirect_location (url)
|
173
|
+
puts "Test the redirection location for the url: #{url}" if @verbose
|
174
|
+
location=""
|
175
|
+
raise "Invalid url: #{url}" unless is_url?(url)
|
176
|
+
url=url.strip.downcase
|
177
|
+
timeo = @http_timeout/1000.0
|
178
|
+
uri = URI.parse(url)
|
179
|
+
code = response_code (url)
|
180
|
+
if code >= 300 && code < 400
|
134
181
|
http = Net::HTTP.new(uri.host, uri.port)
|
135
182
|
http.open_timeout = timeo
|
136
183
|
http.read_timeout = timeo
|
137
184
|
if (url =~ /https\:/i)
|
138
185
|
http.use_ssl = true
|
139
|
-
#http.ssl_version = :SSLv3
|
140
186
|
# Bypass the remote web server cert validation test
|
141
187
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
188
|
+
http.ssl_version = @ssl_version
|
142
189
|
end
|
143
190
|
request = Net::HTTP::Get.new(uri.request_uri)
|
144
191
|
response = http.request(request)
|
145
|
-
puts "
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
puts "Response code on #{url}: #{response_code}" if @verbose
|
150
|
-
return response_code
|
151
|
-
rescue Exception => ee
|
152
|
-
puts "Exception on method #{__method__} for #{url}: #{ee}" if @verbose
|
153
|
-
case ee
|
154
|
-
# rescue "Connection reset by peer" error type
|
155
|
-
when Errno::ECONNRESET
|
156
|
-
response_code=104
|
157
|
-
when Errno::ECONNABORTED,Errno::ETIMEDOUT
|
158
|
-
#response_code=10000
|
159
|
-
when Timeout::Error # Quick fix
|
160
|
-
if (url =~ /https\:/i) # try again for ssl timeout session, in case of default :TLSv1 failure
|
161
|
-
http.ssl_version = :SSLv3
|
162
|
-
response = http.request(request)
|
163
|
-
response_code = response.code.to_i
|
164
|
-
unless response_code.nil?
|
165
|
-
@ssl_version = http.ssl_version
|
166
|
-
end
|
167
|
-
end
|
168
|
-
else
|
169
|
-
#response_code=10000
|
192
|
+
puts "Response: #{response}" if @verbose
|
193
|
+
case response
|
194
|
+
when Net::HTTPRedirection then
|
195
|
+
location = response['location']
|
170
196
|
end
|
171
|
-
@url_code[url]=response_code
|
172
|
-
return response_code
|
173
|
-
end
|
174
|
-
end
|
175
|
-
alias_method :query, :response_code
|
176
|
-
|
177
|
-
# Test the URL / site and return the redirection location (3xx response code only)
|
178
|
-
def redirect_location (url)
|
179
|
-
begin
|
180
|
-
puts "Test the redirection location for the url: #{url}" if @verbose
|
181
|
-
location=""
|
182
|
-
raise "Invalid url: #{url}" unless is_url?(url)
|
183
|
-
url=url.strip.downcase
|
184
|
-
timeo = @http_timeout/1000.0
|
185
|
-
uri = URI.parse(url)
|
186
|
-
code = response_code (url)
|
187
|
-
if code >= 300 && code < 400
|
188
|
-
http = Net::HTTP.new(uri.host, uri.port)
|
189
|
-
http.open_timeout = timeo
|
190
|
-
http.read_timeout = timeo
|
191
|
-
if (url =~ /https\:/i)
|
192
|
-
http.use_ssl = true
|
193
|
-
# Bypass the remote web server cert validation test
|
194
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
195
|
-
http.ssl_version = @ssl_version
|
196
|
-
end
|
197
|
-
request = Net::HTTP::Get.new(uri.request_uri)
|
198
|
-
response = http.request(request)
|
199
|
-
puts "Response: #{response}" if @verbose
|
200
|
-
case response
|
201
|
-
when Net::HTTPRedirection then
|
202
|
-
location = response['location']
|
203
|
-
end
|
204
|
-
end
|
205
|
-
@url_redirection[url]=location
|
206
|
-
return location
|
207
|
-
rescue Exception => ee
|
208
|
-
puts "Exception on method redirect_location for URL #{url}: #{ee}" if @verbose
|
209
|
-
@url_redirection[url]=location
|
210
|
-
return location
|
211
197
|
end
|
198
|
+
@url_redirection[url]=location
|
199
|
+
return location
|
200
|
+
rescue Exception => ee
|
201
|
+
puts "Exception on method redirect_location for URL #{url}: #{ee}" if @verbose
|
202
|
+
return ""
|
212
203
|
end
|
213
204
|
alias_method :location, :redirect_location
|
214
205
|
|
215
206
|
# Test the URL / Site and return the landing url location (recursive with the depth = 4 )
|
216
|
-
def landing_location (depth=
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
else
|
227
|
-
return url
|
228
|
-
end
|
207
|
+
def landing_location (depth=5, url)
|
208
|
+
depth -= 1
|
209
|
+
return url if depth < 1
|
210
|
+
timeo = @http_timeout/1000.0
|
211
|
+
uri = URI.parse(url)
|
212
|
+
code = response_code (url)
|
213
|
+
if code >= 300 && code < 400
|
214
|
+
url = redirect_location (url)
|
215
|
+
url = landing_location(depth,url)
|
216
|
+
else
|
229
217
|
return url
|
230
|
-
rescue Exception => ee
|
231
|
-
puts "Exception on method #{__method__} on URL #{url}: #{ee}" if @verbose
|
232
218
|
end
|
219
|
+
return url
|
220
|
+
rescue Exception => ee
|
221
|
+
puts "Exception on method #{__method__} on URL #{url}: #{ee}" if @verbose
|
233
222
|
end
|
223
|
+
=end
|
234
224
|
|
235
225
|
# Test the URL / site and return the web server type from the HTTP header "server" field
|
236
226
|
def get_server_header (url)
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
http.ssl_version = @ssl_version
|
253
|
-
end
|
254
|
-
request = Net::HTTP::Get.new(uri.request_uri)
|
255
|
-
response = http.request(request)
|
256
|
-
server=response["server"]
|
257
|
-
server=server.gsub(/\,/,' ')
|
258
|
-
return server
|
259
|
-
rescue Exception => ee
|
260
|
-
puts "Exception on method get_server_header for URL #{url}: #{ee}" if @verbose
|
261
|
-
@url_server[url]=server
|
262
|
-
return server
|
227
|
+
puts "Retrieve the server header field from the url: #{url}" if @verbose
|
228
|
+
server=String.new
|
229
|
+
raise "Invalid url: #{url}" unless is_url?(url)
|
230
|
+
url=url.strip.downcase
|
231
|
+
timeo = @http_timeout/1000.0
|
232
|
+
uri = URI.parse(url)
|
233
|
+
code = response_code (url)
|
234
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
235
|
+
http.open_timeout = timeo
|
236
|
+
http.read_timeout = timeo
|
237
|
+
if (url =~ /https\:/i)
|
238
|
+
http.use_ssl = true
|
239
|
+
# Bypass the remote web server cert validation test
|
240
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
241
|
+
http.ssl_version = @ssl_version
|
263
242
|
end
|
243
|
+
request = Net::HTTP::Get.new(uri.request_uri)
|
244
|
+
response = http.request(request)
|
245
|
+
server=response["server"]
|
246
|
+
server=server.gsub(/\,/,' ')
|
247
|
+
return server
|
248
|
+
rescue Exception => ee
|
249
|
+
puts "Exception on method get_server_header for URL #{url}: #{ee}" if @verbose
|
250
|
+
@url_server[url]=server
|
251
|
+
return server
|
264
252
|
end
|
265
253
|
|
266
254
|
# Use MD5 algorithm to fingerprint the URL / site response payload (web page content)
|
267
255
|
def response_body_md5(url)
|
268
256
|
puts "MD5 finger print page body content: #{url}" if @verbose
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
http.ssl_version = @ssl_version
|
283
|
-
end
|
284
|
-
request = Net::HTTP::Get.new(uri.request_uri)
|
285
|
-
response = http.request(request)
|
286
|
-
response_body = response.body.to_s
|
287
|
-
fp=Digest::MD5.hexdigest(response_body) unless response_body.nil?
|
288
|
-
@url_finger_print[url] = fp
|
289
|
-
return fp
|
290
|
-
rescue Exception => ee
|
291
|
-
puts "Exception on method #{__method__}: #{ee}" if @verbose
|
257
|
+
raise "Invalid url: #{url}" unless is_url?(url)
|
258
|
+
url=url.strip.downcase
|
259
|
+
timeo = @http_timeout/1000.0
|
260
|
+
uri = URI.parse(url)
|
261
|
+
fp=""
|
262
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
263
|
+
http.open_timeout = timeo
|
264
|
+
http.read_timeout = timeo
|
265
|
+
if (url =~ /https\:/i)
|
266
|
+
http.use_ssl = true
|
267
|
+
# Bypass the remote web server cert validation test
|
268
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
269
|
+
http.ssl_version = @ssl_version
|
292
270
|
end
|
271
|
+
request = Net::HTTP::Get.new(uri.request_uri)
|
272
|
+
response = http.request(request)
|
273
|
+
response_body = response.body.to_s
|
274
|
+
fp=Digest::MD5.hexdigest(response_body) unless response_body.nil?
|
275
|
+
@url_finger_print[url] = fp
|
276
|
+
return fp
|
277
|
+
rescue Exception => ee
|
278
|
+
puts "Exception on method #{__method__}: #{ee}" if @verbose
|
293
279
|
end
|
294
280
|
alias_method :md5, :response_body_md5
|
295
281
|
|
296
282
|
# Retrieve the remote web server certification, open it and return the cert content as a string
|
297
283
|
def get_certificate (url)
|
298
284
|
puts "Retrieve the remote web server SSL certificate in clear text: #{url}" if @verbose
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
puts "Exception on method #{__method__} from #{url}: #{ee}"
|
310
|
-
end
|
285
|
+
url=url.strip
|
286
|
+
raise "Invalid URL string: #{url}" unless is_ssl?(url)
|
287
|
+
client = HTTPClient.new
|
288
|
+
client.ssl_config.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
289
|
+
response = client.get(url)
|
290
|
+
cert = response.peer_cert
|
291
|
+
cer = OpenSSL::X509::Certificate.new(cert)
|
292
|
+
return cer.to_text
|
293
|
+
rescue Exception => ee
|
294
|
+
puts "Exception on method #{__method__} from #{url}: #{ee}"
|
311
295
|
return nil
|
312
296
|
end
|
313
297
|
alias_method :get_cert, :get_certificate
|
@@ -315,19 +299,17 @@ class Wmap::UrlChecker
|
|
315
299
|
# Retrieve the X509 cert in the clear text from the remote web server, extract and return the common name field within the cert
|
316
300
|
def get_cert_cn (url)
|
317
301
|
puts "Extract the common name field from a X509 cert: #{cert}" if @verbose
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
cn=$1
|
326
|
-
end
|
327
|
-
return cn
|
328
|
-
rescue Exception => ee
|
329
|
-
puts "Error on method #{__method__} from #{cert}: #{ee}" if @verbose
|
302
|
+
cert=get_certificate(url)
|
303
|
+
subject, cn = ""
|
304
|
+
if cert =~ /\n(.+)Subject\:(.+)\n/i
|
305
|
+
subject=$2
|
306
|
+
end
|
307
|
+
if subject =~/CN\=(.+)/i
|
308
|
+
cn=$1
|
330
309
|
end
|
310
|
+
return cn
|
311
|
+
rescue Exception => ee
|
312
|
+
puts "Error on method #{__method__} from #{url}: #{ee}" if @verbose
|
331
313
|
return nil
|
332
314
|
end
|
333
315
|
alias_method :get_cn, :get_cert_cn
|