def imgToMsgType(self): #the function that maps each image to the kind of message, if applicable
     path = self.directorySelected + '/' #the target image path woth the directory path that will be appended to each image file
     for i in self.imgFiles: #for all the image files 
         #for each image, since we don't know the kind of rasterization, we will first try with horizontal, then vertical, otherwise if both return false, we will return false
         imagePath = path + i #the image path
         #print(imagePath)
         hor_res = tuple #to store the result of horizontal rasterization
         ver_res = tuple #to store the result of horizontal rasterization
         newstegobj = NewSteganography(imagePath, 'horizontal')
         hor_res = newstegobj.checkIfMessageExists()
         if (hor_res[0] == True): #if horizontally rasterized and message exists
             tup = tuple
             tup = (i, hor_res) #make the tuple that maps the image name to the type of embedded message
             self.imgType.append(tup) #append to the list that stores for all the image files information about type of message embedded
             continue #go on to the next image file
         else: #either not horizontally rasterized or no message at all, we will now check for vertical rasterization
             newstegobj = NewSteganography(imagePath, 'vertical')
             ver_res = newstegobj.checkIfMessageExists()
             if (ver_res[0] == True): #if vertically rasterized and message exists
                 tup = tuple
                 tup = (i, ver_res) #make the tuple that maps the image name to the type of embedded message
                 self.imgType.append(tup) #append to the list that stores for all the image files information about type of message embedded
             else: #neither horizontal nor vertical => no message embedded
                 tup = tuple
                 tup = (i, ver_res) #make the tuple that maps the image name to the type of embedded message
                 self.imgType.append(tup) #append to the list that stores for all the image files information about type of message embedded
             continue #go on to the next image file
Esempio n. 2
0
    def getPictures(self,path):
        fileList = glob.glob(path+"/*.png")
        #print (fileList[0])

        for file in fileList:
            #print (file)
            file_name = file.split("/")[-1]
            #print (file_name)
            folder_name = file.split("/")[:-1]
            #print (folder_name)
            #folder_name =
            st = ""
            for s in folder_name:
                st += "/"
                st += s
            st = st.strip("/")
            st = "/"+st
            #print ("llll="+st)



            file_path = st + "/" +file_name
            self.first_path = st
            #print (file_path)
            medium = NewSteganography(file_path,"horizontal")
            o = medium.checkIfMessageExists()
            medium2 = NewSteganography(file_path,"vertical")
            o2 = medium2.checkIfMessageExists()
            #print (o)
            if o[0] == False and o2[0] == False:
                item = QTreeWidgetItem()

                item.setText(0,file_name)

                self.fileTreeWidget.addTopLevelItem(item)
                item.setForeground(0,QBrush(QColor(0,0,255)))

            elif o[0] == True:
                #print (o)
                item = QTreeWidgetItem()

                item.setText(0,file_name)
                self.fileTreeWidget.addTopLevelItem(item)
                item.setForeground(0,QBrush(QColor(255,0,0)))
                child = QTreeWidgetItem()
                child.setText(0,o[1])
                child.setForeground(0,QBrush(QColor(0,255,0)))
                item.addChild(child)
            else:
                item = QTreeWidgetItem()

                item.setText(0,file_name)
                self.fileTreeWidget.addTopLevelItem(item)
                item.setForeground(0,QBrush(QColor(255,0,0)))
                #item.QFont.setBold(True)
                child = QTreeWidgetItem()
                child.setText(0,o2[1])
                child.setForeground(0,QBrush(QColor(0,255,0)))
                item.addChild(child)
Esempio n. 3
0
    def getPictures(self, path):
        fileList = glob.glob(path + "/*.png")
        #print (fileList[0])

        for file in fileList:
            #print (file)
            file_name = file.split("/")[-1]
            #print (file_name)
            folder_name = file.split("/")[:-1]
            #print (folder_name)
            #folder_name =
            st = ""
            for s in folder_name:
                st += "/"
                st += s
            st = st.strip("/")
            st = "/" + st
            #print ("llll="+st)

            file_path = st + "/" + file_name
            self.first_path = st
            #print (file_path)
            medium = NewSteganography(file_path, "horizontal")
            o = medium.checkIfMessageExists()
            medium2 = NewSteganography(file_path, "vertical")
            o2 = medium2.checkIfMessageExists()
            #print (o)
            if o[0] == False and o2[0] == False:
                item = QTreeWidgetItem()

                item.setText(0, file_name)

                self.fileTreeWidget.addTopLevelItem(item)
                item.setForeground(0, QBrush(QColor(0, 0, 255)))

            elif o[0] == True:
                #print (o)
                item = QTreeWidgetItem()

                item.setText(0, file_name)
                self.fileTreeWidget.addTopLevelItem(item)
                item.setForeground(0, QBrush(QColor(255, 0, 0)))
                child = QTreeWidgetItem()
                child.setText(0, o[1])
                child.setForeground(0, QBrush(QColor(0, 255, 0)))
                item.addChild(child)
            else:
                item = QTreeWidgetItem()

                item.setText(0, file_name)
                self.fileTreeWidget.addTopLevelItem(item)
                item.setForeground(0, QBrush(QColor(255, 0, 0)))
                #item.QFont.setBold(True)
                child = QTreeWidgetItem()
                child.setText(0, o2[1])
                child.setForeground(0, QBrush(QColor(0, 255, 0)))
                item.addChild(child)
Esempio n. 4
0
    def __init__(self, parent=None):
        super(SteganographyBrowser, self).__init__(parent)
        self.setupUi(self)


        self.path = QtGui.QFileDialog.getExistingDirectory()
        if not self.path:
            exit()
        # print(self.path)
        foldername = self.path.split('/')[-1]
        # print(foldername)
        self.fileTreeWidget.setHeaderLabel(foldername)
        filelist = glob.glob(self.path + '/*.png')
        # print(filelist)


        # treeWidget = self.fileTreeWidget
        # treeWidget.setColumnCount(1)
        items = []
        for files in filelist:
            # the try-except part prevent color image from adding into the widget
            try:
                stegan = NewSteganography(files)
                # print(files)
                exist, ttype = stegan.checkIfMessageExists()
                if exist is False:
                    stegan = NewSteganography(files, 'vertical')
                    exist, ttype = stegan.checkIfMessageExists()

                item = QTreeWidgetItem(self.fileTreeWidget)
                name = files.split('/')[-1]
                # name = re.findall(r'/.*/(.*?\.png)', files)
                # print(name)
                # print(files)
                item.setText(0, name)

                if exist is False:
                    item.setForeground(0, QBrush(QColor(0, 0, 255)))
                else:
                    item.setForeground(0, QBrush(QColor(255, 0, 0)))
                    foont = QtGui.QFont()
                    foont.setBold(True)
                    item.setFont(0, foont)

                    son = QTreeWidgetItem(item)
                    son.setText(0, ttype)
                    son.setForeground(0, QBrush(QColor(0, 255, 0)))
                items += [item]
            except:
                pass
        #
        self.fileTreeWidget.addTopLevelItems(items)
        self.mode(False)

        self.fileTreeWidget.itemClicked.connect(self.display)
Esempio n. 5
0
    def __init__(self, parent=None):
        super(SteganographyBrowser, self).__init__(parent)
        self.setupUi(self)

        self.path = QtGui.QFileDialog.getExistingDirectory()
        if not self.path:
            exit()
        foldername = self.path.split('/')[-1]
        self.fileTreeWidget.setHeaderLabel(foldername)
        filelist = glob.glob(self.path + '/*.png')

        items = []
        for files in filelist:
            # the try-except part prevent color image from adding into the widget
            try:
                stegan = NewSteganography(files)
                exist, ttype = stegan.checkIfMessageExists()
                direction = 'horizontal'
                if exist is False:
                    direction = 'vertical'
                    stegan = NewSteganography(files, 'vertical')
                    exist, ttype = stegan.checkIfMessageExists()

                item = QTreeWidgetItem(self.fileTreeWidget)
                name = files.split('/')[-1]
                item.setText(0, name)

                if exist is False:
                    item.setForeground(0, QBrush(QColor(0, 0, 255)))
                else:
                    item.setForeground(0, QBrush(QColor(255, 0, 0)))
                    foont = QtGui.QFont()
                    foont.setBold(True)
                    item.setFont(0, foont)

                    son = QTreeWidgetItem(item)
                    son.setText(0, ttype)
                    son.setText(1, direction)
                    son.setForeground(0, QBrush(QColor(0, 255, 0)))
                items += [item]
            except:
                pass
        self.fileTreeWidget.addTopLevelItems(items)
        self.mode(False)

        self.fileTreeWidget.itemClicked.connect(self.display)
        self.btnExtract.clicked.connect(self.extract)
        self.btnWipeMedium.clicked.connect(self.wipe)
 def additem(self, path, item):
     self.fileTreeWidget.addTopLevelItem(item)
     horizontalread = NewSteganography(path, 'horizontal')
     verticalread = NewSteganography(path, 'vertical')
     ah,bh = horizontalread.checkIfMessageExists()
     av,bv = verticalread.checkIfMessageExists()
     if ah == True:
         item.setForeground(0,QtGui.QBrush(QtGui.QColor("#FF0000")))
         item.addChild(QTreeWidgetItem([bh]))
         self.childdict[item] = [bh, 'horizontal']
     elif av == True:
         item.setForeground(0,QtGui.QBrush(QtGui.QColor("#FF0000")))
         item.addChild(QTreeWidgetItem([bv]))
         self.childdict[item] = [bv, 'vertical']
     else:
         item.setForeground(0,QtGui.QBrush(QtGui.QColor("#0000FF")))
Esempio n. 7
0
	def extract(self):
		self.btnExtract.setEnabled(False)
		self.txtMessage.setPlainText("")
		self.scn.clear()
		self.viewMessage.update()
		if self.selectedfile in self.v:														### Instantiate a class based on the method
			class1 = NewSteganography(self.path+"/"+self.selectedfile,"vertical")			### in which the message has been embedded in
		else:																				### the medium
			class1 = NewSteganography(self.path+"/"+self.selectedfile,"horizontal")

		tup = class1.checkIfMessageExists()													### if the message exists then display the
		message = class1.extractMessageFromMedium()											### message on the stack widget using the
		self.viewMessage.setEnabled(True)													### appropriate widget
		self.lblImageMessage.setEnabled(True)
		if tup[1] == "Text":
			self.stackMessage.setCurrentIndex(1)											### Also update the message label below the
			self.lblImageMessage.setText("Text")											### stacked widget
			message.saveToTarget("save.txt")
			filein = open("save.txt")
			data = filein.read()
			self.txtMessage.setPlainText(data)
		elif tup[1] == 'ColorImage' or tup[1] == 'GrayImage':
			self.stackMessage.setCurrentIndex(0)
			self.lblImageMessage.setText("Image")
			message.saveToTarget("save.png")
			self.viewMessage.setScene(self.scn)
			pixmap = QtGui.QPixmap("save.png")
			PixItem = self.scn.addPixmap(pixmap)

			self.viewMessage.fitInView(PixItem)
			self.viewMessage.show()
Esempio n. 8
0
    def setupFileTree(self):
        #Keep a dictionary to track which files had messages in them
        hidden_message_types = dict()
        file_paths = glob(self.directory + "/*.png")

        files = [os.path.basename(path) for path in file_paths]

        if(files == []):
            return

        #Go through each of the files and check if they have a message in them
        for file in files :
            try:
                steg = NewSteganography(self.directory + "/" + file)

            except TypeError:
                continue

            #Add each element into the treeview appropriately
            child = QTreeWidgetItem()
            child.setText(0,file)

            exists, type = steg.checkIfMessageExists()
            hidden_message_types[file] = type

            #If it has a message inside, color and extend appropriately
            if(exists) :
                child.setForeground(0,QtGui.QBrush(Qt.red))
                second_child = QTreeWidgetItem()
                second_child.setText(0,type)
                second_child.setForeground(0,QtGui.QBrush(Qt.green))
                child.addChild(second_child)
            else:
                child.setForeground(0,QtGui.QBrush(Qt.blue))

            self.fileTreeWidget.addTopLevelItem(child)

        #Expand all the list items and update the dictionary
        self.fileTreeWidget.expandAll()
        self.hidden_message_dict = hidden_message_types
Esempio n. 9
0
    def displayMedium(self):
        self.grpMedium.setEnabled(True)
        #self.grpMessage.setEnabled(False)
        self.btnWipeMedium.setEnabled(False)
        self.btnExtract.setEnabled(False)
        print ("displayMdium")

        it = self.fileTreeWidget.currentItem()
        self.item = it
        #self.it = it
        file_name = it.text(0)
        self.file_path = self.first_path+"/"+file_name
        print (file_name)
        scene = QGraphicsScene()
        self.viewMedium.setScene(scene)
        pix_map = QPixmap(self.file_path)
        pix_it = QGraphicsPixmapItem(pix_map)
        scene.addItem(pix_it)
        #scene.setSceneRect(0,0,250,250)
        self.viewMedium.fitInView(scene.sceneRect(),Qt.KeepAspectRatio)
        self.viewMedium.show()
        self.txtMessage.setPlainText("")

        sc = QGraphicsScene()
        self.viewMessage.setScene(sc)


        medium = NewSteganography(self.file_path,"horizontal")
        #self.medium = medium
        medium2 = NewSteganography(self.file_path,"vertical")
        #self.medium2 = medium2
        o = medium.checkIfMessageExists()
        o2 = medium2.checkIfMessageExists()
        print ("o"+str(o[0]))
        print ("o2[0]"+str(o2[0]))
        if o[0] == True or o2[0] == True:
            self.btnWipeMedium.setEnabled(True)
            self.btnExtract.setEnabled(True)
            self.grpMessage.setEnabled(True)
            if o[1] == "GrayImage" or o[1] == "ColorImage":
                print ("case1start")

                self.stackMessage.setCurrentWidget(self.pgImage)
                message = medium.extractMessageFromMedium()
                target = "extract.png"
                self.target = target
                self.type = "Image"
                message.saveToTarget(target)
                #self.btnExtract.clicked.connect(lambda: self.extractImage(target))
                self.medium = medium
                #self.btnWipeMedium.clicked.connect(self.boxQuestion)
                print ("case1end")
                #self.btnWipeMedium.clicked.connect(lambda: self.wipe(self.file_path))
            elif o2[1] == "GrayImage" or o2[1] == "ColorImage":
                print ("case2start")
                #self.grpMessage.setEnabled(True)
                self.stackMessage.setCurrentWidget(self.pgImage)
                message2 = medium2.extractMessageFromMedium()
                target = "extract.png"
                self.target = target
                self.type = "Image"
                message2.saveToTarget(target)
                #self.btnExtract.clicked.connect(lambda: self.extractImage(target))
                self.medium = medium2
                #self.btnWipeMedium.clicked.connect(self.boxQuestion)
                print ("case2end")
                #self.btnWipeMedium.clicked.connect(lambda: self.wipe(self.file_path))
            elif o[1] == "Text":
                print ("case3start")
                self.stackMessage.setCurrentWidget(self.pgText)
                message = medium.extractMessageFromMedium()
                target = "extract.txt"
                self.target = target
                self.type = "Text"
                message.saveToTarget(target)
                #self.btnExtract.clicked.connect(lambda: self.extractText(target))
                self.medium = medium
                #self.btnWipeMedium.clicked.connect(self.boxQuestion)
                print ("case3end")
            else:
                print ("case4tart")
                self.stackMessage.setCurrentWidget(self.pgText)
                message2 = medium2.extractMessageFromMedium()
                target = "extract.txt"
                self.target = target
                self.type = "Text"
                message2.saveToTarget(target)
                #self.btnExtract.clicked.connect(lambda: self.extractText(target))
                self.medium = medium2
                #self.btnWipeMedium.clicked.connect(self.boxQuestion)
                print ("case4end")

        else:
            print ("caseNonestart")
            self.btnWipeMedium.setEnabled(False)
            self.btnExtract.setEnabled(False)
            self.grpMessage.setEnabled(False)
            print ("caseNoneend")
Esempio n. 10
0
	def __init__(self,parent = None):
		super(SteganographyGUI,self).__init__(parent)
		self.setupUi(self)

		filepath = QFileDialog.getExistingDirectory(self,"open folder only",Options = QFileDialog.ShowDirsOnly)
		if not filepath:
			sys.exit(1)

		self.selectedfile = ""
		self.path = filepath
		newfilepath = str(filepath).split("/")
		filesd = newfilepath[-1]
		self.fileTreeWidget.setHeaderLabel(newfilepath[-1])									### Labelling the treewidget with 
		self.scn = QGraphicsScene()															### the file path
		self.btnExtract.clicked.connect(self.extract)
		self.btnExtract.setEnabled(False)
		self.btnWipeMedium.setEnabled(False)
		self.viewMedium.setEnabled(False)
		self.viewMessage.setEnabled(False)
		self.lblImageMessage.setEnabled(False)

		blue = []
		vertical = []
		horizontal = []
		files = glob.glob(str(filepath)+"/*.png")
		for f in files:																		### Sorting the files as per image
			f = f.split("/")[-1]															### content and the method in which
			y = re.findall('(v|h)',f)														### the message is saved
			if not y:																		### E.g horizontal or vertical
				blue.append(f)
			elif y[0] == 'v':
				im = Image.open(str(filepath)+"/"+f)
				if im.mode == 'L':
					vertical.append(f)
				else:
					blue.append(f)
			elif y[0] == 'h':
				im = Image.open(str(filepath)+"/"+f)
				if im.mode == 'L':
					horizontal.append(f)
				else:
					blue.append(f)

		self.b = blue
		self.v = copy.deepcopy(vertical)
		self.h = copy.deepcopy(horizontal)
		self.dict = {}																		### Creating a dictionary that holds
																							### all the message images and the type
		self.blueitems = []																	### messages they contain if any
		for f in range(len(blue)):
			item = QTreeWidgetItem()
			item.setText(0,"{0}".format(blue[f]))											### Create item widgets for files with
			item.setForeground(0,QtGui.QBrush(Qt.blue))										### no content in them
			self.blueitems.append(item)
			self.dict[blue[f]] = "0"

		x = f + 1
		self.verticalitems = []
		for f in range(len(vertical)):														### Create a list of item widgets from
			item = QTreeWidgetItem(["{0}".format(vertical[f])])								### message mediums that have vertical
			class1 = NewSteganography(str(filepath+"/" + vertical[f]),'vertical')			### messages embedded in them.
			tup = class1.checkIfMessageExists()
			if tup[0]:
				item.addChild(QTreeWidgetItem([tup[1]]))
				self.dict[vertical[f]] = tup[1]
				item.setForeground(0,QtGui.QBrush(Qt.red))
				self.verticalitems.append(item)
			else:
				self.dict[vertical[f]] = tup[1]
				item.setForeground(0,QtGui.QBrush(Qt.blue))
				self.blueitems.append(item)
				self.v.remove(vertical[f])

		for f in range(len(self.verticalitems)):
			self.fileTreeWidget.addTopLevelItem(self.verticalitems[f])

		x += f + 1
		self.horizontalitems = []
		for f in range(len(horizontal)):													### Create a list of item widgets from
			item = QTreeWidgetItem(["{0}".format(horizontal[f])])							### message mediums that have horizontal
			class1 = NewSteganography(str(filepath+"/" + horizontal[f]),'horizontal')		### messages embedded in them.
			tup = class1.checkIfMessageExists()
			if tup[0]:
				item.addChild(QTreeWidgetItem([tup[1]]))
				self.dict[horizontal[f]] = tup[1]
				item.setForeground(0,QtGui.QBrush(Qt.red))
				self.horizontalitems.append(item)

			else:
				self.dict[horizontal[f]] = tup[1]
				item.setForeground(0,QtGui.QBrush(Qt.blue))
				self.blueitems.append(item)
				self.h.remove(horizontal[f])

		for f in range(len(self.horizontalitems)):
			self.fileTreeWidget.addTopLevelItem(self.horizontalitems[f])

		for f in range(len(self.blueitems)):
			self.fileTreeWidget.insertTopLevelItem(f,self.blueitems[f])
		
		self.fileTreeWidget.itemSelectionChanged.connect(self.blueClick)
		self.btnExtract.clicked.connect(self.extract)
		self.btnWipeMedium.clicked.connect(self.wipe)
Esempio n. 11
0
    def displayMedium(self):
        self.grpMedium.setEnabled(True)
        #self.grpMessage.setEnabled(False)
        self.btnWipeMedium.setEnabled(False)
        self.btnExtract.setEnabled(False)
        print("displayMdium")

        it = self.fileTreeWidget.currentItem()
        self.item = it
        #self.it = it
        file_name = it.text(0)
        self.file_path = self.first_path + "/" + file_name
        print(file_name)
        scene = QGraphicsScene()
        self.viewMedium.setScene(scene)
        pix_map = QPixmap(self.file_path)
        pix_it = QGraphicsPixmapItem(pix_map)
        scene.addItem(pix_it)
        #scene.setSceneRect(0,0,250,250)
        self.viewMedium.fitInView(scene.sceneRect(), Qt.KeepAspectRatio)
        self.viewMedium.show()
        self.txtMessage.setPlainText("")

        sc = QGraphicsScene()
        self.viewMessage.setScene(sc)

        medium = NewSteganography(self.file_path, "horizontal")
        #self.medium = medium
        medium2 = NewSteganography(self.file_path, "vertical")
        #self.medium2 = medium2
        o = medium.checkIfMessageExists()
        o2 = medium2.checkIfMessageExists()
        print("o" + str(o[0]))
        print("o2[0]" + str(o2[0]))
        if o[0] == True or o2[0] == True:
            self.btnWipeMedium.setEnabled(True)
            self.btnExtract.setEnabled(True)
            self.grpMessage.setEnabled(True)
            if o[1] == "GrayImage" or o[1] == "ColorImage":
                print("case1start")

                self.stackMessage.setCurrentWidget(self.pgImage)
                message = medium.extractMessageFromMedium()
                target = "extract.png"
                self.target = target
                self.type = "Image"
                message.saveToTarget(target)
                #self.btnExtract.clicked.connect(lambda: self.extractImage(target))
                self.medium = medium
                #self.btnWipeMedium.clicked.connect(self.boxQuestion)
                print("case1end")
                #self.btnWipeMedium.clicked.connect(lambda: self.wipe(self.file_path))
            elif o2[1] == "GrayImage" or o2[1] == "ColorImage":
                print("case2start")
                #self.grpMessage.setEnabled(True)
                self.stackMessage.setCurrentWidget(self.pgImage)
                message2 = medium2.extractMessageFromMedium()
                target = "extract.png"
                self.target = target
                self.type = "Image"
                message2.saveToTarget(target)
                #self.btnExtract.clicked.connect(lambda: self.extractImage(target))
                self.medium = medium2
                #self.btnWipeMedium.clicked.connect(self.boxQuestion)
                print("case2end")
                #self.btnWipeMedium.clicked.connect(lambda: self.wipe(self.file_path))
            elif o[1] == "Text":
                print("case3start")
                self.stackMessage.setCurrentWidget(self.pgText)
                message = medium.extractMessageFromMedium()
                target = "extract.txt"
                self.target = target
                self.type = "Text"
                message.saveToTarget(target)
                #self.btnExtract.clicked.connect(lambda: self.extractText(target))
                self.medium = medium
                #self.btnWipeMedium.clicked.connect(self.boxQuestion)
                print("case3end")
            else:
                print("case4tart")
                self.stackMessage.setCurrentWidget(self.pgText)
                message2 = medium2.extractMessageFromMedium()
                target = "extract.txt"
                self.target = target
                self.type = "Text"
                message2.saveToTarget(target)
                #self.btnExtract.clicked.connect(lambda: self.extractText(target))
                self.medium = medium2
                #self.btnWipeMedium.clicked.connect(self.boxQuestion)
                print("case4end")

        else:
            print("caseNonestart")
            self.btnWipeMedium.setEnabled(False)
            self.btnExtract.setEnabled(False)
            self.grpMessage.setEnabled(False)
            print("caseNoneend")