@@ -111,16 +111,54 @@ var sonar = {
111
111
sonar . fingerprints = fingerprints ;
112
112
} ,
113
113
114
- 'ip_to_range' : function ( ip ) {
114
+ 'ip_to_range' : function ( ip , range ) {
115
115
var ip_parts = ip . split ( '.' ) ;
116
116
if ( ip_parts . length !== 4 ) {
117
117
return false ;
118
118
}
119
119
120
- for ( var i = 1 ; i < 255 ; i ++ ) {
121
- var tmp_ip = ip_parts [ 0 ] + '.' + ip_parts [ 1 ] + '.' + ip_parts [ 2 ] + '.' + i ;
122
- sonar . ip_queue . push ( tmp_ip ) ;
120
+ var ip_min = [ 0 , 0 , 0 , 0 ] ;
121
+ var ip_max = [ 0 , 0 , 0 , 0 ] ;
122
+ var r = 0 ;
123
+
124
+ for ( var tmp = 0 ; tmp < 4 ; tmp ++ ) {
125
+
126
+ // Calculate the number of bits of each part
127
+ if ( range > 8 + 8 * tmp ) {
128
+ r = 0 ;
129
+ } else {
130
+ r = 8 - ( range - tmp * 8 ) ;
131
+ if ( r < 0 ) {
132
+ r = 8 ;
133
+ }
134
+ }
135
+
136
+ // Calculate minimum and maximum of IP range for the current part
137
+ ip_min [ tmp ] = ip_parts [ tmp ] & ( 255 << r ) ;
138
+ ip_max [ tmp ] = ip_parts [ tmp ] | ( 255 & ~ ( 255 << r ) ) ;
123
139
}
140
+
141
+ if ( sonar . debug ) {
142
+ alert ( '[DEBUG][The samallest IP adress to be scaned is:]' + ip_min [ 0 ] + '.' + ip_min [ 1 ] + '.' + ip_min [ 2 ] + '.' + ip_min [ 3 ] ) ;
143
+ alert ( '[DEBUG][The largest IP adress to be scaned is:]' + ip_max [ 0 ] + '.' + ip_max [ 1 ] + '.' + ip_max [ 2 ] + '.' + ip_max [ 3 ] ) ;
144
+ }
145
+
146
+ // Queue IP address range
147
+ var ip_parts = ip_min . slice ( ) ;
148
+ for ( var a = ip_min [ 0 ] ; a <= ip_max [ 0 ] ; a ++ ) {
149
+ ip_parts [ 0 ] = a ;
150
+ for ( var b = ip_min [ 1 ] ; b <= ip_max [ 1 ] ; b ++ ) {
151
+ ip_parts [ 1 ] = b ;
152
+ for ( var c = ip_min [ 2 ] ; c <= ip_max [ 2 ] ; c ++ ) {
153
+ ip_parts [ 2 ] = c ;
154
+ for ( var d = ip_min [ 3 ] ; d <= ip_max [ 3 ] ; d ++ ) {
155
+ ip_parts [ 3 ] = d ;
156
+ var tmp_ip = ip_parts [ 0 ] + '.' + ip_parts [ 1 ] + '.' + ip_parts [ 2 ] + '.' + ip_parts [ 3 ] ;
157
+ sonar . ip_queue . push ( tmp_ip ) ;
158
+ }
159
+ }
160
+ }
161
+ }
124
162
} ,
125
163
126
164
/*
@@ -183,7 +221,7 @@ var sonar = {
183
221
function addAddress ( newAddr ) {
184
222
if ( newAddr in addrs ) return ;
185
223
addrs [ newAddr ] = true ;
186
- sonar . ip_to_range ( newAddr ) ;
224
+ sonar . ip_to_range ( newAddr , 24 ) ; // We assume that we are on a /24
187
225
}
188
226
function grepSDP ( sdp ) {
189
227
var hosts = [ ] ;
0 commit comments