Files
Shodan.Net.Docs/class_shodan_1_1_net_1_1_shodan_client.html
Tommy Parnell e8a6dde7cd init
2016-05-21 14:19:18 -04:00

900 lines
84 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Showdan.Net: Shodan.Net.ShodanClient Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Showdan.Net
</div>
<div id="projectbrief">c# client for the shodan api</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespace_shodan.html">Shodan</a></li><li class="navelem"><a class="el" href="namespace_shodan_1_1_net.html">Net</a></li><li class="navelem"><a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html">ShodanClient</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="class_shodan_1_1_net_1_1_shodan_client-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Shodan.Net.ShodanClient Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Main mechanism to talk to the shodan api. This is what you should use to interact with the api
<a href="class_shodan_1_1_net_1_1_shodan_client.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for Shodan.Net.ShodanClient:</div>
<div class="dyncontent">
<div class="center">
<img src="class_shodan_1_1_net_1_1_shodan_client.png" usemap="#Shodan.Net.ShodanClient_map" alt=""/>
<map id="Shodan.Net.ShodanClient_map" name="Shodan.Net.ShodanClient_map">
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a98eb217035f985fbf662bb0bb196555b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98eb217035f985fbf662bb0bb196555b"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>ShodanClient</b> (string apikey)</td></tr>
<tr class="separator:a98eb217035f985fbf662bb0bb196555b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a200d6fa98c71f5bdfffc0102dfdf82e1"><td class="memItemLeft" align="right" valign="top">Task&lt; Dictionary&lt; string, string &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#a200d6fa98c71f5bdfffc0102dfdf82e1">DnsLookupAsync</a> (string hostnames)</td></tr>
<tr class="memdesc:a200d6fa98c71f5bdfffc0102dfdf82e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Look up the IP address for the provided list of hostnames. <a href="#a200d6fa98c71f5bdfffc0102dfdf82e1">More...</a><br /></td></tr>
<tr class="separator:a200d6fa98c71f5bdfffc0102dfdf82e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3414bf81a8cc2dd1221bc1b454e85aa"><td class="memItemLeft" align="right" valign="top">Task&lt; <a class="el" href="class_shodan_1_1_net_1_1_models_1_1_search_host_results.html">SearchHostResults</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#ae3414bf81a8cc2dd1221bc1b454e85aa">SearchHosts</a> (Action&lt; <a class="el" href="class_shodan_1_1_net_1_1_query_generator.html">QueryGenerator</a> &gt; query, Action&lt; <a class="el" href="class_shodan_1_1_net_1_1_facet_generator.html">FacetGenerator</a> &gt; facet=null, int page=1, bool minify=true)</td></tr>
<tr class="memdesc:ae3414bf81a8cc2dd1221bc1b454e85aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search <a class="el" href="namespace_shodan.html">Shodan</a> 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: <a href="#ae3414bf81a8cc2dd1221bc1b454e85aa">More...</a><br /></td></tr>
<tr class="separator:ae3414bf81a8cc2dd1221bc1b454e85aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15a00af0533396e7f6c54ed515f29254"><td class="memItemLeft" align="right" valign="top">Task&lt; <a class="el" href="class_shodan_1_1_net_1_1_models_1_1_search_host_results.html">SearchHostResults</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#a15a00af0533396e7f6c54ed515f29254">SearchHostsCount</a> (Action&lt; <a class="el" href="class_shodan_1_1_net_1_1_query_generator.html">QueryGenerator</a> &gt; query, Action&lt; <a class="el" href="class_shodan_1_1_net_1_1_facet_generator.html">FacetGenerator</a> &gt; facet=null)</td></tr>
<tr class="memdesc:a15a00af0533396e7f6c54ed515f29254"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="#a15a00af0533396e7f6c54ed515f29254">More...</a><br /></td></tr>
<tr class="separator:a15a00af0533396e7f6c54ed515f29254"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0bfc76b716b0bb6b069736325fcce5f9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0bfc76b716b0bb6b069736325fcce5f9"></a>
Task&lt; <a class="el" href="class_shodan_1_1_net_1_1_models_1_1_search_tokens.html">SearchTokens</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>SearchTokens</b> (Action&lt; <a class="el" href="class_shodan_1_1_net_1_1_query_generator.html">QueryGenerator</a> &gt; query)</td></tr>
<tr class="separator:a0bfc76b716b0bb6b069736325fcce5f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae29f6125c56b7c7e76b0bd3b3929ddf3"><td class="memItemLeft" align="right" valign="top">async Task&lt; double &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#ae29f6125c56b7c7e76b0bd3b3929ddf3">Experimental_GetHoneyPotScoreAsync</a> (string ip)</td></tr>
<tr class="memdesc:ae29f6125c56b7c7e76b0bd3b3929ddf3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates a honeypot probability score ranging from 0 (not a honeypot) to 1.0 (is a honeypot). <a href="#ae29f6125c56b7c7e76b0bd3b3929ddf3">More...</a><br /></td></tr>
<tr class="separator:ae29f6125c56b7c7e76b0bd3b3929ddf3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ee27d33c7a978a5a53dc0b4582c2c75"><td class="memItemLeft" align="right" valign="top">Task&lt; <a class="el" href="class_shodan_1_1_net_1_1_models_1_1_api_status.html">ApiStatus</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#a4ee27d33c7a978a5a53dc0b4582c2c75">GetApiStatusAsync</a> ()</td></tr>
<tr class="memdesc:a4ee27d33c7a978a5a53dc0b4582c2c75"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns information about the API plan belonging to the given API key. <a href="#a4ee27d33c7a978a5a53dc0b4582c2c75">More...</a><br /></td></tr>
<tr class="separator:a4ee27d33c7a978a5a53dc0b4582c2c75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9803bb3590247140eaa74da5ca3de2ef"><td class="memItemLeft" align="right" valign="top">Task&lt; <a class="el" href="class_shodan_1_1_net_1_1_models_1_1_host.html">Host</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#a9803bb3590247140eaa74da5ca3de2ef">GetHostAsync</a> (string Ip, bool history=false, bool minify=false)</td></tr>
<tr class="memdesc:a9803bb3590247140eaa74da5ca3de2ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns all services that have been found on the given host IP. <a href="#a9803bb3590247140eaa74da5ca3de2ef">More...</a><br /></td></tr>
<tr class="separator:a9803bb3590247140eaa74da5ca3de2ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad90503a5e455ad47d4a7b7defd544dc"><td class="memItemLeft" align="right" valign="top">Task&lt; string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#aad90503a5e455ad47d4a7b7defd544dc">GetMyIpAsync</a> ()</td></tr>
<tr class="memdesc:aad90503a5e455ad47d4a7b7defd544dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get your current IP address as seen from the Internet. <a href="#aad90503a5e455ad47d4a7b7defd544dc">More...</a><br /></td></tr>
<tr class="separator:aad90503a5e455ad47d4a7b7defd544dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a53e54683111f4919574c961688c2d3ba"><td class="memItemLeft" align="right" valign="top">Task&lt; List&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#a53e54683111f4919574c961688c2d3ba">GetPortsAsync</a> ()</td></tr>
<tr class="memdesc:a53e54683111f4919574c961688c2d3ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method returns a list of port numbers that the crawlers are looking for. <a href="#a53e54683111f4919574c961688c2d3ba">More...</a><br /></td></tr>
<tr class="separator:a53e54683111f4919574c961688c2d3ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f9290ba4284a05aacc2651d3b3ad0c6"><td class="memItemLeft" align="right" valign="top">Task&lt; <a class="el" href="class_shodan_1_1_net_1_1_models_1_1_profile.html">Profile</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#a0f9290ba4284a05aacc2651d3b3ad0c6">GetProfileAsync</a> ()</td></tr>
<tr class="memdesc:a0f9290ba4284a05aacc2651d3b3ad0c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns information about the <a class="el" href="namespace_shodan.html">Shodan</a> account linked to this API key. <a href="#a0f9290ba4284a05aacc2651d3b3ad0c6">More...</a><br /></td></tr>
<tr class="separator:a0f9290ba4284a05aacc2651d3b3ad0c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabd3a9ec7fec6c3674fbab98d4a80a5d"><td class="memItemLeft" align="right" valign="top">Task&lt; Dictionary&lt; string, string &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#aabd3a9ec7fec6c3674fbab98d4a80a5d">GetProtocolsAsync</a> ()</td></tr>
<tr class="memdesc:aabd3a9ec7fec6c3674fbab98d4a80a5d"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method returns an object containing all the protocols that can be used when launching an Internet scan. <a href="#aabd3a9ec7fec6c3674fbab98d4a80a5d">More...</a><br /></td></tr>
<tr class="separator:aabd3a9ec7fec6c3674fbab98d4a80a5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a383f4813c0313ed125a183902afb6778"><td class="memItemLeft" align="right" valign="top">Task&lt; <a class="el" href="class_shodan_1_1_net_1_1_models_1_1_search_queries.html">SearchQueries</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#a383f4813c0313ed125a183902afb6778">GetQueriesAsync</a> (int?page=null, <a class="el" href="namespace_shodan_1_1_net.html#a2806da955790b24fc0b1bd36ba0be58e">SortOptions</a>?sort=null, <a class="el" href="namespace_shodan_1_1_net.html#a38b3a0c77706a0af84feb8de26c4c69f">OrderOption</a>?order=null)</td></tr>
<tr class="memdesc:a383f4813c0313ed125a183902afb6778"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use this method to obtain a list of search queries that users have saved in <a class="el" href="namespace_shodan.html">Shodan</a>. <a href="#a383f4813c0313ed125a183902afb6778">More...</a><br /></td></tr>
<tr class="separator:a383f4813c0313ed125a183902afb6778"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf91954aedc17dac889a3224b31a403d"><td class="memItemLeft" align="right" valign="top">Task&lt; <a class="el" href="class_shodan_1_1_net_1_1_models_1_1_search_queries.html">SearchQueries</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#acf91954aedc17dac889a3224b31a403d">SearchQueriesAsync</a> (string query, int?page=null)</td></tr>
<tr class="memdesc:acf91954aedc17dac889a3224b31a403d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use this method to search the directory of search queries that users have saved in <a class="el" href="namespace_shodan.html">Shodan</a>. <a href="#acf91954aedc17dac889a3224b31a403d">More...</a><br /></td></tr>
<tr class="separator:acf91954aedc17dac889a3224b31a403d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c07668e7d2ef68dd6c5e13d35f672eb"><td class="memItemLeft" align="right" valign="top">Task&lt; <a class="el" href="class_shodan_1_1_net_1_1_models_1_1_scan_status.html">ScanStatus</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#a2c07668e7d2ef68dd6c5e13d35f672eb">GetScanStatusAsync</a> (string id)</td></tr>
<tr class="memdesc:a2c07668e7d2ef68dd6c5e13d35f672eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check the progress of a previously submitted scan request <a href="#a2c07668e7d2ef68dd6c5e13d35f672eb">More...</a><br /></td></tr>
<tr class="separator:a2c07668e7d2ef68dd6c5e13d35f672eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8065940695b0e3097720c8ed8a158e8a"><td class="memItemLeft" align="right" valign="top">Task&lt; Dictionary&lt; string, string &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#a8065940695b0e3097720c8ed8a158e8a">GetServicesAsync</a> ()</td></tr>
<tr class="memdesc:a8065940695b0e3097720c8ed8a158e8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method returns an object containing all the services that the <a class="el" href="namespace_shodan.html">Shodan</a> 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 <a href="#a8065940695b0e3097720c8ed8a158e8a">More...</a><br /></td></tr>
<tr class="separator:a8065940695b0e3097720c8ed8a158e8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0800fb920b0bf8d770f10b4477214e49"><td class="memItemLeft" align="right" valign="top">Task&lt; <a class="el" href="class_shodan_1_1_net_1_1_models_1_1_tag_result.html">TagResult</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#a0800fb920b0bf8d770f10b4477214e49">GetTagsAsync</a> (int size=10)</td></tr>
<tr class="memdesc:a0800fb920b0bf8d770f10b4477214e49"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use this method to obtain a list of popular tags for the saved search queries in <a class="el" href="namespace_shodan.html">Shodan</a>. <a href="#a0800fb920b0bf8d770f10b4477214e49">More...</a><br /></td></tr>
<tr class="separator:a0800fb920b0bf8d770f10b4477214e49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a863f48b2c8b407064be6572df7c6878e"><td class="memItemLeft" align="right" valign="top">Task&lt; <a class="el" href="class_shodan_1_1_net_1_1_models_1_1_scan_port_result.html">ScanPortResult</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#a863f48b2c8b407064be6572df7c6878e">RequestInternetPortScanAsync</a> (int port, string protocol)</td></tr>
<tr class="memdesc:a863f48b2c8b407064be6572df7c6878e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use this method to request <a class="el" href="namespace_shodan.html">Shodan</a> to crawl the Internet for a specific port. This method is restricted to security researchers and companies with a <a class="el" href="namespace_shodan.html">Shodan</a> Data license. To apply for access to this method as a researcher, please email <a href="#" onclick="location.href='mai'+'lto:'+'jma'+'th'+'@sh'+'od'+'an.'+'io'; return false;">jmath<span style="display: none;">.nosp@m.</span>@sho<span style="display: none;">.nosp@m.</span>dan.i<span style="display: none;">.nosp@m.</span>o</a> with information about your project. Access is restricted to prevent abuse. <a href="#a863f48b2c8b407064be6572df7c6878e">More...</a><br /></td></tr>
<tr class="separator:a863f48b2c8b407064be6572df7c6878e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b70e2928a23ce37b62d8abd4edc3652"><td class="memItemLeft" align="right" valign="top">Task&lt; <a class="el" href="class_shodan_1_1_net_1_1_models_1_1_scan_result.html">ScanResult</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#a2b70e2928a23ce37b62d8abd4edc3652">RequstScanAsync</a> (string ips)</td></tr>
<tr class="memdesc:a2b70e2928a23ce37b62d8abd4edc3652"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use this method to request <a class="el" href="namespace_shodan.html">Shodan</a> to crawl a network <b>Requirements:</b> 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 <a href="#a2b70e2928a23ce37b62d8abd4edc3652">More...</a><br /></td></tr>
<tr class="separator:a2b70e2928a23ce37b62d8abd4edc3652"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4fe2a9bce7de571476143847d3fedf0"><td class="memItemLeft" align="right" valign="top">Task&lt; Dictionary&lt; string, List&lt; string &gt; &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#ac4fe2a9bce7de571476143847d3fedf0">ReverseLookupAsync</a> (string ips)</td></tr>
<tr class="memdesc:ac4fe2a9bce7de571476143847d3fedf0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Look up the hostnames that have been defined for the given list of IP addresses <a href="#ac4fe2a9bce7de571476143847d3fedf0">More...</a><br /></td></tr>
<tr class="separator:ac4fe2a9bce7de571476143847d3fedf0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7bbfaf971fcfc4d393ec540042f67d20"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7bbfaf971fcfc4d393ec540042f67d20"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Dispose</b> ()</td></tr>
<tr class="separator:a7bbfaf971fcfc4d393ec540042f67d20"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:ab9f68ccb9c175756a33d882e75edeba6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab9f68ccb9c175756a33d882e75edeba6"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>Dispose</b> (bool disposing)</td></tr>
<tr class="separator:ab9f68ccb9c175756a33d882e75edeba6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Main mechanism to talk to the shodan api. This is what you should use to interact with the api </p>
<p>Definition at line <a class="el" href="_shodan_client_8cs_source.html#l00017">17</a> of file <a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a200d6fa98c71f5bdfffc0102dfdf82e1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Task&lt;Dictionary&lt;string, string&gt; &gt; Shodan.Net.ShodanClient.DnsLookupAsync </td>
<td>(</td>
<td class="paramtype">string&#160;</td>
<td class="paramname"><em>hostnames</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Look up the IP address for the provided list of hostnames. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">hostnames</td><td>Comma-separated list of hostnames; example "google.com,bing.com" </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
<p>Definition at line <a class="el" href="_shodan_client_8cs_source.html#l00045">45</a> of file <a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a>.</p>
<div class="fragment"><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">if</span>(<span class="keywordtype">string</span>.IsNullOrWhiteSpace(hostnames))</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentNullException(hostnames);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; var url = <span class="keyword">new</span> Uri($<span class="stringliteral">&quot;{BasePath}/dns/resolve?hostnames={hostnames}&amp;key={this.apikey}&quot;</span>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> RequestHandler.MakeRequestAsync&lt;Dictionary&lt;string, string&gt;&gt;(url);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div></div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ae29f6125c56b7c7e76b0bd3b3929ddf3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">async Task&lt;double&gt; Shodan.Net.ShodanClient.Experimental_GetHoneyPotScoreAsync </td>
<td>(</td>
<td class="paramtype">string&#160;</td>
<td class="paramname"><em>ip</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculates a honeypot probability score ranging from 0 (not a honeypot) to 1.0 (is a honeypot). </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ip</td><td></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
<p>Definition at line <a class="el" href="_shodan_client_8cs_source.html#l00139">139</a> of file <a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a>.</p>
<div class="fragment"><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span>(<span class="keywordtype">string</span>.IsNullOrWhiteSpace(ip))</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentNullException(nameof(ip));</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; var url = <span class="keyword">new</span> Uri($<span class="stringliteral">&quot;{BasePath}/labs/honeyscore/{ip}?key={apikey}&quot;</span>);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; var result = await RequestHandler.MakeRequestAsync&lt;<span class="keywordtype">string</span>&gt;(url);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordtype">double</span> resultParsed;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">if</span>(!<span class="keywordtype">double</span>.TryParse(result, out resultParsed))</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">throw</span> <span class="keyword">new</span> ShodanException($<span class="stringliteral">&quot;honeypot score returned with {result} failed to parse to double&quot;</span>);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> resultParsed;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div></div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a4ee27d33c7a978a5a53dc0b4582c2c75"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Task&lt;<a class="el" href="class_shodan_1_1_net_1_1_models_1_1_api_status.html">ApiStatus</a>&gt; Shodan.Net.ShodanClient.GetApiStatusAsync </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns information about the API plan belonging to the given API key. </p>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
<p>Definition at line <a class="el" href="_shodan_client_8cs_source.html#l00159">159</a> of file <a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a>.</p>
<div class="fragment"><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; var url = <span class="keyword">new</span> Uri($<span class="stringliteral">&quot;{BasePath}/api-info?key={apikey}&quot;</span>);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">return</span> RequestHandler.MakeRequestAsync&lt;<a class="code" href="class_shodan_1_1_net_1_1_models_1_1_api_status.html">ApiStatus</a>&gt;(url);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div><div class="ttc" id="class_shodan_1_1_net_1_1_models_1_1_api_status_html"><div class="ttname"><a href="class_shodan_1_1_net_1_1_models_1_1_api_status.html">Shodan.Net.Models.ApiStatus</a></div><div class="ttdoc">Returns information about the API plan belonging to the given API key. </div><div class="ttdef"><b>Definition:</b> <a href="_api_status_8cs_source.html#l00013">ApiStatus.cs:13</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a9803bb3590247140eaa74da5ca3de2ef"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Task&lt;<a class="el" href="class_shodan_1_1_net_1_1_models_1_1_host.html">Host</a>&gt; Shodan.Net.ShodanClient.GetHostAsync </td>
<td>(</td>
<td class="paramtype">string&#160;</td>
<td class="paramname"><em>Ip</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>history</em> = <code>false</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>minify</em> = <code>false</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns all services that have been found on the given host IP. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">Ip</td><td>Host IP address</td></tr>
<tr><td class="paramname">history</td><td>True if all historical banners should be returned (default: False) </td></tr>
<tr><td class="paramname">minify</td><td>True to only return the list of ports and the general host information, no banners. (default: False) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
<p>Definition at line <a class="el" href="_shodan_client_8cs_source.html#l00172">172</a> of file <a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a>.</p>
<div class="fragment"><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span>(<span class="keywordtype">string</span>.IsNullOrWhiteSpace(Ip))</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentNullException(nameof(Ip));</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; var builder = <span class="keyword">new</span> UriBuilder($<span class="stringliteral">&quot;{BasePath}/shodan/host/{Ip}&quot;</span>)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; Query = $<span class="stringliteral">&quot;key={this.apikey}&amp;history={history.ToString()}&amp;minify={minify.ToString()}&quot;</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; };</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> RequestHandler.MakeRequestAsync&lt;<a class="code" href="class_shodan_1_1_net_1_1_models_1_1_host.html">Host</a>&gt;(builder.Uri);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div><div class="ttc" id="class_shodan_1_1_net_1_1_models_1_1_host_html"><div class="ttname"><a href="class_shodan_1_1_net_1_1_models_1_1_host.html">Shodan.Net.Models.Host</a></div><div class="ttdoc">Represents return data for querying hosts </div><div class="ttdef"><b>Definition:</b> <a href="_host_8cs_source.html#l00013">Host.cs:13</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="aad90503a5e455ad47d4a7b7defd544dc"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Task&lt;string&gt; Shodan.Net.ShodanClient.GetMyIpAsync </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get your current IP address as seen from the Internet. </p>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
<p>Definition at line <a class="el" href="_shodan_client_8cs_source.html#l00190">190</a> of file <a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a>.</p>
<div class="fragment"><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; var url = <span class="keyword">new</span> Uri($<span class="stringliteral">&quot;{BasePath}/tools/myip?key={this.apikey}&quot;</span>);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> RequestHandler.MakeRequestAsync&lt;<span class="keywordtype">string</span>&gt;(url);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div></div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a53e54683111f4919574c961688c2d3ba"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Task&lt;List&lt;int&gt; &gt; Shodan.Net.ShodanClient.GetPortsAsync </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This method returns a list of port numbers that the crawlers are looking for. </p>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
<p>Definition at line <a class="el" href="_shodan_client_8cs_source.html#l00200">200</a> of file <a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a>.</p>
<div class="fragment"><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; var builder = <span class="keyword">new</span> Uri($<span class="stringliteral">&quot;{BasePath}/shodan/ports?key={this.apikey}&quot;</span>);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> RequestHandler.MakeRequestAsync&lt;List&lt;int&gt;&gt;(builder);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div></div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a0f9290ba4284a05aacc2651d3b3ad0c6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Task&lt;<a class="el" href="class_shodan_1_1_net_1_1_models_1_1_profile.html">Profile</a>&gt; Shodan.Net.ShodanClient.GetProfileAsync </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns information about the <a class="el" href="namespace_shodan.html">Shodan</a> account linked to this API key. </p>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
<p>Definition at line <a class="el" href="_shodan_client_8cs_source.html#l00210">210</a> of file <a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a>.</p>
<div class="fragment"><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; var url = <span class="keyword">new</span> Uri($<span class="stringliteral">&quot;{BasePath}/account/profile?key={apikey}&quot;</span>);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> RequestHandler.MakeRequestAsync&lt;<a class="code" href="class_shodan_1_1_net_1_1_models_1_1_profile.html">Profile</a>&gt;(url);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div><div class="ttc" id="class_shodan_1_1_net_1_1_models_1_1_profile_html"><div class="ttname"><a href="class_shodan_1_1_net_1_1_models_1_1_profile.html">Shodan.Net.Models.Profile</a></div><div class="ttdoc">Represents data about your profile </div><div class="ttdef"><b>Definition:</b> <a href="_profile_8cs_source.html#l00013">Profile.cs:13</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="aabd3a9ec7fec6c3674fbab98d4a80a5d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Task&lt;Dictionary&lt;string, string&gt; &gt; Shodan.Net.ShodanClient.GetProtocolsAsync </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This method returns an object containing all the protocols that can be used when launching an Internet scan. </p>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
<p>Definition at line <a class="el" href="_shodan_client_8cs_source.html#l00220">220</a> of file <a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a>.</p>
<div class="fragment"><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; var url = <span class="keyword">new</span> Uri($<span class="stringliteral">&quot;{BasePath}/shodan/protocols?key={this.apikey}&quot;</span>);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> RequestHandler.MakeRequestAsync&lt;Dictionary&lt;string, string&gt;&gt;(url);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div></div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a383f4813c0313ed125a183902afb6778"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Task&lt;<a class="el" href="class_shodan_1_1_net_1_1_models_1_1_search_queries.html">SearchQueries</a>&gt; Shodan.Net.ShodanClient.GetQueriesAsync </td>
<td>(</td>
<td class="paramtype">int?&#160;</td>
<td class="paramname"><em>page</em> = <code>null</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespace_shodan_1_1_net.html#a2806da955790b24fc0b1bd36ba0be58e">SortOptions</a>?&#160;</td>
<td class="paramname"><em>sort</em> = <code>null</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespace_shodan_1_1_net.html#a38b3a0c77706a0af84feb8de26c4c69f">OrderOption</a>?&#160;</td>
<td class="paramname"><em>order</em> = <code>null</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Use this method to obtain a list of search queries that users have saved in <a class="el" href="namespace_shodan.html">Shodan</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">page</td><td>Page number to iterate over results; each page contains 10 items </td></tr>
<tr><td class="paramname">sort</td><td>Sort the list based on a property. Possible values are: votes, timestamp </td></tr>
<tr><td class="paramname">order</td><td>Whether to sort the list in ascending or descending order. Possible values are: asc, desc </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
<p>Definition at line <a class="el" href="_shodan_client_8cs_source.html#l00233">233</a> of file <a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a>.</p>
<div class="fragment"><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; var url = <span class="keyword">new</span> UriBuilder($<span class="stringliteral">&quot;{BasePath}/shodan/query&quot;</span>)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; Query = $<span class="stringliteral">&quot;key={apikey}&quot;</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; };</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">if</span>(sort.HasValue)</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; var sortName = Enum.GetName(typeof(<a class="code" href="namespace_shodan_1_1_net.html#a2806da955790b24fc0b1bd36ba0be58e">SortOptions</a>), sort.Value);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; url.Query = $<span class="stringliteral">&quot;{url.Query}&amp;sort={sortName}&quot;</span>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">if</span>(order.HasValue)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; var orderName = Enum.GetName(typeof(<a class="code" href="namespace_shodan_1_1_net.html#a38b3a0c77706a0af84feb8de26c4c69f">OrderOption</a>), order.Value);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; url.Query = $<span class="stringliteral">&quot;{url.Query}&amp;order={orderName}&quot;</span>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> RequestHandler.MakeRequestAsync&lt;<a class="code" href="class_shodan_1_1_net_1_1_models_1_1_search_queries.html">SearchQueries</a>&gt;(url.Uri);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div><div class="ttc" id="class_shodan_1_1_net_1_1_models_1_1_search_queries_html"><div class="ttname"><a href="class_shodan_1_1_net_1_1_models_1_1_search_queries.html">Shodan.Net.Models.SearchQueries</a></div><div class="ttdoc">Result of ShodanClient.GetQueriesAsync(int?, SortOptions?, OrderOption?) and ShodanClient.SearchQueriesAsync(string, int?)</div><div class="ttdef"><b>Definition:</b> <a href="_search_queries_8cs_source.html#l00035">SearchQueries.cs:35</a></div></div>
<div class="ttc" id="namespace_shodan_1_1_net_html_a38b3a0c77706a0af84feb8de26c4c69f"><div class="ttname"><a href="namespace_shodan_1_1_net.html#a38b3a0c77706a0af84feb8de26c4c69f">Shodan.Net.OrderOption</a></div><div class="ttdeci">OrderOption</div><div class="ttdoc">Represents an order of either ascending or descending </div><div class="ttdef"><b>Definition:</b> <a href="_order_option_8cs_source.html#l00011">OrderOption.cs:11</a></div></div>
<div class="ttc" id="namespace_shodan_1_1_net_html_a2806da955790b24fc0b1bd36ba0be58e"><div class="ttname"><a href="namespace_shodan_1_1_net.html#a2806da955790b24fc0b1bd36ba0be58e">Shodan.Net.SortOptions</a></div><div class="ttdeci">SortOptions</div><div class="ttdoc">Represents an option to sort </div><div class="ttdef"><b>Definition:</b> <a href="_sort_options_8cs_source.html#l00011">SortOptions.cs:11</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a2c07668e7d2ef68dd6c5e13d35f672eb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Task&lt;<a class="el" href="class_shodan_1_1_net_1_1_models_1_1_scan_status.html">ScanStatus</a>&gt; Shodan.Net.ShodanClient.GetScanStatusAsync </td>
<td>(</td>
<td class="paramtype">string&#160;</td>
<td class="paramname"><em>id</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Check the progress of a previously submitted scan request </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">id</td><td>the unique scan ID that was returned by <a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#a2b70e2928a23ce37b62d8abd4edc3652" title="Use this method to request Shodan to crawl a network Requirements: This method uses API scan credits:...">RequstScanAsync(string)</a></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
<p>Definition at line <a class="el" href="_shodan_client_8cs_source.html#l00280">280</a> of file <a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a>.</p>
<div class="fragment"><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span>(<span class="keywordtype">string</span>.IsNullOrWhiteSpace(<span class="keywordtype">id</span>))</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentNullException(nameof(<span class="keywordtype">id</span>));</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; var url = <span class="keyword">new</span> Uri($<span class="stringliteral">&quot;{BasePath}/shodan/scan/{id}&quot;</span>);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">return</span> RequestHandler.MakeRequestAsync&lt;<a class="code" href="class_shodan_1_1_net_1_1_models_1_1_scan_status.html">ScanStatus</a>&gt;(url);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div><div class="ttc" id="class_shodan_1_1_net_1_1_models_1_1_scan_status_html"><div class="ttname"><a href="class_shodan_1_1_net_1_1_models_1_1_scan_status.html">Shodan.Net.Models.ScanStatus</a></div><div class="ttdoc">Result of ShodanClient.GetScanStatusAsync(string) </div><div class="ttdef"><b>Definition:</b> <a href="_scan_status_8cs_source.html#l00014">ScanStatus.cs:14</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a8065940695b0e3097720c8ed8a158e8a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Task&lt;Dictionary&lt;string, string&gt; &gt; Shodan.Net.ShodanClient.GetServicesAsync </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This method returns an object containing all the services that the <a class="el" href="namespace_shodan.html">Shodan</a> 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 </p>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
<p>Definition at line <a class="el" href="_shodan_client_8cs_source.html#l00294">294</a> of file <a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a>.</p>
<div class="fragment"><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; var url = <span class="keyword">new</span> Uri($<span class="stringliteral">&quot;{BasePath}/shodan/services?key={this.apikey}&quot;</span>);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">return</span> RequestHandler.MakeRequestAsync&lt;Dictionary&lt;string, string&gt;&gt;(url);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div></div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a0800fb920b0bf8d770f10b4477214e49"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Task&lt;<a class="el" href="class_shodan_1_1_net_1_1_models_1_1_tag_result.html">TagResult</a>&gt; Shodan.Net.ShodanClient.GetTagsAsync </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>size</em> = <code>10</code></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Use this method to obtain a list of popular tags for the saved search queries in <a class="el" href="namespace_shodan.html">Shodan</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">size</td><td>The number of tags to return </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
<p>Definition at line <a class="el" href="_shodan_client_8cs_source.html#l00305">305</a> of file <a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a>.</p>
<div class="fragment"><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; var url = <span class="keyword">new</span> UriBuilder($<span class="stringliteral">&quot;{BasePath}/shodan/query/tags&quot;</span>)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; Query = $<span class="stringliteral">&quot;key={apikey}&amp;size={size}&quot;</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; };</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">return</span> RequestHandler.MakeRequestAsync&lt;<a class="code" href="class_shodan_1_1_net_1_1_models_1_1_tag_result.html">TagResult</a>&gt;(url.Uri);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div><div class="ttc" id="class_shodan_1_1_net_1_1_models_1_1_tag_result_html"><div class="ttname"><a href="class_shodan_1_1_net_1_1_models_1_1_tag_result.html">Shodan.Net.Models.TagResult</a></div><div class="ttdoc">result of ShodanClient.GetTagsAsync(int) </div><div class="ttdef"><b>Definition:</b> <a href="_tag_result_8cs_source.html#l00013">TagResult.cs:13</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a863f48b2c8b407064be6572df7c6878e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Task&lt;<a class="el" href="class_shodan_1_1_net_1_1_models_1_1_scan_port_result.html">ScanPortResult</a>&gt; Shodan.Net.ShodanClient.RequestInternetPortScanAsync </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">string&#160;</td>
<td class="paramname"><em>protocol</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Use this method to request <a class="el" href="namespace_shodan.html">Shodan</a> to crawl the Internet for a specific port. This method is restricted to security researchers and companies with a <a class="el" href="namespace_shodan.html">Shodan</a> Data license. To apply for access to this method as a researcher, please email <a href="#" onclick="location.href='mai'+'lto:'+'jma'+'th'+'@sh'+'od'+'an.'+'io'; return false;">jmath<span style="display: none;">.nosp@m.</span>@sho<span style="display: none;">.nosp@m.</span>dan.i<span style="display: none;">.nosp@m.</span>o</a> with information about your project. Access is restricted to prevent abuse. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">port</td><td>The port that <a class="el" href="namespace_shodan.html">Shodan</a> should crawl the Internet for. </td></tr>
<tr><td class="paramname">protocol</td><td>The name of the protocol that should be used to interrogate the port. See <a class="el" href="class_shodan_1_1_net_1_1_shodan_client.html#aabd3a9ec7fec6c3674fbab98d4a80a5d" title="This method returns an object containing all the protocols that can be used when launching an Interne...">GetProtocolsAsync</a> for a list of supported protocols. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
<p>Definition at line <a class="el" href="_shodan_client_8cs_source.html#l00321">321</a> of file <a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a>.</p>
<div class="fragment"><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; var url = <span class="keyword">new</span> Uri($<span class="stringliteral">&quot;{BasePath}/shodan/scan/internet?key={this.apikey}&quot;</span>);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keyword">using</span>(var data = <span class="keyword">new</span> FormUrlEncodedContent(<span class="keyword">new</span> List&lt;KeyValuePair&lt;string, string&gt;&gt;() {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">new</span> KeyValuePair&lt;string, string&gt;(<span class="stringliteral">&quot;port&quot;</span>, port.ToString()),</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keyword">new</span> KeyValuePair&lt;string, string&gt;(<span class="stringliteral">&quot;protocol&quot;</span>, protocol)</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }))</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">return</span> RequestHandler.MakeRequestAsync&lt;<a class="code" href="class_shodan_1_1_net_1_1_models_1_1_scan_port_result.html">ScanPortResult</a>&gt;(url, data, RequestType.POST);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div><div class="ttc" id="class_shodan_1_1_net_1_1_models_1_1_scan_port_result_html"><div class="ttname"><a href="class_shodan_1_1_net_1_1_models_1_1_scan_port_result.html">Shodan.Net.Models.ScanPortResult</a></div><div class="ttdoc">result of ShodanClient.RequestInternetPortScanAsync(int, string) </div><div class="ttdef"><b>Definition:</b> <a href="_scan_port_result_8cs_source.html#l00013">ScanPortResult.cs:13</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a2b70e2928a23ce37b62d8abd4edc3652"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Task&lt;<a class="el" href="class_shodan_1_1_net_1_1_models_1_1_scan_result.html">ScanResult</a>&gt; Shodan.Net.ShodanClient.RequstScanAsync </td>
<td>(</td>
<td class="paramtype">string&#160;</td>
<td class="paramname"><em>ips</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Use this method to request <a class="el" href="namespace_shodan.html">Shodan</a> to crawl a network <b>Requirements:</b> 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 </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ips</td><td></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
<p>Definition at line <a class="el" href="_shodan_client_8cs_source.html#l00339">339</a> of file <a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a>.</p>
<div class="fragment"><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">if</span>(<span class="keywordtype">string</span>.IsNullOrWhiteSpace(ips))</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentNullException(nameof(ips));</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">if</span>(!ips.Split(<span class="charliteral">&#39;,&#39;</span>).Any())</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentOutOfRangeException($<span class="stringliteral">&quot;{ips} must have one valid record&quot;</span>);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; var url = <span class="keyword">new</span> Uri($<span class="stringliteral">&quot;{BasePath}/shodan/scan?key={this.apikey}&quot;</span>);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keyword">using</span>(var data = <span class="keyword">new</span> FormUrlEncodedContent(<span class="keyword">new</span> KeyValuePair&lt;string, string&gt;[] { <span class="keyword">new</span> KeyValuePair&lt;string, string&gt;(<span class="stringliteral">&quot;ips&quot;</span>, ips) }))</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> RequestHandler.MakeRequestAsync&lt;<a class="code" href="class_shodan_1_1_net_1_1_models_1_1_scan_result.html">ScanResult</a>&gt;(url, data, RequestType.POST);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="ttc" id="class_shodan_1_1_net_1_1_models_1_1_scan_result_html"><div class="ttname"><a href="class_shodan_1_1_net_1_1_models_1_1_scan_result.html">Shodan.Net.Models.ScanResult</a></div><div class="ttdoc">result of ShodanClient.RequstScanAsync(string) </div><div class="ttdef"><b>Definition:</b> <a href="_scan_result_8cs_source.html#l00013">ScanResult.cs:13</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ac4fe2a9bce7de571476143847d3fedf0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Task&lt;Dictionary&lt;string, List&lt;string&gt; &gt; &gt; Shodan.Net.ShodanClient.ReverseLookupAsync </td>
<td>(</td>
<td class="paramtype">string&#160;</td>
<td class="paramname"><em>ips</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Look up the hostnames that have been defined for the given list of IP addresses </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ips</td><td>Comma-separated list of IP addresses; example "74.125.227.230,204.79.197.200"</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
<p>Definition at line <a class="el" href="_shodan_client_8cs_source.html#l00361">361</a> of file <a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a>.</p>
<div class="fragment"><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">if</span>(<span class="keywordtype">string</span>.IsNullOrWhiteSpace(ips))</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentNullException(ips);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; var url = <span class="keyword">new</span> Uri($<span class="stringliteral">&quot;{BasePath}/dns/reverse?ips={ips}&amp;key={this.apikey}&quot;</span>);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">return</span> RequestHandler.MakeRequestAsync&lt;Dictionary&lt;string, List&lt;string&gt;&gt;&gt;(url);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div></div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ae3414bf81a8cc2dd1221bc1b454e85aa"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Task&lt;<a class="el" href="class_shodan_1_1_net_1_1_models_1_1_search_host_results.html">SearchHostResults</a>&gt; Shodan.Net.ShodanClient.SearchHosts </td>
<td>(</td>
<td class="paramtype">Action&lt; <a class="el" href="class_shodan_1_1_net_1_1_query_generator.html">QueryGenerator</a> &gt;&#160;</td>
<td class="paramname"><em>query</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Action&lt; <a class="el" href="class_shodan_1_1_net_1_1_facet_generator.html">FacetGenerator</a> &gt;&#160;</td>
<td class="paramname"><em>facet</em> = <code>null</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>page</em> = <code>1</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>minify</em> = <code>true</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Search <a class="el" href="namespace_shodan.html">Shodan</a> 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: </p>
<ol type="1">
<li>The search query contains a filter.</li>
<li>Accessing results past the 1st page using the "page". For every 100 results past the 1st page 1 query credit is deducted. </li>
</ol>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">query</td><td>lambda to generate a query. <a class="el" href="namespace_shodan.html">Shodan</a> search query. The provided string is used to search the database of banners in <a class="el" href="namespace_shodan.html">Shodan</a>, with the additional option to provide filters inside the search query using a "filter:value" format.</td></tr>
<tr><td class="paramname">facet</td><td>static class to define facets.</td></tr>
<tr><td class="paramname">page</td><td>The page number to page through results 100 at a time (default: 1) </td></tr>
<tr><td class="paramname">minify</td><td>True or False; whether or not to truncate some of the larger fields (default: True) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
<p>Definition at line <a class="el" href="_shodan_client_8cs_source.html#l00066">66</a> of file <a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a>.</p>
<div class="fragment"><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span>(query == null)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentNullException(nameof(query));</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; var queryGenerator = <span class="keyword">new</span> QueryGenerator();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; query.Invoke(queryGenerator);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; var queryResult = queryGenerator.Generate();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; var url = <span class="keyword">new</span> UriBuilder($<span class="stringliteral">&quot;{BasePath}/shodan/host/search&quot;</span>)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; Query = $<span class="stringliteral">&quot;key={apikey}&amp;query={queryResult}&amp;minify={minify.ToString()}&quot;</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; };</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">if</span>(facet != null)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; var facetGenerator = <span class="keyword">new</span> FacetGenerator();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; facet.Invoke(facetGenerator);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; url.Query = $<span class="stringliteral">&quot;{url.Query}&amp;facets={facetGenerator.GenerateFacets()}&quot;</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">if</span>(page &gt; 1)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; url.Query = $<span class="stringliteral">&quot;{url.Query}&amp;page={page}&quot;</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> RequestHandler.MakeRequestAsync&lt;<a class="code" href="class_shodan_1_1_net_1_1_models_1_1_search_host_results.html">SearchHostResults</a>&gt;(url.Uri);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="ttc" id="class_shodan_1_1_net_1_1_models_1_1_search_host_results_html"><div class="ttname"><a href="class_shodan_1_1_net_1_1_models_1_1_search_host_results.html">Shodan.Net.Models.SearchHostResults</a></div><div class="ttdoc">result of ShodanClient.SearchHosts(SearchQuery, FacetQuery, int, bool) and ShodanClient.SearchHostsCount(SearchQuery, FacetQuery) </div><div class="ttdef"><b>Definition:</b> <a href="_search_host_results_8cs_source.html#l00013">SearchHostResults.cs:13</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a15a00af0533396e7f6c54ed515f29254"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Task&lt;<a class="el" href="class_shodan_1_1_net_1_1_models_1_1_search_host_results.html">SearchHostResults</a>&gt; Shodan.Net.ShodanClient.SearchHostsCount </td>
<td>(</td>
<td class="paramtype">Action&lt; <a class="el" href="class_shodan_1_1_net_1_1_query_generator.html">QueryGenerator</a> &gt;&#160;</td>
<td class="paramname"><em>query</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Action&lt; <a class="el" href="class_shodan_1_1_net_1_1_facet_generator.html">FacetGenerator</a> &gt;&#160;</td>
<td class="paramname"><em>facet</em> = <code>null</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>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. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">query</td><td></td></tr>
<tr><td class="paramname">facet</td><td></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
<p>Definition at line <a class="el" href="_shodan_client_8cs_source.html#l00098">98</a> of file <a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a>.</p>
<div class="fragment"><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">if</span>(query == null)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentNullException(nameof(query));</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; var queryGenObj = <span class="keyword">new</span> QueryGenerator();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; query.Invoke(queryGenObj);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; var url = <span class="keyword">new</span> UriBuilder($<span class="stringliteral">&quot;{BasePath}/shodan/host/count&quot;</span>)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; Query = $<span class="stringliteral">&quot;key={apikey}&amp;query={queryGenObj.Generate()}&quot;</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; };</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">if</span>(facet != null)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; var facetGenObj = <span class="keyword">new</span> FacetGenerator();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; facet.Invoke(facetGenObj);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; url.Query = $<span class="stringliteral">&quot;{url.Query}&amp;facets={facetGenObj.GenerateFacets()}&quot;</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> RequestHandler.MakeRequestAsync&lt;<a class="code" href="class_shodan_1_1_net_1_1_models_1_1_search_host_results.html">SearchHostResults</a>&gt;(url.Uri);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="ttc" id="class_shodan_1_1_net_1_1_models_1_1_search_host_results_html"><div class="ttname"><a href="class_shodan_1_1_net_1_1_models_1_1_search_host_results.html">Shodan.Net.Models.SearchHostResults</a></div><div class="ttdoc">result of ShodanClient.SearchHosts(SearchQuery, FacetQuery, int, bool) and ShodanClient.SearchHostsCount(SearchQuery, FacetQuery) </div><div class="ttdef"><b>Definition:</b> <a href="_search_host_results_8cs_source.html#l00013">SearchHostResults.cs:13</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="acf91954aedc17dac889a3224b31a403d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Task&lt;<a class="el" href="class_shodan_1_1_net_1_1_models_1_1_search_queries.html">SearchQueries</a>&gt; Shodan.Net.ShodanClient.SearchQueriesAsync </td>
<td>(</td>
<td class="paramtype">string&#160;</td>
<td class="paramname"><em>query</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int?&#160;</td>
<td class="paramname"><em>page</em> = <code>null</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Use this method to search the directory of search queries that users have saved in <a class="el" href="namespace_shodan.html">Shodan</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">query</td><td>What to search for in the directory of saved search queries. </td></tr>
<tr><td class="paramname">page</td><td>Page number to iterate over results; each page contains 10 items </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
<p>Definition at line <a class="el" href="_shodan_client_8cs_source.html#l00258">258</a> of file <a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a>.</p>
<div class="fragment"><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">if</span>(<span class="keywordtype">string</span>.IsNullOrWhiteSpace(query))</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentNullException(query);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; var url = <span class="keyword">new</span> UriBuilder($<span class="stringliteral">&quot;{BasePath}/shodan/query/search&quot;</span>)</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; Query = $<span class="stringliteral">&quot;key={apikey}&amp;query={query}&quot;</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; };</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span>(page != null)</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; url.Query = $<span class="stringliteral">&quot;{url.Query}&amp;page={page}&quot;</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span> RequestHandler.MakeRequestAsync&lt;<a class="code" href="class_shodan_1_1_net_1_1_models_1_1_search_queries.html">SearchQueries</a>&gt;(url.Uri);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div><div class="ttc" id="class_shodan_1_1_net_1_1_models_1_1_search_queries_html"><div class="ttname"><a href="class_shodan_1_1_net_1_1_models_1_1_search_queries.html">Shodan.Net.Models.SearchQueries</a></div><div class="ttdoc">Result of ShodanClient.GetQueriesAsync(int?, SortOptions?, OrderOption?) and ShodanClient.SearchQueriesAsync(string, int?)</div><div class="ttdef"><b>Definition:</b> <a href="_search_queries_8cs_source.html#l00035">SearchQueries.cs:35</a></div></div>
</div><!-- fragment -->
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/Shodan.Net/<a class="el" href="_shodan_client_8cs_source.html">ShodanClient.cs</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>