获取有关IP地址的数据

know_your_ip的Python项目详细描述


了解您的IP

https://travis-ci.org/themains/know戥u your戥ip.svg?branch=masterhttps://ci.appveyor.com/api/projects/status/qfvbu8h99ymtw2ub?svg=truehttps://img.shields.io/pypi/v/know_your_ip.svgdocumentation status

获取有关IP地址的数据。了解它们的位置(纬度/经度, 国家、城市、时区),无论是否被列入黑名单(根据 abuseipdb virustotal ipvoid ,等等)和什么(以及什么时候 黑名单),哪些端口打开,哪些服务正在运行(通过 shodan ,以及ping或发出时获得的内容 追踪路线。

如果您对该软件包的潜在应用感兴趣,我们有一个 演示文稿on 它在网络安全分析工作流程中的应用。

你可以用两种不同的方式使用这个包。你可以从外壳中调用它,也可以 将其用作外部库。从shell中,您可以运行 know\u your\ip 。它需要一个csv 只有一列IP地址(示例输入文件: input.csv ), 有关API密钥的详细信息(请参见"know-your-ip/know-your-ip.cfg" rel="nofollow">know-your-ip.cfg) 以及您希望从哪个服务中选择哪些列(在这个示例columns.txt中) 并将请求的结果附加到IP列表(示例输出文件: output.csv )。 这个简单的设置允许您轻松地混合和匹配。

如果要将其用作外部库,包也会提供该功能。查询ip的函数依赖于 在 知道你的IP 的相同配置文件上,并获取一个IP地址。我们在下面说明它的用途。你可以 还可以从特定服务获取数据。例如,如果你只关心获取maxmind数据, 使用 maxmind_geocode_ip 。如果希望从abuseipdb获得数据,请调用 abuseipdb_api 函数等。 这些函数仍然依赖于全局配置和列文件。关于如何使用包的示例, 请参见 example.py 或Jupyter笔记本 example.ipynb

功能简介

  • 地理编码IP :没有简单的方法可以识别 IP。地点很典型根据延迟和 拓扑结构以及来自私有和公共数据库的信息。 例如,一个算法从 各种"地标",计算最后一个 路由器在IP之前从地标使用网速,并建立 路由器必须存在的边界,然后 它的质心。这些推论的准确性一般是 未知,但可能相当"差"。例如,大多数地理位置 服务部门把我的IP放在离我所在位置30英里以外的地方。 尝试http://www.geoipinfo.com/" rel="nofollow">http://www.geoipinfo.com/

    脚本提供了到maxmind city lite的钩子 dB<a/>期待一个 要在其中运行脚本的文件夹中的数据库副本。 要下载数据库,请转到 这里 。这个 函数 maxmind_geocode_ip 返回城市、国家、纬度/经度等。

  • 时区 :理论上,有24个时区。实际上,一些 更多。例如,像印度这样的国家有半小时的补偿。 基于 经度为15度。对于实际映射,一个策略 将(最近的)城市映射到时区(回想一下 你可以在电脑的时间/日期程序中滚动。) 获取时区的各种服务,包括但不包括 限于,

为了方便起见,我们选择了python hook to nodejs lat/long to 时区。为了得到时区,我们先 需要对IP进行地理编码(见上文)。函数 tzwhere_timezone 纬度/经度,返回时区。

  • ping :发送ICMP回显请求并等待答复。 测量往返时间(最小、最大和平均),报告错误和 数据包丢失。如果有超时,函数将不产生任何结果。如果 有一个回复,它返回:

    packets_sent, packets_received, packets_lost, min_time,
    max_time, avg_time
    
  • traceroute :发送一个udp(或icmp)数据包。为如何 请求被路由,记录路由器和时间。

  • 背景知识

    • censys.io :执行ZMAP和ZGRAB扫描 IPv4地址空间。要使用censys.io,必须先注册。 一旦注册并拥有api密钥,就可以将 这里 。函数接受一个IP并返回 ASN、时区、国家等。有关完整列表,请参阅 https://censys.io/ipv4/help
    • shodan.io :扫描连接到 Internet提供服务、开放端口等。您必须注册才能使用 肖丹尼。查询要花钱。一旦你注册并拥有 API密钥,放在这里。脚本实现 两个api调用:shodan/host/ip和shodan/scan。函数接受 IP和返回的列表
  • 黑名单和背景信息 :服务数量 保持黑名单是巨大的。下面是一些 服务:tornevallnet,黑名单,spamhaus,mywot,spamrats, 马尔科德,斯皮耶,谷歌安全兄弟wsing、projecthoneypot等 服务报告是其他服务的结果,作为它们的一部分 结果。在这个脚本中,我们实现了以下三个钩子:

    • virustotal.com :一家谷歌公司 分析并跟踪可疑文件、URL和IP。你必须 注册使用virustotal。一旦注册并拥有api 键,在这里输入。函数实现 检索IP地址报告方法。
    • abuseipdb.com :跟踪IPS上的报告。 必须注册才能使用API。一旦你注册并拥有 API密钥,放在这里。有一个限制 每月5千平。我们在这里实现的函数是 由于api不返回 提交的报告。
    • ipvoid.com :跟踪有关IP的信息。 没有api。我们搜集IP的信息,包括状态 在各种黑名单网站上。

查询限制

<表> < COLGROUP > < COL/> < COL/> < COL/> <广告> 服务 查询限制 更多信息 < /广告> <正文> 审查.io 120/5分钟 Censys帐户。 虚拟整体 4/分钟 虚拟API文档。 abuseipdb 2500/月 abuseipdb常见问题解答 ipvoid - > 肖丹 - > -- ---- ---– < > <表>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java UDP十六进制数据按分隔符分割?   java将字符串与列表中的值进行比较<Integer>   在java中向新列表添加/复制对象   java MySQL语法错误异常   java如何在附加到文件时关闭JavaFX FileChooser的覆盖警告?   多线程如何在java中处理具有CompletableFuture的列表?   JAXWS项目的java重命名现在找不到WSDL   javascript翻译从哪里来?Javaservlet、tomcat和ExtJs Sencha应用程序   if语句如何向代码中添加工作if?JAVA   java如何确定需要哪些JAR?   在jPanel java netbeans上运行非常简单的swing视频播放器   swing Java jTable changeSelection,然后突出显示新选定的行   基于参数的java Spring Boot JPA本机查询非空检查   java从预使用图中删除节点   java BufferOverflowException在不同组件的画布中绘制时   尝试使用jersey在rest上发送pojo类对象作为响应时发生java内部服务器错误   java类集合如何将列表/集合转换为同步对象?通过什么机制?   java JOOX自动关闭XML标记   Java是按另一个具有不同对象的列表对列表进行排序的最佳方法   Hibernate读取XML时发生java错误