Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 52 additions & 17 deletions IOXIDResolver.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,45 @@
#!/usr/bin/python

import sys, getopt
import ipaddress

from impacket.dcerpc.v5 import transport
from impacket.dcerpc.v5.rpcrt import RPC_C_AUTHN_LEVEL_NONE
from impacket.dcerpc.v5.dcomrt import IObjectExporter
from impacket.dcerpc.v5.rpcrt import DCERPCException


def getIPs(subnetMask):
ipList = []
net = ipaddress.ip_network(subnetMask, strict=False)

for ip in net.hosts():
ipList.append(str(ip))

return ipList

def getAdapterInfo(ipAddress):
try:
authLevel = RPC_C_AUTHN_LEVEL_NONE

stringBinding = r'ncacn_ip_tcp:%s' % ipAddress
rpctransport = transport.DCERPCTransportFactory(stringBinding)

portmap = rpctransport.get_dce_rpc()
portmap.set_auth_level(authLevel)
portmap.connect()

objExporter = IObjectExporter(portmap)
bindings = objExporter.ServerAlive2()

print ("[*] Retrieving network interface of " + ipAddress)

#NetworkAddr = bindings[0]['aNetworkAddr']
for binding in bindings:
NetworkAddr = binding['aNetworkAddr']
print("Address: " + NetworkAddr)
except DCERPCException as e:
print("[!] Error when attempting to connect to {0}: {1}".format(ipAddress, str(e)))

def main(argv):

Expand All @@ -25,26 +60,26 @@ def main(argv):
print ('IOXIDResolver.py -t <target>')
sys.exit()
elif opt in ("-t", "--target"):
target_ip = arg

authLevel = RPC_C_AUTHN_LEVEL_NONE

stringBinding = r'ncacn_ip_tcp:%s' % target_ip
rpctransport = transport.DCERPCTransportFactory(stringBinding)

portmap = rpctransport.get_dce_rpc()
portmap.set_auth_level(authLevel)
portmap.connect()
# target_ip = arg
# Checking if argument contains subnet mask
if "/" in arg:
# Subnet mask specified
print("Subnet mask specified: {0}".format(arg))
ipList = getIPs(arg)
target_ip = ipList
else:
print("Single host specified: {0}".format(arg))
target_ip = arg


objExporter = IObjectExporter(portmap)
bindings = objExporter.ServerAlive2()
if isinstance(target_ip, list):
for i in target_ip:
getAdapterInfo(i)
else:
getAdapterInfo(target_ip)

print ("[*] Retrieving network interface of " + target_ip)

#NetworkAddr = bindings[0]['aNetworkAddr']
for binding in bindings:
NetworkAddr = binding['aNetworkAddr']
print ("Address: " + NetworkAddr)


if __name__ == "__main__":
main(sys.argv[1:])