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

Private GIT Repository
fin reprise
[canny.git] / stc / exp / raphus / sobel555_for_ensemble.py
index 1a7f7c614575b8724c2a1a46f033e7b11f982461..89e0cbdd39d07aa7bc39d413c1ce4004607af201 100644 (file)
@@ -12,6 +12,10 @@ from bbs import *
 
 
 infinity = 1000000000
 
 
 infinity = 1000000000
+M=18532395500947174450709383384936679868383424444311405679463280782405796233163977*39688644836832882526173831577536117815818454437810437210221644553381995813014959
+X=18532395500947174450709383384936679868383424444311
+
+
 
 
 
 
 
 
@@ -377,8 +381,8 @@ def compute_list_bit_to_change(threshold,processed):
 def compute_filter_canny(level,image,MsgLen):
 
     bbs = BlumBlumShub();
 def compute_filter_canny(level,image,MsgLen):
 
     bbs = BlumBlumShub();
-    bbs.setN(18532395500947174450709383384936679868383424444311405679463280782405796233163977*39688644836832882526173831577536117815818454437810437210221644553381995813014959)
-    bbs.setSeed(18532395500947174450709383384936679868383424444311)
+    bbs.setN(M)
+    bbs.setSeed(X)
 
     level2=level.copy()
     level2= array(level2.getdata()).flatten()
 
     level2=level.copy()
     level2= array(level2.getdata()).flatten()
@@ -426,7 +430,7 @@ def compute_filter_canny(level,image,MsgLen):
     List7=set(compute_list_bit_to_change(100,processed))
 
     #nb_bit_embedded=(512*512/10)+40
     List7=set(compute_list_bit_to_change(100,processed))
 
     #nb_bit_embedded=(512*512/10)+40
-    nb_bit_embedded=max(2*MsgLen,int(len(List3)/MsgLen)*MsgLen)+40
+    nb_bit_embedded=max(2*MsgLen,int(len(List3)/MsgLen)*MsgLen)
     print "nb_bit_embedded",nb_bit_embedded
     AvailablePixel3=List3
     AvailablePixel5=AvailablePixel3.union(List5)
     print "nb_bit_embedded",nb_bit_embedded
     AvailablePixel3=List3
     AvailablePixel5=AvailablePixel3.union(List5)
@@ -454,9 +458,9 @@ def compute_filter_canny(level,image,MsgLen):
         sub = 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)
 
 
     Weight=[0 for _ in sub]
 
 
     Weight=[0 for _ in sub]
@@ -473,15 +477,9 @@ def compute_filter_canny(level,image,MsgLen):
             Weight[l]=1000
         l+=1
 
             Weight[l]=1000
         l+=1
 
-            
-        
-
     List_bit_to_change=sub
         
         
     List_bit_to_change=sub
         
         
-
-
-
     return [sub,Weight]
 
 
     return [sub,Weight]
 
 
@@ -495,63 +493,39 @@ def compute_filter_canny(level,image,MsgLen):
 
 
 def mystego(filein, fileout):
 
 
 def mystego(filein, fileout):
+    bit_to_read = 1
+    global M,X
+    bbs = BlumBlumShub();
+    bbs.setN(M)
+    bbs.setSeed(X)
+
     dd = im.open(filein)
     dd = dd.convert('RGB') 
     red, green, blue = dd.split()
     level=red.copy()
 
 
     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."
 
 
     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."
 
-
-    message=message[0:len(message)/1]
+    
+   
+    
     leng_msg=len(message)
     leng_msg=len(message)
+    print "taille du message en caracteres",leng_msg
     message=message+((leng_msg+7)/8*8-leng_msg)*" "
     leng_msg=len(message)
     message=message+((leng_msg+7)/8*8-leng_msg)*" "
     leng_msg=len(message)
-
     leng='%08d'%len(message)
     leng='%08d'%len(message)
-
-
-
-
+    
     len_leng=len(leng)
     leng_error=int(len_leng)
     leng_cor=leng
     len_leng=len(leng)
     leng_error=int(len_leng)
     leng_cor=leng
+    
     List_pack=a2b_list(leng_cor)
     List_pack=a2b_list(leng_cor)
-
-
-
-
-
-    [List_bit_to_change,Weight]=compute_filter_canny(level,dd,leng_msg)
-    level= array(level.getdata()).flatten()
-
-
-    bit_to_read=1  
-
-
-
-
-    M=18532395500947174450709383384936679868383424444311405679463280782405796233163977*39688644836832882526173831577536117815818454437810437210221644553381995813014959
-    # M clef
-    X=18532395500947174450709383384936679868383424444311
-    # X clef
-
-
-
-
-    l=0
-
-
-   
-    List_random=[]
-    while len(List_random)<len(List_bit_to_change):
-        X=(X*X)%M
-        List_random.extend(Denary2Binary(X))
-
     size=0
     for i in range(leng_msg/8):
         m=message[i*8:(i+1)*8]
     size=0
     for i in range(leng_msg/8):
         m=message[i*8:(i+1)*8]
@@ -560,33 +534,52 @@ def mystego(filein, fileout):
         size=size+len(m_bin)
         List_pack.extend(m_bin) 
 
         size=size+len(m_bin)
         List_pack.extend(m_bin) 
 
+    """    
 
 
 
 
 
 
+    message = []
+    for c in [x if x==0 else 1 for x in im.open("invader.png").getdata()]:
+        message +=[c]
+    
+    leng_msg=len(message)
+    leng='%08d'%len(message)
+    len_leng=len(leng)
+    leng_error=int(len_leng)
+    leng_cor=leng    
+    List_pack=a2b_list(leng_cor)
+    List_pack += message
+    #print List_pack
 
 
+    leng_msg=len(List_pack)
 
 
+    [List_bit_to_change,Weight]=compute_filter_canny(level,dd,leng_msg)
+    level= array(level.getdata()).flatten()
    
    
+    List_random=[]
+    while len(List_random)<len(List_bit_to_change):
+        List_random.extend(Denary2Binary(bbs.next()))
 
 
-    #List_bit_to_change = support
-    #print len(List_bit_to_change)
-
+        
 
     #print List_bit_to_change
 
     #print List_bit_to_change
-    Support=[getBit(level[l],bit_to_read) for l in List_bit_to_change]
-    #print len(List_pack)
+    Support=[]
+    for l in List_bit_to_change : 
+        Support += [getBit(level[l],bit_to_read) ]
+
     #List_pack = message
 
 
     Message=[(int(List_pack[l])^int(List_random[l])) for l in xrange(len(List_pack))]
 
     #List_pack = message
 
 
     Message=[(int(List_pack[l])^int(List_random[l])) for l in xrange(len(List_pack))]
 
-    print "support",len(List_bit_to_change)
-    print "message",len(Message)
-    print "weight",len(Weight)
+    #print "support",len(List_bit_to_change)
+    #print "message",len(Message)
+    #print "weight",len(Weight)
 
     (x_b,Stc_message,H_hat) = stc(Support,Weight,Message)
 
 
     (x_b,Stc_message,H_hat) = stc(Support,Weight,Message)
 
-    print "pourcentage modif",nbdif(x_b,Stc_message)
-    print "taille Stc_message",len(Stc_message)
+    #print "pourcentage modif",nbdif(x_b,Stc_message)
+    #print "taille Stc_message",len(Stc_message)
 #    Stc_message=Message
 
 
 #    Stc_message=Message
 
 
@@ -604,9 +597,9 @@ def mystego(filein, fileout):
             level[l]=float64(setBit(level[l],bit_to_read,Stc_message[size_mesg]))
             size_mesg+=1
 
             level[l]=float64(setBit(level[l],bit_to_read,Stc_message[size_mesg]))
             size_mesg+=1
 
-    print 'size mesg',size_mesg
-    print 'val mod',val_mod
-    print 'len message',len(Message),len(List_pack)
+    #print 'size mesg',size_mesg
+    #print 'val mod',val_mod
+    #print 'len message',len(Message),len(List_pack)
 
     
 
 
     
 
@@ -617,14 +610,14 @@ def mystego(filein, fileout):
     #zz4.show()
 
 
     #zz4.show()
 
 
-
+    """
     
     dd2 = im.open(fileout)
     dd2 = dd2.convert('RGB') 
     red2, green, blue = dd2.split()
     level2=red2.copy()
 
     
     dd2 = im.open(fileout)
     dd2 = dd2.convert('RGB') 
     red2, green, blue = dd2.split()
     level2=red2.copy()
 
-    [List_bit_to_change2,Weight2]=compute_filter_canny(level2,dd2,len(Message))
+    [List_bit_to_change2,Weight2]=compute_filter_canny(level2,dd2,leng_msg)
 
 
     level2= array(level2.getdata()).flatten()
 
 
     level2= array(level2.getdata()).flatten()
@@ -634,7 +627,6 @@ def mystego(filein, fileout):
     print "weight2",len(Weight2)
 
     alpha = float(len(List_bit_to_change2))/len(Message)
     print "weight2",len(Weight2)
 
     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 = {
@@ -679,6 +671,7 @@ def mystego(filein, fileout):
 #    print conv_list_bit(''.join([`MessageDecoded2[i]` for i in xrange(leng_error*8)]))
 #    print int(conv_list_bit(''.join([`MessageDecoded2[i]` for i in xrange(leng_error*8)])))
 
 #    print conv_list_bit(''.join([`MessageDecoded2[i]` for i in xrange(leng_error*8)]))
 #    print int(conv_list_bit(''.join([`MessageDecoded2[i]` for i in xrange(leng_error*8)])))
 
+    print "MessageDecoded2",MessageDecoded2
     print conv_list_bit(''.join([`MessageDecoded2[i]` for i in xrange(len(Message2))]))
  
 
     print conv_list_bit(''.join([`MessageDecoded2[i]` for i in xrange(len(Message2))]))
  
 
@@ -708,35 +701,37 @@ def mystego(filein, fileout):
     print decoded_msg#[0:20]
     print len(List_bit_to_change)
     list_nb_bit.append(filein)
     print decoded_msg#[0:20]
     print len(List_bit_to_change)
     list_nb_bit.append(filein)
-    list_nb_bit.append(len(List_bit_to_change))
-
+    list_nb_bit.append(len(List_bit_to_change2))
 
 
+"""
 
 
 #path_cover = '/localhome/couturie/ensemble/cover_bad_laplace/'
 
 
 #path_cover = '/localhome/couturie/ensemble/cover_bad_laplace/'
-path_stego = '/localhome/couturie/ensemble/BossBase-1.0-canny_new/'
-path_cover = '/localhome/couturie/ensemble/BossBase-1.0-cover/'
+path_stego = '/home/couchot/rech/CCG12/canny/stc/exp/raphus/stego/'
+path_cover = '/home/couchot/rech/BCG10/Oxford11/experiments/images/'
 #path_stego = '/tmp/'
 #path_stego = '/home/couturie/BossBase-1.0-canny/'
 #listing = os.listdir(path_cover)
 
 #path_stego = '/tmp/'
 #path_stego = '/home/couturie/BossBase-1.0-canny/'
 #listing = os.listdir(path_cover)
 
+
 list_nb_bit=[]
 l=0
 
 
 list_nb_bit=[]
 l=0
 
 
-mystego(argv[1],argv[2])
+
 # entree sortie 
 
 # entree sortie 
 
-raise SystemExit
+
+listing = [957, 108, 106, 29, 431, 924, 262, 477, 346, 809]
 
 for infile in listing:
 #    if l<10:
 
 for infile in listing:
 #    if l<10:
-    if infile[0]==argv[1]:
-        print "current file is: " + infile, path_stego+infile
-        mystego(path_cover+infile,path_stego+infile)
+    fi = path_cover+str(infile)+'.png'
+    fo = path_stego+str(infile)+'.png'
+    mystego(fi,fo)
     l+=1
 
 #f = open('histogram_boss_canny_100255', 'w')
 #f = open('histogram', 'w')
 #for item in list_nb_bit:
     l+=1
 
 #f = open('histogram_boss_canny_100255', 'w')
 #f = open('histogram', 'w')
 #for item in list_nb_bit:
-#  f.write("%s\n" % item)
+#f.write("%s\n" % item)