在 Python 中使用正则表达式反向 DNS 脚本
Reverse DNS script with Regex in Python
我目前正在开发一个反向 DNS 脚本,旨在打开一个日志文件,找到 IP 地址,然后将 IP 解析为 DNS。我设置了一个正则表达式来识别文件中的 IP 地址,但是当我将 socket.gethostbyaddr
添加到我的脚本时,脚本会忽略我的正则表达式并仍然列出文件中不是 IP 地址的对象。我以前从未使用过 Python,但这是我现在拥有的:
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()
您正在呼叫 f.readlines()
两次。第一次读取文件中的所有内容,并将其放入 lines
。第二次没有什么可读的(它从当前文件位置开始读取,它不会倒回开头),所以它 returns 是一个空列表,而 raw_data
只是 "[]"
,没有 IP。
只需调用 f.read()
一次,然后将其分配给 raw_data
。
然后您需要循环使用正则表达式找到的 IP,而不是 lines
。
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
我目前正在开发一个反向 DNS 脚本,旨在打开一个日志文件,找到 IP 地址,然后将 IP 解析为 DNS。我设置了一个正则表达式来识别文件中的 IP 地址,但是当我将 socket.gethostbyaddr
添加到我的脚本时,脚本会忽略我的正则表达式并仍然列出文件中不是 IP 地址的对象。我以前从未使用过 Python,但这是我现在拥有的:
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()
您正在呼叫 f.readlines()
两次。第一次读取文件中的所有内容,并将其放入 lines
。第二次没有什么可读的(它从当前文件位置开始读取,它不会倒回开头),所以它 returns 是一个空列表,而 raw_data
只是 "[]"
,没有 IP。
只需调用 f.read()
一次,然后将其分配给 raw_data
。
然后您需要循环使用正则表达式找到的 IP,而不是 lines
。
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