首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中使用正则表达式反向DNS脚本

在Python中使用正则表达式反向DNS脚本
EN

Stack Overflow用户
提问于 2020-01-22 04:49:36
回答 1查看 174关注 0票数 1

我目前正在开发一个反向DNS脚本,旨在打开日志文件,找到IP地址,然后将IP解析为DNS。我设置了一个正则表达式来标识文件中的IP地址,但是当我将socket.gethostbyaddr添加到脚本中时,脚本会忽略正则表达式,并仍然列出文件中不是IP地址的对象。我以前从未使用过Python,但我现在有:

代码语言:javascript
复制
import socket
import re

f = open('ipidk.txt' , 'r')

lines = f.readlines()

raw_data = str(f.readlines())

regex = r'(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})'

foundip = re.findall( regex, raw_data )

for raw_data in lines:
    host = raw_data.strip()

    try:
        dns = socket.gethostbyaddr(host)
        print("%s - %s" % (host, dns))
    except socket.error as exc:
        pass

        f.close()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-22 04:59:10

你给f.readlines()打了两次电话。第一次读取文件中的所有内容,并将其放入lines。第二次没有什么可读的了(它从当前文件位置开始读取,不会倒带到开头),所以它返回一个空列表,raw_data将只是"[]",没有IP。

只需调用f.read()一次,并将其分配给raw_data即可。

然后,您需要遍历使用regexp找到的IP,而不是lines

代码语言:javascript
复制
import socket
import re

with open('ipidk.txt' , 'r') as f:
    raw_data = f.read()
regex = r'(?:\d{1,3}\.){3}\d{1,3}'

foundip = re.findall( regex, raw_data )
for host in foundip:
    try:
        dns = socket.gethostbyaddr(host)
        print("%s - %s" % (host, dns))
    except socket.error as exc:
        pass
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59849013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档