commit e8a6dde7cd32153a60c51c53da41a6e650ca6809 Author: Tommy Parnell Date: Sat May 21 14:19:18 2016 -0400 init diff --git a/_api_status_8cs_source.html b/_api_status_8cs_source.html new file mode 100644 index 0000000..360255a --- /dev/null +++ b/_api_status_8cs_source.html @@ -0,0 +1,104 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models/ApiStatus.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ApiStatus.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Runtime.Serialization;
5 using System.Threading.Tasks;
6 
7 namespace Shodan.Net.Models
8 {
12  [DataContract]
13  public class ApiStatus
14  {
15  [DataMember(Name = "query_credits")]
16  public int QueryCredits { get; set; }
17 
18  [DataMember(Name = "scan_credits")]
19  public int ScanCredits { get; set; }
20 
21  [DataMember(Name = "telnet")]
22  public bool Telnet { get; set; }
23 
24  [DataMember(Name = "plan")]
25  public string Plan { get; set; }
26 
27  [DataMember(Name = "https")]
28  public bool Https { get; set; }
29 
30  [DataMember(Name = "unlocked")]
31  public bool Unlocked { get; set; }
32  }
33 }
+
Returns information about the API plan belonging to the given API key.
Definition: ApiStatus.cs:13
+ +
+ + + + diff --git a/_assembly_info_8cs_source.html b/_assembly_info_8cs_source.html new file mode 100644 index 0000000..27e5803 --- /dev/null +++ b/_assembly_info_8cs_source.html @@ -0,0 +1,102 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Properties/AssemblyInfo.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AssemblyInfo.cs
+
+
+
1 using System.Reflection;
2 using System.Runtime.CompilerServices;
3 using System.Runtime.InteropServices;
4 
10 // General Information about an assembly is controlled through the following
11 // set of attributes. Change these attribute values to modify the information
12 // associated with an assembly.
13 [assembly: AssemblyConfiguration("")]
14 [assembly: AssemblyCompany("")]
15 [assembly: AssemblyProduct("Shodan.Net")]
16 [assembly: AssemblyTrademark("")]
17 
18 // Setting ComVisible to false makes the types in this assembly not visible
19 // to COM components. If you need to access a type in this assembly from
20 // COM, set the ComVisible attribute to true on that type.
21 [assembly: ComVisible(false)]
22 
23 // The following GUID is for the ID of the typelib if this project is exposed to COM
24 [assembly: Guid("2ac1566f-7c77-499e-b9ae-1f029bd7f7e8")]
+
+ + + + diff --git a/_banner_8cs_source.html b/_banner_8cs_source.html new file mode 100644 index 0000000..3550050 --- /dev/null +++ b/_banner_8cs_source.html @@ -0,0 +1,106 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models/Banner.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Banner.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Runtime.Serialization;
5 using System.Threading.Tasks;
6 
7 namespace Shodan.Net.Models
8 {
12  [DataContract]
13  public class Banner
14  {
18  [DataMember(Name = "timestamp")]
19  public DateTime Timestamp { get; set; }
20 
24  [DataMember(Name = "transport")]
25  public string Transport { get; set; }
26 
30  [DataMember(Name = "hostnames")]
31  public IList<string> Hostnames { get; set; }
32 
36  [DataMember(Name = "org")]
37  public string Org { get; set; }
38 
39  [DataMember(Name = "guid")]
40  public string Guid { get; set; }
41 
45  [DataMember(Name = "data")]
46  public string Data { get; set; }
47 
51  [DataMember(Name = "port")]
52  public int Port { get; set; }
53 
57  [DataMember(Name = "isp")]
58  public string Isp { get; set; }
59 
63  [DataMember(Name = "asn")]
64  public string Asn { get; set; }
65 
66  [DataMember(Name = "location")]
67  public Location Location { get; set; }
68 
72  [DataMember(Name = "ip")]
73  public int? Ip { get; set; }
74 
78  [DataMember(Name = "ip")]
79  public string Ipv6 { get; set; }
80 
84  [DataMember(Name = "domains")]
85  public IList<string> Domains { get; set; }
86 
90  [DataMember(Name = "ip_str")]
91  public string IpStr { get; set; }
92 
96  [DataMember(Name = "os")]
97  public object Os { get; set; }
98 
102  [DataMember(Name = "opts", IsRequired = false)]
103  public dynamic Opts { get; set; }
104 
105  #region Optional Properties
106 
110  [DataMember(Name = "uptime", IsRequired = false)]
111  public int? Uptime { get; set; }
112 
113  [DataMember(Name = "link", IsRequired = false)]
114  public string Link { get; set; }
115 
116  [DataMember(Name = "title", IsRequired = false)]
117  public string Title { get; set; }
118 
119  [DataMember(Name = "html", IsRequired = false)]
120  public string Html { get; set; }
121 
122  [DataMember(Name = "product", IsRequired = false)]
123  public string Product { get; set; }
124 
125  [DataMember(Name = "version", IsRequired = false)]
126  public string Version { get; set; }
127 
128  [DataMember(Name = "devicetype", IsRequired = false)]
129  public string DeviceType { get; set; }
130 
131  [DataMember(Name = "info", IsRequired = false)]
132  public string Info { get; set; }
133 
134  [DataMember(Name = "cpe", IsRequired = false)]
135  public string Cpe { get; set; }
136 
137  [DataMember(Name = "ssl", IsRequired = false)]
138  public SslProperties Ssl { get; set; }
139 
140  #endregion Optional Properties
141  }
142 }
+
Basic location data returned by shodan
Definition: Location.cs:9
+ + +
Represents basic return data
Definition: Banner.cs:13
+
+ + + + diff --git a/_facet_8cs_source.html b/_facet_8cs_source.html new file mode 100644 index 0000000..b8ec844 --- /dev/null +++ b/_facet_8cs_source.html @@ -0,0 +1,104 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models/Facet.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Facet.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Runtime.Serialization;
5 using System.Threading.Tasks;
6 
7 namespace Shodan.Net.Models
8 {
12  [DataContract]
13  public class Facet
14  {
15  [DataMember(Name = "count")]
16  public int? Count { get; set; }
17 
18  [DataMember(Name = "value")]
19  public string Value { get; set; }
20  }
21 }
+ +
Represents return facet data
Definition: Facet.cs:13
+
+ + + + diff --git a/_facet_generator_8cs_source.html b/_facet_generator_8cs_source.html new file mode 100644 index 0000000..da0d8c3 --- /dev/null +++ b/_facet_generator_8cs_source.html @@ -0,0 +1,104 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Search/FacetGenerator.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
FacetGenerator.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6 
7 namespace Shodan.Net
8 {
9  public class FacetGenerator
10  {
11  private Dictionary<string, int?> queryData = new Dictionary<string, int?>();
12 
13  internal FacetGenerator()
14  {
15  }
16 
17  internal string GenerateFacets()
18  {
19  var data = queryData.Select(a => a.Value.HasValue ? $"{a.Key}:{a.Value}" : a.Key);
20  return string.Join(",", data);
21  }
22 
23  public FacetGenerator WithAsn(int? count = null)
24  {
25  queryData.Add("asn", count);
26  return this;
27  }
28 
29  public FacetGenerator WithCity(int? count = null)
30  {
31  queryData.Add("city", count);
32  return this;
33  }
34 
35  public FacetGenerator WithCountry(int? count = null)
36  {
37  queryData.Add("country", count);
38  return this;
39  }
40 
41  public FacetGenerator WithDevice(int? count = null)
42  {
43  queryData.Add("device", count);
44  return this;
45  }
46 
47  public FacetGenerator WithDomain(int? count = null)
48  {
49  queryData.Add("domain", count);
50  return this;
51  }
52 
53  public FacetGenerator WithGeocluster(int? count = null)
54  {
55  queryData.Add("geocluster", count);
56  return this;
57  }
58 
59  public FacetGenerator HasScreenshot(int? count = null)
60  {
61  queryData.Add("has_screenshot", count);
62  return this;
63  }
64 
65  public FacetGenerator WithIsp(int? count = null)
66  {
67  queryData.Add("isp", count);
68  return this;
69  }
70 
71  public FacetGenerator WithLink(int? count = null)
72  {
73  queryData.Add("link", count);
74  return this;
75  }
76 
77  public FacetGenerator WithOrg(int? count = null)
78  {
79  queryData.Add("org", count);
80  return this;
81  }
82 
83  public FacetGenerator WithOs(int? count = null)
84  {
85  queryData.Add("os", count);
86  return this;
87  }
88 
89  public FacetGenerator WithPort(int? count = null)
90  {
91  queryData.Add("port", count);
92  return this;
93  }
94 
95  public FacetGenerator WithPostal(int? count = null)
96  {
97  queryData.Add("postal", count);
98  return this;
99  }
100 
101  public FacetGenerator WithState(int? count = null)
102  {
103  queryData.Add("state", count);
104  return this;
105  }
106 
107  public FacetGenerator WithTimestamp_day(int? count = null)
108  {
109  queryData.Add("timestamp_day", count);
110  return this;
111  }
112 
113  public FacetGenerator WithTimestamp_month(int? count = null)
114  {
115  queryData.Add("timestamp_month", count);
116  return this;
117  }
118 
119  public FacetGenerator WithTimestamp_year(int? count = null)
120  {
121  queryData.Add("timestamp_year", count);
122  return this;
123  }
124 
125  public FacetGenerator WithUptime(int? count = null)
126  {
127  queryData.Add("uptime", count);
128  return this;
129  }
130 
131  public FacetGenerator WithVersion(int? count = null)
132  {
133  queryData.Add("version", count);
134  return this;
135  }
136 
137  public FacetGenerator WithBitcoin_ip(int? count = null)
138  {
139  queryData.Add("bitcoin.ip", count);
140  return this;
141  }
142 
143  public FacetGenerator WithBitcoin_ip_count(int? count = null)
144  {
145  queryData.Add("bitcoin.ip_count", count);
146  return this;
147  }
148 
149  public FacetGenerator WithBitcoin_port(int? count = null)
150  {
151  queryData.Add("bitcoin.port", count);
152  return this;
153  }
154 
155  public FacetGenerator WithBitcoin_user_agent(int? count = null)
156  {
157  queryData.Add("bitcoin.user_agent", count);
158  return this;
159  }
160 
161  public FacetGenerator WithBitcoin_version(int? count = null)
162  {
163  queryData.Add("bitcoin.version", count);
164  return this;
165  }
166 
167  public FacetGenerator WithNtp_ip(int? count = null)
168  {
169  queryData.Add("ntp.ip", count);
170  return this;
171  }
172 
173  public FacetGenerator WithNtp_ip_count(int? count = null)
174  {
175  queryData.Add("ntp.ip_count", count);
176  return this;
177  }
178 
179  public FacetGenerator WithNtp_more(int? count = null)
180  {
181  queryData.Add("ntp.more", count);
182  return this;
183  }
184 
185  public FacetGenerator WithNtp_port(int? count = null)
186  {
187  queryData.Add("ntp.port", count);
188  return this;
189  }
190 
191  public FacetGenerator WithSsh_cipher(int? count = null)
192  {
193  queryData.Add("ssh.cipher", count);
194  return this;
195  }
196 
197  public FacetGenerator WithSsh_fingerprint(int? count = null)
198  {
199  queryData.Add("ssh.fingerprint", count);
200  return this;
201  }
202 
203  public FacetGenerator WithSsh_mac(int? count = null)
204  {
205  queryData.Add("ssh.mac", count);
206  return this;
207  }
208 
209  public FacetGenerator WithSsh_type(int? count = null)
210  {
211  queryData.Add("ssh.type", count);
212  return this;
213  }
214  }
215 }
+ + +
+ + + + diff --git a/_host_8cs_source.html b/_host_8cs_source.html new file mode 100644 index 0000000..011ba6e --- /dev/null +++ b/_host_8cs_source.html @@ -0,0 +1,104 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models/Host.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Host.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Runtime.Serialization;
5 using System.Threading.Tasks;
6 
7 namespace Shodan.Net.Models
8 {
12  [DataContract]
13  public class Host
14  {
15  [DataMember(Name = "region_code")]
16  public string RegionCode { get; set; }
17 
18  [DataMember(Name = "ip")]
19  public string Ip { get; set; }
20 
21  [DataMember(Name = "area_code")]
22  public string AreaCode { get; set; }
23 
24  [DataMember(Name = "country_names")]
25  public string CountryName { get; set; }
26 
27  [DataMember(Name = "hostnames")]
28  public List<string> Hostnames { get; set; }
29 
30  [DataMember(Name = "postal_code")]
31  public string PostalCode { get; set; }
32 
33  [DataMember(Name = "dma_code")]
34  public string DmaCode { get; set; }
35 
36  [DataMember(Name = "country_code")]
37  public string CountryCode { get; set; }
38 
39  [DataMember(Name = "data")]
40  public List<Banner> Data { get; set; }
41 
42  [DataMember(Name = "city")]
43  public string City { get; set; }
44 
45  [DataMember(Name = "longitude")]
46  public double Longitude { get; set; }
47 
48  [DataMember(Name = "country_code3")]
49  public string CountryCode3 { get; set; }
50 
51  [DataMember(Name = "latitude")]
52  public double Latitude { get; set; }
53 
54  [DataMember(Name = "os")]
55  public string Os { get; set; }
56 
57  [DataMember(Name = "ports")]
58  public IList<int> Ports { get; set; }
59  }
60 }
+
Represents return data for querying hosts
Definition: Host.cs:13
+ +
+ + + + diff --git a/_i_requst_handler_8cs_source.html b/_i_requst_handler_8cs_source.html new file mode 100644 index 0000000..b785017 --- /dev/null +++ b/_i_requst_handler_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Net/IRequstHandler.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IRequstHandler.cs
+
+
+
2 using System;
3 using System.Collections.Generic;
4 using System.Linq;
5 using System.Net.Http;
6 using System.Threading.Tasks;
7 
8 namespace Shodan.Net
9 {
13  public interface IRequstHandler : IDisposable
14  {
15  Task<T> MakeRequestAsync<T>(Uri url, HttpContent content = null, RequestType requstType = RequestType.GET)
16  where T : class;
17  }
18 }
+ +
sane wrapper of http, and simple abstraction layer for unit testing
+ + + +
+ + + + diff --git a/_i_shodan_async_client_8cs_source.html b/_i_shodan_async_client_8cs_source.html new file mode 100644 index 0000000..1029762 --- /dev/null +++ b/_i_shodan_async_client_8cs_source.html @@ -0,0 +1,108 @@ + + + + + + +Showdan.Net: src/Shodan.Net/IShodanAsyncClient.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IShodanAsyncClient.cs
+
+
+
1 using Shodan.Net.Models;
3 using System;
4 using System.Collections.Generic;
5 using System.Linq;
6 using System.Threading.Tasks;
7 
8 namespace Shodan.Net
9 {
10  internal interface IShodanAsyncClient
11  {
19  Task<Host> GetHostAsync(string Ip, bool history = false, bool minify = false);
20 
25  Task<List<int>> GetPortsAsync();
26 
31  Task<Dictionary<string, string>> GetProtocolsAsync();
32 
38  Task<ScanResult> RequstScanAsync(string ips);
39 
46  Task<ScanPortResult> RequestInternetPortScanAsync(int port, string protocol);
47 
53  Task<ScanStatus> GetScanStatusAsync(string id);
54 
59  Task<Dictionary<string, string>> GetServicesAsync();
60 
68  Task<SearchQueries> GetQueriesAsync(int? page = null, SortOptions? options = null, OrderOption? order = null);
69 
76  Task<SearchQueries> SearchQueriesAsync(string query, int? page = null);
77 
83  Task<TagResult> GetTagsAsync(int size = 10);
84 
89  Task<Profile> GetProfileAsync();
90 
96  Task<Dictionary<string, string>> DnsLookupAsync(string hostnames);
97 
103  Task<Dictionary<string, List<string>>> ReverseLookupAsync(string ips);
104 
109  Task<string> GetMyIpAsync();
110 
115  Task<ApiStatus> GetApiStatusAsync();
116 
122  Task<double> Experimental_GetHoneyPotScoreAsync(string ip);
123  }
124 }
+ +
OrderOption
Represents an order of either ascending or descending
Definition: OrderOption.cs:11
+ + + +
SortOptions
Represents an option to sort
Definition: SortOptions.cs:11
+
+ + + + diff --git a/_location_8cs_source.html b/_location_8cs_source.html new file mode 100644 index 0000000..de1d088 --- /dev/null +++ b/_location_8cs_source.html @@ -0,0 +1,105 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models/Location.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Location.cs
+
+
+
1 using System.Runtime.Serialization;
2 
3 namespace Shodan.Net.Models
4 {
8  [DataContract]
9  public class Location
10  {
14  public Location()
15  {
16  }
17 
21 
22  [DataMember(Name = "country_code3")]
23  public string CountryCode3 { get; set; }
24 
28  [DataMember(Name = "city")]
29  public string City { get; set; }
30 
34  [DataMember(Name = "postal_code")]
35  public string PostalCode { get; set; }
36 
40  [DataMember(Name = "longitude")]
41  public double Longitude { get; set; }
42 
46 
47  [DataMember(Name = "country_code")]
48  public string CountryCode { get; set; }
49 
53 
54  [DataMember(Name = "latitude")]
55  public double Latitude { get; set; }
56 
60  [DataMember(Name = "country_name")]
61  public string CountryName { get; set; }
62 
66  [DataMember(Name = "area_code")]
67  public int AreaCode { get; set; }
68 
72  [DataMember(Name = "dma_code")]
73  public int? DmaCode { get; set; }
74 
78  [DataMember(Name = "region_code")]
79  public string RegionCode { get; set; }
80  }
81 }
+
Basic location data returned by shodan
Definition: Location.cs:9
+
Location()
An object containing all of the location information for the device.
Definition: Location.cs:14
+ +
+ + + + diff --git a/_order_option_8cs_source.html b/_order_option_8cs_source.html new file mode 100644 index 0000000..d368df8 --- /dev/null +++ b/_order_option_8cs_source.html @@ -0,0 +1,104 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models/Options/OrderOption.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
OrderOption.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Threading.Tasks;
5 
6 namespace Shodan.Net
7 {
11  public enum OrderOption
12  {
13  asc,
14  desc
15  }
16 }
+
OrderOption
Represents an order of either ascending or descending
Definition: OrderOption.cs:11
+ +
+ + + + diff --git a/_profile_8cs_source.html b/_profile_8cs_source.html new file mode 100644 index 0000000..06a9455 --- /dev/null +++ b/_profile_8cs_source.html @@ -0,0 +1,104 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models/Profile.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Profile.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Runtime.Serialization;
5 using System.Threading.Tasks;
6 
7 namespace Shodan.Net.Models
8 {
12  [DataContract]
13  public class Profile
14  {
15  [DataMember(Name = "member")]
16  public bool Member { get; set; }
17 
18  [DataMember(Name = "credits")]
19  public int Credits { get; set; }
20 
21  [DataMember(Name = "display_name")]
22  public string DisplayName { get; set; }
23 
24  [DataMember(Name = "created")]
25  public DateTime Created { get; set; }
26  }
27 }
+
Represents data about your profile
Definition: Profile.cs:13
+ +
+ + + + diff --git a/_query_generator_8cs_source.html b/_query_generator_8cs_source.html new file mode 100644 index 0000000..a20901e --- /dev/null +++ b/_query_generator_8cs_source.html @@ -0,0 +1,108 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Search/QueryGenerator.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
QueryGenerator.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6 
7 namespace Shodan.Net
8 {
9  public class QueryGenerator
10  {
11  internal Dictionary<string, string> queryData { get; set; }
12  private HashSet<string> CalledMethods = new HashSet<string>();
13  private string searchText = string.Empty;
14 
15  internal QueryGenerator()
16  {
17  }
18 
19  public QueryGenerator Before(DateTime time)
20  {
21  queryData.Add("before", time.ToString("dd/MM/yyyy"));
22  return this;
23  }
24 
30  public QueryGenerator After(DateTime time)
31  {
32  queryData.Add("after", time.ToString("dd/MM/yyyy"));
33  return this;
34  }
35 
41  public QueryGenerator WithAsn(string asn)
42  {
43  queryData.Add("asn", asn);
44  return this;
45  }
46 
47  public QueryGenerator Withcity(string city)
48  {
49  queryData.Add("city", city);
50  return this;
51  }
52 
53  public QueryGenerator Withcountry(string country)
54  {
55  queryData.Add("country", country);
56  return this;
57  }
58 
64  public QueryGenerator HasScreenshot(bool hasScreenshot = true)
65  {
66  queryData.Add("has_screenshot", hasScreenshot.ToString());
67  return this;
68  }
69 
70  public QueryGenerator WithHostname(string hostname)
71  {
72  queryData.Add("hostname", hostname);
73  return this;
74  }
75 
76  public QueryGenerator WithHtml(string html)
77  {
78  queryData.Add("html", html);
79  return this;
80  }
81 
82  public QueryGenerator WithIsp(string isp)
83  {
84  queryData.Add("isp", isp);
85  return this;
86  }
87 
88  public QueryGenerator WithNet(string net)
89  {
90  queryData.Add("net", net);
91  return this;
92  }
93 
94  public QueryGenerator WithOrg(string org)
95  {
96  queryData.Add("org", org);
97  return this;
98  }
99 
100  public QueryGenerator WithOs(string os)
101  {
102  queryData.Add("os", os);
103  return this;
104  }
105 
106  public QueryGenerator Withport(string port)
107  {
108  queryData.Add("port", port);
109  return this;
110  }
111 
112  public QueryGenerator With_postal(string postal)
113  {
114  queryData.Add("postal", postal);
115  return this;
116  }
117 
118  public QueryGenerator With_product(string product)
119  {
120  queryData.Add("product", product);
121  return this;
122  }
123 
124  public QueryGenerator With_state(string state)
125  {
126  queryData.Add("state", state);
127  return this;
128  }
129 
130  public QueryGenerator With_title(string title)
131  {
132  queryData.Add("title", title);
133  return this;
134  }
135 
136  public QueryGenerator With_version(string version)
137  {
138  queryData.Add("version", version);
139  return this;
140  }
141 
142  public QueryGenerator With_Bitcoinip(string bitcoinip)
143  {
144  queryData.Add("bitcoin.ip", bitcoinip);
145  return this;
146  }
147 
148  public QueryGenerator With_Bitcoinip_count(string bitcoinip_count)
149  {
150  queryData.Add("bitcoin.ip_count", bitcoinip_count);
151  return this;
152  }
153 
154  public QueryGenerator WithBitcoinport(string bitcoinport)
155  {
156  queryData.Add("bitcoin.port", bitcoinport);
157  return this;
158  }
159 
160  public QueryGenerator WithBitcoinversion(string bitcoinversion)
161  {
162  queryData.Add("bitcoin.version", bitcoinversion);
163  return this;
164  }
165 
166  public QueryGenerator WithNtpip(string ntpip)
167  {
168  queryData.Add("ntp.ip", ntpip);
169  return this;
170  }
171 
172  public QueryGenerator WithNtpip_count(string ntpip_count)
173  {
174  queryData.Add("ntp.ip_count", ntpip_count);
175  return this;
176  }
177 
178  public QueryGenerator WithNtpmore(string ntpmore)
179  {
180  queryData.Add("ntp.more", ntpmore);
181  return this;
182  }
183 
184  public QueryGenerator WithNtpport(string ntpport)
185  {
186  queryData.Add("ntp.port", ntpport);
187  return this;
188  }
189 
190  public QueryGenerator WithText(string searchText)
191  {
192  if(!string.IsNullOrWhiteSpace(this.searchText))
193  {
194  throw new ShodanException("Method cannot be called twice");
195  }
196  this.searchText = searchText;
197  return this;
198  }
199 
200  internal string Generate()
201  {
202  var sb = new StringBuilder(searchText);
203  if(!string.IsNullOrWhiteSpace(searchText))
204  {
205  sb.Append(" ");
206  }
207  foreach(var item in queryData)
208  {
209  sb.Append($"{item.Key}:{item.Value}");
210  }
211  return sb.ToString();
212  }
213  }
214 }
QueryGenerator WithAsn(string asn)
The Autonomous System Number that identifies the network the device is on.
+ + +
QueryGenerator HasScreenshot(bool hasScreenshot=true)
If "true" only show results that have a screenshot available.
+ +
QueryGenerator After(DateTime time)
Only show results that were collected after the given date
+ +
+ + + + diff --git a/_readme_8md_source.html b/_readme_8md_source.html new file mode 100644 index 0000000..3ff5745 --- /dev/null +++ b/_readme_8md_source.html @@ -0,0 +1,97 @@ + + + + + + +Showdan.Net: Readme.md Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Readme.md
+
+
+
1 Visit the official Shodan API documentation at:
2 
3 [https://developer.shodan.io](https://developer.shodan.io)
4 
5 This is still in active development, error handling might not well handle well. Best bet when working with any libraries you didn't write..harden your calls!
6 
7 ## Installation
8 
9 `install-package Shodan.Net`
10 
11 ## Getting started
12 
13 You need to have an Api key. Get your [api key here](http://www.shodanhq.com/api_doc).
14 
15 
16 Create a shodan client. Note that ShodanClient inerhits from IDisposable, so you should wrap it in a using, or make sure it will be disposed. Shodan client is thread safe, so you should be able to keep 1 object around for many requests.
17 
18 `var client = new Shodan.Net.ShodanClient("myapiKey");`
19 
20 Now just query away.
21 
22 ```csharp
23 
24 await client.GetPortsAsync();
25 await client.GetHostAsync("172.1.1.0");
26 await client.GetMyIpAsync();
27 
28 
29 ```
30 
31 
32 ## Searching
33 
34 Searching shodan requires you to build up queries, and facets to make it easier we have used a generator pattern to produce queries.
35 
36 ```csharp
37 
38  await client.SearchHosts(
39  query: a => a.Withcity("boston")
40  .Withcountry("usa")
41  .Before(DateTime.Now.AddDays(-5)),
42  facet: b => b.WithAsn()
43 
44  );
45 
46 
47 ```
+ + + + diff --git a/_request_handler_8cs_source.html b/_request_handler_8cs_source.html new file mode 100644 index 0000000..6e4bbce --- /dev/null +++ b/_request_handler_8cs_source.html @@ -0,0 +1,109 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Net/RequestHandler.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
RequestHandler.cs
+
+
+
1 using Newtonsoft.Json;
3 using System;
4 using System.Collections.Generic;
5 using System.Linq;
6 using System.Net.Http;
7 using System.Threading.Tasks;
8 
9 namespace Shodan.Net
10 {
15  {
16  private HttpClient client { get; set; }
17 
18  public async Task<T> MakeRequestAsync<T>(Uri url, HttpContent content = null, RequestType requstType = RequestType.GET)
19  where T : class
20  {
21  if(requstType != RequestType.GET && content == null)
22  {
23  throw new ShodanException($"Request type {requstType} requires content");
24  }
25  if(requstType == RequestType.DELETE || requstType == RequestType.PUT)
26  {
27  throw new NotImplementedException("Put and Delete requests have not been implemented properly");
28  }
29  HttpResponseMessage connection = null;
30  if(requstType == RequestType.GET)
31  {
32  connection = await client.GetAsync(url);
33  }
34  else if(requstType == RequestType.POST)
35  {
36  connection = await client.PostAsync(url, content);
37  }
38 
39  //todo error handle based on user input
40  connection.EnsureSuccessStatusCode();
41 
42  //var statusCode = (int)connection.StatusCode;
43  //if(statusCode != 200 && statusCode != 201 && statusCode == 202)
44  //{
45  // System.Diagnostics.Trace.TraceError("Error calling shodan API, Status code is not 200" + JsonConvert.SerializeObject(connection.s))
46  // //todo error handle
47  // return null;
48  //}
49  var readResult = await connection.Content.ReadAsStringAsync();
50  if(typeof(T) == typeof(string))
51  {
52  return readResult as T;
53  }
54  return JsonConvert.DeserializeObject<T>(readResult);
55  }
56 
57  #region IDisposable Support
58 
59  private bool disposedValue = false; // To detect redundant calls
60 
61  protected virtual void Dispose(bool disposing)
62  {
63  if(!disposedValue)
64  {
65  if(disposing)
66  {
67  client.Dispose();
68  }
69 
70  disposedValue = true;
71  }
72  }
73 
74  // This code added to correctly implement the disposable pattern.
75  public void Dispose()
76  {
77  // Do not change this code. Put cleanup code in Dispose(bool disposing) above.
78  Dispose(true);
79  // TODO: uncomment the following line if the finalizer is overridden above.
80  // GC.SuppressFinalize(this);
81  }
82 
83  #endregion IDisposable Support
84  }
85 }
+ + +
sane wrapper of http, and simple abstraction layer for unit testing
+
sane wrapper of http, and simple abstraction layer for unit testing
+ + + +
+ + + + diff --git a/_request_type_8cs_source.html b/_request_type_8cs_source.html new file mode 100644 index 0000000..ae2d779 --- /dev/null +++ b/_request_type_8cs_source.html @@ -0,0 +1,103 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models/Options/RequestType.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
RequestType.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Threading.Tasks;
5 
6 namespace Shodan.Net.Models.Options
7 {
8  public enum RequestType
9  {
10  GET = 0,
11  PUT = 1,
12  POST = 2,
13  DELETE = 4
14  }
15 }
+ +
+ + + + diff --git a/_scan_port_result_8cs_source.html b/_scan_port_result_8cs_source.html new file mode 100644 index 0000000..4302641 --- /dev/null +++ b/_scan_port_result_8cs_source.html @@ -0,0 +1,104 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models/ScanPortResult.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ScanPortResult.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Runtime.Serialization;
5 using System.Threading.Tasks;
6 
7 namespace Shodan.Net.Models
8 {
12  [DataContract]
13  public class ScanPortResult
14  {
15  [DataMember(Name = "id")]
16  public string Id { get; set; }
17  }
18 }
+
result of ShodanClient.RequestInternetPortScanAsync(int, string)
+ +
+ + + + diff --git a/_scan_result_8cs_source.html b/_scan_result_8cs_source.html new file mode 100644 index 0000000..a544ea6 --- /dev/null +++ b/_scan_result_8cs_source.html @@ -0,0 +1,104 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models/ScanResult.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ScanResult.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Runtime.Serialization;
5 using System.Threading.Tasks;
6 
7 namespace Shodan.Net.Models
8 {
12  [DataContract]
13  public class ScanResult
14  {
15  [DataMember(Name = "id")]
16  public string Id { get; set; }
17 
18  [DataMember(Name = "count")]
19  public int Count { get; set; }
20 
21  [DataMember(Name = "credits_left")]
22  public int CreditsLeft { get; set; }
23  }
24 }
+ +
result of ShodanClient.RequstScanAsync(string)
Definition: ScanResult.cs:13
+
+ + + + diff --git a/_scan_status_8cs_source.html b/_scan_status_8cs_source.html new file mode 100644 index 0000000..4b1f143 --- /dev/null +++ b/_scan_status_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models/ScanStatus.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ScanStatus.cs
+
+
+
2 using System;
3 using System.Collections.Generic;
4 using System.Linq;
5 using System.Runtime.Serialization;
6 using System.Threading.Tasks;
7 
8 namespace Shodan.Net.Models
9 {
13  [DataContract]
14  public class ScanStatus
15  {
16  [DataMember(Name = "id")]
17  public string Id { get; set; }
18 
19  [DataMember(Name = "count")]
20  public int Count { get; set; }
21 
22  [DataMember(Name = "status")]
23  public StatusEnum? Status { get; set; }
24  }
25 }
+ + + + +
Result of ShodanClient.GetScanStatusAsync(string)
Definition: ScanStatus.cs:14
+
+ + + + diff --git a/_search_host_results_8cs_source.html b/_search_host_results_8cs_source.html new file mode 100644 index 0000000..179c236 --- /dev/null +++ b/_search_host_results_8cs_source.html @@ -0,0 +1,104 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models/SearchHostResults.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SearchHostResults.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Runtime.Serialization;
5 using System.Threading.Tasks;
6 
7 namespace Shodan.Net.Models
8 {
12  [DataContract]
13  public class SearchHostResults
14  {
15  [DataMember(Name = "matches")]
16  public List<Banner> Matches { get; set; }
17 
18  [DataMember(Name = "facets")]
19  public Dictionary<string, Facet> Facets { get; set; }
20 
21  [DataMember(Name = "total")]
22  public int? Total { get; set; }
23  }
24 }
+ +
result of ShodanClient.SearchHosts(SearchQuery, FacetQuery, int, bool) and ShodanClient.SearchHostsCount(SearchQuery, FacetQuery)
+
+ + + + diff --git a/_search_queries_8cs_source.html b/_search_queries_8cs_source.html new file mode 100644 index 0000000..9e69d35 --- /dev/null +++ b/_search_queries_8cs_source.html @@ -0,0 +1,105 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models/SearchQueries.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SearchQueries.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Runtime.Serialization;
5 using System.Threading.Tasks;
6 
7 namespace Shodan.Net.Models
8 {
9  [DataContract]
10  public class Match
11  {
12  [DataMember(Name = "votes")]
13  public int Votes { get; set; }
14 
15  [DataMember(Name = "description")]
16  public string Description { get; set; }
17 
18  [DataMember(Name = "title")]
19  public string Title { get; set; }
20 
21  [DataMember(Name = "timestamp")]
22  public DateTime Timestamp { get; set; }
23 
24  [DataMember(Name = "tags")]
25  public IList<string> Tags { get; set; }
26 
27  [DataMember(Name = "query")]
28  public string Query { get; set; }
29  }
30 
34  [DataContract]
35  public class SearchQueries
36  {
37  [DataMember(Name = "total")]
38  public int Total { get; set; }
39 
40  [DataMember(Name = "matches")]
41  public IList<Match> Matches { get; set; }
42  }
43 }
Result of ShodanClient.GetQueriesAsync(int?, SortOptions?, OrderOption?) and ShodanClient.SearchQueriesAsync(string, int?)
+ + + +
+ + + + diff --git a/_search_tokens_8cs_source.html b/_search_tokens_8cs_source.html new file mode 100644 index 0000000..67ee9f8 --- /dev/null +++ b/_search_tokens_8cs_source.html @@ -0,0 +1,105 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models/SearchTokens.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SearchTokens.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Runtime.Serialization;
5 using System.Threading.Tasks;
6 
7 namespace Shodan.Net.Models
8 {
9  [DataContract]
10  public class Attributes
11  {
12  [DataMember(Name = "ports")]
13  public IList<int> Ports { get; set; }
14  }
15 
16  [DataContract]
17  public class SearchTokens
18  {
19  [DataMember(Name = "attributes")]
20  public Attributes Attributes { get; set; }
21 
22  [DataMember(Name = "errors")]
23  public IList<dynamic> Errors { get; set; }
24 
25  [DataMember(Name = "string")]
26  public string String { get; set; }
27 
28  [DataMember(Name = "filters")]
29  public IList<dynamic> Filters { get; set; }
30  }
31 }
+ + + +
+ + + + diff --git a/_shodan_client_8cs_source.html b/_shodan_client_8cs_source.html new file mode 100644 index 0000000..403c3b8 --- /dev/null +++ b/_shodan_client_8cs_source.html @@ -0,0 +1,142 @@ + + + + + + +Showdan.Net: src/Shodan.Net/ShodanClient.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ShodanClient.cs
+
+
+
1 using Newtonsoft.Json;
2 using Shodan.Net.Models;
4 using System;
5 using System.Collections.Generic;
6 using System.Diagnostics;
7 using System.Linq;
8 using System.Net;
9 using System.Net.Http;
10 using System.Threading.Tasks;
11 
12 namespace Shodan.Net
13 {
17  public class ShodanClient : IShodanAsyncClient, IDisposable
18  {
19  private readonly string apikey;
20  private const string BasePath = "https://api.shodan.io";
21  private IRequstHandler RequestHandler = new RequestHandler();
22 
23  //todo error handle!!!
24 
25  public ShodanClient(string apikey)
26  {
27  if(string.IsNullOrWhiteSpace(apikey))
28  {
29  throw new ArgumentNullException(nameof(apikey));
30  }
31  this.apikey = apikey;
32  }
33 
34  internal ShodanClient(string apikey, IRequstHandler requestHandler)
35  : this(apikey)
36  {
37  RequestHandler = requestHandler;
38  }
39 
45  public Task<Dictionary<string, string>> DnsLookupAsync(string hostnames)
46  {
47  if(string.IsNullOrWhiteSpace(hostnames))
48  {
49  throw new ArgumentNullException(hostnames);
50  }
51  var url = new Uri($"{BasePath}/dns/resolve?hostnames={hostnames}&key={this.apikey}");
52  return RequestHandler.MakeRequestAsync<Dictionary<string, string>>(url);
53  }
54 
66  public Task<SearchHostResults> SearchHosts(Action<QueryGenerator> query, Action<FacetGenerator> facet = null, int page = 1, bool minify = true)
67  {
68  if(query == null)
69  {
70  throw new ArgumentNullException(nameof(query));
71  }
72  var queryGenerator = new QueryGenerator();
73  query.Invoke(queryGenerator);
74  var queryResult = queryGenerator.Generate();
75  var url = new UriBuilder($"{BasePath}/shodan/host/search")
76  {
77  Query = $"key={apikey}&query={queryResult}&minify={minify.ToString()}"
78  };
79  if(facet != null)
80  {
81  var facetGenerator = new FacetGenerator();
82  facet.Invoke(facetGenerator);
83  url.Query = $"{url.Query}&facets={facetGenerator.GenerateFacets()}";
84  }
85  if(page > 1)
86  {
87  url.Query = $"{url.Query}&page={page}";
88  }
89  return RequestHandler.MakeRequestAsync<SearchHostResults>(url.Uri);
90  }
91 
98  public Task<SearchHostResults> SearchHostsCount(Action<QueryGenerator> query, Action<FacetGenerator> facet = null)
99  {
100  if(query == null)
101  {
102  throw new ArgumentNullException(nameof(query));
103  }
104  var queryGenObj = new QueryGenerator();
105  query.Invoke(queryGenObj);
106 
107  var url = new UriBuilder($"{BasePath}/shodan/host/count")
108  {
109  Query = $"key={apikey}&query={queryGenObj.Generate()}"
110  };
111  if(facet != null)
112  {
113  var facetGenObj = new FacetGenerator();
114  facet.Invoke(facetGenObj);
115 
116  url.Query = $"{url.Query}&facets={facetGenObj.GenerateFacets()}";
117  }
118 
119  return RequestHandler.MakeRequestAsync<SearchHostResults>(url.Uri);
120  }
121 
122  public Task<SearchTokens> SearchTokens(Action<QueryGenerator> query)
123  {
124  if(query == null)
125  {
126  throw new ArgumentNullException(nameof(query));
127  }
128  var queryObj = new QueryGenerator();
129  query.Invoke(queryObj);
130  var url = new Uri($"{BasePath}/shodan/host/search/tokens?key={apikey}&query={queryObj.Generate()}");
131  return RequestHandler.MakeRequestAsync<SearchTokens>(url);
132  }
133 
139  public async Task<double> Experimental_GetHoneyPotScoreAsync(string ip)
140  {
141  if(string.IsNullOrWhiteSpace(ip))
142  {
143  throw new ArgumentNullException(nameof(ip));
144  }
145  var url = new Uri($"{BasePath}/labs/honeyscore/{ip}?key={apikey}");
146  var result = await RequestHandler.MakeRequestAsync<string>(url);
147  double resultParsed;
148  if(!double.TryParse(result, out resultParsed))
149  {
150  throw new ShodanException($"honeypot score returned with {result} failed to parse to double");
151  }
152  return resultParsed;
153  }
154 
159  public Task<ApiStatus> GetApiStatusAsync()
160  {
161  var url = new Uri($"{BasePath}/api-info?key={apikey}");
162  return RequestHandler.MakeRequestAsync<ApiStatus>(url);
163  }
164 
172  public Task<Host> GetHostAsync(string Ip, bool history = false, bool minify = false)
173  {
174  if(string.IsNullOrWhiteSpace(Ip))
175  {
176  throw new ArgumentNullException(nameof(Ip));
177  }
178  var builder = new UriBuilder($"{BasePath}/shodan/host/{Ip}")
179  {
180  Query = $"key={this.apikey}&history={history.ToString()}&minify={minify.ToString()}"
181  };
182 
183  return RequestHandler.MakeRequestAsync<Host>(builder.Uri);
184  }
185 
190  public Task<string> GetMyIpAsync()
191  {
192  var url = new Uri($"{BasePath}/tools/myip?key={this.apikey}");
193  return RequestHandler.MakeRequestAsync<string>(url);
194  }
195 
200  public Task<List<int>> GetPortsAsync()
201  {
202  var builder = new Uri($"{BasePath}/shodan/ports?key={this.apikey}");
203  return RequestHandler.MakeRequestAsync<List<int>>(builder);
204  }
205 
210  public Task<Profile> GetProfileAsync()
211  {
212  var url = new Uri($"{BasePath}/account/profile?key={apikey}");
213  return RequestHandler.MakeRequestAsync<Profile>(url);
214  }
215 
220  public Task<Dictionary<string, string>> GetProtocolsAsync()
221  {
222  var url = new Uri($"{BasePath}/shodan/protocols?key={this.apikey}");
223  return RequestHandler.MakeRequestAsync<Dictionary<string, string>>(url);
224  }
225 
233  public Task<SearchQueries> GetQueriesAsync(int? page = null, SortOptions? sort = null, OrderOption? order = null)
234  {
235  var url = new UriBuilder($"{BasePath}/shodan/query")
236  {
237  Query = $"key={apikey}"
238  };
239  if(sort.HasValue)
240  {
241  var sortName = Enum.GetName(typeof(SortOptions), sort.Value);
242  url.Query = $"{url.Query}&sort={sortName}";
243  }
244  if(order.HasValue)
245  {
246  var orderName = Enum.GetName(typeof(OrderOption), order.Value);
247  url.Query = $"{url.Query}&order={orderName}";
248  }
249  return RequestHandler.MakeRequestAsync<SearchQueries>(url.Uri);
250  }
251 
258  public Task<SearchQueries> SearchQueriesAsync(string query, int? page = null)
259  {
260  if(string.IsNullOrWhiteSpace(query))
261  {
262  throw new ArgumentNullException(query);
263  }
264  var url = new UriBuilder($"{BasePath}/shodan/query/search")
265  {
266  Query = $"key={apikey}&query={query}"
267  };
268  if(page != null)
269  {
270  url.Query = $"{url.Query}&page={page}";
271  }
272  return RequestHandler.MakeRequestAsync<SearchQueries>(url.Uri);
273  }
274 
280  public Task<ScanStatus> GetScanStatusAsync(string id)
281  {
282  if(string.IsNullOrWhiteSpace(id))
283  {
284  throw new ArgumentNullException(nameof(id));
285  }
286  var url = new Uri($"{BasePath}/shodan/scan/{id}");
287  return RequestHandler.MakeRequestAsync<ScanStatus>(url);
288  }
289 
294  public Task<Dictionary<string, string>> GetServicesAsync()
295  {
296  var url = new Uri($"{BasePath}/shodan/services?key={this.apikey}");
297  return RequestHandler.MakeRequestAsync<Dictionary<string, string>>(url);
298  }
299 
305  public Task<TagResult> GetTagsAsync(int size = 10)
306  {
307  var url = new UriBuilder($"{BasePath}/shodan/query/tags")
308  {
309  Query = $"key={apikey}&size={size}"
310  };
311  return RequestHandler.MakeRequestAsync<TagResult>(url.Uri);
312  }
313 
321  public Task<ScanPortResult> RequestInternetPortScanAsync(int port, string protocol)
322  {
323  var url = new Uri($"{BasePath}/shodan/scan/internet?key={this.apikey}");
324  using(var data = new FormUrlEncodedContent(new List<KeyValuePair<string, string>>() {
325  new KeyValuePair<string, string>("port", port.ToString()),
326  new KeyValuePair<string, string>("protocol", protocol)
327  }))
328  {
329  return RequestHandler.MakeRequestAsync<ScanPortResult>(url, data, RequestType.POST);
330  }
331  }
332 
339  public Task<ScanResult> RequstScanAsync(string ips)
340  {
341  if(string.IsNullOrWhiteSpace(ips))
342  {
343  throw new ArgumentNullException(nameof(ips));
344  }
345  if(!ips.Split(',').Any())
346  {
347  throw new ArgumentOutOfRangeException($"{ips} must have one valid record");
348  }
349  var url = new Uri($"{BasePath}/shodan/scan?key={this.apikey}");
350  using(var data = new FormUrlEncodedContent(new KeyValuePair<string, string>[] { new KeyValuePair<string, string>("ips", ips) }))
351  {
352  return RequestHandler.MakeRequestAsync<ScanResult>(url, data, RequestType.POST);
353  }
354  }
355 
361  public Task<Dictionary<string, List<string>>> ReverseLookupAsync(string ips)
362  {
363  if(string.IsNullOrWhiteSpace(ips))
364  {
365  throw new ArgumentNullException(ips);
366  }
367  var url = new Uri($"{BasePath}/dns/reverse?ips={ips}&key={this.apikey}");
368  return RequestHandler.MakeRequestAsync<Dictionary<string, List<string>>>(url);
369  }
370 
371  #region IDisposable Support
372 
373  private bool disposedValue = false; // To detect redundant calls
374 
375  protected virtual void Dispose(bool disposing)
376  {
377  if(!disposedValue)
378  {
379  if(disposing)
380  {
381  RequestHandler.Dispose();
382  }
383 
384  disposedValue = true;
385  }
386  }
387 
388  // This code added to correctly implement the disposable pattern.
389  public void Dispose()
390  {
391  // Do not change this code. Put cleanup code in Dispose(bool disposing) above.
392  Dispose(true);
393  // TODO: uncomment the following line if the finalizer is overridden above.
394  // GC.SuppressFinalize(this);
395  }
396 
397  #endregion IDisposable Support
398  }
399 }
Main mechanism to talk to the shodan api. This is what you should use to interact with the api ...
Definition: ShodanClient.cs:17
+ +
Task< Host > GetHostAsync(string Ip, bool history=false, bool minify=false)
Returns all services that have been found on the given host IP.
+
Task< ScanPortResult > RequestInternetPortScanAsync(int port, string protocol)
Use this method to request Shodan to crawl the Internet for a specific port. This method is restricte...
+
Result of ShodanClient.GetQueriesAsync(int?, SortOptions?, OrderOption?) and ShodanClient.SearchQueriesAsync(string, int?)
+
Task< Dictionary< string, string > > GetServicesAsync()
This method returns an object containing all the services that the Shodan crawlers look at...
+ + +
result of ShodanClient.GetTagsAsync(int)
Definition: TagResult.cs:13
+
Task< SearchHostResults > SearchHosts(Action< QueryGenerator > query, Action< FacetGenerator > facet=null, int page=1, bool minify=true)
Search Shodan using the same query syntax as the website and use facets to get summary information fo...
Definition: ShodanClient.cs:66
+ +
Task< Dictionary< string, string > > GetProtocolsAsync()
This method returns an object containing all the protocols that can be used when launching an Interne...
+
Task< string > GetMyIpAsync()
Get your current IP address as seen from the Internet.
+
Task< Dictionary< string, List< string > > > ReverseLookupAsync(string ips)
Look up the hostnames that have been defined for the given list of IP addresses
+
OrderOption
Represents an order of either ascending or descending
Definition: OrderOption.cs:11
+
Represents data about your profile
Definition: Profile.cs:13
+
sane wrapper of http, and simple abstraction layer for unit testing
+
Task< ScanResult > RequstScanAsync(string ips)
Use this method to request Shodan to crawl a network Requirements: This method uses API scan credits:...
+
sane wrapper of http, and simple abstraction layer for unit testing
+ +
Returns information about the API plan belonging to the given API key.
Definition: ApiStatus.cs:13
+
Represents return data for querying hosts
Definition: Host.cs:13
+
result of ShodanClient.RequestInternetPortScanAsync(int, string)
+
Task< ScanStatus > GetScanStatusAsync(string id)
Check the progress of a previously submitted scan request
+
Task< SearchQueries > GetQueriesAsync(int?page=null, SortOptions?sort=null, OrderOption?order=null)
Use this method to obtain a list of search queries that users have saved in Shodan.
+ +
Task< SearchQueries > SearchQueriesAsync(string query, int?page=null)
Use this method to search the directory of search queries that users have saved in Shodan...
+ + +
Task< ApiStatus > GetApiStatusAsync()
Returns information about the API plan belonging to the given API key.
+
SortOptions
Represents an option to sort
Definition: SortOptions.cs:11
+
Result of ShodanClient.GetScanStatusAsync(string)
Definition: ScanStatus.cs:14
+
result of ShodanClient.RequstScanAsync(string)
Definition: ScanResult.cs:13
+
async Task< double > Experimental_GetHoneyPotScoreAsync(string ip)
Calculates a honeypot probability score ranging from 0 (not a honeypot) to 1.0 (is a honeypot)...
+
Task< List< int > > GetPortsAsync()
This method returns a list of port numbers that the crawlers are looking for.
+
Task< TagResult > GetTagsAsync(int size=10)
Use this method to obtain a list of popular tags for the saved search queries in Shodan.
+
Task< Dictionary< string, string > > DnsLookupAsync(string hostnames)
Look up the IP address for the provided list of hostnames.
Definition: ShodanClient.cs:45
+
result of ShodanClient.SearchHosts(SearchQuery, FacetQuery, int, bool) and ShodanClient.SearchHostsCount(SearchQuery, FacetQuery)
+ +
Task< SearchHostResults > SearchHostsCount(Action< QueryGenerator > query, Action< FacetGenerator > facet=null)
This method behaves identical to SearchHosts(SearchQuery, FacetQuery, int, bool)" with the only diffe...
Definition: ShodanClient.cs:98
+
Task< Profile > GetProfileAsync()
Returns information about the Shodan account linked to this API key.
+
+ + + + diff --git a/_shodan_exception_8cs_source.html b/_shodan_exception_8cs_source.html new file mode 100644 index 0000000..1f392d0 --- /dev/null +++ b/_shodan_exception_8cs_source.html @@ -0,0 +1,104 @@ + + + + + + +Showdan.Net: src/Shodan.Net/ShodanException.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ShodanException.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Net.Http;
5 using System.Threading.Tasks;
6 
7 namespace Shodan.Net
8 {
9  public class ShodanException : Exception
10  {
11  public ShodanException()
12  {
13  }
14 
15  public ShodanException(string message) : base(message)
16  {
17  }
18 
19  public ShodanException(string message, Exception innerException) : base(message, innerException)
20  {
21  }
22  }
23 }
+ + +
+ + + + diff --git a/_sort_options_8cs_source.html b/_sort_options_8cs_source.html new file mode 100644 index 0000000..770dcda --- /dev/null +++ b/_sort_options_8cs_source.html @@ -0,0 +1,104 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models/Options/SortOptions.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SortOptions.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Threading.Tasks;
5 
6 namespace Shodan.Net
7 {
11  public enum SortOptions
12  {
13  votes,
14  timestamp
15  }
16 }
+ +
SortOptions
Represents an option to sort
Definition: SortOptions.cs:11
+
+ + + + diff --git a/_ssl_properties_8cs_source.html b/_ssl_properties_8cs_source.html new file mode 100644 index 0000000..56171bb --- /dev/null +++ b/_ssl_properties_8cs_source.html @@ -0,0 +1,104 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models/SslProperties.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SslProperties.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Runtime.Serialization;
5 using System.Threading.Tasks;
6 
7 namespace Shodan.Net.Models
8 {
9  [DataContract]
10  public class SslProperties
11  {
15  [DataMember(Name = "cert")]
16  public dynamic Cert { get; set; }
17 
21  [DataMember(Name = "ciper")]
22  public dynamic Ciper { get; set; }
23 
27  [DataMember(Name = "chain")]
28  public IList<dynamic> Chain { get; set; }
29 
33  [DataMember(Name = "dhparams")]
34  public dynamic DhParams { get; set; }
35 
39  [DataMember(Name = "versions")]
40  public IList<string> Versions { get; set; }
41  }
42 }
+ + +
+ + + + diff --git a/_status_enum_8cs_source.html b/_status_enum_8cs_source.html new file mode 100644 index 0000000..786cf89 --- /dev/null +++ b/_status_enum_8cs_source.html @@ -0,0 +1,103 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models/Options/StatusEnum.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
StatusEnum.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Threading.Tasks;
5 
6 namespace Shodan.Net.Models.Options
7 {
8  public enum StatusEnum
9  {
10  SUBMITTING,
11  QUEUE,
12  PROCESSING,
13  DONE
14  }
15 }
+ +
+ + + + diff --git a/_tag_result_8cs_source.html b/_tag_result_8cs_source.html new file mode 100644 index 0000000..51c5567 --- /dev/null +++ b/_tag_result_8cs_source.html @@ -0,0 +1,105 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models/TagResult.cs Source File + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
TagResult.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Runtime.Serialization;
5 using System.Threading.Tasks;
6 
7 namespace Shodan.Net.Models
8 {
12  [DataContract]
13  public class TagResult
14  {
15  [DataMember(Name = "total")]
16  public int Total { get; set; }
17 
18  [DataMember(Name = "matches")]
19  public IList<Match> Matches { get; set; }
20 
21  [DataContract]
22  public class Match
23  {
24  [DataMember(Name = "value")]
25  public string Value { get; set; }
26 
27  [DataMember(Name = "count")]
28  public int Count { get; set; }
29  }
30  }
31 }
+ +
result of ShodanClient.GetTagsAsync(int)
Definition: TagResult.cs:13
+ +
+ + + + diff --git a/annotated.html b/annotated.html new file mode 100644 index 0000000..f9589d3 --- /dev/null +++ b/annotated.html @@ -0,0 +1,131 @@ + + + + + + +Showdan.Net: Class List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12345]
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
 NShodan
 NNet
 NModels
 CApiStatusReturns information about the API plan belonging to the given API key.
 CAttributes
 CBannerRepresents basic return data
 CFacetRepresents return facet data
 CHostRepresents return data for querying hosts
 CLocationBasic location data returned by shodan
 CMatch
 CProfileRepresents data about your profile
 CScanPortResultresult of ShodanClient.RequestInternetPortScanAsync(int, string)
 CScanResultresult of ShodanClient.RequstScanAsync(string)
 CScanStatusResult of ShodanClient.GetScanStatusAsync(string)
 CSearchHostResultsresult of ShodanClient.SearchHosts(SearchQuery, FacetQuery, int, bool) and ShodanClient.SearchHostsCount(SearchQuery, FacetQuery)
 CSearchQueriesResult of ShodanClient.GetQueriesAsync(int?, SortOptions?, OrderOption?) and

See also
ShodanClient.SearchQueriesAsync(string, int?)
+
 CSearchTokens
 CSslProperties
 CTagResultresult of ShodanClient.GetTagsAsync(int)
 CMatch
 CFacetGenerator
 CIRequstHandlersane wrapper of http, and simple abstraction layer for unit testing
 CQueryGenerator
 CRequestHandlersane wrapper of http, and simple abstraction layer for unit testing
 CShodanClientMain mechanism to talk to the shodan api. This is what you should use to interact with the api
 CShodanException
+
+
+ + + + diff --git a/arrowdown.png b/arrowdown.png new file mode 100644 index 0000000..0b63f6d Binary files /dev/null and b/arrowdown.png differ diff --git a/arrowright.png b/arrowright.png new file mode 100644 index 0000000..c6ee22f Binary files /dev/null and b/arrowright.png differ diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/bc_s.png differ diff --git a/bdwn.png b/bdwn.png new file mode 100644 index 0000000..940a0b9 Binary files /dev/null and b/bdwn.png differ diff --git a/class_shodan_1_1_net_1_1_facet_generator-members.html b/class_shodan_1_1_net_1_1_facet_generator-members.html new file mode 100644 index 0000000..4eaff0e --- /dev/null +++ b/class_shodan_1_1_net_1_1_facet_generator-members.html @@ -0,0 +1,139 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.FacetGenerator Member List
+
+
+ +

This is the complete list of members for Shodan.Net.FacetGenerator, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HasScreenshot(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithAsn(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithBitcoin_ip(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithBitcoin_ip_count(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithBitcoin_port(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithBitcoin_user_agent(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithBitcoin_version(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithCity(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithCountry(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithDevice(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithDomain(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithGeocluster(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithIsp(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithLink(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithNtp_ip(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithNtp_ip_count(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithNtp_more(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithNtp_port(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithOrg(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithOs(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithPort(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithPostal(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithSsh_cipher(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithSsh_fingerprint(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithSsh_mac(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithSsh_type(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithState(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithTimestamp_day(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithTimestamp_month(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithTimestamp_year(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithUptime(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
WithVersion(int?count=null) (defined in Shodan.Net.FacetGenerator)Shodan.Net.FacetGeneratorinline
+ + + + diff --git a/class_shodan_1_1_net_1_1_facet_generator.html b/class_shodan_1_1_net_1_1_facet_generator.html new file mode 100644 index 0000000..c4b81f2 --- /dev/null +++ b/class_shodan_1_1_net_1_1_facet_generator.html @@ -0,0 +1,213 @@ + + + + + + +Showdan.Net: Shodan.Net.FacetGenerator Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.FacetGenerator Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+FacetGenerator WithAsn (int?count=null)
 
+FacetGenerator WithCity (int?count=null)
 
+FacetGenerator WithCountry (int?count=null)
 
+FacetGenerator WithDevice (int?count=null)
 
+FacetGenerator WithDomain (int?count=null)
 
+FacetGenerator WithGeocluster (int?count=null)
 
+FacetGenerator HasScreenshot (int?count=null)
 
+FacetGenerator WithIsp (int?count=null)
 
+FacetGenerator WithLink (int?count=null)
 
+FacetGenerator WithOrg (int?count=null)
 
+FacetGenerator WithOs (int?count=null)
 
+FacetGenerator WithPort (int?count=null)
 
+FacetGenerator WithPostal (int?count=null)
 
+FacetGenerator WithState (int?count=null)
 
+FacetGenerator WithTimestamp_day (int?count=null)
 
+FacetGenerator WithTimestamp_month (int?count=null)
 
+FacetGenerator WithTimestamp_year (int?count=null)
 
+FacetGenerator WithUptime (int?count=null)
 
+FacetGenerator WithVersion (int?count=null)
 
+FacetGenerator WithBitcoin_ip (int?count=null)
 
+FacetGenerator WithBitcoin_ip_count (int?count=null)
 
+FacetGenerator WithBitcoin_port (int?count=null)
 
+FacetGenerator WithBitcoin_user_agent (int?count=null)
 
+FacetGenerator WithBitcoin_version (int?count=null)
 
+FacetGenerator WithNtp_ip (int?count=null)
 
+FacetGenerator WithNtp_ip_count (int?count=null)
 
+FacetGenerator WithNtp_more (int?count=null)
 
+FacetGenerator WithNtp_port (int?count=null)
 
+FacetGenerator WithSsh_cipher (int?count=null)
 
+FacetGenerator WithSsh_fingerprint (int?count=null)
 
+FacetGenerator WithSsh_mac (int?count=null)
 
+FacetGenerator WithSsh_type (int?count=null)
 
+

Detailed Description

+
+

Definition at line 9 of file FacetGenerator.cs.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_api_status-members.html b/class_shodan_1_1_net_1_1_models_1_1_api_status-members.html new file mode 100644 index 0000000..7b1a5b6 --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_api_status-members.html @@ -0,0 +1,113 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.Models.ApiStatus Member List
+
+
+ +

This is the complete list of members for Shodan.Net.Models.ApiStatus, including all inherited members.

+ + + + + + + +
Https (defined in Shodan.Net.Models.ApiStatus)Shodan.Net.Models.ApiStatus
Plan (defined in Shodan.Net.Models.ApiStatus)Shodan.Net.Models.ApiStatus
QueryCredits (defined in Shodan.Net.Models.ApiStatus)Shodan.Net.Models.ApiStatus
ScanCredits (defined in Shodan.Net.Models.ApiStatus)Shodan.Net.Models.ApiStatus
Telnet (defined in Shodan.Net.Models.ApiStatus)Shodan.Net.Models.ApiStatus
Unlocked (defined in Shodan.Net.Models.ApiStatus)Shodan.Net.Models.ApiStatus
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_api_status.html b/class_shodan_1_1_net_1_1_models_1_1_api_status.html new file mode 100644 index 0000000..8dec43b --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_api_status.html @@ -0,0 +1,139 @@ + + + + + + +Showdan.Net: Shodan.Net.Models.ApiStatus Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.Models.ApiStatus Class Reference
+
+
+ +

Returns information about the API plan belonging to the given API key. + More...

+ + + + + + + + + + + + + + +

+Properties

+int QueryCredits [get, set]
 
+int ScanCredits [get, set]
 
+bool Telnet [get, set]
 
+string Plan [get, set]
 
+bool Https [get, set]
 
+bool Unlocked [get, set]
 
+

Detailed Description

+

Returns information about the API plan belonging to the given API key.

+ +

Definition at line 13 of file ApiStatus.cs.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_attributes-members.html b/class_shodan_1_1_net_1_1_models_1_1_attributes-members.html new file mode 100644 index 0000000..ed74b2d --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_attributes-members.html @@ -0,0 +1,108 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.Models.Attributes Member List
+
+
+ +

This is the complete list of members for Shodan.Net.Models.Attributes, including all inherited members.

+ + +
Ports (defined in Shodan.Net.Models.Attributes)Shodan.Net.Models.Attributes
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_attributes.html b/class_shodan_1_1_net_1_1_models_1_1_attributes.html new file mode 100644 index 0000000..90299ff --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_attributes.html @@ -0,0 +1,120 @@ + + + + + + +Showdan.Net: Shodan.Net.Models.Attributes Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.Models.Attributes Class Reference
+
+
+ + + + +

+Properties

+IList< int > Ports [get, set]
 
+

Detailed Description

+
+

Definition at line 10 of file SearchTokens.cs.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_banner-members.html b/class_shodan_1_1_net_1_1_models_1_1_banner-members.html new file mode 100644 index 0000000..e95694e --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_banner-members.html @@ -0,0 +1,133 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.Models.Banner Member List
+
+
+ +

This is the complete list of members for Shodan.Net.Models.Banner, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
AsnShodan.Net.Models.Banner
Cpe (defined in Shodan.Net.Models.Banner)Shodan.Net.Models.Banner
DataShodan.Net.Models.Banner
DeviceType (defined in Shodan.Net.Models.Banner)Shodan.Net.Models.Banner
DomainsShodan.Net.Models.Banner
Guid (defined in Shodan.Net.Models.Banner)Shodan.Net.Models.Banner
HostnamesShodan.Net.Models.Banner
Html (defined in Shodan.Net.Models.Banner)Shodan.Net.Models.Banner
Info (defined in Shodan.Net.Models.Banner)Shodan.Net.Models.Banner
IpShodan.Net.Models.Banner
IpStrShodan.Net.Models.Banner
Ipv6Shodan.Net.Models.Banner
IspShodan.Net.Models.Banner
Link (defined in Shodan.Net.Models.Banner)Shodan.Net.Models.Banner
Location (defined in Shodan.Net.Models.Banner)Shodan.Net.Models.Banner
OptsShodan.Net.Models.Banner
OrgShodan.Net.Models.Banner
OsShodan.Net.Models.Banner
PortShodan.Net.Models.Banner
Product (defined in Shodan.Net.Models.Banner)Shodan.Net.Models.Banner
Ssl (defined in Shodan.Net.Models.Banner)Shodan.Net.Models.Banner
TimestampShodan.Net.Models.Banner
Title (defined in Shodan.Net.Models.Banner)Shodan.Net.Models.Banner
TransportShodan.Net.Models.Banner
UptimeShodan.Net.Models.Banner
Version (defined in Shodan.Net.Models.Banner)Shodan.Net.Models.Banner
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_banner.html b/class_shodan_1_1_net_1_1_models_1_1_banner.html new file mode 100644 index 0000000..40a8f92 --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_banner.html @@ -0,0 +1,560 @@ + + + + + + +Showdan.Net: Shodan.Net.Models.Banner Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.Models.Banner Class Reference
+
+
+ +

Represents basic return data + More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Properties

DateTime Timestamp [get, set]
 The timestamp for when the banner was fetched from the device in the UTC timezone. More...
 
string Transport [get, set]
 Either "udp" or "tcp" to indicate which IP transport protocol was used to fetch the information More...
 
IList< string > Hostnames [get, set]
 An array of strings containing all of the hostnames that have been assigned to the IP address for this device. More...
 
string Org [get, set]
 The name of the organization that is assigned the IP space for this device. More...
 
+string Guid [get, set]
 
string Data [get, set]
 Contains the banner information for the service. More...
 
int Port [get, set]
 The port number that the service is operating on More...
 
string Isp [get, set]
 The ISP that is providing the organization with the IP space for this device. Consider this the "parent" of the organization in terms of IP ownership. More...
 
string Asn [get, set]
 The autonomous system number (ex. "AS4837" More...
 
+Location Location [get, set]
 
int Ip [get, set]
 The IP address of the host as an integer More...
 
string Ipv6 [get, set]
 The IPv6 address of the host as a string. If this is present then the "ip" and "ip_str" fields wont be. More...
 
IList< string > Domains [get, set]
 ] An array of strings containing the top-level domains for the hostnames of the device. This is a utility property in case you want to filter by TLD instead of subdomain. It is smart enough to handle global TLDs with several dots in the domain (ex. "co.uk") More...
 
string IpStr [get, set]
 The IP address of the host as a string More...
 
object Os [get, set]
 The operating system that powers the device. More...
 
dynamic Opts [get, set]
 Contains experimental and supplemental data for the service. This can include the SSL certificate, robots.txt and other raw information that hasn't yet been formalized into the Banner Specification. More...
 
int Uptime [get, set]
 The number of minutes that the device has been online. More...
 
+string Link [get, set]
 
+string Title [get, set]
 
+string Html [get, set]
 
+string Product [get, set]
 
+string Version [get, set]
 
+string DeviceType [get, set]
 
+string Info [get, set]
 
+string Cpe [get, set]
 
+SslProperties Ssl [get, set]
 
+

Detailed Description

+

Represents basic return data

+ +

Definition at line 13 of file Banner.cs.

+

Property Documentation

+ +
+
+ + + + + +
+ + + + +
string Shodan.Net.Models.Banner.Asn
+
+getset
+
+ +

The autonomous system number (ex. "AS4837"

+ +

Definition at line 64 of file Banner.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
string Shodan.Net.Models.Banner.Data
+
+getset
+
+ +

Contains the banner information for the service.

+ +

Definition at line 46 of file Banner.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
IList<string> Shodan.Net.Models.Banner.Domains
+
+getset
+
+ +

] An array of strings containing the top-level domains for the hostnames of the device. This is a utility property in case you want to filter by TLD instead of subdomain. It is smart enough to handle global TLDs with several dots in the domain (ex. "co.uk")

+ +

Definition at line 85 of file Banner.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
IList<string> Shodan.Net.Models.Banner.Hostnames
+
+getset
+
+ +

An array of strings containing all of the hostnames that have been assigned to the IP address for this device.

+ +

Definition at line 31 of file Banner.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
int Shodan.Net.Models.Banner.Ip
+
+getset
+
+ +

The IP address of the host as an integer

+ +

Definition at line 73 of file Banner.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
string Shodan.Net.Models.Banner.IpStr
+
+getset
+
+ +

The IP address of the host as a string

+ +

Definition at line 91 of file Banner.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
string Shodan.Net.Models.Banner.Ipv6
+
+getset
+
+ +

The IPv6 address of the host as a string. If this is present then the "ip" and "ip_str" fields wont be.

+ +

Definition at line 79 of file Banner.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
string Shodan.Net.Models.Banner.Isp
+
+getset
+
+ +

The ISP that is providing the organization with the IP space for this device. Consider this the "parent" of the organization in terms of IP ownership.

+ +

Definition at line 58 of file Banner.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
dynamic Shodan.Net.Models.Banner.Opts
+
+getset
+
+ +

Contains experimental and supplemental data for the service. This can include the SSL certificate, robots.txt and other raw information that hasn't yet been formalized into the Banner Specification.

+ +

Definition at line 103 of file Banner.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
string Shodan.Net.Models.Banner.Org
+
+getset
+
+ +

The name of the organization that is assigned the IP space for this device.

+ +

Definition at line 37 of file Banner.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
object Shodan.Net.Models.Banner.Os
+
+getset
+
+ +

The operating system that powers the device.

+ +

Definition at line 97 of file Banner.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
int Shodan.Net.Models.Banner.Port
+
+getset
+
+ +

The port number that the service is operating on

+ +

Definition at line 52 of file Banner.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
DateTime Shodan.Net.Models.Banner.Timestamp
+
+getset
+
+ +

The timestamp for when the banner was fetched from the device in the UTC timezone.

+ +

Definition at line 19 of file Banner.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
string Shodan.Net.Models.Banner.Transport
+
+getset
+
+ +

Either "udp" or "tcp" to indicate which IP transport protocol was used to fetch the information

+ +

Definition at line 25 of file Banner.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
int Shodan.Net.Models.Banner.Uptime
+
+getset
+
+ +

The number of minutes that the device has been online.

+ +

Definition at line 111 of file Banner.cs.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_facet-members.html b/class_shodan_1_1_net_1_1_models_1_1_facet-members.html new file mode 100644 index 0000000..49e70bd --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_facet-members.html @@ -0,0 +1,109 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.Models.Facet Member List
+
+
+ +

This is the complete list of members for Shodan.Net.Models.Facet, including all inherited members.

+ + + +
Count (defined in Shodan.Net.Models.Facet)Shodan.Net.Models.Facet
Value (defined in Shodan.Net.Models.Facet)Shodan.Net.Models.Facet
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_facet.html b/class_shodan_1_1_net_1_1_models_1_1_facet.html new file mode 100644 index 0000000..30a7f95 --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_facet.html @@ -0,0 +1,127 @@ + + + + + + +Showdan.Net: Shodan.Net.Models.Facet Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.Models.Facet Class Reference
+
+
+ +

Represents return facet data + More...

+ + + + + + +

+Properties

+int Count [get, set]
 
+string Value [get, set]
 
+

Detailed Description

+

Represents return facet data

+ +

Definition at line 13 of file Facet.cs.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_host-members.html b/class_shodan_1_1_net_1_1_models_1_1_host-members.html new file mode 100644 index 0000000..101f2d8 --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_host-members.html @@ -0,0 +1,122 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.Models.Host Member List
+
+
+ +

This is the complete list of members for Shodan.Net.Models.Host, including all inherited members.

+ + + + + + + + + + + + + + + + +
AreaCode (defined in Shodan.Net.Models.Host)Shodan.Net.Models.Host
City (defined in Shodan.Net.Models.Host)Shodan.Net.Models.Host
CountryCode (defined in Shodan.Net.Models.Host)Shodan.Net.Models.Host
CountryCode3 (defined in Shodan.Net.Models.Host)Shodan.Net.Models.Host
CountryName (defined in Shodan.Net.Models.Host)Shodan.Net.Models.Host
Data (defined in Shodan.Net.Models.Host)Shodan.Net.Models.Host
DmaCode (defined in Shodan.Net.Models.Host)Shodan.Net.Models.Host
Hostnames (defined in Shodan.Net.Models.Host)Shodan.Net.Models.Host
Ip (defined in Shodan.Net.Models.Host)Shodan.Net.Models.Host
Latitude (defined in Shodan.Net.Models.Host)Shodan.Net.Models.Host
Longitude (defined in Shodan.Net.Models.Host)Shodan.Net.Models.Host
Os (defined in Shodan.Net.Models.Host)Shodan.Net.Models.Host
Ports (defined in Shodan.Net.Models.Host)Shodan.Net.Models.Host
PostalCode (defined in Shodan.Net.Models.Host)Shodan.Net.Models.Host
RegionCode (defined in Shodan.Net.Models.Host)Shodan.Net.Models.Host
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_host.html b/class_shodan_1_1_net_1_1_models_1_1_host.html new file mode 100644 index 0000000..c14b55f --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_host.html @@ -0,0 +1,166 @@ + + + + + + +Showdan.Net: Shodan.Net.Models.Host Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.Models.Host Class Reference
+
+
+ +

Represents return data for querying hosts + More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Properties

+string RegionCode [get, set]
 
+string Ip [get, set]
 
+string AreaCode [get, set]
 
+string CountryName [get, set]
 
+List< string > Hostnames [get, set]
 
+string PostalCode [get, set]
 
+string DmaCode [get, set]
 
+string CountryCode [get, set]
 
+List< BannerData [get, set]
 
+string City [get, set]
 
+double Longitude [get, set]
 
+string CountryCode3 [get, set]
 
+double Latitude [get, set]
 
+string Os [get, set]
 
+IList< int > Ports [get, set]
 
+

Detailed Description

+

Represents return data for querying hosts

+ +

Definition at line 13 of file Host.cs.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_location-members.html b/class_shodan_1_1_net_1_1_models_1_1_location-members.html new file mode 100644 index 0000000..9a9ef4e --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_location-members.html @@ -0,0 +1,118 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.Models.Location Member List
+
+
+ +

This is the complete list of members for Shodan.Net.Models.Location, including all inherited members.

+ + + + + + + + + + + + +
AreaCodeShodan.Net.Models.Location
CityShodan.Net.Models.Location
CountryCodeShodan.Net.Models.Location
CountryCode3Shodan.Net.Models.Location
CountryNameShodan.Net.Models.Location
DmaCodeShodan.Net.Models.Location
LatitudeShodan.Net.Models.Location
Location()Shodan.Net.Models.Locationinline
LongitudeShodan.Net.Models.Location
PostalCodeShodan.Net.Models.Location
RegionCodeShodan.Net.Models.Location
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_location.html b/class_shodan_1_1_net_1_1_models_1_1_location.html new file mode 100644 index 0000000..ee7eed2 --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_location.html @@ -0,0 +1,427 @@ + + + + + + +Showdan.Net: Shodan.Net.Models.Location Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.Models.Location Class Reference
+
+
+ +

Basic location data returned by shodan + More...

+ + + + + +

+Public Member Functions

 Location ()
 An object containing all of the location information for the device. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Properties

string CountryCode3 [get, set]
 The 3-letter country code for the device location. More...
 
string City [get, set]
 The name of the city where the device is located. More...
 
string PostalCode [get, set]
 The postal code for the device's location. More...
 
double Longitude [get, set]
 The longitude for the geolocation of the device. More...
 
string CountryCode [get, set]
 The 2-letter country code for the device location. More...
 
double Latitude [get, set]
 The latitude for the geolocation of the device More...
 
string CountryName [get, set]
 The name of the country where the device is located. More...
 
int AreaCode [get, set]
 The area code for the device's location. Only available for the US. More...
 
int DmaCode [get, set]
 The designated market area code for the area where the device is located. Only available for the US. More...
 
string RegionCode [get, set]
 The name of the region where the device is located. More...
 
+

Detailed Description

+

Basic location data returned by shodan

+ +

Definition at line 9 of file Location.cs.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + +
+ + + + + + + +
Shodan.Net.Models.Location.Location ()
+
+inline
+
+ +

An object containing all of the location information for the device.

+ +

Definition at line 14 of file Location.cs.

+
15  {
16  }
+
+
+

Property Documentation

+ +
+
+ + + + + +
+ + + + +
int Shodan.Net.Models.Location.AreaCode
+
+getset
+
+ +

The area code for the device's location. Only available for the US.

+ +

Definition at line 67 of file Location.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
string Shodan.Net.Models.Location.City
+
+getset
+
+ +

The name of the city where the device is located.

+ +

Definition at line 29 of file Location.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
string Shodan.Net.Models.Location.CountryCode
+
+getset
+
+ +

The 2-letter country code for the device location.

+ +

Definition at line 48 of file Location.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
string Shodan.Net.Models.Location.CountryCode3
+
+getset
+
+ +

The 3-letter country code for the device location.

+ +

Definition at line 23 of file Location.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
string Shodan.Net.Models.Location.CountryName
+
+getset
+
+ +

The name of the country where the device is located.

+ +

Definition at line 61 of file Location.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
int Shodan.Net.Models.Location.DmaCode
+
+getset
+
+ +

The designated market area code for the area where the device is located. Only available for the US.

+ +

Definition at line 73 of file Location.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
double Shodan.Net.Models.Location.Latitude
+
+getset
+
+ +

The latitude for the geolocation of the device

+ +

Definition at line 55 of file Location.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
double Shodan.Net.Models.Location.Longitude
+
+getset
+
+ +

The longitude for the geolocation of the device.

+ +

Definition at line 41 of file Location.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
string Shodan.Net.Models.Location.PostalCode
+
+getset
+
+ +

The postal code for the device's location.

+ +

Definition at line 35 of file Location.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
string Shodan.Net.Models.Location.RegionCode
+
+getset
+
+ +

The name of the region where the device is located.

+ +

Definition at line 79 of file Location.cs.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_match-members.html b/class_shodan_1_1_net_1_1_models_1_1_match-members.html new file mode 100644 index 0000000..828440e --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_match-members.html @@ -0,0 +1,113 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.Models.Match Member List
+
+
+ +

This is the complete list of members for Shodan.Net.Models.Match, including all inherited members.

+ + + + + + + +
Description (defined in Shodan.Net.Models.Match)Shodan.Net.Models.Match
Query (defined in Shodan.Net.Models.Match)Shodan.Net.Models.Match
Tags (defined in Shodan.Net.Models.Match)Shodan.Net.Models.Match
Timestamp (defined in Shodan.Net.Models.Match)Shodan.Net.Models.Match
Title (defined in Shodan.Net.Models.Match)Shodan.Net.Models.Match
Votes (defined in Shodan.Net.Models.Match)Shodan.Net.Models.Match
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_match.html b/class_shodan_1_1_net_1_1_models_1_1_match.html new file mode 100644 index 0000000..f8f9efb --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_match.html @@ -0,0 +1,135 @@ + + + + + + +Showdan.Net: Shodan.Net.Models.Match Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.Models.Match Class Reference
+
+
+ + + + + + + + + + + + + + +

+Properties

+int Votes [get, set]
 
+string Description [get, set]
 
+string Title [get, set]
 
+DateTime Timestamp [get, set]
 
+IList< string > Tags [get, set]
 
+string Query [get, set]
 
+

Detailed Description

+
+

Definition at line 10 of file SearchQueries.cs.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_profile-members.html b/class_shodan_1_1_net_1_1_models_1_1_profile-members.html new file mode 100644 index 0000000..c5854fd --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_profile-members.html @@ -0,0 +1,111 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.Models.Profile Member List
+
+
+ +

This is the complete list of members for Shodan.Net.Models.Profile, including all inherited members.

+ + + + + +
Created (defined in Shodan.Net.Models.Profile)Shodan.Net.Models.Profile
Credits (defined in Shodan.Net.Models.Profile)Shodan.Net.Models.Profile
DisplayName (defined in Shodan.Net.Models.Profile)Shodan.Net.Models.Profile
Member (defined in Shodan.Net.Models.Profile)Shodan.Net.Models.Profile
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_profile.html b/class_shodan_1_1_net_1_1_models_1_1_profile.html new file mode 100644 index 0000000..6654a68 --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_profile.html @@ -0,0 +1,133 @@ + + + + + + +Showdan.Net: Shodan.Net.Models.Profile Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.Models.Profile Class Reference
+
+
+ +

Represents data about your profile + More...

+ + + + + + + + + + +

+Properties

+bool Member [get, set]
 
+int Credits [get, set]
 
+string DisplayName [get, set]
 
+DateTime Created [get, set]
 
+

Detailed Description

+

Represents data about your profile

+ +

Definition at line 13 of file Profile.cs.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_scan_port_result-members.html b/class_shodan_1_1_net_1_1_models_1_1_scan_port_result-members.html new file mode 100644 index 0000000..5ba7234 --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_scan_port_result-members.html @@ -0,0 +1,108 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.Models.ScanPortResult Member List
+
+
+ +

This is the complete list of members for Shodan.Net.Models.ScanPortResult, including all inherited members.

+ + +
Id (defined in Shodan.Net.Models.ScanPortResult)Shodan.Net.Models.ScanPortResult
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_scan_port_result.html b/class_shodan_1_1_net_1_1_models_1_1_scan_port_result.html new file mode 100644 index 0000000..85d537f --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_scan_port_result.html @@ -0,0 +1,124 @@ + + + + + + +Showdan.Net: Shodan.Net.Models.ScanPortResult Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.Models.ScanPortResult Class Reference
+
+
+ +

result of ShodanClient.RequestInternetPortScanAsync(int, string) + More...

+ + + + +

+Properties

+string Id [get, set]
 
+

Detailed Description

+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_scan_result-members.html b/class_shodan_1_1_net_1_1_models_1_1_scan_result-members.html new file mode 100644 index 0000000..5167e8f --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_scan_result-members.html @@ -0,0 +1,110 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.Models.ScanResult Member List
+
+
+ +

This is the complete list of members for Shodan.Net.Models.ScanResult, including all inherited members.

+ + + + +
Count (defined in Shodan.Net.Models.ScanResult)Shodan.Net.Models.ScanResult
CreditsLeft (defined in Shodan.Net.Models.ScanResult)Shodan.Net.Models.ScanResult
Id (defined in Shodan.Net.Models.ScanResult)Shodan.Net.Models.ScanResult
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_scan_result.html b/class_shodan_1_1_net_1_1_models_1_1_scan_result.html new file mode 100644 index 0000000..7cfcd05 --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_scan_result.html @@ -0,0 +1,130 @@ + + + + + + +Showdan.Net: Shodan.Net.Models.ScanResult Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.Models.ScanResult Class Reference
+
+
+ +

result of ShodanClient.RequstScanAsync(string) + More...

+ + + + + + + + +

+Properties

+string Id [get, set]
 
+int Count [get, set]
 
+int CreditsLeft [get, set]
 
+

Detailed Description

+

result of ShodanClient.RequstScanAsync(string)

+ +

Definition at line 13 of file ScanResult.cs.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_scan_status-members.html b/class_shodan_1_1_net_1_1_models_1_1_scan_status-members.html new file mode 100644 index 0000000..ac43a50 --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_scan_status-members.html @@ -0,0 +1,110 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.Models.ScanStatus Member List
+
+
+ +

This is the complete list of members for Shodan.Net.Models.ScanStatus, including all inherited members.

+ + + + +
Count (defined in Shodan.Net.Models.ScanStatus)Shodan.Net.Models.ScanStatus
Id (defined in Shodan.Net.Models.ScanStatus)Shodan.Net.Models.ScanStatus
Status (defined in Shodan.Net.Models.ScanStatus)Shodan.Net.Models.ScanStatus
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_scan_status.html b/class_shodan_1_1_net_1_1_models_1_1_scan_status.html new file mode 100644 index 0000000..0968798 --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_scan_status.html @@ -0,0 +1,130 @@ + + + + + + +Showdan.Net: Shodan.Net.Models.ScanStatus Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.Models.ScanStatus Class Reference
+
+
+ +

Result of ShodanClient.GetScanStatusAsync(string) + More...

+ + + + + + + + +

+Properties

+string Id [get, set]
 
+int Count [get, set]
 
+StatusEnum Status [get, set]
 
+

Detailed Description

+

Result of ShodanClient.GetScanStatusAsync(string)

+ +

Definition at line 14 of file ScanStatus.cs.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_search_host_results-members.html b/class_shodan_1_1_net_1_1_models_1_1_search_host_results-members.html new file mode 100644 index 0000000..bfbfca3 --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_search_host_results-members.html @@ -0,0 +1,110 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.Models.SearchHostResults Member List
+
+
+ +

This is the complete list of members for Shodan.Net.Models.SearchHostResults, including all inherited members.

+ + + + +
Facets (defined in Shodan.Net.Models.SearchHostResults)Shodan.Net.Models.SearchHostResults
Matches (defined in Shodan.Net.Models.SearchHostResults)Shodan.Net.Models.SearchHostResults
Total (defined in Shodan.Net.Models.SearchHostResults)Shodan.Net.Models.SearchHostResults
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_search_host_results.html b/class_shodan_1_1_net_1_1_models_1_1_search_host_results.html new file mode 100644 index 0000000..9926e29 --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_search_host_results.html @@ -0,0 +1,130 @@ + + + + + + +Showdan.Net: Shodan.Net.Models.SearchHostResults Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.Models.SearchHostResults Class Reference
+
+
+ +

result of ShodanClient.SearchHosts(SearchQuery, FacetQuery, int, bool) and ShodanClient.SearchHostsCount(SearchQuery, FacetQuery) + More...

+ + + + + + + + +

+Properties

+List< BannerMatches [get, set]
 
+Dictionary< string, FacetFacets [get, set]
 
+int Total [get, set]
 
+

Detailed Description

+

result of ShodanClient.SearchHosts(SearchQuery, FacetQuery, int, bool) and ShodanClient.SearchHostsCount(SearchQuery, FacetQuery)

+ +

Definition at line 13 of file SearchHostResults.cs.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_search_queries-members.html b/class_shodan_1_1_net_1_1_models_1_1_search_queries-members.html new file mode 100644 index 0000000..96f3b7c --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_search_queries-members.html @@ -0,0 +1,109 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.Models.SearchQueries Member List
+
+
+ +

This is the complete list of members for Shodan.Net.Models.SearchQueries, including all inherited members.

+ + + +
Matches (defined in Shodan.Net.Models.SearchQueries)Shodan.Net.Models.SearchQueries
Total (defined in Shodan.Net.Models.SearchQueries)Shodan.Net.Models.SearchQueries
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_search_queries.html b/class_shodan_1_1_net_1_1_models_1_1_search_queries.html new file mode 100644 index 0000000..7077b35 --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_search_queries.html @@ -0,0 +1,128 @@ + + + + + + +Showdan.Net: Shodan.Net.Models.SearchQueries Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.Models.SearchQueries Class Reference
+
+
+ +

Result of ShodanClient.GetQueriesAsync(int?, SortOptions?, OrderOption?) and

See also
ShodanClient.SearchQueriesAsync(string, int?)
+ + More...

+ + + + + + +

+Properties

+int Total [get, set]
 
+IList< MatchMatches [get, set]
 
+

Detailed Description

+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_search_tokens-members.html b/class_shodan_1_1_net_1_1_models_1_1_search_tokens-members.html new file mode 100644 index 0000000..350bcaf --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_search_tokens-members.html @@ -0,0 +1,111 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.Models.SearchTokens Member List
+
+
+ +

This is the complete list of members for Shodan.Net.Models.SearchTokens, including all inherited members.

+ + + + + +
Attributes (defined in Shodan.Net.Models.SearchTokens)Shodan.Net.Models.SearchTokens
Errors (defined in Shodan.Net.Models.SearchTokens)Shodan.Net.Models.SearchTokens
Filters (defined in Shodan.Net.Models.SearchTokens)Shodan.Net.Models.SearchTokens
String (defined in Shodan.Net.Models.SearchTokens)Shodan.Net.Models.SearchTokens
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_search_tokens.html b/class_shodan_1_1_net_1_1_models_1_1_search_tokens.html new file mode 100644 index 0000000..eb6bb2f --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_search_tokens.html @@ -0,0 +1,129 @@ + + + + + + +Showdan.Net: Shodan.Net.Models.SearchTokens Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.Models.SearchTokens Class Reference
+
+
+ + + + + + + + + + +

+Properties

+Attributes Attributes [get, set]
 
+IList< dynamic > Errors [get, set]
 
+string String [get, set]
 
+IList< dynamic > Filters [get, set]
 
+

Detailed Description

+
+

Definition at line 17 of file SearchTokens.cs.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_ssl_properties-members.html b/class_shodan_1_1_net_1_1_models_1_1_ssl_properties-members.html new file mode 100644 index 0000000..7549e62 --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_ssl_properties-members.html @@ -0,0 +1,112 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.Models.SslProperties Member List
+
+
+ +

This is the complete list of members for Shodan.Net.Models.SslProperties, including all inherited members.

+ + + + + + +
CertShodan.Net.Models.SslProperties
ChainShodan.Net.Models.SslProperties
CiperShodan.Net.Models.SslProperties
DhParamsShodan.Net.Models.SslProperties
VersionsShodan.Net.Models.SslProperties
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_ssl_properties.html b/class_shodan_1_1_net_1_1_models_1_1_ssl_properties.html new file mode 100644 index 0000000..f52a13b --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_ssl_properties.html @@ -0,0 +1,253 @@ + + + + + + +Showdan.Net: Shodan.Net.Models.SslProperties Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.Models.SslProperties Class Reference
+
+
+ + + + + + + + + + + + + + + + + +

+Properties

dynamic Cert [get, set]
 The parsed certificate properties that includes information such as when it was issued, the SSL extensions, the issuer, subject etc. More...
 
dynamic Ciper [get, set]
 Preferred cipher for the SSL connection More...
 
IList< dynamic > Chain [get, set]
 An array of certificates, where each string is a PEM-encoded SSL certificate. This includes the user SSL certificate up to its root certificate. More...
 
dynamic DhParams [get, set]
 The Diffie-Hellman parameters if available: "prime", "public_key", "bits", "generator" and an optional "fingerprint" if we know which program generated these parameters. More...
 
IList< string > Versions [get, set]
 A list of SSL versions that are supported by the server. If a version isnt supported the value is prefixed with a "-". Example: ["TLSv1", "-SSLv2"] means that the server supports TLSv1 but doesnt support SSLv2. More...
 
+

Detailed Description

+
+

Definition at line 10 of file SslProperties.cs.

+

Property Documentation

+ +
+
+ + + + + +
+ + + + +
dynamic Shodan.Net.Models.SslProperties.Cert
+
+getset
+
+ +

The parsed certificate properties that includes information such as when it was issued, the SSL extensions, the issuer, subject etc.

+ +

Definition at line 16 of file SslProperties.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
IList<dynamic> Shodan.Net.Models.SslProperties.Chain
+
+getset
+
+ +

An array of certificates, where each string is a PEM-encoded SSL certificate. This includes the user SSL certificate up to its root certificate.

+ +

Definition at line 28 of file SslProperties.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
dynamic Shodan.Net.Models.SslProperties.Ciper
+
+getset
+
+ +

Preferred cipher for the SSL connection

+ +

Definition at line 22 of file SslProperties.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
dynamic Shodan.Net.Models.SslProperties.DhParams
+
+getset
+
+ +

The Diffie-Hellman parameters if available: "prime", "public_key", "bits", "generator" and an optional "fingerprint" if we know which program generated these parameters.

+ +

Definition at line 34 of file SslProperties.cs.

+ +
+
+ +
+
+ + + + + +
+ + + + +
IList<string> Shodan.Net.Models.SslProperties.Versions
+
+getset
+
+ +

A list of SSL versions that are supported by the server. If a version isnt supported the value is prefixed with a "-". Example: ["TLSv1", "-SSLv2"] means that the server supports TLSv1 but doesnt support SSLv2.

+ +

Definition at line 40 of file SslProperties.cs.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_tag_result-members.html b/class_shodan_1_1_net_1_1_models_1_1_tag_result-members.html new file mode 100644 index 0000000..bb279c3 --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_tag_result-members.html @@ -0,0 +1,109 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.Models.TagResult Member List
+
+
+ +

This is the complete list of members for Shodan.Net.Models.TagResult, including all inherited members.

+ + + +
Matches (defined in Shodan.Net.Models.TagResult)Shodan.Net.Models.TagResult
Total (defined in Shodan.Net.Models.TagResult)Shodan.Net.Models.TagResult
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_tag_result.html b/class_shodan_1_1_net_1_1_models_1_1_tag_result.html new file mode 100644 index 0000000..87aee34 --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_tag_result.html @@ -0,0 +1,133 @@ + + + + + + +Showdan.Net: Shodan.Net.Models.TagResult Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.Models.TagResult Class Reference
+
+
+ +

result of ShodanClient.GetTagsAsync(int) + More...

+ + + + +

+Classes

class  Match
 
+ + + + + +

+Properties

+int Total [get, set]
 
+IList< MatchMatches [get, set]
 
+

Detailed Description

+

result of ShodanClient.GetTagsAsync(int)

+ +

Definition at line 13 of file TagResult.cs.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_tag_result_1_1_match-members.html b/class_shodan_1_1_net_1_1_models_1_1_tag_result_1_1_match-members.html new file mode 100644 index 0000000..86e7671 --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_tag_result_1_1_match-members.html @@ -0,0 +1,109 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.Models.TagResult.Match Member List
+
+
+ +

This is the complete list of members for Shodan.Net.Models.TagResult.Match, including all inherited members.

+ + + +
Count (defined in Shodan.Net.Models.TagResult.Match)Shodan.Net.Models.TagResult.Match
Value (defined in Shodan.Net.Models.TagResult.Match)Shodan.Net.Models.TagResult.Match
+ + + + diff --git a/class_shodan_1_1_net_1_1_models_1_1_tag_result_1_1_match.html b/class_shodan_1_1_net_1_1_models_1_1_tag_result_1_1_match.html new file mode 100644 index 0000000..dc6c71b --- /dev/null +++ b/class_shodan_1_1_net_1_1_models_1_1_tag_result_1_1_match.html @@ -0,0 +1,123 @@ + + + + + + +Showdan.Net: Shodan.Net.Models.TagResult.Match Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.Models.TagResult.Match Class Reference
+
+
+ + + + + + +

+Properties

+string Value [get, set]
 
+int Count [get, set]
 
+

Detailed Description

+
+

Definition at line 22 of file TagResult.cs.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_query_generator-members.html b/class_shodan_1_1_net_1_1_query_generator-members.html new file mode 100644 index 0000000..6609b66 --- /dev/null +++ b/class_shodan_1_1_net_1_1_query_generator-members.html @@ -0,0 +1,134 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.QueryGenerator Member List
+
+
+ +

This is the complete list of members for Shodan.Net.QueryGenerator, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
After(DateTime time)Shodan.Net.QueryGeneratorinline
Before(DateTime time) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
HasScreenshot(bool hasScreenshot=true)Shodan.Net.QueryGeneratorinline
With_Bitcoinip(string bitcoinip) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
With_Bitcoinip_count(string bitcoinip_count) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
With_postal(string postal) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
With_product(string product) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
With_state(string state) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
With_title(string title) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
With_version(string version) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
WithAsn(string asn)Shodan.Net.QueryGeneratorinline
WithBitcoinport(string bitcoinport) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
WithBitcoinversion(string bitcoinversion) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
Withcity(string city) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
Withcountry(string country) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
WithHostname(string hostname) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
WithHtml(string html) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
WithIsp(string isp) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
WithNet(string net) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
WithNtpip(string ntpip) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
WithNtpip_count(string ntpip_count) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
WithNtpmore(string ntpmore) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
WithNtpport(string ntpport) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
WithOrg(string org) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
WithOs(string os) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
Withport(string port) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
WithText(string searchText) (defined in Shodan.Net.QueryGenerator)Shodan.Net.QueryGeneratorinline
+ + + + diff --git a/class_shodan_1_1_net_1_1_query_generator.html b/class_shodan_1_1_net_1_1_query_generator.html new file mode 100644 index 0000000..71dbce4 --- /dev/null +++ b/class_shodan_1_1_net_1_1_query_generator.html @@ -0,0 +1,304 @@ + + + + + + +Showdan.Net: Shodan.Net.QueryGenerator Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.QueryGenerator Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+QueryGenerator Before (DateTime time)
 
QueryGenerator After (DateTime time)
 Only show results that were collected after the given date More...
 
QueryGenerator WithAsn (string asn)
 The Autonomous System Number that identifies the network the device is on. More...
 
+QueryGenerator Withcity (string city)
 
+QueryGenerator Withcountry (string country)
 
QueryGenerator HasScreenshot (bool hasScreenshot=true)
 If "true" only show results that have a screenshot available. More...
 
+QueryGenerator WithHostname (string hostname)
 
+QueryGenerator WithHtml (string html)
 
+QueryGenerator WithIsp (string isp)
 
+QueryGenerator WithNet (string net)
 
+QueryGenerator WithOrg (string org)
 
+QueryGenerator WithOs (string os)
 
+QueryGenerator Withport (string port)
 
+QueryGenerator With_postal (string postal)
 
+QueryGenerator With_product (string product)
 
+QueryGenerator With_state (string state)
 
+QueryGenerator With_title (string title)
 
+QueryGenerator With_version (string version)
 
+QueryGenerator With_Bitcoinip (string bitcoinip)
 
+QueryGenerator With_Bitcoinip_count (string bitcoinip_count)
 
+QueryGenerator WithBitcoinport (string bitcoinport)
 
+QueryGenerator WithBitcoinversion (string bitcoinversion)
 
+QueryGenerator WithNtpip (string ntpip)
 
+QueryGenerator WithNtpip_count (string ntpip_count)
 
+QueryGenerator WithNtpmore (string ntpmore)
 
+QueryGenerator WithNtpport (string ntpport)
 
+QueryGenerator WithText (string searchText)
 
+

Detailed Description

+
+

Definition at line 9 of file QueryGenerator.cs.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
QueryGenerator Shodan.Net.QueryGenerator.After (DateTime time)
+
+inline
+
+ +

Only show results that were collected after the given date

+
Parameters
+ + +
time
+
+
+
Returns
+ +

Definition at line 30 of file QueryGenerator.cs.

+
31  {
32  queryData.Add("after", time.ToString("dd/MM/yyyy"));
33  return this;
34  }
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
QueryGenerator Shodan.Net.QueryGenerator.HasScreenshot (bool hasScreenshot = true)
+
+inline
+
+ +

If "true" only show results that have a screenshot available.

+
Parameters
+ + +
hasScreenshot
+
+
+
Returns
+ +

Definition at line 64 of file QueryGenerator.cs.

+
65  {
66  queryData.Add("has_screenshot", hasScreenshot.ToString());
67  return this;
68  }
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
QueryGenerator Shodan.Net.QueryGenerator.WithAsn (string asn)
+
+inline
+
+ +

The Autonomous System Number that identifies the network the device is on.

+
Parameters
+ + +
asn
+
+
+
Returns
+ +

Definition at line 41 of file QueryGenerator.cs.

+
42  {
43  queryData.Add("asn", asn);
44  return this;
45  }
+
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_request_handler-members.html b/class_shodan_1_1_net_1_1_request_handler-members.html new file mode 100644 index 0000000..d030c0e --- /dev/null +++ b/class_shodan_1_1_net_1_1_request_handler-members.html @@ -0,0 +1,110 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.RequestHandler Member List
+
+
+ +

This is the complete list of members for Shodan.Net.RequestHandler, including all inherited members.

+ + + + +
Dispose(bool disposing) (defined in Shodan.Net.RequestHandler)Shodan.Net.RequestHandlerinlineprotectedvirtual
Dispose() (defined in Shodan.Net.RequestHandler)Shodan.Net.RequestHandlerinline
MakeRequestAsync< T >(Uri url, HttpContent content=null, RequestType requstType=RequestType.GET) (defined in Shodan.Net.RequestHandler)Shodan.Net.RequestHandlerinline
+ + + + diff --git a/class_shodan_1_1_net_1_1_request_handler.html b/class_shodan_1_1_net_1_1_request_handler.html new file mode 100644 index 0000000..61ef044 --- /dev/null +++ b/class_shodan_1_1_net_1_1_request_handler.html @@ -0,0 +1,143 @@ + + + + + + +Showdan.Net: Shodan.Net.RequestHandler Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.RequestHandler Class Reference
+
+
+ +

sane wrapper of http, and simple abstraction layer for unit testing + More...

+
+Inheritance diagram for Shodan.Net.RequestHandler:
+
+
+ + +Shodan.Net.IRequstHandler + +
+ + + + + + +

+Public Member Functions

+async Task< T > MakeRequestAsync< T > (Uri url, HttpContent content=null, RequestType requstType=RequestType.GET)
 
+void Dispose ()
 
+ + + +

+Protected Member Functions

+virtual void Dispose (bool disposing)
 
+

Detailed Description

+

sane wrapper of http, and simple abstraction layer for unit testing

+ +

Definition at line 14 of file RequestHandler.cs.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_request_handler.png b/class_shodan_1_1_net_1_1_request_handler.png new file mode 100644 index 0000000..d28fd62 Binary files /dev/null and b/class_shodan_1_1_net_1_1_request_handler.png differ diff --git a/class_shodan_1_1_net_1_1_shodan_client-members.html b/class_shodan_1_1_net_1_1_shodan_client-members.html new file mode 100644 index 0000000..bd5569e --- /dev/null +++ b/class_shodan_1_1_net_1_1_shodan_client-members.html @@ -0,0 +1,129 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.ShodanClient Member List
+
+
+ +

This is the complete list of members for Shodan.Net.ShodanClient, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
Dispose(bool disposing) (defined in Shodan.Net.ShodanClient)Shodan.Net.ShodanClientinlineprotectedvirtual
Dispose() (defined in Shodan.Net.ShodanClient)Shodan.Net.ShodanClientinline
DnsLookupAsync(string hostnames)Shodan.Net.ShodanClientinline
Experimental_GetHoneyPotScoreAsync(string ip)Shodan.Net.ShodanClientinline
GetApiStatusAsync()Shodan.Net.ShodanClientinline
GetHostAsync(string Ip, bool history=false, bool minify=false)Shodan.Net.ShodanClientinline
GetMyIpAsync()Shodan.Net.ShodanClientinline
GetPortsAsync()Shodan.Net.ShodanClientinline
GetProfileAsync()Shodan.Net.ShodanClientinline
GetProtocolsAsync()Shodan.Net.ShodanClientinline
GetQueriesAsync(int?page=null, SortOptions?sort=null, OrderOption?order=null)Shodan.Net.ShodanClientinline
GetScanStatusAsync(string id)Shodan.Net.ShodanClientinline
GetServicesAsync()Shodan.Net.ShodanClientinline
GetTagsAsync(int size=10)Shodan.Net.ShodanClientinline
RequestInternetPortScanAsync(int port, string protocol)Shodan.Net.ShodanClientinline
RequstScanAsync(string ips)Shodan.Net.ShodanClientinline
ReverseLookupAsync(string ips)Shodan.Net.ShodanClientinline
SearchHosts(Action< QueryGenerator > query, Action< FacetGenerator > facet=null, int page=1, bool minify=true)Shodan.Net.ShodanClientinline
SearchHostsCount(Action< QueryGenerator > query, Action< FacetGenerator > facet=null)Shodan.Net.ShodanClientinline
SearchQueriesAsync(string query, int?page=null)Shodan.Net.ShodanClientinline
SearchTokens(Action< QueryGenerator > query) (defined in Shodan.Net.ShodanClient)Shodan.Net.ShodanClientinline
ShodanClient(string apikey) (defined in Shodan.Net.ShodanClient)Shodan.Net.ShodanClientinline
+ + + + diff --git a/class_shodan_1_1_net_1_1_shodan_client.html b/class_shodan_1_1_net_1_1_shodan_client.html new file mode 100644 index 0000000..e9f1e08 --- /dev/null +++ b/class_shodan_1_1_net_1_1_shodan_client.html @@ -0,0 +1,899 @@ + + + + + + +Showdan.Net: Shodan.Net.ShodanClient Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.ShodanClient Class Reference
+
+
+ +

Main mechanism to talk to the shodan api. This is what you should use to interact with the api + More...

+
+Inheritance diagram for Shodan.Net.ShodanClient:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ShodanClient (string apikey)
 
Task< Dictionary< string, string > > DnsLookupAsync (string hostnames)
 Look up the IP address for the provided list of hostnames. More...
 
Task< SearchHostResultsSearchHosts (Action< QueryGenerator > query, Action< FacetGenerator > facet=null, int page=1, bool minify=true)
 Search Shodan using the same query syntax as the website and use facets to get summary information for different properties. This method may use API query credits depending on usage. If any of the following criteria are met, your account will be deducated 1 query credit: More...
 
Task< SearchHostResultsSearchHostsCount (Action< QueryGenerator > query, Action< FacetGenerator > facet=null)
 This method behaves identical to SearchHosts(SearchQuery, FacetQuery, int, bool)" with the only difference that this method does not return any host results, it only returns the total number of results that matched the query and any facet information that was requested. As a result this method does not consume query credits. More...
 
+Task< SearchTokensSearchTokens (Action< QueryGenerator > query)
 
async Task< double > Experimental_GetHoneyPotScoreAsync (string ip)
 Calculates a honeypot probability score ranging from 0 (not a honeypot) to 1.0 (is a honeypot). More...
 
Task< ApiStatusGetApiStatusAsync ()
 Returns information about the API plan belonging to the given API key. More...
 
Task< HostGetHostAsync (string Ip, bool history=false, bool minify=false)
 Returns all services that have been found on the given host IP. More...
 
Task< string > GetMyIpAsync ()
 Get your current IP address as seen from the Internet. More...
 
Task< List< int > > GetPortsAsync ()
 This method returns a list of port numbers that the crawlers are looking for. More...
 
Task< ProfileGetProfileAsync ()
 Returns information about the Shodan account linked to this API key. More...
 
Task< Dictionary< string, string > > GetProtocolsAsync ()
 This method returns an object containing all the protocols that can be used when launching an Internet scan. More...
 
Task< SearchQueriesGetQueriesAsync (int?page=null, SortOptions?sort=null, OrderOption?order=null)
 Use this method to obtain a list of search queries that users have saved in Shodan. More...
 
Task< SearchQueriesSearchQueriesAsync (string query, int?page=null)
 Use this method to search the directory of search queries that users have saved in Shodan. More...
 
Task< ScanStatusGetScanStatusAsync (string id)
 Check the progress of a previously submitted scan request More...
 
Task< Dictionary< string, string > > GetServicesAsync ()
 This method returns an object containing all the services that the Shodan crawlers look at. It can also be used as a quick and practical way to resolve a port number to the name of a service More...
 
Task< TagResultGetTagsAsync (int size=10)
 Use this method to obtain a list of popular tags for the saved search queries in Shodan. More...
 
Task< ScanPortResultRequestInternetPortScanAsync (int port, string protocol)
 Use this method to request Shodan to crawl the Internet for a specific port. This method is restricted to security researchers and companies with a Shodan Data license. To apply for access to this method as a researcher, please email jmath.nosp@m.@sho.nosp@m.dan.i.nosp@m.o with information about your project. Access is restricted to prevent abuse. More...
 
Task< ScanResultRequstScanAsync (string ips)
 Use this method to request Shodan to crawl a network Requirements: This method uses API scan credits: 1 IP consumes 1 scan credit. You must have a paid API plan (either one-time payment or subscription) in order to use this method More...
 
Task< Dictionary< string, List< string > > > ReverseLookupAsync (string ips)
 Look up the hostnames that have been defined for the given list of IP addresses More...
 
+void Dispose ()
 
+ + + +

+Protected Member Functions

+virtual void Dispose (bool disposing)
 
+

Detailed Description

+

Main mechanism to talk to the shodan api. This is what you should use to interact with the api

+ +

Definition at line 17 of file ShodanClient.cs.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
Task<Dictionary<string, string> > Shodan.Net.ShodanClient.DnsLookupAsync (string hostnames)
+
+inline
+
+ +

Look up the IP address for the provided list of hostnames.

+
Parameters
+ + +
hostnamesComma-separated list of hostnames; example "google.com,bing.com"
+
+
+
Returns
+ +

Definition at line 45 of file ShodanClient.cs.

+
46  {
47  if(string.IsNullOrWhiteSpace(hostnames))
48  {
49  throw new ArgumentNullException(hostnames);
50  }
51  var url = new Uri($"{BasePath}/dns/resolve?hostnames={hostnames}&key={this.apikey}");
52  return RequestHandler.MakeRequestAsync<Dictionary<string, string>>(url);
53  }
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
async Task<double> Shodan.Net.ShodanClient.Experimental_GetHoneyPotScoreAsync (string ip)
+
+inline
+
+ +

Calculates a honeypot probability score ranging from 0 (not a honeypot) to 1.0 (is a honeypot).

+
Parameters
+ + +
ip
+
+
+
Returns
+ +

Definition at line 139 of file ShodanClient.cs.

+
140  {
141  if(string.IsNullOrWhiteSpace(ip))
142  {
143  throw new ArgumentNullException(nameof(ip));
144  }
145  var url = new Uri($"{BasePath}/labs/honeyscore/{ip}?key={apikey}");
146  var result = await RequestHandler.MakeRequestAsync<string>(url);
147  double resultParsed;
148  if(!double.TryParse(result, out resultParsed))
149  {
150  throw new ShodanException($"honeypot score returned with {result} failed to parse to double");
151  }
152  return resultParsed;
153  }
+
+
+ +
+
+ + + + + +
+ + + + + + + +
Task<ApiStatus> Shodan.Net.ShodanClient.GetApiStatusAsync ()
+
+inline
+
+ +

Returns information about the API plan belonging to the given API key.

+
Returns
+ +

Definition at line 159 of file ShodanClient.cs.

+
160  {
161  var url = new Uri($"{BasePath}/api-info?key={apikey}");
162  return RequestHandler.MakeRequestAsync<ApiStatus>(url);
163  }
Returns information about the API plan belonging to the given API key.
Definition: ApiStatus.cs:13
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Task<Host> Shodan.Net.ShodanClient.GetHostAsync (string Ip,
bool history = false,
bool minify = false 
)
+
+inline
+
+ +

Returns all services that have been found on the given host IP.

+
Parameters
+ + + + +
IpHost IP address
historyTrue if all historical banners should be returned (default: False)
minifyTrue to only return the list of ports and the general host information, no banners. (default: False)
+
+
+
Returns
+ +

Definition at line 172 of file ShodanClient.cs.

+
173  {
174  if(string.IsNullOrWhiteSpace(Ip))
175  {
176  throw new ArgumentNullException(nameof(Ip));
177  }
178  var builder = new UriBuilder($"{BasePath}/shodan/host/{Ip}")
179  {
180  Query = $"key={this.apikey}&history={history.ToString()}&minify={minify.ToString()}"
181  };
182 
183  return RequestHandler.MakeRequestAsync<Host>(builder.Uri);
184  }
Represents return data for querying hosts
Definition: Host.cs:13
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
Task<string> Shodan.Net.ShodanClient.GetMyIpAsync ()
+
+inline
+
+ +

Get your current IP address as seen from the Internet.

+
Returns
+ +

Definition at line 190 of file ShodanClient.cs.

+
191  {
192  var url = new Uri($"{BasePath}/tools/myip?key={this.apikey}");
193  return RequestHandler.MakeRequestAsync<string>(url);
194  }
+
+
+ +
+
+ + + + + +
+ + + + + + + +
Task<List<int> > Shodan.Net.ShodanClient.GetPortsAsync ()
+
+inline
+
+ +

This method returns a list of port numbers that the crawlers are looking for.

+
Returns
+ +

Definition at line 200 of file ShodanClient.cs.

+
201  {
202  var builder = new Uri($"{BasePath}/shodan/ports?key={this.apikey}");
203  return RequestHandler.MakeRequestAsync<List<int>>(builder);
204  }
+
+
+ +
+
+ + + + + +
+ + + + + + + +
Task<Profile> Shodan.Net.ShodanClient.GetProfileAsync ()
+
+inline
+
+ +

Returns information about the Shodan account linked to this API key.

+
Returns
+ +

Definition at line 210 of file ShodanClient.cs.

+
211  {
212  var url = new Uri($"{BasePath}/account/profile?key={apikey}");
213  return RequestHandler.MakeRequestAsync<Profile>(url);
214  }
Represents data about your profile
Definition: Profile.cs:13
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
Task<Dictionary<string, string> > Shodan.Net.ShodanClient.GetProtocolsAsync ()
+
+inline
+
+ +

This method returns an object containing all the protocols that can be used when launching an Internet scan.

+
Returns
+ +

Definition at line 220 of file ShodanClient.cs.

+
221  {
222  var url = new Uri($"{BasePath}/shodan/protocols?key={this.apikey}");
223  return RequestHandler.MakeRequestAsync<Dictionary<string, string>>(url);
224  }
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Task<SearchQueries> Shodan.Net.ShodanClient.GetQueriesAsync (int? page = null,
SortOptionssort = null,
OrderOptionorder = null 
)
+
+inline
+
+ +

Use this method to obtain a list of search queries that users have saved in Shodan.

+
Parameters
+ + + + +
pagePage number to iterate over results; each page contains 10 items
sortSort the list based on a property. Possible values are: votes, timestamp
orderWhether to sort the list in ascending or descending order. Possible values are: asc, desc
+
+
+
Returns
+ +

Definition at line 233 of file ShodanClient.cs.

+
234  {
235  var url = new UriBuilder($"{BasePath}/shodan/query")
236  {
237  Query = $"key={apikey}"
238  };
239  if(sort.HasValue)
240  {
241  var sortName = Enum.GetName(typeof(SortOptions), sort.Value);
242  url.Query = $"{url.Query}&sort={sortName}";
243  }
244  if(order.HasValue)
245  {
246  var orderName = Enum.GetName(typeof(OrderOption), order.Value);
247  url.Query = $"{url.Query}&order={orderName}";
248  }
249  return RequestHandler.MakeRequestAsync<SearchQueries>(url.Uri);
250  }
Result of ShodanClient.GetQueriesAsync(int?, SortOptions?, OrderOption?) and ShodanClient.SearchQueriesAsync(string, int?)
+
OrderOption
Represents an order of either ascending or descending
Definition: OrderOption.cs:11
+
SortOptions
Represents an option to sort
Definition: SortOptions.cs:11
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
Task<ScanStatus> Shodan.Net.ShodanClient.GetScanStatusAsync (string id)
+
+inline
+
+ +

Check the progress of a previously submitted scan request

+
Parameters
+ + +
idthe unique scan ID that was returned by RequstScanAsync(string)
+
+
+
Returns
+ +

Definition at line 280 of file ShodanClient.cs.

+
281  {
282  if(string.IsNullOrWhiteSpace(id))
283  {
284  throw new ArgumentNullException(nameof(id));
285  }
286  var url = new Uri($"{BasePath}/shodan/scan/{id}");
287  return RequestHandler.MakeRequestAsync<ScanStatus>(url);
288  }
Result of ShodanClient.GetScanStatusAsync(string)
Definition: ScanStatus.cs:14
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
Task<Dictionary<string, string> > Shodan.Net.ShodanClient.GetServicesAsync ()
+
+inline
+
+ +

This method returns an object containing all the services that the Shodan crawlers look at. It can also be used as a quick and practical way to resolve a port number to the name of a service

+
Returns
+ +

Definition at line 294 of file ShodanClient.cs.

+
295  {
296  var url = new Uri($"{BasePath}/shodan/services?key={this.apikey}");
297  return RequestHandler.MakeRequestAsync<Dictionary<string, string>>(url);
298  }
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
Task<TagResult> Shodan.Net.ShodanClient.GetTagsAsync (int size = 10)
+
+inline
+
+ +

Use this method to obtain a list of popular tags for the saved search queries in Shodan.

+
Parameters
+ + +
sizeThe number of tags to return
+
+
+
Returns
+ +

Definition at line 305 of file ShodanClient.cs.

+
306  {
307  var url = new UriBuilder($"{BasePath}/shodan/query/tags")
308  {
309  Query = $"key={apikey}&size={size}"
310  };
311  return RequestHandler.MakeRequestAsync<TagResult>(url.Uri);
312  }
result of ShodanClient.GetTagsAsync(int)
Definition: TagResult.cs:13
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Task<ScanPortResult> Shodan.Net.ShodanClient.RequestInternetPortScanAsync (int port,
string protocol 
)
+
+inline
+
+ +

Use this method to request Shodan to crawl the Internet for a specific port. This method is restricted to security researchers and companies with a Shodan Data license. To apply for access to this method as a researcher, please email jmath.nosp@m.@sho.nosp@m.dan.i.nosp@m.o with information about your project. Access is restricted to prevent abuse.

+
Parameters
+ + + +
portThe port that Shodan should crawl the Internet for.
protocolThe name of the protocol that should be used to interrogate the port. See GetProtocolsAsync for a list of supported protocols.
+
+
+
Returns
+ +

Definition at line 321 of file ShodanClient.cs.

+
322  {
323  var url = new Uri($"{BasePath}/shodan/scan/internet?key={this.apikey}");
324  using(var data = new FormUrlEncodedContent(new List<KeyValuePair<string, string>>() {
325  new KeyValuePair<string, string>("port", port.ToString()),
326  new KeyValuePair<string, string>("protocol", protocol)
327  }))
328  {
329  return RequestHandler.MakeRequestAsync<ScanPortResult>(url, data, RequestType.POST);
330  }
331  }
result of ShodanClient.RequestInternetPortScanAsync(int, string)
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
Task<ScanResult> Shodan.Net.ShodanClient.RequstScanAsync (string ips)
+
+inline
+
+ +

Use this method to request Shodan to crawl a network Requirements: This method uses API scan credits: 1 IP consumes 1 scan credit. You must have a paid API plan (either one-time payment or subscription) in order to use this method

+
Parameters
+ + +
ips
+
+
+
Returns
+ +

Definition at line 339 of file ShodanClient.cs.

+
340  {
341  if(string.IsNullOrWhiteSpace(ips))
342  {
343  throw new ArgumentNullException(nameof(ips));
344  }
345  if(!ips.Split(',').Any())
346  {
347  throw new ArgumentOutOfRangeException($"{ips} must have one valid record");
348  }
349  var url = new Uri($"{BasePath}/shodan/scan?key={this.apikey}");
350  using(var data = new FormUrlEncodedContent(new KeyValuePair<string, string>[] { new KeyValuePair<string, string>("ips", ips) }))
351  {
352  return RequestHandler.MakeRequestAsync<ScanResult>(url, data, RequestType.POST);
353  }
354  }
result of ShodanClient.RequstScanAsync(string)
Definition: ScanResult.cs:13
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
Task<Dictionary<string, List<string> > > Shodan.Net.ShodanClient.ReverseLookupAsync (string ips)
+
+inline
+
+ +

Look up the hostnames that have been defined for the given list of IP addresses

+
Parameters
+ + +
ipsComma-separated list of IP addresses; example "74.125.227.230,204.79.197.200"
+
+
+
Returns
+ +

Definition at line 361 of file ShodanClient.cs.

+
362  {
363  if(string.IsNullOrWhiteSpace(ips))
364  {
365  throw new ArgumentNullException(ips);
366  }
367  var url = new Uri($"{BasePath}/dns/reverse?ips={ips}&key={this.apikey}");
368  return RequestHandler.MakeRequestAsync<Dictionary<string, List<string>>>(url);
369  }
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Task<SearchHostResults> Shodan.Net.ShodanClient.SearchHosts (Action< QueryGeneratorquery,
Action< FacetGeneratorfacet = null,
int page = 1,
bool minify = true 
)
+
+inline
+
+ +

Search Shodan using the same query syntax as the website and use facets to get summary information for different properties. This method may use API query credits depending on usage. If any of the following criteria are met, your account will be deducated 1 query credit:

+
    +
  1. The search query contains a filter.
  2. +
  3. Accessing results past the 1st page using the "page". For every 100 results past the 1st page 1 query credit is deducted.
  4. +
+
Parameters
+ + + + + +
querylambda to generate a query. Shodan search query. The provided string is used to search the database of banners in Shodan, with the additional option to provide filters inside the search query using a "filter:value" format.
facetstatic class to define facets.
pageThe page number to page through results 100 at a time (default: 1)
minifyTrue or False; whether or not to truncate some of the larger fields (default: True)
+
+
+
Returns
+ +

Definition at line 66 of file ShodanClient.cs.

+
67  {
68  if(query == null)
69  {
70  throw new ArgumentNullException(nameof(query));
71  }
72  var queryGenerator = new QueryGenerator();
73  query.Invoke(queryGenerator);
74  var queryResult = queryGenerator.Generate();
75  var url = new UriBuilder($"{BasePath}/shodan/host/search")
76  {
77  Query = $"key={apikey}&query={queryResult}&minify={minify.ToString()}"
78  };
79  if(facet != null)
80  {
81  var facetGenerator = new FacetGenerator();
82  facet.Invoke(facetGenerator);
83  url.Query = $"{url.Query}&facets={facetGenerator.GenerateFacets()}";
84  }
85  if(page > 1)
86  {
87  url.Query = $"{url.Query}&page={page}";
88  }
89  return RequestHandler.MakeRequestAsync<SearchHostResults>(url.Uri);
90  }
result of ShodanClient.SearchHosts(SearchQuery, FacetQuery, int, bool) and ShodanClient.SearchHostsCount(SearchQuery, FacetQuery)
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Task<SearchHostResults> Shodan.Net.ShodanClient.SearchHostsCount (Action< QueryGeneratorquery,
Action< FacetGeneratorfacet = null 
)
+
+inline
+
+ +

This method behaves identical to SearchHosts(SearchQuery, FacetQuery, int, bool)" with the only difference that this method does not return any host results, it only returns the total number of results that matched the query and any facet information that was requested. As a result this method does not consume query credits.

+
Parameters
+ + + +
query
facet
+
+
+
Returns
+ +

Definition at line 98 of file ShodanClient.cs.

+
99  {
100  if(query == null)
101  {
102  throw new ArgumentNullException(nameof(query));
103  }
104  var queryGenObj = new QueryGenerator();
105  query.Invoke(queryGenObj);
106 
107  var url = new UriBuilder($"{BasePath}/shodan/host/count")
108  {
109  Query = $"key={apikey}&query={queryGenObj.Generate()}"
110  };
111  if(facet != null)
112  {
113  var facetGenObj = new FacetGenerator();
114  facet.Invoke(facetGenObj);
115 
116  url.Query = $"{url.Query}&facets={facetGenObj.GenerateFacets()}";
117  }
118 
119  return RequestHandler.MakeRequestAsync<SearchHostResults>(url.Uri);
120  }
result of ShodanClient.SearchHosts(SearchQuery, FacetQuery, int, bool) and ShodanClient.SearchHostsCount(SearchQuery, FacetQuery)
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Task<SearchQueries> Shodan.Net.ShodanClient.SearchQueriesAsync (string query,
int? page = null 
)
+
+inline
+
+ +

Use this method to search the directory of search queries that users have saved in Shodan.

+
Parameters
+ + + +
queryWhat to search for in the directory of saved search queries.
pagePage number to iterate over results; each page contains 10 items
+
+
+
Returns
+ +

Definition at line 258 of file ShodanClient.cs.

+
259  {
260  if(string.IsNullOrWhiteSpace(query))
261  {
262  throw new ArgumentNullException(query);
263  }
264  var url = new UriBuilder($"{BasePath}/shodan/query/search")
265  {
266  Query = $"key={apikey}&query={query}"
267  };
268  if(page != null)
269  {
270  url.Query = $"{url.Query}&page={page}";
271  }
272  return RequestHandler.MakeRequestAsync<SearchQueries>(url.Uri);
273  }
Result of ShodanClient.GetQueriesAsync(int?, SortOptions?, OrderOption?) and ShodanClient.SearchQueriesAsync(string, int?)
+
+
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_shodan_client.png b/class_shodan_1_1_net_1_1_shodan_client.png new file mode 100644 index 0000000..dd3d2a2 Binary files /dev/null and b/class_shodan_1_1_net_1_1_shodan_client.png differ diff --git a/class_shodan_1_1_net_1_1_shodan_exception-members.html b/class_shodan_1_1_net_1_1_shodan_exception-members.html new file mode 100644 index 0000000..2912c0a --- /dev/null +++ b/class_shodan_1_1_net_1_1_shodan_exception-members.html @@ -0,0 +1,110 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.ShodanException Member List
+
+
+ +

This is the complete list of members for Shodan.Net.ShodanException, including all inherited members.

+ + + + +
ShodanException() (defined in Shodan.Net.ShodanException)Shodan.Net.ShodanExceptioninline
ShodanException(string message) (defined in Shodan.Net.ShodanException)Shodan.Net.ShodanExceptioninline
ShodanException(string message, Exception innerException) (defined in Shodan.Net.ShodanException)Shodan.Net.ShodanExceptioninline
+ + + + diff --git a/class_shodan_1_1_net_1_1_shodan_exception.html b/class_shodan_1_1_net_1_1_shodan_exception.html new file mode 100644 index 0000000..d3c0ff1 --- /dev/null +++ b/class_shodan_1_1_net_1_1_shodan_exception.html @@ -0,0 +1,131 @@ + + + + + + +Showdan.Net: Shodan.Net.ShodanException Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.ShodanException Class Reference
+
+
+
+Inheritance diagram for Shodan.Net.ShodanException:
+
+
+ + + +
+ + + + + + +

+Public Member Functions

ShodanException (string message)
 
ShodanException (string message, Exception innerException)
 
+

Detailed Description

+
+

Definition at line 9 of file ShodanException.cs.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_shodan_1_1_net_1_1_shodan_exception.png b/class_shodan_1_1_net_1_1_shodan_exception.png new file mode 100644 index 0000000..fc42e98 Binary files /dev/null and b/class_shodan_1_1_net_1_1_shodan_exception.png differ diff --git a/classes.html b/classes.html new file mode 100644 index 0000000..2e7f690 --- /dev/null +++ b/classes.html @@ -0,0 +1,127 @@ + + + + + + +Showdan.Net: Class Index + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
A | B | F | H | I | L | M | P | Q | R | S | T
+ + + + + + + + + + + + +
  A  
+
FacetGenerator (Shodan.Net)   
  M  
+
  R  
+
SearchTokens (Shodan.Net.Models)   
  H  
+
ShodanClient (Shodan.Net)   
ApiStatus (Shodan.Net.Models)   TagResult.Match (Shodan.Net.Models)   RequestHandler (Shodan.Net)   ShodanException (Shodan.Net)   
Attributes (Shodan.Net.Models)   Host (Shodan.Net.Models)   Match (Shodan.Net.Models)   
  S  
+
SslProperties (Shodan.Net.Models)   
  B  
+
  I  
+
  P  
+
  T  
+
ScanPortResult (Shodan.Net.Models)   
Banner (Shodan.Net.Models)   IRequstHandler (Shodan.Net)   Profile (Shodan.Net.Models)   ScanResult (Shodan.Net.Models)   TagResult (Shodan.Net.Models)   
  F  
+
  L  
+
  Q  
+
ScanStatus (Shodan.Net.Models)   
SearchHostResults (Shodan.Net.Models)   
Facet (Shodan.Net.Models)   Location (Shodan.Net.Models)   QueryGenerator (Shodan.Net)   SearchQueries (Shodan.Net.Models)   
+
A | B | F | H | I | L | M | P | Q | R | S | T
+
+ + + + diff --git a/closed.png b/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/closed.png differ diff --git a/dir_0a5342a017a062013ac2236a040a3e17.html b/dir_0a5342a017a062013ac2236a040a3e17.html new file mode 100644 index 0000000..2bed80f --- /dev/null +++ b/dir_0a5342a017a062013ac2236a040a3e17.html @@ -0,0 +1,105 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Net Directory Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Net Directory Reference
+
+
+ + +

+Files

+
+ + + + diff --git a/dir_1b81b8d86a9b117035978a9c84f706c7.html b/dir_1b81b8d86a9b117035978a9c84f706c7.html new file mode 100644 index 0000000..99242f3 --- /dev/null +++ b/dir_1b81b8d86a9b117035978a9c84f706c7.html @@ -0,0 +1,105 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Search Directory Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Search Directory Reference
+
+
+ + +

+Files

+
+ + + + diff --git a/dir_43a92c72e9f43364ae2998158437b626.html b/dir_43a92c72e9f43364ae2998158437b626.html new file mode 100644 index 0000000..2f3cd96 --- /dev/null +++ b/dir_43a92c72e9f43364ae2998158437b626.html @@ -0,0 +1,105 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Properties Directory Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Properties Directory Reference
+
+
+ + +

+Files

+
+ + + + diff --git a/dir_4abe1cc18c1c29fc505ac3a32a3e98a2.html b/dir_4abe1cc18c1c29fc505ac3a32a3e98a2.html new file mode 100644 index 0000000..055bc05 --- /dev/null +++ b/dir_4abe1cc18c1c29fc505ac3a32a3e98a2.html @@ -0,0 +1,108 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models Directory Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Models Directory Reference
+
+
+ + +

+Directories

+ +

+Files

+
+ + + + diff --git a/dir_50f2a87725f70e3a094bd7906cbbb009.html b/dir_50f2a87725f70e3a094bd7906cbbb009.html new file mode 100644 index 0000000..118d7d9 --- /dev/null +++ b/dir_50f2a87725f70e3a094bd7906cbbb009.html @@ -0,0 +1,108 @@ + + + + + + +Showdan.Net: src/Shodan.Net Directory Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net Directory Reference
+
+
+ + +

+Directories

+ +

+Files

+
+ + + + diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000..0365896 --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,105 @@ + + + + + + +Showdan.Net: src Directory Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
src Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/dir_98734c2f6fe53d8076ed08b3f1bf9ae3.html b/dir_98734c2f6fe53d8076ed08b3f1bf9ae3.html new file mode 100644 index 0000000..bf1d6a9 --- /dev/null +++ b/dir_98734c2f6fe53d8076ed08b3f1bf9ae3.html @@ -0,0 +1,105 @@ + + + + + + +Showdan.Net: src/Shodan.Net/Models/Options Directory Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Options Directory Reference
+
+
+ + +

+Files

+
+ + + + diff --git a/doc.png b/doc.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/doc.png differ diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 0000000..1425ec5 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,1475 @@ +/* The standard CSS for doxygen 1.8.11 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 4px 6px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/doxygen.png b/doxygen.png new file mode 100644 index 0000000..3ff17d8 Binary files /dev/null and b/doxygen.png differ diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 0000000..1e6bf07 --- /dev/null +++ b/dynsections.js @@ -0,0 +1,104 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + +Showdan.Net: File List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 12345]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  src
  Shodan.Net
  Models
  Options
 OrderOption.cs
 RequestType.cs
 SortOptions.cs
 StatusEnum.cs
 ApiStatus.cs
 Banner.cs
 Facet.cs
 Host.cs
 Location.cs
 Profile.cs
 ScanPortResult.cs
 ScanResult.cs
 ScanStatus.cs
 SearchHostResults.cs
 SearchQueries.cs
 SearchTokens.cs
 SslProperties.cs
 TagResult.cs
  Net
 IRequstHandler.cs
 RequestHandler.cs
  Properties
 AssemblyInfo.cs
  Search
 FacetGenerator.cs
 QueryGenerator.cs
 IShodanAsyncClient.cs
 ShodanClient.cs
 ShodanException.cs
+
+
+ + + + diff --git a/folderclosed.png b/folderclosed.png new file mode 100644 index 0000000..bb8ab35 Binary files /dev/null and b/folderclosed.png differ diff --git a/folderopen.png b/folderopen.png new file mode 100644 index 0000000..d6c7f67 Binary files /dev/null and b/folderopen.png differ diff --git a/functions.html b/functions.html new file mode 100644 index 0000000..538b438 --- /dev/null +++ b/functions.html @@ -0,0 +1,343 @@ + + + + + + +Showdan.Net: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+ + +

- w -

+
+ + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 0000000..99d9fbd --- /dev/null +++ b/functions_func.html @@ -0,0 +1,171 @@ + + + + + + +Showdan.Net: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/functions_prop.html b/functions_prop.html new file mode 100644 index 0000000..215f241 --- /dev/null +++ b/functions_prop.html @@ -0,0 +1,195 @@ + + + + + + +Showdan.Net: Class Members - Properties + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 0000000..7bfaf22 --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,130 @@ + + + + + + +Showdan.Net: Class Hierarchy + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + +
 CShodan.Net.Models.ApiStatusReturns information about the API plan belonging to the given API key.
 CShodan.Net.Models.Attributes
 CShodan.Net.Models.BannerRepresents basic return data
 CException
 CShodan.Net.ShodanException
 CShodan.Net.Models.FacetRepresents return facet data
 CShodan.Net.FacetGenerator
 CShodan.Net.Models.HostRepresents return data for querying hosts
 CIDisposable
 CShodan.Net.IRequstHandlersane wrapper of http, and simple abstraction layer for unit testing
 CShodan.Net.RequestHandlersane wrapper of http, and simple abstraction layer for unit testing
 CShodan.Net.ShodanClientMain mechanism to talk to the shodan api. This is what you should use to interact with the api
 CShodan.Net.Models.LocationBasic location data returned by shodan
 CShodan.Net.Models.TagResult.Match
 CShodan.Net.Models.Match
 CShodan.Net.Models.ProfileRepresents data about your profile
 CShodan.Net.QueryGenerator
 CShodan.Net.Models.ScanPortResultresult of ShodanClient.RequestInternetPortScanAsync(int, string)
 CShodan.Net.Models.ScanResultresult of ShodanClient.RequstScanAsync(string)
 CShodan.Net.Models.ScanStatusResult of ShodanClient.GetScanStatusAsync(string)
 CShodan.Net.Models.SearchHostResultsresult of ShodanClient.SearchHosts(SearchQuery, FacetQuery, int, bool) and ShodanClient.SearchHostsCount(SearchQuery, FacetQuery)
 CShodan.Net.Models.SearchQueriesResult of ShodanClient.GetQueriesAsync(int?, SortOptions?, OrderOption?) and

See also
ShodanClient.SearchQueriesAsync(string, int?)
+
 CShodan.Net.Models.SearchTokens
 CShodan.Net.Models.SslProperties
 CShodan.Net.Models.TagResultresult of ShodanClient.GetTagsAsync(int)
+
+
+ + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..938d4f3 --- /dev/null +++ b/index.html @@ -0,0 +1,93 @@ + + + + + + +Showdan.Net: Shodan.Net + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + +
+ +
+
+ + +
+ +
+ + +
+

Shodan.net is a simple c# implementation of the shodan api Shodan.net is missing the streams api, but it will come soon. Most of the action occurs in ShodanClient.cs

+
+ + + + diff --git a/interface_shodan_1_1_net_1_1_i_requst_handler-members.html b/interface_shodan_1_1_net_1_1_i_requst_handler-members.html new file mode 100644 index 0000000..2799e21 --- /dev/null +++ b/interface_shodan_1_1_net_1_1_i_requst_handler-members.html @@ -0,0 +1,108 @@ + + + + + + +Showdan.Net: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shodan.Net.IRequstHandler Member List
+
+
+ +

This is the complete list of members for Shodan.Net.IRequstHandler, including all inherited members.

+ + +
MakeRequestAsync< T >(Uri url, HttpContent content=null, RequestType requstType=RequestType.GET) (defined in Shodan.Net.IRequstHandler)Shodan.Net.IRequstHandler
+ + + + diff --git a/interface_shodan_1_1_net_1_1_i_requst_handler.html b/interface_shodan_1_1_net_1_1_i_requst_handler.html new file mode 100644 index 0000000..3bc75fc --- /dev/null +++ b/interface_shodan_1_1_net_1_1_i_requst_handler.html @@ -0,0 +1,133 @@ + + + + + + +Showdan.Net: Shodan.Net.IRequstHandler Interface Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.IRequstHandler Interface Reference
+
+
+ +

sane wrapper of http, and simple abstraction layer for unit testing + More...

+
+Inheritance diagram for Shodan.Net.IRequstHandler:
+
+
+ + +Shodan.Net.RequestHandler + +
+ + + + +

+Public Member Functions

+Task< T > MakeRequestAsync< T > (Uri url, HttpContent content=null, RequestType requstType=RequestType.GET)
 
+

Detailed Description

+

sane wrapper of http, and simple abstraction layer for unit testing

+ +

Definition at line 13 of file IRequstHandler.cs.

+

The documentation for this interface was generated from the following file: +
+ + + + diff --git a/interface_shodan_1_1_net_1_1_i_requst_handler.png b/interface_shodan_1_1_net_1_1_i_requst_handler.png new file mode 100644 index 0000000..409eb14 Binary files /dev/null and b/interface_shodan_1_1_net_1_1_i_requst_handler.png differ diff --git a/jquery.js b/jquery.js new file mode 100644 index 0000000..1f4d0b4 --- /dev/null +++ b/jquery.js @@ -0,0 +1,68 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + + +
+
+
Readme
+
+
+

Visit the official Shodan API documentation at:

+

https://developer.shodan.io

+

This is still in active development, error handling might not well handle well. Best bet when working with any libraries you didn't write..harden your calls!

+

Installation

+

install-package Shodan.Net

+

Getting started

+

You need to have an Api key. Get your api key here.

+

Create a shodan client. Note that ShodanClient inerhits from IDisposable, so you should wrap it in a using, or make sure it will be disposed. Shodan client is thread safe, so you should be able to keep 1 object around for many requests.

+

var client = new Shodan.Net.ShodanClient("myapiKey");

+

Now just query away.

+
1 await client.GetPortsAsync();
2 await client.GetHostAsync("172.1.1.0");
3 await client.GetMyIpAsync();

Searching

+

Searching shodan requires you to build up queries, and facets to make it easier we have used a generator pattern to produce queries.

+
1 await client.SearchHosts(
2  query: a => a.Withcity("boston")
3  .Withcountry("usa")
4  .Before(DateTime.Now.AddDays(-5)),
5  facet: b => b.WithAsn()
6 
7  );
+ + + + diff --git a/namespace_shodan.html b/namespace_shodan.html new file mode 100644 index 0000000..2f6265b --- /dev/null +++ b/namespace_shodan.html @@ -0,0 +1,104 @@ + + + + + + +Showdan.Net: Shodan Namespace Reference + + + + + + + + + + +
+
+
+ + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+ + + + + + + +
+
+ + +
+ +
+ + +
+ +
+
Shodan Namespace Reference
+
+
+ + +

+Namespaces

+
+ + + + diff --git a/namespace_shodan_1_1_net.html b/namespace_shodan_1_1_net.html new file mode 100644 index 0000000..79984fe --- /dev/null +++ b/namespace_shodan_1_1_net.html @@ -0,0 +1,192 @@ + + + + + + +Showdan.Net: Shodan.Net Namespace Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net Namespace Reference
+
+
+ + +

+Namespaces

+ + + + + + + + + + + + + + + + + + +

+Classes

class  FacetGenerator
 
interface  IRequstHandler
 sane wrapper of http, and simple abstraction layer for unit testing More...
 
interface  IShodanAsyncClient
 
class  QueryGenerator
 
class  RequestHandler
 sane wrapper of http, and simple abstraction layer for unit testing More...
 
class  ShodanClient
 Main mechanism to talk to the shodan api. This is what you should use to interact with the api More...
 
class  ShodanException
 
+ + + + + + + +

+Enumerations

enum  OrderOption { asc, +desc + }
 Represents an order of either ascending or descending More...
 
enum  SortOptions { votes, +timestamp + }
 Represents an option to sort More...
 
+

Enumeration Type Documentation

+ +
+
+ + + + + +
+ + + + +
enum Shodan.Net.OrderOption
+
+strong
+
+ +

Represents an order of either ascending or descending

+ +

Definition at line 11 of file OrderOption.cs.

+
12  {
13  asc,
14  desc
15  }
+
+
+ +
+
+ + + + + +
+ + + + +
enum Shodan.Net.SortOptions
+
+strong
+
+ +

Represents an option to sort

+ +

Definition at line 11 of file SortOptions.cs.

+
12  {
13  votes,
14  timestamp
15  }
+
+
+
+ + + + diff --git a/namespace_shodan_1_1_net_1_1_models.html b/namespace_shodan_1_1_net_1_1_models.html new file mode 100644 index 0000000..c25a26e --- /dev/null +++ b/namespace_shodan_1_1_net_1_1_models.html @@ -0,0 +1,157 @@ + + + + + + +Showdan.Net: Shodan.Net.Models Namespace Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.Models Namespace Reference
+
+
+ + +

+Namespaces

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  ApiStatus
 Returns information about the API plan belonging to the given API key. More...
 
class  Attributes
 
class  Banner
 Represents basic return data More...
 
class  Facet
 Represents return facet data More...
 
class  Host
 Represents return data for querying hosts More...
 
class  Location
 Basic location data returned by shodan More...
 
class  Match
 
class  Profile
 Represents data about your profile More...
 
class  ScanPortResult
 result of ShodanClient.RequestInternetPortScanAsync(int, string) More...
 
class  ScanResult
 result of ShodanClient.RequstScanAsync(string) More...
 
class  ScanStatus
 Result of ShodanClient.GetScanStatusAsync(string) More...
 
class  SearchHostResults
 result of ShodanClient.SearchHosts(SearchQuery, FacetQuery, int, bool) and ShodanClient.SearchHostsCount(SearchQuery, FacetQuery) More...
 
class  SearchQueries
 Result of ShodanClient.GetQueriesAsync(int?, SortOptions?, OrderOption?) and

See also
ShodanClient.SearchQueriesAsync(string, int?)
+ More...
 
class  SearchTokens
 
class  SslProperties
 
class  TagResult
 result of ShodanClient.GetTagsAsync(int) More...
 
+
+ + + + diff --git a/namespace_shodan_1_1_net_1_1_models_1_1_options.html b/namespace_shodan_1_1_net_1_1_models_1_1_options.html new file mode 100644 index 0000000..b922b78 --- /dev/null +++ b/namespace_shodan_1_1_net_1_1_models_1_1_options.html @@ -0,0 +1,120 @@ + + + + + + +Showdan.Net: Shodan.Net.Models.Options Namespace Reference + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Shodan.Net.Models.Options Namespace Reference
+
+
+ + + + + + +

+Enumerations

enum  RequestType { GET = 0, +PUT = 1, +POST = 2, +DELETE = 4 + }
 
enum  StatusEnum { SUBMITTING, +QUEUE, +PROCESSING, +DONE + }
 
+
+ + + + diff --git a/namespacemembers.html b/namespacemembers.html new file mode 100644 index 0000000..bd673d0 --- /dev/null +++ b/namespacemembers.html @@ -0,0 +1,108 @@ + + + + + + +Showdan.Net: Namespace Members + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+
+ + + + diff --git a/namespacemembers_enum.html b/namespacemembers_enum.html new file mode 100644 index 0000000..1edf635 --- /dev/null +++ b/namespacemembers_enum.html @@ -0,0 +1,108 @@ + + + + + + +Showdan.Net: Namespace Members + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/namespaces.html b/namespaces.html new file mode 100644 index 0000000..1a24fe9 --- /dev/null +++ b/namespaces.html @@ -0,0 +1,106 @@ + + + + + + +Showdan.Net: Namespace List + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Namespace List
+
+
+
Here is a list of all documented namespaces with brief descriptions:
+
[detail level 1234]
+ + + + +
 NShodan
 NNet
 NModels
 NOptions
+
+
+ + + + diff --git a/nav_f.png b/nav_f.png new file mode 100644 index 0000000..72a58a5 Binary files /dev/null and b/nav_f.png differ diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/nav_g.png differ diff --git a/nav_h.png b/nav_h.png new file mode 100644 index 0000000..33389b1 Binary files /dev/null and b/nav_h.png differ diff --git a/open.png b/open.png new file mode 100644 index 0000000..30f75c7 Binary files /dev/null and b/open.png differ diff --git a/pages.html b/pages.html new file mode 100644 index 0000000..5583d7b --- /dev/null +++ b/pages.html @@ -0,0 +1,97 @@ + + + + + + +Showdan.Net: Related Pages + + + + + + + + + + +
+
+ + + + + + +
+
Showdan.Net +
+
c# client for the shodan api
+
+
+ + + + +
+ +
+
+ + +
+ +
+ +
+
+
Related Pages
+
+
+
Here is a list of all related documentation pages:
+ + +
 Readme
+
+
+ + + + diff --git a/search/all_0.html b/search/all_0.html new file mode 100644 index 0000000..d54e0bd --- /dev/null +++ b/search/all_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 0000000..a84d78e --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['after',['After',['../class_shodan_1_1_net_1_1_query_generator.html#a1f5447d4c671c8ae637538e7c7a598b0',1,'Shodan::Net::QueryGenerator']]], + ['apistatus',['ApiStatus',['../class_shodan_1_1_net_1_1_models_1_1_api_status.html',1,'Shodan::Net::Models']]], + ['areacode',['AreaCode',['../class_shodan_1_1_net_1_1_models_1_1_location.html#a8ea0e35758bd84a1d78c52c00b8c9519',1,'Shodan::Net::Models::Location']]], + ['asn',['Asn',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#acf631ddb1fb99d3d176f4f8fc2a68a10',1,'Shodan::Net::Models::Banner']]], + ['attributes',['Attributes',['../class_shodan_1_1_net_1_1_models_1_1_attributes.html',1,'Shodan::Net::Models']]] +]; diff --git a/search/all_1.html b/search/all_1.html new file mode 100644 index 0000000..8cc6a1d --- /dev/null +++ b/search/all_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 0000000..c72240a --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['banner',['Banner',['../class_shodan_1_1_net_1_1_models_1_1_banner.html',1,'Shodan::Net::Models']]] +]; diff --git a/search/all_10.html b/search/all_10.html new file mode 100644 index 0000000..c25484f --- /dev/null +++ b/search/all_10.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_10.js b/search/all_10.js new file mode 100644 index 0000000..b5d08d5 --- /dev/null +++ b/search/all_10.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['tagresult',['TagResult',['../class_shodan_1_1_net_1_1_models_1_1_tag_result.html',1,'Shodan::Net::Models']]], + ['timestamp',['Timestamp',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a7428b44184cf2edd5c618bdcbf6b8e7f',1,'Shodan::Net::Models::Banner']]], + ['transport',['Transport',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#aa81a7f912e5c0bd114c251dbb3052b19',1,'Shodan::Net::Models::Banner']]] +]; diff --git a/search/all_11.html b/search/all_11.html new file mode 100644 index 0000000..3615c28 --- /dev/null +++ b/search/all_11.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_11.js b/search/all_11.js new file mode 100644 index 0000000..70a84cc --- /dev/null +++ b/search/all_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['uptime',['Uptime',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a7b78561e2e36267a466264aeee59e845',1,'Shodan::Net::Models::Banner']]] +]; diff --git a/search/all_12.html b/search/all_12.html new file mode 100644 index 0000000..abd082a --- /dev/null +++ b/search/all_12.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_12.js b/search/all_12.js new file mode 100644 index 0000000..9390f6c --- /dev/null +++ b/search/all_12.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['versions',['Versions',['../class_shodan_1_1_net_1_1_models_1_1_ssl_properties.html#ac9f0f72b060435abd66ea804d52a373e',1,'Shodan::Net::Models::SslProperties']]] +]; diff --git a/search/all_13.html b/search/all_13.html new file mode 100644 index 0000000..88fa653 --- /dev/null +++ b/search/all_13.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_13.js b/search/all_13.js new file mode 100644 index 0000000..b82e207 --- /dev/null +++ b/search/all_13.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['withasn',['WithAsn',['../class_shodan_1_1_net_1_1_query_generator.html#ab30aa291a7214dc978cfa599723ffa4f',1,'Shodan::Net::QueryGenerator']]] +]; diff --git a/search/all_2.html b/search/all_2.html new file mode 100644 index 0000000..d15ac65 --- /dev/null +++ b/search/all_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 0000000..f63a3d8 --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['cert',['Cert',['../class_shodan_1_1_net_1_1_models_1_1_ssl_properties.html#a5da0fa74f90764b17d20558e9d0f33eb',1,'Shodan::Net::Models::SslProperties']]], + ['chain',['Chain',['../class_shodan_1_1_net_1_1_models_1_1_ssl_properties.html#aa7b46e145a3bb9197c3a4e8970f34644',1,'Shodan::Net::Models::SslProperties']]], + ['ciper',['Ciper',['../class_shodan_1_1_net_1_1_models_1_1_ssl_properties.html#a6d2ed1fdd5118408e6522b386917470e',1,'Shodan::Net::Models::SslProperties']]], + ['city',['City',['../class_shodan_1_1_net_1_1_models_1_1_location.html#ada5de08c82acd8df155f7a494fd3d550',1,'Shodan::Net::Models::Location']]], + ['countrycode',['CountryCode',['../class_shodan_1_1_net_1_1_models_1_1_location.html#a4ab024e3ee51a72e11a1b76c64a3941f',1,'Shodan::Net::Models::Location']]], + ['countrycode3',['CountryCode3',['../class_shodan_1_1_net_1_1_models_1_1_location.html#af1dd87af400823dce514d818763563dc',1,'Shodan::Net::Models::Location']]], + ['countryname',['CountryName',['../class_shodan_1_1_net_1_1_models_1_1_location.html#a91064383defb8a41e6f21d0fbb3b0901',1,'Shodan::Net::Models::Location']]] +]; diff --git a/search/all_3.html b/search/all_3.html new file mode 100644 index 0000000..9f526c6 --- /dev/null +++ b/search/all_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 0000000..4bcfdee --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['data',['Data',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a6b420dc2828e22ee8a27c1fcad6f7d0f',1,'Shodan::Net::Models::Banner']]], + ['dhparams',['DhParams',['../class_shodan_1_1_net_1_1_models_1_1_ssl_properties.html#a1fb437e2aa7e17f744d637ccec1ffc1b',1,'Shodan::Net::Models::SslProperties']]], + ['dmacode',['DmaCode',['../class_shodan_1_1_net_1_1_models_1_1_location.html#a28ecfd2cdf6e0167654dcb59bd22ff6f',1,'Shodan::Net::Models::Location']]], + ['dnslookupasync',['DnsLookupAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a200d6fa98c71f5bdfffc0102dfdf82e1',1,'Shodan::Net::ShodanClient']]], + ['domains',['Domains',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#ae98d40dc8582d96e6a01222a0dc82092',1,'Shodan::Net::Models::Banner']]] +]; diff --git a/search/all_4.html b/search/all_4.html new file mode 100644 index 0000000..7b814aa --- /dev/null +++ b/search/all_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 0000000..103060f --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['experimental_5fgethoneypotscoreasync',['Experimental_GetHoneyPotScoreAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#ae29f6125c56b7c7e76b0bd3b3929ddf3',1,'Shodan::Net::ShodanClient']]] +]; diff --git a/search/all_5.html b/search/all_5.html new file mode 100644 index 0000000..d8de556 --- /dev/null +++ b/search/all_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 0000000..e19ff47 --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['facet',['Facet',['../class_shodan_1_1_net_1_1_models_1_1_facet.html',1,'Shodan::Net::Models']]], + ['facetgenerator',['FacetGenerator',['../class_shodan_1_1_net_1_1_facet_generator.html',1,'Shodan::Net']]] +]; diff --git a/search/all_6.html b/search/all_6.html new file mode 100644 index 0000000..9ba0cc2 --- /dev/null +++ b/search/all_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 0000000..fac58bf --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['getapistatusasync',['GetApiStatusAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a4ee27d33c7a978a5a53dc0b4582c2c75',1,'Shodan::Net::ShodanClient']]], + ['gethostasync',['GetHostAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a9803bb3590247140eaa74da5ca3de2ef',1,'Shodan::Net::ShodanClient']]], + ['getmyipasync',['GetMyIpAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#aad90503a5e455ad47d4a7b7defd544dc',1,'Shodan::Net::ShodanClient']]], + ['getportsasync',['GetPortsAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a53e54683111f4919574c961688c2d3ba',1,'Shodan::Net::ShodanClient']]], + ['getprofileasync',['GetProfileAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a0f9290ba4284a05aacc2651d3b3ad0c6',1,'Shodan::Net::ShodanClient']]], + ['getprotocolsasync',['GetProtocolsAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#aabd3a9ec7fec6c3674fbab98d4a80a5d',1,'Shodan::Net::ShodanClient']]], + ['getqueriesasync',['GetQueriesAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a383f4813c0313ed125a183902afb6778',1,'Shodan::Net::ShodanClient']]], + ['getscanstatusasync',['GetScanStatusAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a2c07668e7d2ef68dd6c5e13d35f672eb',1,'Shodan::Net::ShodanClient']]], + ['getservicesasync',['GetServicesAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a8065940695b0e3097720c8ed8a158e8a',1,'Shodan::Net::ShodanClient']]], + ['gettagsasync',['GetTagsAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a0800fb920b0bf8d770f10b4477214e49',1,'Shodan::Net::ShodanClient']]] +]; diff --git a/search/all_7.html b/search/all_7.html new file mode 100644 index 0000000..9384ec9 --- /dev/null +++ b/search/all_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 0000000..a1948dc --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['hasscreenshot',['HasScreenshot',['../class_shodan_1_1_net_1_1_query_generator.html#a0235d37378397a24e2be16b2e1aba8af',1,'Shodan::Net::QueryGenerator']]], + ['host',['Host',['../class_shodan_1_1_net_1_1_models_1_1_host.html',1,'Shodan::Net::Models']]], + ['hostnames',['Hostnames',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#abaa6f9a1153739c2889a01f8da8ed597',1,'Shodan::Net::Models::Banner']]] +]; diff --git a/search/all_8.html b/search/all_8.html new file mode 100644 index 0000000..37566c5 --- /dev/null +++ b/search/all_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 0000000..dcf4a6d --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['ip',['Ip',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a4dc6059674fe5e70e5bfdf89be93c3e6',1,'Shodan::Net::Models::Banner']]], + ['ipstr',['IpStr',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#af0d87938f025e3587a085198555d3ae3',1,'Shodan::Net::Models::Banner']]], + ['ipv6',['Ipv6',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a0b4985fb800f74e3247fa1dc61a29806',1,'Shodan::Net::Models::Banner']]], + ['irequsthandler',['IRequstHandler',['../interface_shodan_1_1_net_1_1_i_requst_handler.html',1,'Shodan::Net']]], + ['isp',['Isp',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a8b27cc7bb2740bd0886e1e20cfaf7e26',1,'Shodan::Net::Models::Banner']]] +]; diff --git a/search/all_9.html b/search/all_9.html new file mode 100644 index 0000000..c8c5102 --- /dev/null +++ b/search/all_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 0000000..ca271ad --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['latitude',['Latitude',['../class_shodan_1_1_net_1_1_models_1_1_location.html#a8909dc002fbaa4c1ca6a11554c5e86f1',1,'Shodan::Net::Models::Location']]], + ['location',['Location',['../class_shodan_1_1_net_1_1_models_1_1_location.html',1,'Shodan::Net::Models']]], + ['location',['Location',['../class_shodan_1_1_net_1_1_models_1_1_location.html#a9c634c5439225a863c24cfc8dc95cb43',1,'Shodan::Net::Models::Location']]], + ['longitude',['Longitude',['../class_shodan_1_1_net_1_1_models_1_1_location.html#ace2aa8fcd4231cd3a4aa3a0d89263316',1,'Shodan::Net::Models::Location']]] +]; diff --git a/search/all_a.html b/search/all_a.html new file mode 100644 index 0000000..4cb31f0 --- /dev/null +++ b/search/all_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 0000000..8b59005 --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['match',['Match',['../class_shodan_1_1_net_1_1_models_1_1_tag_result_1_1_match.html',1,'Shodan::Net::Models::TagResult']]], + ['match',['Match',['../class_shodan_1_1_net_1_1_models_1_1_match.html',1,'Shodan::Net::Models']]] +]; diff --git a/search/all_b.html b/search/all_b.html new file mode 100644 index 0000000..d34a612 --- /dev/null +++ b/search/all_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 0000000..9cd8352 --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['opts',['Opts',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a3ce63fe08d559475dfb16ce8bfbf8bcc',1,'Shodan::Net::Models::Banner']]], + ['orderoption',['OrderOption',['../namespace_shodan_1_1_net.html#a38b3a0c77706a0af84feb8de26c4c69f',1,'Shodan::Net']]], + ['org',['Org',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a8dc591fa293540ef501c94c7494b9349',1,'Shodan::Net::Models::Banner']]], + ['os',['Os',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a950a8636525e9a69bbcc6da20e8cc8f0',1,'Shodan::Net::Models::Banner']]] +]; diff --git a/search/all_c.html b/search/all_c.html new file mode 100644 index 0000000..c1ae2ca --- /dev/null +++ b/search/all_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_c.js b/search/all_c.js new file mode 100644 index 0000000..ffed2fd --- /dev/null +++ b/search/all_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['port',['Port',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a6b65699ba0716a2615b3d080d519e738',1,'Shodan::Net::Models::Banner']]], + ['postalcode',['PostalCode',['../class_shodan_1_1_net_1_1_models_1_1_location.html#a7555263499aa7305d4de578884113685',1,'Shodan::Net::Models::Location']]], + ['profile',['Profile',['../class_shodan_1_1_net_1_1_models_1_1_profile.html',1,'Shodan::Net::Models']]] +]; diff --git a/search/all_d.html b/search/all_d.html new file mode 100644 index 0000000..712223c --- /dev/null +++ b/search/all_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_d.js b/search/all_d.js new file mode 100644 index 0000000..b7b6ffe --- /dev/null +++ b/search/all_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['querygenerator',['QueryGenerator',['../class_shodan_1_1_net_1_1_query_generator.html',1,'Shodan::Net']]] +]; diff --git a/search/all_e.html b/search/all_e.html new file mode 100644 index 0000000..d553ffa --- /dev/null +++ b/search/all_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_e.js b/search/all_e.js new file mode 100644 index 0000000..de80135 --- /dev/null +++ b/search/all_e.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['readme',['Readme',['../md_Readme.html',1,'']]], + ['regioncode',['RegionCode',['../class_shodan_1_1_net_1_1_models_1_1_location.html#aa1c2dc80183fd5562b740aa8746d8902',1,'Shodan::Net::Models::Location']]], + ['requesthandler',['RequestHandler',['../class_shodan_1_1_net_1_1_request_handler.html',1,'Shodan::Net']]], + ['requestinternetportscanasync',['RequestInternetPortScanAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a863f48b2c8b407064be6572df7c6878e',1,'Shodan::Net::ShodanClient']]], + ['requstscanasync',['RequstScanAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a2b70e2928a23ce37b62d8abd4edc3652',1,'Shodan::Net::ShodanClient']]], + ['reverselookupasync',['ReverseLookupAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#ac4fe2a9bce7de571476143847d3fedf0',1,'Shodan::Net::ShodanClient']]] +]; diff --git a/search/all_f.html b/search/all_f.html new file mode 100644 index 0000000..c77391a --- /dev/null +++ b/search/all_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_f.js b/search/all_f.js new file mode 100644 index 0000000..119304d --- /dev/null +++ b/search/all_f.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['shodan_2enet',['Shodan.Net',['../index.html',1,'']]], + ['models',['Models',['../namespace_shodan_1_1_net_1_1_models.html',1,'Shodan::Net']]], + ['net',['Net',['../namespace_shodan_1_1_net.html',1,'Shodan']]], + ['options',['Options',['../namespace_shodan_1_1_net_1_1_models_1_1_options.html',1,'Shodan::Net::Models']]], + ['scanportresult',['ScanPortResult',['../class_shodan_1_1_net_1_1_models_1_1_scan_port_result.html',1,'Shodan::Net::Models']]], + ['scanresult',['ScanResult',['../class_shodan_1_1_net_1_1_models_1_1_scan_result.html',1,'Shodan::Net::Models']]], + ['scanstatus',['ScanStatus',['../class_shodan_1_1_net_1_1_models_1_1_scan_status.html',1,'Shodan::Net::Models']]], + ['searchhostresults',['SearchHostResults',['../class_shodan_1_1_net_1_1_models_1_1_search_host_results.html',1,'Shodan::Net::Models']]], + ['searchhosts',['SearchHosts',['../class_shodan_1_1_net_1_1_shodan_client.html#ae3414bf81a8cc2dd1221bc1b454e85aa',1,'Shodan::Net::ShodanClient']]], + ['searchhostscount',['SearchHostsCount',['../class_shodan_1_1_net_1_1_shodan_client.html#a15a00af0533396e7f6c54ed515f29254',1,'Shodan::Net::ShodanClient']]], + ['searchqueries',['SearchQueries',['../class_shodan_1_1_net_1_1_models_1_1_search_queries.html',1,'Shodan::Net::Models']]], + ['searchqueriesasync',['SearchQueriesAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#acf91954aedc17dac889a3224b31a403d',1,'Shodan::Net::ShodanClient']]], + ['searchtokens',['SearchTokens',['../class_shodan_1_1_net_1_1_models_1_1_search_tokens.html',1,'Shodan::Net::Models']]], + ['shodan',['Shodan',['../namespace_shodan.html',1,'']]], + ['shodanclient',['ShodanClient',['../class_shodan_1_1_net_1_1_shodan_client.html',1,'Shodan::Net']]], + ['shodanexception',['ShodanException',['../class_shodan_1_1_net_1_1_shodan_exception.html',1,'Shodan::Net']]], + ['sortoptions',['SortOptions',['../namespace_shodan_1_1_net.html#a2806da955790b24fc0b1bd36ba0be58e',1,'Shodan::Net']]], + ['sslproperties',['SslProperties',['../class_shodan_1_1_net_1_1_models_1_1_ssl_properties.html',1,'Shodan::Net::Models']]] +]; diff --git a/search/classes_0.html b/search/classes_0.html new file mode 100644 index 0000000..025587a --- /dev/null +++ b/search/classes_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 0000000..c61e939 --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['apistatus',['ApiStatus',['../class_shodan_1_1_net_1_1_models_1_1_api_status.html',1,'Shodan::Net::Models']]], + ['attributes',['Attributes',['../class_shodan_1_1_net_1_1_models_1_1_attributes.html',1,'Shodan::Net::Models']]] +]; diff --git a/search/classes_1.html b/search/classes_1.html new file mode 100644 index 0000000..86dc4ff --- /dev/null +++ b/search/classes_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 0000000..c72240a --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['banner',['Banner',['../class_shodan_1_1_net_1_1_models_1_1_banner.html',1,'Shodan::Net::Models']]] +]; diff --git a/search/classes_2.html b/search/classes_2.html new file mode 100644 index 0000000..014caf8 --- /dev/null +++ b/search/classes_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 0000000..e19ff47 --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['facet',['Facet',['../class_shodan_1_1_net_1_1_models_1_1_facet.html',1,'Shodan::Net::Models']]], + ['facetgenerator',['FacetGenerator',['../class_shodan_1_1_net_1_1_facet_generator.html',1,'Shodan::Net']]] +]; diff --git a/search/classes_3.html b/search/classes_3.html new file mode 100644 index 0000000..2e97201 --- /dev/null +++ b/search/classes_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 0000000..dad3076 --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['host',['Host',['../class_shodan_1_1_net_1_1_models_1_1_host.html',1,'Shodan::Net::Models']]] +]; diff --git a/search/classes_4.html b/search/classes_4.html new file mode 100644 index 0000000..776fee3 --- /dev/null +++ b/search/classes_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_4.js b/search/classes_4.js new file mode 100644 index 0000000..629c49a --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['irequsthandler',['IRequstHandler',['../interface_shodan_1_1_net_1_1_i_requst_handler.html',1,'Shodan::Net']]] +]; diff --git a/search/classes_5.html b/search/classes_5.html new file mode 100644 index 0000000..69bbcc8 --- /dev/null +++ b/search/classes_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_5.js b/search/classes_5.js new file mode 100644 index 0000000..119590b --- /dev/null +++ b/search/classes_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['location',['Location',['../class_shodan_1_1_net_1_1_models_1_1_location.html',1,'Shodan::Net::Models']]] +]; diff --git a/search/classes_6.html b/search/classes_6.html new file mode 100644 index 0000000..2db08a0 --- /dev/null +++ b/search/classes_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_6.js b/search/classes_6.js new file mode 100644 index 0000000..8b59005 --- /dev/null +++ b/search/classes_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['match',['Match',['../class_shodan_1_1_net_1_1_models_1_1_tag_result_1_1_match.html',1,'Shodan::Net::Models::TagResult']]], + ['match',['Match',['../class_shodan_1_1_net_1_1_models_1_1_match.html',1,'Shodan::Net::Models']]] +]; diff --git a/search/classes_7.html b/search/classes_7.html new file mode 100644 index 0000000..fd67346 --- /dev/null +++ b/search/classes_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_7.js b/search/classes_7.js new file mode 100644 index 0000000..589f526 --- /dev/null +++ b/search/classes_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['profile',['Profile',['../class_shodan_1_1_net_1_1_models_1_1_profile.html',1,'Shodan::Net::Models']]] +]; diff --git a/search/classes_8.html b/search/classes_8.html new file mode 100644 index 0000000..369fe52 --- /dev/null +++ b/search/classes_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_8.js b/search/classes_8.js new file mode 100644 index 0000000..b7b6ffe --- /dev/null +++ b/search/classes_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['querygenerator',['QueryGenerator',['../class_shodan_1_1_net_1_1_query_generator.html',1,'Shodan::Net']]] +]; diff --git a/search/classes_9.html b/search/classes_9.html new file mode 100644 index 0000000..188dbb3 --- /dev/null +++ b/search/classes_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_9.js b/search/classes_9.js new file mode 100644 index 0000000..134bf54 --- /dev/null +++ b/search/classes_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['requesthandler',['RequestHandler',['../class_shodan_1_1_net_1_1_request_handler.html',1,'Shodan::Net']]] +]; diff --git a/search/classes_a.html b/search/classes_a.html new file mode 100644 index 0000000..e7610d3 --- /dev/null +++ b/search/classes_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_a.js b/search/classes_a.js new file mode 100644 index 0000000..b0d01b9 --- /dev/null +++ b/search/classes_a.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['scanportresult',['ScanPortResult',['../class_shodan_1_1_net_1_1_models_1_1_scan_port_result.html',1,'Shodan::Net::Models']]], + ['scanresult',['ScanResult',['../class_shodan_1_1_net_1_1_models_1_1_scan_result.html',1,'Shodan::Net::Models']]], + ['scanstatus',['ScanStatus',['../class_shodan_1_1_net_1_1_models_1_1_scan_status.html',1,'Shodan::Net::Models']]], + ['searchhostresults',['SearchHostResults',['../class_shodan_1_1_net_1_1_models_1_1_search_host_results.html',1,'Shodan::Net::Models']]], + ['searchqueries',['SearchQueries',['../class_shodan_1_1_net_1_1_models_1_1_search_queries.html',1,'Shodan::Net::Models']]], + ['searchtokens',['SearchTokens',['../class_shodan_1_1_net_1_1_models_1_1_search_tokens.html',1,'Shodan::Net::Models']]], + ['shodanclient',['ShodanClient',['../class_shodan_1_1_net_1_1_shodan_client.html',1,'Shodan::Net']]], + ['shodanexception',['ShodanException',['../class_shodan_1_1_net_1_1_shodan_exception.html',1,'Shodan::Net']]], + ['sslproperties',['SslProperties',['../class_shodan_1_1_net_1_1_models_1_1_ssl_properties.html',1,'Shodan::Net::Models']]] +]; diff --git a/search/classes_b.html b/search/classes_b.html new file mode 100644 index 0000000..4fc0a3f --- /dev/null +++ b/search/classes_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_b.js b/search/classes_b.js new file mode 100644 index 0000000..90c0bd5 --- /dev/null +++ b/search/classes_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['tagresult',['TagResult',['../class_shodan_1_1_net_1_1_models_1_1_tag_result.html',1,'Shodan::Net::Models']]] +]; diff --git a/search/close.png b/search/close.png new file mode 100644 index 0000000..9342d3d Binary files /dev/null and b/search/close.png differ diff --git a/search/enums_0.html b/search/enums_0.html new file mode 100644 index 0000000..aba8d79 --- /dev/null +++ b/search/enums_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/enums_0.js b/search/enums_0.js new file mode 100644 index 0000000..87e909e --- /dev/null +++ b/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['orderoption',['OrderOption',['../namespace_shodan_1_1_net.html#a38b3a0c77706a0af84feb8de26c4c69f',1,'Shodan::Net']]] +]; diff --git a/search/enums_1.html b/search/enums_1.html new file mode 100644 index 0000000..a8d3843 --- /dev/null +++ b/search/enums_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/enums_1.js b/search/enums_1.js new file mode 100644 index 0000000..23ba01c --- /dev/null +++ b/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['sortoptions',['SortOptions',['../namespace_shodan_1_1_net.html#a2806da955790b24fc0b1bd36ba0be58e',1,'Shodan::Net']]] +]; diff --git a/search/functions_0.html b/search/functions_0.html new file mode 100644 index 0000000..6bc52b6 --- /dev/null +++ b/search/functions_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 0000000..bb058c4 --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['after',['After',['../class_shodan_1_1_net_1_1_query_generator.html#a1f5447d4c671c8ae637538e7c7a598b0',1,'Shodan::Net::QueryGenerator']]] +]; diff --git a/search/functions_1.html b/search/functions_1.html new file mode 100644 index 0000000..648831f --- /dev/null +++ b/search/functions_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 0000000..283cd34 --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dnslookupasync',['DnsLookupAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a200d6fa98c71f5bdfffc0102dfdf82e1',1,'Shodan::Net::ShodanClient']]] +]; diff --git a/search/functions_2.html b/search/functions_2.html new file mode 100644 index 0000000..c93d089 --- /dev/null +++ b/search/functions_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 0000000..103060f --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['experimental_5fgethoneypotscoreasync',['Experimental_GetHoneyPotScoreAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#ae29f6125c56b7c7e76b0bd3b3929ddf3',1,'Shodan::Net::ShodanClient']]] +]; diff --git a/search/functions_3.html b/search/functions_3.html new file mode 100644 index 0000000..caa48ea --- /dev/null +++ b/search/functions_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_3.js b/search/functions_3.js new file mode 100644 index 0000000..fac58bf --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['getapistatusasync',['GetApiStatusAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a4ee27d33c7a978a5a53dc0b4582c2c75',1,'Shodan::Net::ShodanClient']]], + ['gethostasync',['GetHostAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a9803bb3590247140eaa74da5ca3de2ef',1,'Shodan::Net::ShodanClient']]], + ['getmyipasync',['GetMyIpAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#aad90503a5e455ad47d4a7b7defd544dc',1,'Shodan::Net::ShodanClient']]], + ['getportsasync',['GetPortsAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a53e54683111f4919574c961688c2d3ba',1,'Shodan::Net::ShodanClient']]], + ['getprofileasync',['GetProfileAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a0f9290ba4284a05aacc2651d3b3ad0c6',1,'Shodan::Net::ShodanClient']]], + ['getprotocolsasync',['GetProtocolsAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#aabd3a9ec7fec6c3674fbab98d4a80a5d',1,'Shodan::Net::ShodanClient']]], + ['getqueriesasync',['GetQueriesAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a383f4813c0313ed125a183902afb6778',1,'Shodan::Net::ShodanClient']]], + ['getscanstatusasync',['GetScanStatusAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a2c07668e7d2ef68dd6c5e13d35f672eb',1,'Shodan::Net::ShodanClient']]], + ['getservicesasync',['GetServicesAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a8065940695b0e3097720c8ed8a158e8a',1,'Shodan::Net::ShodanClient']]], + ['gettagsasync',['GetTagsAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a0800fb920b0bf8d770f10b4477214e49',1,'Shodan::Net::ShodanClient']]] +]; diff --git a/search/functions_4.html b/search/functions_4.html new file mode 100644 index 0000000..a9c64ad --- /dev/null +++ b/search/functions_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_4.js b/search/functions_4.js new file mode 100644 index 0000000..8e17001 --- /dev/null +++ b/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hasscreenshot',['HasScreenshot',['../class_shodan_1_1_net_1_1_query_generator.html#a0235d37378397a24e2be16b2e1aba8af',1,'Shodan::Net::QueryGenerator']]] +]; diff --git a/search/functions_5.html b/search/functions_5.html new file mode 100644 index 0000000..9d135fa --- /dev/null +++ b/search/functions_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_5.js b/search/functions_5.js new file mode 100644 index 0000000..e5fafa3 --- /dev/null +++ b/search/functions_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['location',['Location',['../class_shodan_1_1_net_1_1_models_1_1_location.html#a9c634c5439225a863c24cfc8dc95cb43',1,'Shodan::Net::Models::Location']]] +]; diff --git a/search/functions_6.html b/search/functions_6.html new file mode 100644 index 0000000..5fca897 --- /dev/null +++ b/search/functions_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_6.js b/search/functions_6.js new file mode 100644 index 0000000..6146724 --- /dev/null +++ b/search/functions_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['requestinternetportscanasync',['RequestInternetPortScanAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a863f48b2c8b407064be6572df7c6878e',1,'Shodan::Net::ShodanClient']]], + ['requstscanasync',['RequstScanAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#a2b70e2928a23ce37b62d8abd4edc3652',1,'Shodan::Net::ShodanClient']]], + ['reverselookupasync',['ReverseLookupAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#ac4fe2a9bce7de571476143847d3fedf0',1,'Shodan::Net::ShodanClient']]] +]; diff --git a/search/functions_7.html b/search/functions_7.html new file mode 100644 index 0000000..02631a3 --- /dev/null +++ b/search/functions_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_7.js b/search/functions_7.js new file mode 100644 index 0000000..a646d41 --- /dev/null +++ b/search/functions_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['searchhosts',['SearchHosts',['../class_shodan_1_1_net_1_1_shodan_client.html#ae3414bf81a8cc2dd1221bc1b454e85aa',1,'Shodan::Net::ShodanClient']]], + ['searchhostscount',['SearchHostsCount',['../class_shodan_1_1_net_1_1_shodan_client.html#a15a00af0533396e7f6c54ed515f29254',1,'Shodan::Net::ShodanClient']]], + ['searchqueriesasync',['SearchQueriesAsync',['../class_shodan_1_1_net_1_1_shodan_client.html#acf91954aedc17dac889a3224b31a403d',1,'Shodan::Net::ShodanClient']]] +]; diff --git a/search/functions_8.html b/search/functions_8.html new file mode 100644 index 0000000..ff37095 --- /dev/null +++ b/search/functions_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_8.js b/search/functions_8.js new file mode 100644 index 0000000..b82e207 --- /dev/null +++ b/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['withasn',['WithAsn',['../class_shodan_1_1_net_1_1_query_generator.html#ab30aa291a7214dc978cfa599723ffa4f',1,'Shodan::Net::QueryGenerator']]] +]; diff --git a/search/mag_sel.png b/search/mag_sel.png new file mode 100644 index 0000000..81f6040 Binary files /dev/null and b/search/mag_sel.png differ diff --git a/search/namespaces_0.html b/search/namespaces_0.html new file mode 100644 index 0000000..f1b59ec --- /dev/null +++ b/search/namespaces_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/namespaces_0.js b/search/namespaces_0.js new file mode 100644 index 0000000..7419f43 --- /dev/null +++ b/search/namespaces_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['models',['Models',['../namespace_shodan_1_1_net_1_1_models.html',1,'Shodan::Net']]], + ['net',['Net',['../namespace_shodan_1_1_net.html',1,'Shodan']]], + ['options',['Options',['../namespace_shodan_1_1_net_1_1_models_1_1_options.html',1,'Shodan::Net::Models']]], + ['shodan',['Shodan',['../namespace_shodan.html',1,'']]] +]; diff --git a/search/nomatches.html b/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
+
No Matches
+
+ + diff --git a/search/pages_0.html b/search/pages_0.html new file mode 100644 index 0000000..0db7267 --- /dev/null +++ b/search/pages_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/pages_0.js b/search/pages_0.js new file mode 100644 index 0000000..a61685c --- /dev/null +++ b/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme',['Readme',['../md_Readme.html',1,'']]] +]; diff --git a/search/pages_1.html b/search/pages_1.html new file mode 100644 index 0000000..2c67a8e --- /dev/null +++ b/search/pages_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/pages_1.js b/search/pages_1.js new file mode 100644 index 0000000..88d3936 --- /dev/null +++ b/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['shodan_2enet',['Shodan.Net',['../index.html',1,'']]] +]; diff --git a/search/properties_0.html b/search/properties_0.html new file mode 100644 index 0000000..09c8a85 --- /dev/null +++ b/search/properties_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/properties_0.js b/search/properties_0.js new file mode 100644 index 0000000..952d433 --- /dev/null +++ b/search/properties_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['areacode',['AreaCode',['../class_shodan_1_1_net_1_1_models_1_1_location.html#a8ea0e35758bd84a1d78c52c00b8c9519',1,'Shodan::Net::Models::Location']]], + ['asn',['Asn',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#acf631ddb1fb99d3d176f4f8fc2a68a10',1,'Shodan::Net::Models::Banner']]] +]; diff --git a/search/properties_1.html b/search/properties_1.html new file mode 100644 index 0000000..20723c3 --- /dev/null +++ b/search/properties_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/properties_1.js b/search/properties_1.js new file mode 100644 index 0000000..f63a3d8 --- /dev/null +++ b/search/properties_1.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['cert',['Cert',['../class_shodan_1_1_net_1_1_models_1_1_ssl_properties.html#a5da0fa74f90764b17d20558e9d0f33eb',1,'Shodan::Net::Models::SslProperties']]], + ['chain',['Chain',['../class_shodan_1_1_net_1_1_models_1_1_ssl_properties.html#aa7b46e145a3bb9197c3a4e8970f34644',1,'Shodan::Net::Models::SslProperties']]], + ['ciper',['Ciper',['../class_shodan_1_1_net_1_1_models_1_1_ssl_properties.html#a6d2ed1fdd5118408e6522b386917470e',1,'Shodan::Net::Models::SslProperties']]], + ['city',['City',['../class_shodan_1_1_net_1_1_models_1_1_location.html#ada5de08c82acd8df155f7a494fd3d550',1,'Shodan::Net::Models::Location']]], + ['countrycode',['CountryCode',['../class_shodan_1_1_net_1_1_models_1_1_location.html#a4ab024e3ee51a72e11a1b76c64a3941f',1,'Shodan::Net::Models::Location']]], + ['countrycode3',['CountryCode3',['../class_shodan_1_1_net_1_1_models_1_1_location.html#af1dd87af400823dce514d818763563dc',1,'Shodan::Net::Models::Location']]], + ['countryname',['CountryName',['../class_shodan_1_1_net_1_1_models_1_1_location.html#a91064383defb8a41e6f21d0fbb3b0901',1,'Shodan::Net::Models::Location']]] +]; diff --git a/search/properties_2.html b/search/properties_2.html new file mode 100644 index 0000000..39cff6c --- /dev/null +++ b/search/properties_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/properties_2.js b/search/properties_2.js new file mode 100644 index 0000000..4fc0238 --- /dev/null +++ b/search/properties_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['data',['Data',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a6b420dc2828e22ee8a27c1fcad6f7d0f',1,'Shodan::Net::Models::Banner']]], + ['dhparams',['DhParams',['../class_shodan_1_1_net_1_1_models_1_1_ssl_properties.html#a1fb437e2aa7e17f744d637ccec1ffc1b',1,'Shodan::Net::Models::SslProperties']]], + ['dmacode',['DmaCode',['../class_shodan_1_1_net_1_1_models_1_1_location.html#a28ecfd2cdf6e0167654dcb59bd22ff6f',1,'Shodan::Net::Models::Location']]], + ['domains',['Domains',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#ae98d40dc8582d96e6a01222a0dc82092',1,'Shodan::Net::Models::Banner']]] +]; diff --git a/search/properties_3.html b/search/properties_3.html new file mode 100644 index 0000000..6859972 --- /dev/null +++ b/search/properties_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/properties_3.js b/search/properties_3.js new file mode 100644 index 0000000..a921337 --- /dev/null +++ b/search/properties_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hostnames',['Hostnames',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#abaa6f9a1153739c2889a01f8da8ed597',1,'Shodan::Net::Models::Banner']]] +]; diff --git a/search/properties_4.html b/search/properties_4.html new file mode 100644 index 0000000..70f111b --- /dev/null +++ b/search/properties_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/properties_4.js b/search/properties_4.js new file mode 100644 index 0000000..cda1f04 --- /dev/null +++ b/search/properties_4.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['ip',['Ip',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a4dc6059674fe5e70e5bfdf89be93c3e6',1,'Shodan::Net::Models::Banner']]], + ['ipstr',['IpStr',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#af0d87938f025e3587a085198555d3ae3',1,'Shodan::Net::Models::Banner']]], + ['ipv6',['Ipv6',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a0b4985fb800f74e3247fa1dc61a29806',1,'Shodan::Net::Models::Banner']]], + ['isp',['Isp',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a8b27cc7bb2740bd0886e1e20cfaf7e26',1,'Shodan::Net::Models::Banner']]] +]; diff --git a/search/properties_5.html b/search/properties_5.html new file mode 100644 index 0000000..057019c --- /dev/null +++ b/search/properties_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/properties_5.js b/search/properties_5.js new file mode 100644 index 0000000..b9e1aeb --- /dev/null +++ b/search/properties_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['latitude',['Latitude',['../class_shodan_1_1_net_1_1_models_1_1_location.html#a8909dc002fbaa4c1ca6a11554c5e86f1',1,'Shodan::Net::Models::Location']]], + ['longitude',['Longitude',['../class_shodan_1_1_net_1_1_models_1_1_location.html#ace2aa8fcd4231cd3a4aa3a0d89263316',1,'Shodan::Net::Models::Location']]] +]; diff --git a/search/properties_6.html b/search/properties_6.html new file mode 100644 index 0000000..1ddb3ad --- /dev/null +++ b/search/properties_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/properties_6.js b/search/properties_6.js new file mode 100644 index 0000000..43f6fe8 --- /dev/null +++ b/search/properties_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['opts',['Opts',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a3ce63fe08d559475dfb16ce8bfbf8bcc',1,'Shodan::Net::Models::Banner']]], + ['org',['Org',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a8dc591fa293540ef501c94c7494b9349',1,'Shodan::Net::Models::Banner']]], + ['os',['Os',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a950a8636525e9a69bbcc6da20e8cc8f0',1,'Shodan::Net::Models::Banner']]] +]; diff --git a/search/properties_7.html b/search/properties_7.html new file mode 100644 index 0000000..216fe34 --- /dev/null +++ b/search/properties_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/properties_7.js b/search/properties_7.js new file mode 100644 index 0000000..c4aad9c --- /dev/null +++ b/search/properties_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['port',['Port',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a6b65699ba0716a2615b3d080d519e738',1,'Shodan::Net::Models::Banner']]], + ['postalcode',['PostalCode',['../class_shodan_1_1_net_1_1_models_1_1_location.html#a7555263499aa7305d4de578884113685',1,'Shodan::Net::Models::Location']]] +]; diff --git a/search/properties_8.html b/search/properties_8.html new file mode 100644 index 0000000..d9365ad --- /dev/null +++ b/search/properties_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/properties_8.js b/search/properties_8.js new file mode 100644 index 0000000..72786c5 --- /dev/null +++ b/search/properties_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['regioncode',['RegionCode',['../class_shodan_1_1_net_1_1_models_1_1_location.html#aa1c2dc80183fd5562b740aa8746d8902',1,'Shodan::Net::Models::Location']]] +]; diff --git a/search/properties_9.html b/search/properties_9.html new file mode 100644 index 0000000..4726899 --- /dev/null +++ b/search/properties_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/properties_9.js b/search/properties_9.js new file mode 100644 index 0000000..769dc95 --- /dev/null +++ b/search/properties_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['timestamp',['Timestamp',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a7428b44184cf2edd5c618bdcbf6b8e7f',1,'Shodan::Net::Models::Banner']]], + ['transport',['Transport',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#aa81a7f912e5c0bd114c251dbb3052b19',1,'Shodan::Net::Models::Banner']]] +]; diff --git a/search/properties_a.html b/search/properties_a.html new file mode 100644 index 0000000..b1a967e --- /dev/null +++ b/search/properties_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/properties_a.js b/search/properties_a.js new file mode 100644 index 0000000..70a84cc --- /dev/null +++ b/search/properties_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['uptime',['Uptime',['../class_shodan_1_1_net_1_1_models_1_1_banner.html#a7b78561e2e36267a466264aeee59e845',1,'Shodan::Net::Models::Banner']]] +]; diff --git a/search/properties_b.html b/search/properties_b.html new file mode 100644 index 0000000..8886f3a --- /dev/null +++ b/search/properties_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/properties_b.js b/search/properties_b.js new file mode 100644 index 0000000..9390f6c --- /dev/null +++ b/search/properties_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['versions',['Versions',['../class_shodan_1_1_net_1_1_models_1_1_ssl_properties.html#ac9f0f72b060435abd66ea804d52a373e',1,'Shodan::Net::Models::SslProperties']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 0000000..4d7612f --- /dev/null +++ b/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102; + background-color: white; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:111px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 1; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 0000000..dedce3b --- /dev/null +++ b/search/search.js @@ -0,0 +1,791 @@ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e