From 1d0e08ad2107299a51c8a29c1ee503d1e917643d Mon Sep 17 00:00:00 2001 From: Brett Shepley <67429536+BrettShepley11@users.noreply.github.com> Date: Sun, 29 Nov 2020 03:28:28 -0500 Subject: [PATCH 1/6] Create CommandServer.py --- CommandServer.py | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 CommandServer.py diff --git a/CommandServer.py b/CommandServer.py new file mode 100644 index 0000000..805e560 --- /dev/null +++ b/CommandServer.py @@ -0,0 +1,52 @@ +from JobList import * + +class Server(object): + """ + Server<---->Client + Command List: + CREATEJOB + REMOVEJOB + VIEWJOBS + CHECKJOBTEAM + JOINJOB + STARTJOB + VIEWACTIVEJOBS + + PREDEFINED VARIABLES + JOBTYPE-> + + + + + + + + """ + + def __init__(self): + self.jobListOBJ = JobList() + + self.COMMAND = "" + self.parameterList = [] + + def ParseCommand(self, Command): + self.parameterList = Command.split(" ") + + def createJob(self, CREATORNAME, JOBTYPE, NUMOFSEEKERS, TARGETIP, TARGETPORT): + self.jobListOBJ.createJob(CREATORNAME, JOBTYPE, NUMOFSEEKERS, TARGETIP, TARGETPORT) + + def removeJob(self, CREATORNAME, JOBTYPE, NUMOFSEEKERS, TARGETIP, TARGETPORT): + + def viewJobs(self): + + def checkJobTeam(self, CREATORNAME, JOBTYPE): + + def joinJob(self, CREATORNAME, JOBTYPE, SEEKERNAME): + + def startJob(self, CREATORNAME, JOBTYPE): + + def viewActiveJobs(self): + + def CommandtoFunction(self): + if self.parameterList[0] == "CREATEJOB": + self.createJob() From 7b46b6d90cda0bd8d76c980d1286dbb077e8a178 Mon Sep 17 00:00:00 2001 From: Brett Shepley <67429536+BrettShepley11@users.noreply.github.com> Date: Thu, 3 Dec 2020 00:12:48 -0500 Subject: [PATCH 2/6] Update Job.py --- Job.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Job.py b/Job.py index 74e8de6..cee5f56 100644 --- a/Job.py +++ b/Job.py @@ -1,11 +1,13 @@ class Job(object): - def __init__(self, jobCreator, jobName, numOfSeekers): + def __init__(self, jobCreator, jobName, numOfSeekers, targetIP, targetPort): self.JobCreator = jobCreator self.JobName = jobName self.NumOfSeekers = numOfSeekers + self.targetIP = "1.1.1.1" + self.targetPort = 0 self.FullJob = jobCreator+" "+" "+jobName+" "+" "+numOfSeekers self.JobSeekerList = [] @@ -13,6 +15,8 @@ def __iter__(self): yield self.JobCreator yield self.JobName yield self.NumOfSeekers + yield self.targetIP + yield self.targetPort def addSeekerList(self, SeekerName): self.JobSeekerList.append(SeekerName) @@ -55,4 +59,4 @@ def setFullJob(self, FullJob): self.FullJob = FullJob def setJobSeekerList(self, JobSeekerList): - self.JobSeekerList = JobSeekerList \ No newline at end of file + self.JobSeekerList = JobSeekerList From 3feb950f718e53b25f55954c185c0e10a417da52 Mon Sep 17 00:00:00 2001 From: Brett Shepley <67429536+BrettShepley11@users.noreply.github.com> Date: Thu, 3 Dec 2020 00:51:14 -0500 Subject: [PATCH 3/6] Update CommandServer.py --- CommandServer.py | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/CommandServer.py b/CommandServer.py index 805e560..e1f9ad2 100644 --- a/CommandServer.py +++ b/CommandServer.py @@ -1,4 +1,5 @@ from JobList import * +import pickle class Server(object): """ @@ -22,31 +23,40 @@ class Server(object): """ + connectionMessage = ["CREATEJOB ", + "REMOVEJOB ", + "VIEWJOBS", "CHECKJOBTEAM ", "JOINJOB ", + "STARTJOB ", "VIEWACTIVEJOBS ", "JOBTYPE SELECTION:", + "", "", "", + "", "", "", ""] def __init__(self): self.jobListOBJ = JobList() - self.COMMAND = "" self.parameterList = [] + + def connectionMessage(self): + self.connection.send(pickle.dumps(connectionMessage)) def ParseCommand(self, Command): self.parameterList = Command.split(" ") - def createJob(self, CREATORNAME, JOBTYPE, NUMOFSEEKERS, TARGETIP, TARGETPORT): - self.jobListOBJ.createJob(CREATORNAME, JOBTYPE, NUMOFSEEKERS, TARGETIP, TARGETPORT) - - def removeJob(self, CREATORNAME, JOBTYPE, NUMOFSEEKERS, TARGETIP, TARGETPORT): + def createJob(self, parameterList): + self.jobListOBJ.createJob(parameterList[1], parameterList[2], parameterList[3], parameterList[4], parameterList[5]) + + def removeJob(self, parameterList): + for Job in self.jobListOBJ.listofjobs: + if Job.fullJob == parameterList: + self.connection.send(pickle.dumps("Job Removed")) + self.jobListOBJ.listofjobs.remove(Job) + def viewJobs(self): - def checkJobTeam(self, CREATORNAME, JOBTYPE): + def checkJobTeam(self, parameterList): - def joinJob(self, CREATORNAME, JOBTYPE, SEEKERNAME): + def joinJob(self, parameterList): - def startJob(self, CREATORNAME, JOBTYPE): + def startJob(self, parameterList): def viewActiveJobs(self): - - def CommandtoFunction(self): - if self.parameterList[0] == "CREATEJOB": - self.createJob() From 191519fd507b0742bb2d9b919bc72a5c86f00b0c Mon Sep 17 00:00:00 2001 From: Brett Shepley <67429536+BrettShepley11@users.noreply.github.com> Date: Thu, 3 Dec 2020 00:54:51 -0500 Subject: [PATCH 4/6] Update JobList.py --- JobList.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/JobList.py b/JobList.py index 3e4303b..f6d5aa6 100644 --- a/JobList.py +++ b/JobList.py @@ -16,9 +16,7 @@ class JobList(object): jobsToRequest: This is a static list which is used to hold the names of the types of jobs offered ''' listofjobs = [] - jobsToRequest = ['IP Online Detection', 'Subnet IP Online Detection', 'Specific Port Status Detection', - 'All Port Status Detection', 'ICMP Flood Attack', 'TCP Flood Attack', 'UDP Flood Attack'] - + ''' One-To-One Jobs ''' From ac38d410f670f8b4e2c33be6a68bc7f8d6a80580 Mon Sep 17 00:00:00 2001 From: Brett Shepley <67429536+BrettShepley11@users.noreply.github.com> Date: Thu, 3 Dec 2020 01:20:53 -0500 Subject: [PATCH 5/6] Update CommandServer.py --- CommandServer.py | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/CommandServer.py b/CommandServer.py index e1f9ad2..7e45959 100644 --- a/CommandServer.py +++ b/CommandServer.py @@ -11,7 +11,6 @@ class Server(object): CHECKJOBTEAM JOINJOB STARTJOB - VIEWACTIVEJOBS PREDEFINED VARIABLES JOBTYPE-> @@ -26,7 +25,7 @@ class Server(object): connectionMessage = ["CREATEJOB ", "REMOVEJOB ", "VIEWJOBS", "CHECKJOBTEAM ", "JOINJOB ", - "STARTJOB ", "VIEWACTIVEJOBS ", "JOBTYPE SELECTION:", + "STARTJOB ", "JOBTYPE SELECTION:", "", "", "", "", "", "", ""] @@ -42,21 +41,48 @@ def ParseCommand(self, Command): self.parameterList = Command.split(" ") def createJob(self, parameterList): + self.connection.send(pickle.dumps("Job has been created and added to the Job List")) self.jobListOBJ.createJob(parameterList[1], parameterList[2], parameterList[3], parameterList[4], parameterList[5]) def removeJob(self, parameterList): for Job in self.jobListOBJ.listofjobs: - if Job.fullJob == parameterList: - self.connection.send(pickle.dumps("Job Removed")) + if Job.jobParameters == parameterList: + self.connection.send(pickle.dumps(Job.FullJob+" has been removed from the Job List")) self.jobListOBJ.listofjobs.remove(Job) - - + def viewJobs(self): + self.connection.send(pickle.dumps(jobListOBJ.listofjobs)) def checkJobTeam(self, parameterList): + for Job in self.jobListOBJ.listofjobs: + if Job.jobParameters == parameterList: + self.connection.send(pickle.dumps(Job.JobSeekerList)) + - def joinJob(self, parameterList): + def joinJob(self, parameterList, seekerName): + for Job in self.jobListOBJ.listofjobs: + if Job.jobParameters == parameterList: + self.connection.send(pickle.dumps(seekerName+" has joined: "+Job.FullName)) + Job.JobSeekerList.add(seekerName) + def startJob(self, parameterList): + for Job in self.jobListOBJ.listofjobs: + if Job.jobParameters == parameterList: + Job.setNumOfSeekers("Job Started") - def viewActiveJobs(self): + def commandRouting(parameterList): + if parameterList[0] == "CREATEJOB": + self.createJob() + elif parameterList[0] == "REMOVEJOB": + self.removeJob() + elif parameterList[0] == "VIEWJOBS": + self.viewJob() + elif parameterList[0] == "CHECKJOBTEAM": + self.checkJobTeam() + elif parameterList[0] == "JOINJOB": + self.joinJob() + elif parameterList[0] == "STARTJOB": + self.startJob() + else: + self.connection.send(pickle.dumps("Invalid Command")) From e247cab49ec4a201a4847494775f1396955039c7 Mon Sep 17 00:00:00 2001 From: Brett Shepley <67429536+BrettShepley11@users.noreply.github.com> Date: Thu, 3 Dec 2020 02:00:47 -0500 Subject: [PATCH 6/6] Update CommandServer.py --- CommandServer.py | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/CommandServer.py b/CommandServer.py index 7e45959..a533438 100644 --- a/CommandServer.py +++ b/CommandServer.py @@ -30,10 +30,47 @@ class Server(object): "", "", "", ""] def __init__(self): + self.ServerSocket = socket.socket() + self.host = '127.0.0.1' + self.port = 1233 + self.ThreadCount = 0 self.jobListOBJ = JobList() - self.COMMAND = "" + self.command = "" self.parameterList = [] + # Bind socket to port + try: + self.ServerSocket.bind((self.host, self.port)) + except socket.error as e: + print(str(e)) + + print('Waiting for a Connection..') + self.ServerSocket.listen(5) + + def main(self): + while True: + Client, address = self.ServerSocket.accept() + print('Connected to: ' + address[0] + ':' + str(address[1])) + start_new_thread(self.threadedClient, (Client,)) + self.ThreadCount += 1 + print('Thread Number: ' + str(self.ThreadCount)) + + def threadedClient(self, connection): + self.connectionMessage() + + while true: + #Limiting to 2048 Bytes + clientMessage = connection.recv(2048) + + #Receiving Message From Client + self.command = clientMessage.pickle.loads(clientMessage) + + self.ParseCommand(self.command) + + self.commandRouting(self.parameterList) + + + def connectionMessage(self): self.connection.send(pickle.dumps(connectionMessage))