Welcome To Our Shell

Mister Spy & Souheyl Bypass Shell

Current Path : /home/ift/51_iftlib/md/

Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
Upload File :
Current File : //home/ift/51_iftlib/md/gx.old

import os
import sys
import re
import random
import hashlib
import base64
import codecs



class Gx (object):

    def __init__ (self):
        pass
                
#*************************************************************

#   Copies all linked svg-files into the main file being aware of renaming id's

    def freeze (self,pars):
    
        os.system("git


        text = codecs.open(pars[0],encoding="utf-8").read()
        defs = {}
        
        while (0 == 0):
            m = re.search(r"^(.*?)\<image ([^\<\>]*)(xlink\:href=)[\"\']([A-Za-z0-9\_\-\.\\\/]+\.)(svg|SVG)[\"\']([^\<\>]*)\/\>(.*)$",
                                  text,re.DOTALL)
            if not m:
                break
            imgtext = m.group(2) + m.group(6)
            
            x1 = "0mm"
            y1 = "0mm"
            w1 = ""
            h1 = ""
            w2 = ""
            h2 = ""
            w3 = 0
            h3 = 0
                        
#            print imgtext
            m1 = re.search(r"^(.*)x=[\"\'](.*?)[\"\'](.*)$",imgtext,re.DOTALL)
            if m1:
                x1      = m1.group(2)
                imgtext = m1.group(1) + m1.group(3)

            m1 = re.search(r"^(.*)y=[\"\'](.*?)[\"\'](.*)$",imgtext,re.DOTALL)
            if m1:
                y1      = m1.group(2)
                imgtext = m1.group(1) + m1.group(3)

            m1 = re.search(r"^(.*)width=[\"\'](.*?)[\"\'](.*)$",imgtext,re.DOTALL)
            if m1:
                w1      = m1.group(2)
                imgtext = m1.group(1) + m1.group(3)

            m1 = re.search(r"^(.*)height=[\"\'](.*?)[\"\'](.*)$",imgtext,re.DOTALL)
            if m1:
                h1      = m1.group(2)
                imgtext = m1.group(1) + m1.group(3)
            
            textsvg = codecs.open(m.group(4)+m.group(5),encoding="utf-8").read()
            textsvg = re.sub(r"^(.*?)<svg\n*(.*?)\n*\<\/svg\>.*$","\\2",textsvg,flags=re.DOTALL)
            textsvg = "<g\n" + textsvg + "\n</g>\n"

            wh      = re.search(r"viewBox=\"(\d+) +(\d+)+ ([\d+\.]+) +([\d+\.]+)",textsvg,re.DOTALL)
            if wh:
                w2 = wh.group(3)
                h2 = wh.group(4)
            else:
                m1 = re.search(r"width.*?(\d+[a-z]*)",textsvg);
                if m1:
                    w2 = m1.group(1)
                m1 = re.search(r"height.*?(\d+[a-z]*)",textsvg);
                if m1:
                    h2 = m1.group(1)

            try:
                w_fac = self._imgfactor(w1)/self._imgfactor(w2)
            except:
                w_fac = 0
            try:
                h_fac = self._imgfactor(h1)/self._imgfactor(h2)
            except:
                h_fac = 0
            if w_fac == 0:
                w_fac = h_fac
            if h_fac == 0:
                h_fac = w_fac


            m1 = re.search(r"^(\d+\.?\d*)([a-z]*)",x1)
            x1 = str(float(m1.group(1))/w_fac) + m1.group(2)
            m1 = re.search(r"^(\d+\.?\d*)([a-z]*)",y1)
            y1 = str(float(m1.group(1))/h_fac) + m1.group(2)

            label   = re.sub(r"[\.\\\/]","_",m.group(4)+m.group(5),9999)    #  Change of id-labels
            textsvg = re.sub(r"(id\=\")(.*?)(\")","\\1\\3",textsvg,1)
            textsvg = re.sub(r"(id\=\")([^\"]+?)(\")",'\\1-x-x-x-' +label+"_\\2\\3",textsvg,99999999)
            textsvg = re.sub(r"(id\=\")(\")","\\1-x-x-x-"+label+"\\2",textsvg,1)
            textsvg = re.sub(r"(href\=\"\#)(.*?)(\")","\\1-x-x-x-"+label+"_\\2\\3",textsvg,99999999)
            textsvg = re.sub(r"-x-x-x-","",textsvg,99999999)
            
            imgtext = ( '<use x="'+x1+'" y="'+y1+'" transform="scale('+str(w_fac)+","+str(h_fac)+')" ' +
                         imgtext + 'xlink:href="#' + label + '"/>' )
            text    = m.group(1) + re.sub(r" +"," ",imgtext,9999) + m.group(7)

            defs[label] = textsvg

        text1 = ""
        for o in defs.keys():
            text1 = text1 + defs[o]
        if not text1 == "":
            text1 = "<defs>\n" + text1 + "</defs>\n</svg>"
            text  = re.sub(r"</svg>",text1,text)
            
        try:
            text = codecs.open(pars[1],"w",encoding="utf-8").write(text)
        except:
            print text
        return(text)

 
#***************************************************************************

    def _imgfactor (self,x):
    
        m = re.search(r"^(.*?)([a-z]*)$",x)
        o = float(m.group(1))*({"":1.0,"pt":1.25,"mm":3.54,"cm":35.4,"pc":15,"in":90}[m.group(2)])
        return(o)


#***************************************************************************

    def md2svg (self,pars):    

        m = re.search(r"^(.*)\.(.*)$",pars[0])

        if m:
            file = m.group(1)
        else:
            exit()
            
#   1.   Cleaning up

        zaehler = 0  
        while (0 == 0):
            zaehler = "%03u" % (int(zaehler) + 1)
            try:
                os.remove(file+"_"+zaehler+".pdf")
            except:
                pass
            try:
                os.remove("_"+file+"_"+zaehler+".svg")
            except:
                pass
            try:
                os.remove(file+"_"+zaehler+".svg")
            except:
                break

#   2.  Auslesen der Metadaten fuer wkhtmltopdf


        text   = codecs.open(file+".md",encoding="utf-8").read()
        text1  = text
        cmd    = ""
        pdfdpi = ""
        while (0 == 0):
            m = re.search("^(.*?)\n(page|margin|pdf)(height|width|left|right|top|bottom|footer|dpi)\: +(\d+)(mm|pt|cm|dpi)(.*)$",text,re.DOTALL)
            if m:
                if m.group(2) + m.group(3) == "pdfdpi":
                    pdfdpi = m.group(4)
                elif m.group(2) + m.group(3) == "pagefooter":
                    footer = m.group(4)    #   Footer Mass
                else:
                    cmd =  cmd + "  --"+m.group(2)+"-"+m.group(3)+" "+m.group(4)+m.group(5) + " "
                text = m.group(1) + m.group(6)
            else:
                break


#   3. Alle jpg/svg/gif/png-Eintraege werden aufgenommen

        images          = []
        files_to_delete = []
        text            = ""
        svg_paths       = {}

        while (0 == 0):  
            m        = re.search("^(.*?[\"\'])([a-zA-Z0-9\.\\\/][a-zA-Z0-9\.\-\_\\\/]*)\.(jpg|svg|gif|png)(.*)$",text1,flags=re.DOTALL)
            if not m:
                text = text + text1
                break
            imgfile  = m.group(2)
            text1    = m.group(4)
            ending   = m.group(3)
            images.append(imgfile+"."+ending)
            if m.group(3) == "svg":   #  Bei svg-Files wird erst ein jpg-Platzhalterfile erstellt (im aktuellen Verzeichnis)
                ending   = "png"      #  das dann nachher durch das richtige svg ersetzt wird
                imgfile0 = imgfile
                imgfile  = re.sub(r"^(.*)([\\\/])","",imgfile0) + "___P_L_A_C_E_H_O_L_D_E_R"
                svg_paths[imgfile] = imgfile0
                text3    = codecs.open(imgfile0+".svg",encoding="utf-8").read()
                wh       = re.search(r"^(.*?)\<svg[^\>]+viewBox=\"(\d+) +(\d+)+ ([\d+\.]+) +([\d+\.]+)",text3,re.DOTALL)
                if wh:
                    im       = Image.new('RGB',(int(float(wh.group(4))),int(float(wh.group(5)))),'black')
                else:
                    w        = re.search(r"^(.*?)\<svg[^\>]+width=\"([\d\.]*)",text3,re.DOTALL)
                    h        = re.search(r"^(.*?)\<svg[^\>]+height=\"([\d\.]*)",text3,re.DOTALL)
                    im       = Image.new('RGB',(int(float(w.group(2))),int(float(h.group(2)))),'black')
                im.save(imgfile+".png")
                files_to_delete.append(imgfile+".png")
                contains_svg = True
            else:
                contains_png = True
            text = text + m.group(1) + imgfile + "." + ending


#   4.  Processing  des abgeaenderten md-Files
        print images
        codecs.open(file+"___P_L_A_C_E_H_O_L_D_E_R.md","w",encoding="utf-8").write(text)
        files_to_delete.append(file+"___P_L_A_C_E_H_O_L_D_E_R.md")
        os.system("pandoc -s -o "+file+".html "+file+"___P_L_A_C_E_H_O_L_D_E_R.md")
        if "win" in sys.platform:
            os.system("wkhtmltopdf " +cmd+file+".html "+file+".pdf")
        else:
            os.system("xvfb-run -a -s \"-screen 0 640x480x16\" wkhtmltopdf " +cmd+file+".html "+file+".pdf")
        text = codecs.open(file+".html",encoding="utf-8").read()
        while (0 == 0):
            m = re.search(r"^(.*?)([a-zA-Z0-9\-\_\.]+___P_L_A_C_E_H_O_L_D_E_R).png(.*)$",text,re.DOTALL)
            if not m:
                break
            text = m.group(1) + svg_paths[m.group(2)] + ".svg" + m.group(3)
#        try:
#            text = re.sub("</body>","</body><p><img src=\""+footer+" width=\"100%\"/></p>",text)  #  add footer file
#        except:
#            pass

        codecs.open(file+".html","w",encoding="utf-8").write(self.svg2inline(text))  #  make all svg's inline


#   5.  Fertiges PDF, das ist Grundlage fuer die weiteren Schritte

        pdf     = pyPdf.PdfFileReader( open(file+".pdf","rb") )
        zaehlernr = 0
        footer1 = ""
        footer2 = ""
        nr      = 0


#   6.  jede Seite des erzeugten PDF's wird einzeln genommen und in SVG umgewandelt

        while (0 == 0):  
#            if zaehlernr == pdf.numPages:
#                nr = zaehlernr
#                break
            footer1 = ""
            footer2 = ""
            pdfpage = pyPdf.PdfFileWriter()
            try:
                pdfpage.addPage( pdf.getPage(zaehlernr) )   #  zaehlernr-te Seite
            except:
                break
            file1   = file+"_"+("%03u" % (zaehlernr+1))
            pdfpage.write( open(file1+".pdf","wb") )
            os.system("pdf2svg " + file1+".pdf " + file1+".svg")            
            text2 = codecs.open(file1+".svg",encoding="utf-8").read()
            text3 = ""
            while (0 == 0):
                m = re.search(r"^(.*?\")(data:image\/jpeg;base64,)(.*?)(\".*)$",text2,flags=re.DOTALL)
                if not m:
                    text3 = text3 + text2
                    break
                img   = images.pop(0)  # in der Reihenfolge der Vorkommnisse der Images werden diese untersucht
                text2 = m.group(4)
                if re.search("\.svg$",img):
#                if os.path.isfile(img+".svg"):   #   wenn es ein svg-File gibt gleichen Namens, dieses nehmen
                    text3 = text3 + m.group(1) + img # + ".svg"
                else:
                    text3 = text3 + m.group(1) + m.group(2) + m.group(3)

            m = re.search(r"^(.*)\n(\<use +xlink:href=\"\#)([^\"]*?)(\"[^\n\>]+?\>)(\s*\</g\>\s*\</svg\>\s*)$",text3,re.DOTALL)
            if m:   #  Footer-Extraktion
                text3   = m.group(1) + m.group(5)
                footer1 = m.group(2) + "footer" + m.group(4)
                m1      = re.search(r"(\<image +id=\")"+m.group(3)+"\"(.*)",text3)
                if m1:
                    footer2 = m1.group(1) + "footer\" y=\"" + footer + "\"" + m1.group(2)
                    footer1 = re.sub(r",([\d\.]+)\)",",0.0)",footer1)
                    os.remove(file1+".svg")
                    os.remove(file1+".pdf")
                    break
            zaehlernr = zaehlernr + 1
            text3     = re.sub(r"fill-opacity: *1","fill-opacity:0",text3,1)  #  der erste fill-opacity-Eintrag scheint
                                                                              #  die Opacity der ganzen Seite zu sein. Fuer
                                                                              #  Importe dieser Seiten wird die Opacity
                                                                              #  deswegen hier auf Null gesetzt.
            codecs.open(file1+".svg","w",encoding="utf8").write(text3)

        nr = zaehlernr

        for delfile in files_to_delete:
            os.remove(delfile)

        if len(images) > 0:
            print "Warning: Not all images are recognized in SVG-Files... Exit."
            return()

##   6.  jede Seite des erzeugten PDF's wird einzeln genommen und in SVG umgewandelt
#
#        while (0 == 0):  
#            footer1 = ""
#            footer2 = ""
#            pdfpage = pyPdf.PdfFileWriter()
#            try:
#                pdfpage.addPage( pdf.getPage(nr) )   #  nr-te Seite
#            except:
#                break
#            file1   = file+"_"+("%03u" % (nr+1))
#            nr = nr + 1
#            pdfpage.write( open(file1+".pdf","w") )
#            os.system("pdf2svg " + file1+".pdf " + file1+".svg")
#            text2 = codecs.open(file1+".svg",encoding="utf-8").read()
#            text3 = ""
#            while (0 == 0):
#                m = re.search(r"^(.*?\")(data:image\/jpeg;base64,)(.*?)(\".*)$",text2,flags=re.DOTALL)
#                if not m:
#                    text3 = text3 + text2
#                    break
#                img   = images.pop(0)  # in der Reihenfolge der Vorkommnisse der Images werden diese untersucht
#                text2 = m.group(4)
#                if re.search("\.svg$",img):
##                if os.path.isfile(img+".svg"):   #   wenn es ein svg-File gibt gleichen Namens, dieses nehmen
#                    text3 = text3 + m.group(1) + img # + ".svg"
#                else:
#                    text3 = text3 + m.group(1) + m.group(2) + m.group(3)
#
#            m = re.search(r"^(.*)\n(\<use +xlink:href=\"\#)([^\"]*?)(\"[^\n\>]+?\>)(\s*\</g\>\s*\</svg\>\s*)$",text3,re.DOTALL)
#            if m:   #  Footer-Extraktion
#                print "footer"
#                text3   = m.group(1) + m.group(5)
#                footer1 = m.group(2) + "footer" + m.group(4)
#                m1      = re.search(r"(\<image +id=\")"+m.group(3)+"\"(.*)",text3)
#                if m1:
#                    footer2 = m1.group(1) + "footer\" y=\"" + footer + "\"" + m1.group(2)
#                    footer1 = re.sub(r",([\d\.]+)\)",",0.0)",footer1)
##                break
#            codecs.open(file1+".svg","w",encoding="utf8").write(text3)
#
#
#
#        for delfile in files_to_delete:
#            os.remove(delfile)
#
#        if len(images) > 0:
#            print "Warning: Not all images are recognized in SVG-Files... Exit."
#            return()
#
# 7.   in den svg's die footer anbringen


        if not footer1 == "":
            zaehler = 0
            while (0 == 0):
                zaehler = "%03u" % (int(zaehler) + 1)
                if not os.path.isfile(file+"_"+zaehler+".svg"):
                    break
                textsvg = codecs.open(file+"_"+zaehler+".svg","r",encoding="utf8").read()
                textsvg = re.sub(r"\</defs\>",footer2+"\n</defs>",textsvg)
                textsvg = re.sub(r"\</g\>\s*\</svg\>",footer1 + "</g>\n</svg>",textsvg)
                codecs.open(file+"_"+zaehler+".svg","w",encoding="utf8").write(textsvg)
        try:
            pars[1]
        except:
            return()


#  8.    neues PDF erzeugen


        print "inkscape ... svg to pdf ...   " + file + ".pdf"
        zaehler = 0
        while (0 == 0):
            zaehler = "%03u" % (int(zaehler) + 1)
            print zaehler
            if not os.path.isfile(file+"_"+zaehler+".svg"):
                break
            self.svg2svg([file+"_"+zaehler+".svg","_"+file+"_"+zaehler+".svg"]) 
            textsvg = codecs.open("_"+file+"_"+zaehler+".svg","r",encoding="utf8").read()
            textsvg = re.sub(r"<!--0/0->",str(int(zaehler))+"/"+str(nr),textsvg)
            textsvg = re.sub(r"0/0",      str(int(zaehler))+"/"+str(nr),textsvg)
            codecs.open("_"+file+"_"+zaehler+".svg","w",encoding="utf8").write(textsvg)
            os.system("inkscape --without-gui --export-dpi="+pdfdpi+" -A "+
                             file+"_"+zaehler+".pdf _"+file+"_"+zaehler+".svg")
#            os.remove("_"+file+"_"+zaehler+".svg")
        os.system("pdftk " + file + "_???.pdf output " + file + ".pdf")
        
#   9.   Cleaning up

        zaehler = 0
        while (0 == 0):
            zaehler = "%03u" % (int(zaehler) + 1)
            try:
                os.remove(file+"_"+zaehler+".pdf")
            except:
                pass
#            try:
#                os.remove(file+"_"+zaehler+".svg")
#            except:
#                pass
            try:
                os.remove("_"+file+"_"+zaehler+".svg")
            except:
                break

#***************************************************************************

    def svg2inline (self,text):   #  inlines an SVG into an html
    

#        return(text)

        while (0 == 0):
        
            m = re.search(r"^(.*?)(\<[^\<\>]+?)([a-zA-Z\_0-9\-]+)\.(svg|SVG)([^\<\>]+\>)(.*)$",text,re.DOTALL)
            if not m:
                return(text)
            svgfile = m.group(3) + "." + m.group(4)
            textsvg = codecs.open(svgfile,"r",encoding="utf8").read()
            textsvg = re.sub(r"(\<svg[^\<\>]+) +width\S+", r"\1",textsvg)
            textsvg = re.sub(r"(\<svg[^\<\>]+) +height\S+",r"\1",textsvg)
#            print m.group(5)
            m1      = re.search(r"width\=[\'\"](.*?)[\'\"]",m.group(5))
            size    = ""
            if m1:
                print m1.group(1)
                size = size + "width=\"" + m1.group(1) + "\" "
            m1      = re.search(r"height\=[\'\"](.*?)[\'\"]",m.group(5))
            if m1:
                print m1.group(1)
                size = size + "height=\"" + m1.group(1) + "\" "
            textsvg = re.sub(r"\<svg","<svg "+size,textsvg)
            
            text = m.group(1) + textsvg + m.group(6)

        return(text)


#***************************************************************************


if __name__ == "__main__":
    Gx.__dict__[sys.argv[1]](Gx(),sys.argv[2:])

bypass 1.0, Devloped By El Moujahidin (the source has been moved and devloped)
Email: contact@elmoujehidin.net bypass 1.0, Devloped By El Moujahidin (the source has been moved and devloped) Email: contact@elmoujehidin.net