NEW: added new marker processing, added print markers metadata CLI, added print markers image CLI
This commit is contained in:
parent
e0d7466730
commit
498070a48e
|
@ -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 ]]
|
||||
|
||||
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
#
|
||||
import logging
|
||||
from PIL import Image
|
||||
# from PIL import Image
|
||||
from libs.jpg_bin import JpgBin
|
||||
|
||||
|
||||
|
|
31
picseal.py
31
picseal.py
|
@ -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:
|
||||
|
|
|
@ -1,4 +1,2 @@
|
|||
Pillow==3.3.1
|
||||
pycrypto==2.6.1
|
||||
requests==2.11.0
|
||||
shellescape==3.4.1
|
||||
|
||||
|
|
Loading…
Reference in New Issue