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

View File

@ -3,58 +3,67 @@
#
class JpgFingerprint:
def __init__(self):
self.markers_a = []
self.markers_img = []
self.markers_meta = []
self.markers_h = {}
def __init__(self):
self.markers_a = []
self.markers_img = []
self.markers_meta = []
# self.markers_h = {}
def addImgMetadata(self, mhex, mpos, mlen, mstr):
marker = JpgMarker(mhex, mpos, mlen, mstr)
self.markers_a.append(marker)
self.markers_meta.append(marker)
def addImgData(self, mhex, mpos, mlen, mstr):
marker = JpgMarker(mhex, mpos, mlen, mstr)
self.markers_a.append(marker)
self.markers_img.append(marker)
def printImgMarkers(self):
pass
def printMDMarkers(self):
pass
def addImgMetadata(self, mhex, mpos, mlen, mstr):
marker = JpgMarker(mhex, mpos, mlen, mstr)
self.markers_a.append(marker)
self.markers_meta.append(marker)
#
def __repr__(self):
str = ""
total = 0
for marker in self.markers_a:
str += repr(marker) + "\n"
total += marker.marker_size
str += "[TOT ] bytes=={}".format(total)
str += "\n"
return str
def addImgData(self, mhex, mpos, mlen, mstr):
marker = JpgMarker(mhex, mpos, mlen, mstr)
self.markers_a.append(marker)
self.markers_img.append(marker)
#
def printImgMarkers(self):
# print ("Got here dummies")
# print ("len=={}".format(len(self.markers_img)))
# print ("*** *** *** ***\n{}".format(retstr))
return JpgFingerprint.__printMarker(self.markers_img)
#
def printMDMarkers(self):
return JpgFingerprint.__printMarker(self.markers_meta)
#
def __repr__(self):
return JpgFingerprint.__printMarker(self.markers_a)
#
@staticmethod
def __printMarker(markers):
str = ""
total = 0
for marker in markers:
str += repr(marker) + "\n"
total += marker.marker_size
str += "[TOT ] bytes=={}".format(total)
str += "\n"
return str
#
class JpgMarker:
"""
Marker Data Type
"""
def __init__(self, mhex, fpos, mlen, mstr):
self.marker_hex = mhex
self.marker_hexstr = self.marker_hex.to_bytes(2, 'big').hex()
self.marker_filepos = fpos
self.marker_size = mlen
self.marker_cat = mstr
"""
Marker Data Type
"""
def __init__(self, mhex, fpos, mlen, mstr):
self.marker_hex = mhex
self.marker_hexstr = self.marker_hex.to_bytes(2, 'big').hex()
self.marker_filepos = fpos
self.marker_size = mlen
self.marker_cat = mstr
def __repr__(self):
return "[{}] {} {}-len {}-fpos".format(self.marker_cat, self.marker_hexstr, self.marker_size, self.marker_filepos)
def __repr__(self):
return "[{}] {} {}(len) {}(fpos)".format(self.marker_cat, self.marker_hexstr, self.marker_size, self.marker_filepos)

View File

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

View File

@ -11,6 +11,9 @@ from libs.toolbox import Toolbox
from libs.jpg_tools import JpgTools
fingerprint = False
printmeta = False
printimage = False
def main():
parseArgs()
@ -23,8 +26,8 @@ def processImage(image_fn):
jpg = JpgTools()
jpg_bin = jpg.getJpgBin(image_fn)
if (fingerprint):
print( str(jpg_bin) )
printImageInfo(jpg_bin)
# sig = Signature()
# sig.genSig(img_bin)
@ -59,6 +62,17 @@ def copyImage(image_fn):
copyfile(image_fn, newFileName)
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():
print("***** ***** ***** *****")
@ -69,7 +83,9 @@ def parseArgs():
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('-l', '--logging', action='store_true', help="will supercede the -v option and send all logging to a file, logging.DEBUG")
parser.add_argument('-fp', '--fingerprint', action='store_true', help="fingerprint")
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")
args = parser.parse_args()
if (args.logging):
@ -83,8 +99,17 @@ def parseArgs():
logging.basicConfig(level=logging.CRITICAL)
if (args.fingerprint):
global fingerprint
fingerprint = True
if (args.printmeta):
global printmeta
printmeta = True
if (args.printimage):
global printimage
printimage = True
if (args.image):
processImage(args.image)
else:

View File

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