NEW: added new marker processing, added print markers metadata CLI, added print markers image CLI

This commit is contained in:
JohnE 2016-10-08 18:27:45 -07:00
parent e0d7466730
commit 498070a48e
6 changed files with 112 additions and 55 deletions

17
docs/README Normal file
View File

@ -0,0 +1,17 @@
***** ***** ***** *****
*** Picseal ***
***** ***** ***** *****
Your Photo is your Crypto Key
Generate a new Crypto Key to share with every photo
[[ Requirements ]]
Python 3
pycrypto==2.6.1
[[ Usage ]]

View File

@ -143,12 +143,11 @@ class JpgBin:
# rec_len = self.calcSeekBytes() # rec_len = self.calcSeekBytes()
self.__addImgData(marker_hex, "SOS ") self.__addImgData(marker_hex, "SOS ")
# #
def markerRST(self, marker_hex): def markerRST(self, marker_hex):
self.__addImgData(marker_hex, "RST ") self.__addImgData(marker_hex, "RST ")
#
def markerDQT(self, marker_hex): def markerDQT(self, marker_hex):
fpos = self.fh.tell() fpos = self.fh.tell()
rec_len = self.calcSeekBytes() rec_len = self.calcSeekBytes()
@ -190,7 +189,7 @@ class JpgBin:
cur_fpos = (fpos - (self.data_len - self.data_idx)) cur_fpos = (fpos - (self.data_len - self.data_idx))
if (self.prev_fpos > 0): if (self.prev_fpos > 0):
rec_len = cur_fpos - self.prev_fpos rec_len = cur_fpos - self.prev_fpos
self.jpg_fp.addImgMetadata(self.prev_mhex, self.prev_fpos, rec_len, self.prev_mstr) self.jpg_fp.addImgData(self.prev_mhex, self.prev_fpos, rec_len, self.prev_mstr)
self.prev_mhex = mhex self.prev_mhex = mhex
self.prev_mstr = mstr self.prev_mstr = mstr
@ -245,15 +244,24 @@ class JpgBin:
self.getMoreBytes(True) self.getMoreBytes(True)
return pos return pos
#
def printMarkerImg(self):
return self.jpg_fp.printImgMarkers()
#
def printMarkerMeta(self):
return self.jpg_fp.printMDMarkers()
# #
def findMarker(self, marker): def findMarker(self, marker):
pass pass
#
def __repr__(self): def __repr__(self):
return repr(self.jpg_fp) return repr(self.jpg_fp)
#
def findMarkers222(self): def findMarkers222(self):
last_idx = len(self.data_buf) last_idx = len(self.data_buf)

View File

@ -7,7 +7,7 @@ class JpgFingerprint:
self.markers_a = [] self.markers_a = []
self.markers_img = [] self.markers_img = []
self.markers_meta = [] self.markers_meta = []
self.markers_h = {} # self.markers_h = {}
def addImgMetadata(self, mhex, mpos, mlen, mstr): def addImgMetadata(self, mhex, mpos, mlen, mstr):
@ -15,24 +15,33 @@ class JpgFingerprint:
self.markers_a.append(marker) self.markers_a.append(marker)
self.markers_meta.append(marker) self.markers_meta.append(marker)
#
def addImgData(self, mhex, mpos, mlen, mstr): def addImgData(self, mhex, mpos, mlen, mstr):
marker = JpgMarker(mhex, mpos, mlen, mstr) marker = JpgMarker(mhex, mpos, mlen, mstr)
self.markers_a.append(marker) self.markers_a.append(marker)
self.markers_img.append(marker) self.markers_img.append(marker)
#
def printImgMarkers(self): def printImgMarkers(self):
pass # print ("Got here dummies")
# print ("len=={}".format(len(self.markers_img)))
# print ("*** *** *** ***\n{}".format(retstr))
return JpgFingerprint.__printMarker(self.markers_img)
#
def printMDMarkers(self): def printMDMarkers(self):
pass return JpgFingerprint.__printMarker(self.markers_meta)
# #
def __repr__(self): def __repr__(self):
return JpgFingerprint.__printMarker(self.markers_a)
#
@staticmethod
def __printMarker(markers):
str = "" str = ""
total = 0 total = 0
for marker in self.markers_a: for marker in markers:
str += repr(marker) + "\n" str += repr(marker) + "\n"
total += marker.marker_size total += marker.marker_size
str += "[TOT ] bytes=={}".format(total) str += "[TOT ] bytes=={}".format(total)
@ -54,7 +63,7 @@ class JpgMarker:
def __repr__(self): def __repr__(self):
return "[{}] {} {}-len {}-fpos".format(self.marker_cat, self.marker_hexstr, self.marker_size, self.marker_filepos) return "[{}] {} {}(len) {}(fpos)".format(self.marker_cat, self.marker_hexstr, self.marker_size, self.marker_filepos)

View File

@ -2,7 +2,7 @@
# #
# #
import logging import logging
from PIL import Image # from PIL import Image
from libs.jpg_bin import JpgBin from libs.jpg_bin import JpgBin

View File

@ -11,6 +11,9 @@ from libs.toolbox import Toolbox
from libs.jpg_tools import JpgTools from libs.jpg_tools import JpgTools
fingerprint = False fingerprint = False
printmeta = False
printimage = False
def main(): def main():
parseArgs() parseArgs()
@ -23,8 +26,8 @@ def processImage(image_fn):
jpg = JpgTools() jpg = JpgTools()
jpg_bin = jpg.getJpgBin(image_fn) jpg_bin = jpg.getJpgBin(image_fn)
if (fingerprint): printImageInfo(jpg_bin)
print( str(jpg_bin) )
# sig = Signature() # sig = Signature()
# sig.genSig(img_bin) # sig.genSig(img_bin)
@ -59,6 +62,17 @@ def copyImage(image_fn):
copyfile(image_fn, newFileName) copyfile(image_fn, newFileName)
return (pubFileName, privFileName) return (pubFileName, privFileName)
#
def printImageInfo(jpg_bin2):
if (fingerprint):
print( str(jpg_bin2) )
if (printimage):
print( jpg_bin2.printMarkerImg())
if (printmeta):
print( jpg_bin2.printMarkerMeta())
def parseArgs(): def parseArgs():
print("***** ***** ***** *****") print("***** ***** ***** *****")
@ -69,6 +83,8 @@ def parseArgs():
parser.add_argument('-v', '--verbose', action='store_true', help="will set logging level to INFO") parser.add_argument('-v', '--verbose', action='store_true', help="will set logging level to INFO")
parser.add_argument('-vv', '--vverbose', action='store_true', help="will set logging level to DEBUG") parser.add_argument('-vv', '--vverbose', action='store_true', help="will set logging level to DEBUG")
parser.add_argument('-l', '--logging', action='store_true', help="will supercede the -v option and send all logging to a file, logging.DEBUG") parser.add_argument('-l', '--logging', action='store_true', help="will supercede the -v option and send all logging to a file, logging.DEBUG")
parser.add_argument('-pm', '--printmeta', action='store_true', help="print the metadata markers")
parser.add_argument('-pi', '--printimage', action='store_true', help="print the image markers")
parser.add_argument('-fp', '--fingerprint', action='store_true', help="fingerprint") parser.add_argument('-fp', '--fingerprint', action='store_true', help="fingerprint")
args = parser.parse_args() args = parser.parse_args()
@ -83,8 +99,17 @@ def parseArgs():
logging.basicConfig(level=logging.CRITICAL) logging.basicConfig(level=logging.CRITICAL)
if (args.fingerprint): if (args.fingerprint):
global fingerprint
fingerprint = True fingerprint = True
if (args.printmeta):
global printmeta
printmeta = True
if (args.printimage):
global printimage
printimage = True
if (args.image): if (args.image):
processImage(args.image) processImage(args.image)
else: else:

View File

@ -1,4 +1,2 @@
Pillow==3.3.1
pycrypto==2.6.1 pycrypto==2.6.1
requests==2.11.0
shellescape==3.4.1