プロバイダーのネットワークには、かなり人気のあるDCハブがあります。 さらに、サブスクライバーのみがアクセスできます。 ここに出口があります!)
いずれかのgreylinkdc ++プログラムを使用した場合、おそらくハブへの接続をログに記録し、非常に重要なことに、IPクライアントがログに表示されることを覚えているでしょう。 このタイプのログ「 ip; nickname; hub; timestamp 」、つまり通常のcvsを解析しました。 さて、それは小さなスクリプト次第です。
#!/usr/bin/env python import re, cymruwhois from sys import argv, stdin from iptools import IpRange, IpRangeList private_nets = IpRangeList("10/8", "172.16/12", "192.168/16") ip_re = re.compile(r'^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])') def iprangelistappend(match, rangelist): rangelist.ips += (IpRange(match.prefix),) return (match.prefix, match.owner) def main(input): ips = sorted(set(ip_re.match(line).group(0) for line in input if ip_re.match(line))) ips = filter(lambda ip: ip not in private_nets, ips) public_nets = IpRangeList() whois = cymruwhois.Client() nets = (iprangelistappend(whois.lookup(ip), public_nets) for ip in ips if ip not in public_nets) for prefix, owner in nets: print prefix, owner if __name__ == "__main__": if len(argv) == 1: main(stdin) else: main(open(argv[2]))
ご覧のとおり、通常のライブラリに加えて、次のものが必要です。
- iptools -IPアドレスを操作するための
- cymruwhois -whoisクライアント
109.171.0.0/17 ZSTTKAS JSC Zap-SibTranstelecom正当な質問をすることができます-出力に異なるプロバイダーがあるのはなぜですか? なぜ所有者を表示する必要があるのですか? 答えます。 サブネットを見落とす可能性を最小限に抑えるために、かなり長い期間スクリプトをフィードしたログ。 この間、アドレスの再配布が行われたと思います。 だから、誰が言っても、あなたはまだプロセスを制御する必要があります。
176.196.0.0/15 ELIGHT-AS E-Light-Telecom
178.171.0.0/17 ELIGHT-AS E-Light-Telecom
195.161.0.0/16 RTCOMM-AS OJSC RTComm.RU
212.75.192.0/19 ELIGHT-AS E-Light-Telecom
46.180.0.0/15 ELIGHT-AS E-Light-Telecom
………
最後に、速度についてです。 チーム
cat userip.log | grep 10.110.1.10 | cut -d";" -f 1 | ./exctract_nets.py;
私のcore-i5で、4418365レコードのログで、19秒で満たされます。 長い間結論が出ていなくても驚かないでください。