]> AND Private Git Repository - canny.git/blobdiff - stc/exp/raphus/sobel555_for_ensemble.py
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
reprise
[canny.git] / stc / exp / raphus / sobel555_for_ensemble.py
index 89f8d988275b90170b8f12b339621f2c7a81bbac..3a1e5f588e6c38a7ff9528f8148df393d1d332d9 100644 (file)
@@ -8,9 +8,17 @@ import cv
 import os
 from random import *
 from math import *
 import os
 from random import *
 from math import *
+from bbs import *
+
 
 infinity = 1000000000
 
 
 infinity = 1000000000
 
+M=18532395500947174450709383384936679868383424444311405679463280782405796233163977*39688644836832882526173831577536117815818454437810437210221644553381995813014959
+# M clef
+X=18532395500947174450709383384936679868383424444311
+# X clef
+
+
 
 
 
 
 
 
@@ -372,7 +380,12 @@ def compute_list_bit_to_change(threshold,processed):
     return List
 
 
     return List
 
 
-def compute_filter_canny(level,image):
+def compute_filter_canny(level,image,MsgLen):
+
+    bbs = BlumBlumShub();
+    bbs.setN(M)
+    bbs.setSeed(X)
+
     level2=level.copy()
     level2= array(level2.getdata()).flatten()
     l=0
     level2=level.copy()
     level2= array(level2.getdata()).flatten()
     l=0
@@ -418,32 +431,44 @@ def compute_filter_canny(level,image):
     processed= array(processed.getdata()).flatten()
     List7=set(compute_list_bit_to_change(100,processed))
 
     processed= array(processed.getdata()).flatten()
     List7=set(compute_list_bit_to_change(100,processed))
 
-    nb_bit_embedded=(512*512/10)+40
+    #nb_bit_embedded=(512*512/10)+40
+    nb_bit_embedded=max(2*MsgLen,int(len(List3)/MsgLen)*MsgLen)+40
+    print "nb_bit_embedded",nb_bit_embedded
     AvailablePixel3=List3
     AvailablePixel5=AvailablePixel3.union(List5)
     AvailablePixel7=AvailablePixel5.union(List7)
     AvailablePixel3=List3
     AvailablePixel5=AvailablePixel3.union(List5)
     AvailablePixel7=AvailablePixel5.union(List7)
+    sub=set()
+
     if len(AvailablePixel3)>nb_bit_embedded:
         step=1
         WorkingPixel=AvailablePixel3
     if len(AvailablePixel3)>nb_bit_embedded:
         step=1
         WorkingPixel=AvailablePixel3
+        sub = bbs.sample(AvailablePixel3,nb_bit_embedded)
     elif len(AvailablePixel5)>nb_bit_embedded:
         step=2
         WorkingPixel=AvailablePixel5
     elif len(AvailablePixel5)>nb_bit_embedded:
         step=2
         WorkingPixel=AvailablePixel5
+        sub = AvailablePixel3.union(
+            bbs.sample(AvailablePixel5-AvailablePixel3,nb_bit_embedded-len(AvailablePixel3)))
+
     elif len(AvailablePixel7)>nb_bit_embedded:
         step=3
         WorkingPixel=AvailablePixel7
     elif len(AvailablePixel7)>nb_bit_embedded:
         step=3
         WorkingPixel=AvailablePixel7
+        sub = AvailablePixel5.union(
+            bbs.sample(AvailablePixel7-AvailablePixel5,nb_bit_embedded-len(AvailablePixel5)))
     else:
         step=4
         WorkingPixel=range(len(level2))
     else:
         step=4
         WorkingPixel=range(len(level2))
+        sub = range(len(level2))
+
 
     print "avail P3",len(AvailablePixel3)
     print "avail P5",len(AvailablePixel5)
     print "avail P7",len(AvailablePixel7)
 
 
     print "avail P3",len(AvailablePixel3)
     print "avail P5",len(AvailablePixel5)
     print "avail P7",len(AvailablePixel7)
 
-    print "size WorkingPixel",len(WorkingPixel)
-    Weight=[0 for _ in WorkingPixel]
+
+    Weight=[0 for _ in sub]
 
     l=0
 
     l=0
-    for i in WorkingPixel:
+    for i in sub:
         if step>=1 and i in List3:
             Weight[l]=1
         if step>=2 and i in List5 and Weight[l]==0:
         if step>=1 and i in List3:
             Weight[l]=1
         if step>=2 and i in List5 and Weight[l]==0:
@@ -457,13 +482,13 @@ def compute_filter_canny(level,image):
             
         
 
             
         
 
-    List_bit_to_change=WorkingPixel
+    List_bit_to_change=sub
         
         
 
 
 
         
         
 
 
 
-    return [List_bit_to_change,Weight]
+    return [sub,Weight]
 
 
 
 
 
 
@@ -476,53 +501,40 @@ def compute_filter_canny(level,image):
 
 
 def mystego(filein, fileout):
 
 
 def mystego(filein, fileout):
-    dd = im.open(filein)
-    dd = dd.convert('RGB') 
-    red, green, blue = dd.split()
-    level=red.copy()
-
-    [List_bit_to_change,Weight]=compute_filter_canny(level,dd)
-    level= array(level.getdata()).flatten()
-
 
 
-    bit_to_read=1  
+    bbs = BlumBlumShub();
+    bbs.setN(M)
+    bbs.setSeed(X)
 
 
 
 
 
 
-
-    M=18532395500947174450709383384936679868383424444311405679463280782405796233163977*39688644836832882526173831577536117815818454437810437210221644553381995813014959
-    # M clef
-    X=18532395500947174450709383384936679868383424444311
-    # X clef
-
-
-
-
-    l=0
+    dd = im.open(filein)
+    dd = dd.convert('RGB') 
+    red, green, blue = dd.split()
+    level=red.copy()
 
 
 
     message="Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete   Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete  Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete   Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete  Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete   Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete  Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete   Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete   Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete  Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete   Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete Ce que j'écris est très original... Bref, je suis un poete   Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete Ce que j'écris est très original... Bref, je suis un poete   Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete voila c'est la fin blablabla:-)"
 
 
 
     message="Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete   Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete  Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete   Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete  Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete   Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete  Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete   Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete   Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete  Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete   Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete Ce que j'écris est très original... Bref, je suis un poete   Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete Ce que j'écris est très original... Bref, je suis un poete   Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete voila c'est la fin blablabla:-)"
-    message=message[0:len(message)/1]
-    leng_msg=len(message)
-    message=message+((leng_msg+7)/8*8-leng_msg)*" "
-    leng_msg=len(message)
 
 
-    leng='%08d'%len(message)
+    message="Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela. Bon voici un test avec un message un peu plus long. Bon j'en rajoute pour voir. Ce que j'écris est très original... Bref, je suis un poete   Salut christophe, arrives tu à lire ce message? normalement tu dois lire cela."
 
 
+    """
+    message = ""
+    for c in [x if x==0 else 1 for x in im.open("invader.png").getdata()]:
+        message +=str(c)        
+    
+    print message
+    """
 
 
+    leng_msg=len(message)
+    l=0
 
 
 
 
-    len_leng=len(leng)
-    leng_error=int(len_leng)
-    leng_cor=leng
-    List_pack=a2b_list(leng_cor)
-    print len(str(M))
    
     List_random=[]
     while len(List_random)<len(List_bit_to_change):
    
     List_random=[]
     while len(List_random)<len(List_bit_to_change):
-        X=(X*X)%M
-        List_random.extend(Denary2Binary(X))
+        List_random.extend(Denary2Binary(bbs.next()))
 
     size=0
     for i in range(leng_msg/8):
 
     size=0
     for i in range(leng_msg/8):
@@ -596,17 +608,16 @@ def mystego(filein, fileout):
     red2, green, blue = dd2.split()
     level2=red2.copy()
 
     red2, green, blue = dd2.split()
     level2=red2.copy()
 
-    [List_bit_to_change2,Weight2]=compute_filter_canny(level2,dd2)
+    [List_bit_to_change2,Weight2]=compute_filter_canny(level2,dd2,leng_msg)
 
 
     level2= array(level2.getdata()).flatten()
 
     print "support2",len(List_bit_to_change2)
     print "message2",len(Message)
 
 
     level2= array(level2.getdata()).flatten()
 
     print "support2",len(List_bit_to_change2)
     print "message2",len(Message)
-    print "weight2",len(Weight)
+    print "weight2",len(Weight2)
 
     alpha = float(len(List_bit_to_change2))/len(Message)
 
     alpha = float(len(List_bit_to_change2))/len(Message)
-    print alpha
     assert alpha >= 2 
     index = min(int(alpha),9)
     H_hat2 = {
     assert alpha >= 2 
     index = min(int(alpha),9)
     H_hat2 = {
@@ -624,11 +635,11 @@ def mystego(filein, fileout):
     print H_hat,H_hat2
 
 
     print H_hat,H_hat2
 
 
-    Stc_message2=[getBit(level2[l],bit_to_read) for l in List_bit_to_change]
+    Stc_message2=[getBit(level2[l],bit_to_read) for l in List_bit_to_change2]
     LL1=list(List_bit_to_change);
     LL2=list(List_bit_to_change2)
 
     LL1=list(List_bit_to_change);
     LL2=list(List_bit_to_change2)
 
-    print "Level",max([level2[l]-level[l] for l in xrange(len(Stc_message))])
+    print "Level",max([level2[l]-level[l] for l in xrange(len(Stc_message2))])
     print "List bit to change",max([LL2[l]-LL1[l] for l in xrange(len(Stc_message))])
     print "Stc message", max([Stc_message[l]-Stc_message2[l] for l in xrange(len(Stc_message))])
 
     print "List bit to change",max([LL2[l]-LL1[l] for l in xrange(len(Stc_message))])
     print "Stc message", max([Stc_message[l]-Stc_message2[l] for l in xrange(len(Stc_message))])