| line | stmt | bran | cond | sub | pod | time | code | 
| 1 |  |  |  |  |  |  | #=============================================================================== | 
| 2 |  |  |  |  |  |  | #      PODNAME:  Net::IP::Identifier::Plugin::Microsoft | 
| 3 |  |  |  |  |  |  | #     ABSTRACT:  identify Microsoft (AS8075) owned IP addresses | 
| 4 |  |  |  |  |  |  | # | 
| 5 |  |  |  |  |  |  | #       AUTHOR:  Reid Augustin (REID) | 
| 6 |  |  |  |  |  |  | #        EMAIL:  reid@hellosix.com | 
| 7 |  |  |  |  |  |  | #      CREATED:  Sun Oct 12 19:32:46 PDT 2014 | 
| 8 |  |  |  |  |  |  | #=============================================================================== | 
| 9 |  |  |  |  |  |  |  | 
| 10 | 1 |  |  | 1 |  | 23 | use 5.008; | 
|  | 1 |  |  |  |  | 3 |  | 
|  | 1 |  |  |  |  | 33 |  | 
| 11 | 1 |  |  | 1 |  | 4 | use strict; | 
|  | 1 |  |  |  |  | 2 |  | 
|  | 1 |  |  |  |  | 41 |  | 
| 12 | 1 |  |  | 1 |  | 4 | use warnings; | 
|  | 1 |  |  |  |  | 2 |  | 
|  | 1 |  |  |  |  | 37 |  | 
| 13 |  |  |  |  |  |  |  | 
| 14 |  |  |  |  |  |  | package Net::IP::Identifier::Plugin::Microsoft; | 
| 15 |  |  |  |  |  |  |  | 
| 16 | 1 |  |  | 1 |  | 4 | use Role::Tiny::With; | 
|  | 1 |  |  |  |  | 2 |  | 
|  | 1 |  |  |  |  | 314 |  | 
| 17 |  |  |  |  |  |  | with qw( Net::IP::Identifier_Role ); | 
| 18 |  |  |  |  |  |  |  | 
| 19 |  |  |  |  |  |  | our $VERSION = '0.111'; # VERSION | 
| 20 |  |  |  |  |  |  |  | 
| 21 |  |  |  |  |  |  | sub new { | 
| 22 | 1 |  |  | 1 | 1 | 2 | my ($class, %opts) = @_; | 
| 23 |  |  |  |  |  |  |  | 
| 24 | 1 |  |  |  |  | 2 | my $self = {}; | 
| 25 | 1 |  | 33 |  |  | 7 | bless $self, (ref $class || $class); | 
| 26 |  |  |  |  |  |  |  | 
| 27 |  |  |  |  |  |  | # List of known Microsoft (AS8075) IP blocks as of May 2015 | 
| 28 | 1 |  |  |  |  | 8 | $self->ips( | 
| 29 |  |  |  |  |  |  | # 100 Network Blocks | 
| 30 |  |  |  |  |  |  | '8.6.176.0/24', | 
| 31 |  |  |  |  |  |  | # extending 13.64.0.0/11 to include 13.96.0.0/13 | 
| 32 |  |  |  |  |  |  | # extending 13.64.0.0-13.103.255.255 to include 13.104.0.0/14 | 
| 33 |  |  |  |  |  |  | '13.64.0.0-13.107.255.255', | 
| 34 |  |  |  |  |  |  | '23.96.0.0/13', | 
| 35 |  |  |  |  |  |  | '40.64.0.0/10', | 
| 36 |  |  |  |  |  |  | '42.159.0.0/16', | 
| 37 |  |  |  |  |  |  | '64.4.0.0/18', | 
| 38 |  |  |  |  |  |  | '64.41.193.0/24', | 
| 39 |  |  |  |  |  |  | '65.52.0.0/14', | 
| 40 |  |  |  |  |  |  | '65.221.5.0/24', | 
| 41 |  |  |  |  |  |  | '66.119.144.0/20', | 
| 42 |  |  |  |  |  |  | # extending 70.37.0.0/17 to include 70.37.128.0/18 | 
| 43 |  |  |  |  |  |  | '70.37.0.0-70.37.191.255', | 
| 44 |  |  |  |  |  |  | '70.42.230.0/23', | 
| 45 |  |  |  |  |  |  | '94.245.64.0/18', | 
| 46 |  |  |  |  |  |  | '103.9.8.0/22', | 
| 47 |  |  |  |  |  |  | '104.40.0.0/13', | 
| 48 |  |  |  |  |  |  | '104.146.0.0/15', | 
| 49 |  |  |  |  |  |  | '104.208.0.0/13', | 
| 50 |  |  |  |  |  |  | '111.221.16.0/21', | 
| 51 |  |  |  |  |  |  | '111.221.64.0/18', | 
| 52 |  |  |  |  |  |  | '125.16.28.0/24', | 
| 53 |  |  |  |  |  |  | '131.107.0.0/16', | 
| 54 |  |  |  |  |  |  | '131.253.1.0/24', | 
| 55 |  |  |  |  |  |  | '131.253.3.0/24', | 
| 56 |  |  |  |  |  |  | # extending 131.253.5.0/24 to include 131.253.6.0/24 | 
| 57 |  |  |  |  |  |  | '131.253.5.0-131.253.6.255', | 
| 58 |  |  |  |  |  |  | '131.253.8.0/24', | 
| 59 |  |  |  |  |  |  | # extending 131.253.12.0/22 to include 131.253.16.0/23 | 
| 60 |  |  |  |  |  |  | # extending 131.253.12.0-131.253.17.255 to include 131.253.18.0/24 | 
| 61 |  |  |  |  |  |  | '131.253.12.0-131.253.18.255', | 
| 62 |  |  |  |  |  |  | # extending 131.253.21.0/24 to include 131.253.22.0/23 | 
| 63 |  |  |  |  |  |  | # extending 131.253.21.0-131.253.23.255 to include 131.253.24.0/21 | 
| 64 |  |  |  |  |  |  | # extending 131.253.21.0-131.253.31.255 to include 131.253.32.0/20 | 
| 65 |  |  |  |  |  |  | '131.253.21.0-131.253.47.255', | 
| 66 |  |  |  |  |  |  | # extending 131.253.61.0/24 to include 131.253.62.0/23 | 
| 67 |  |  |  |  |  |  | # extending 131.253.61.0-131.253.63.255 to include 131.253.64.0/18 | 
| 68 |  |  |  |  |  |  | # extending 131.253.61.0-131.253.127.255 to include 131.253.128.0/17 | 
| 69 |  |  |  |  |  |  | '131.253.61.0-131.253.255.255', | 
| 70 |  |  |  |  |  |  | '132.245.0.0/16', | 
| 71 |  |  |  |  |  |  | '134.170.0.0/16', | 
| 72 |  |  |  |  |  |  | '137.116.0.0/16', | 
| 73 |  |  |  |  |  |  | '137.135.0.0/16', | 
| 74 |  |  |  |  |  |  | '138.91.0.0/16', | 
| 75 |  |  |  |  |  |  | # extending 157.54.0.0/15 to include 157.56.0.0/14 | 
| 76 |  |  |  |  |  |  | # extending 157.54.0.0-157.59.255.255 to include 157.60.0.0/16 | 
| 77 |  |  |  |  |  |  | '157.54.0.0-157.60.255.255', | 
| 78 |  |  |  |  |  |  | # extending 167.220.0.0/17 to include 167.220.128.0/18 | 
| 79 |  |  |  |  |  |  | # extending 167.220.0.0-167.220.191.255 to include 167.220.192.0/19 | 
| 80 |  |  |  |  |  |  | '167.220.0.0-167.220.223.255', | 
| 81 |  |  |  |  |  |  | # extending 168.61.0.0/16 to include 168.62.0.0/15 | 
| 82 |  |  |  |  |  |  | '168.61.0.0-168.63.255.255', | 
| 83 |  |  |  |  |  |  | '190.210.77.0/24', | 
| 84 |  |  |  |  |  |  | # extending 191.232.0.0/14 to include 191.236.0.0/14 | 
| 85 |  |  |  |  |  |  | '191.232.0.0/13', | 
| 86 |  |  |  |  |  |  | '192.48.225.0/24', | 
| 87 |  |  |  |  |  |  | '192.84.159.0/24', | 
| 88 |  |  |  |  |  |  | '192.92.90.0/24', | 
| 89 |  |  |  |  |  |  | '192.92.214.0/24', | 
| 90 |  |  |  |  |  |  | '192.197.157.0/24', | 
| 91 |  |  |  |  |  |  | '193.149.64.0/19', | 
| 92 |  |  |  |  |  |  | '193.221.113.0/24', | 
| 93 |  |  |  |  |  |  | '194.69.96.0/19', | 
| 94 |  |  |  |  |  |  | '194.121.59.0/24', | 
| 95 |  |  |  |  |  |  | '198.49.8.0/24', | 
| 96 |  |  |  |  |  |  | '198.105.232.0/22', | 
| 97 |  |  |  |  |  |  | # extending 198.180.95.0/24 to include 198.180.96.0/23 | 
| 98 |  |  |  |  |  |  | '198.180.95.0-198.180.97.255', | 
| 99 |  |  |  |  |  |  | '198.200.130.0/24', | 
| 100 |  |  |  |  |  |  | '198.206.164.0/24', | 
| 101 |  |  |  |  |  |  | '199.2.137.0/24', | 
| 102 |  |  |  |  |  |  | '199.30.16.0/20', | 
| 103 |  |  |  |  |  |  | '199.60.28.0/24', | 
| 104 |  |  |  |  |  |  | '199.74.210.0/24', | 
| 105 |  |  |  |  |  |  | '199.103.90.0/23', | 
| 106 |  |  |  |  |  |  | '199.103.122.0/24', | 
| 107 |  |  |  |  |  |  | # extending 199.242.32.0/20 to include 199.242.48.0/21 | 
| 108 |  |  |  |  |  |  | '199.242.32.0-199.242.55.255', | 
| 109 |  |  |  |  |  |  | # extending 202.89.224.0/21 to include 202.89.232.0/21 | 
| 110 |  |  |  |  |  |  | '202.89.224.0/20', | 
| 111 |  |  |  |  |  |  | '202.159.8.0/24', | 
| 112 |  |  |  |  |  |  | '203.124.0.0/22', | 
| 113 |  |  |  |  |  |  | '204.14.180.0/22', | 
| 114 |  |  |  |  |  |  | '204.79.135.0/24', | 
| 115 |  |  |  |  |  |  | # extending 204.79.179.0/24 to include 204.79.180.0/23 | 
| 116 |  |  |  |  |  |  | '204.79.179.0-204.79.181.255', | 
| 117 |  |  |  |  |  |  | # extending 204.79.195.0/24 to include 204.79.196.0/23 | 
| 118 |  |  |  |  |  |  | '204.79.195.0-204.79.197.255', | 
| 119 |  |  |  |  |  |  | '204.79.252.0/24', | 
| 120 |  |  |  |  |  |  | '204.95.96.0/20', | 
| 121 |  |  |  |  |  |  | '204.152.140.0/23', | 
| 122 |  |  |  |  |  |  | '204.182.144.0/20', | 
| 123 |  |  |  |  |  |  | # extending 204.231.194.0/23 to include 204.231.196.0/22 | 
| 124 |  |  |  |  |  |  | # extending 204.231.194.0-204.231.199.255 to include 204.231.200.0/21 | 
| 125 |  |  |  |  |  |  | # extending 204.231.194.0-204.231.207.255 to include 204.231.208.0/20 | 
| 126 |  |  |  |  |  |  | '204.231.194.0-204.231.223.255', | 
| 127 |  |  |  |  |  |  | '204.231.236.0/24', | 
| 128 |  |  |  |  |  |  | '206.73.203.0/24', | 
| 129 |  |  |  |  |  |  | '206.191.224.0/19', | 
| 130 |  |  |  |  |  |  | '207.46.0.0/16', | 
| 131 |  |  |  |  |  |  | '207.68.128.0/18', | 
| 132 |  |  |  |  |  |  | '208.68.136.0/21', | 
| 133 |  |  |  |  |  |  | '208.76.44.0/22', | 
| 134 |  |  |  |  |  |  | '208.84.0.0/21', | 
| 135 |  |  |  |  |  |  | '209.1.15.0/24', | 
| 136 |  |  |  |  |  |  | '209.185.128.0/22', | 
| 137 |  |  |  |  |  |  | '209.240.192.0/19', | 
| 138 |  |  |  |  |  |  | '213.146.167.0/24', | 
| 139 |  |  |  |  |  |  | # extending 213.146.188.0/24 to include 213.146.189.0/24 | 
| 140 |  |  |  |  |  |  | '213.146.188.0/23', | 
| 141 |  |  |  |  |  |  | '213.199.128.0/18', | 
| 142 |  |  |  |  |  |  | '216.32.180.0/22', | 
| 143 |  |  |  |  |  |  | '216.32.240.0/22', | 
| 144 |  |  |  |  |  |  | '216.33.240.0/22', | 
| 145 |  |  |  |  |  |  | '216.34.51.0/24', | 
| 146 |  |  |  |  |  |  | '216.220.208.0/20', | 
| 147 |  |  |  |  |  |  | '2001:df0:7::/48', | 
| 148 |  |  |  |  |  |  | '2001:df0:d7::/48', | 
| 149 |  |  |  |  |  |  | # extending 2001:4898::/31 to include 2001:489a::/32 | 
| 150 |  |  |  |  |  |  | '2001:4898:0000:0000:0000:0000:0000:0000-2001:489a:ffff:ffff:ffff:ffff:ffff:ffff', | 
| 151 |  |  |  |  |  |  | '2404:f800::/31', | 
| 152 |  |  |  |  |  |  | '2603:1000::/24', | 
| 153 |  |  |  |  |  |  | '2620:0:30::/45', | 
| 154 |  |  |  |  |  |  | '2620:b4:4000::/48', | 
| 155 |  |  |  |  |  |  | '2620:1ec::/36', | 
| 156 |  |  |  |  |  |  | '2801:80:1d0::/48', | 
| 157 |  |  |  |  |  |  | '2a01:110::/31', | 
| 158 |  |  |  |  |  |  | ); | 
| 159 | 1 |  |  |  |  | 8 | return $self; | 
| 160 |  |  |  |  |  |  | } | 
| 161 |  |  |  |  |  |  |  | 
| 162 |  |  |  |  |  |  | sub name { | 
| 163 | 4 |  |  | 4 | 0 | 18 | return 'Microsoft'; | 
| 164 |  |  |  |  |  |  | } | 
| 165 |  |  |  |  |  |  |  | 
| 166 |  |  |  |  |  |  | sub children { | 
| 167 | 1 |  |  | 1 | 0 | 3 | return qw( Hotmail ); | 
| 168 |  |  |  |  |  |  | } | 
| 169 |  |  |  |  |  |  |  | 
| 170 |  |  |  |  |  |  | 1; | 
| 171 |  |  |  |  |  |  |  | 
| 172 |  |  |  |  |  |  | __END__ |