From 2e9dd48b862f4e8f9681ef0fd544e683ce8dbdb0 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Tue, 5 Jul 2016 01:28:32 +0200 Subject: [PATCH] Factorise a bit some tools --- tools/Icmp-Redirect.py | 14 +------------- tools/RelayPackets.py | 15 +-------------- tools/SMBRelay.py | 17 +---------------- 3 files changed, 3 insertions(+), 43 deletions(-) diff --git a/tools/Icmp-Redirect.py b/tools/Icmp-Redirect.py index 98552be..35d52e2 100755 --- a/tools/Icmp-Redirect.py +++ b/tools/Icmp-Redirect.py @@ -25,6 +25,7 @@ from odict import OrderedDict from random import randrange from time import sleep from subprocess import call +from packets import Packet parser = optparse.OptionParser(usage='python %prog -I eth0 -i 10.20.30.40 -g 10.20.30.254 -t 10.20.30.48 -r 10.20.40.1', prog=sys.argv[0], @@ -77,19 +78,6 @@ def Show_Help(ExtraHelpData): MoreHelp = "Note that if the target is Windows, the poisoning will only last for 10mn, you can re-poison the target by launching this utility again\nIf you wish to respond to the traffic, for example DNS queries your target issues, launch this command as root:\n\niptables -A OUTPUT -p ICMP -j DROP && iptables -t nat -A PREROUTING -p udp --dst %s --dport 53 -j DNAT --to-destination %s:53\n\n"%(ToThisHost,OURIP) -class Packet(): - fields = OrderedDict([("data", ""),]) - def __init__(self, **kw): - self.fields = OrderedDict(self.__class__.fields) - for k,v in kw.items(): - if callable(v): - self.fields[k] = v(self.fields[k]) - else: - self.fields[k] = v - - def __str__(self): - return "".join(map(str, self.fields.values())) - def GenCheckSum(data): s = 0 for i in range(0, len(data), 2): diff --git a/tools/RelayPackets.py b/tools/RelayPackets.py index 91b92df..0791670 100644 --- a/tools/RelayPackets.py +++ b/tools/RelayPackets.py @@ -18,20 +18,7 @@ import struct import sys sys.path.append('../') from odict import OrderedDict - -class Packet: - fields = OrderedDict([ - ("data", ""), - ]) - def __init__(self, **kw): - self.fields = OrderedDict(self.__class__.fields) - for k,v in kw.items(): - if callable(v): - self.fields[k] = v(self.fields[k]) - else: - self.fields[k] = v - def __str__(self): - return "".join(map(str, self.fields.values())) +from packets import Packet class SMBHeader(Packet): fields = OrderedDict([ diff --git a/tools/SMBRelay.py b/tools/SMBRelay.py index 1f6b944..8131991 100755 --- a/tools/SMBRelay.py +++ b/tools/SMBRelay.py @@ -15,8 +15,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . import sys -import re -import socket import random import optparse import thread @@ -26,6 +24,7 @@ from socket import * from RelayPackets import * from packets import * from servers.SMB import * +from packets import Packet import logging Logs = logging @@ -78,20 +77,6 @@ print "\nResponder SMBRelay 0.1\nPlease send bugs/comments to: laurent.gaffie@gm print '\033[31m'+'Use this script in combination with Responder.py for best results (remember to set SMB = Off in Responder.conf)..\nUsernames to relay (-u) are case sensitive.'+'\033[0m' print 'To kill this script hit CRTL-C or Enter\nWill relay credentials for these users: '+'\033[1m\033[34m'+', '.join(UserToRelay)+'\033[0m\n' -class Packet: - fields = OrderedDict([ - ("data", ""), - ]) - def __init__(self, **kw): - self.fields = OrderedDict(self.__class__.fields) - for k,v in kw.items(): - if callable(v): - self.fields[k] = v(self.fields[k]) - else: - self.fields[k] = v - def __str__(self): - return "".join(map(str, self.fields.values())) - #Function used to verify if a previous auth attempt was made. def ReadData(outfile,Client, User, cmd=None): try: