AnonSec Shell
Server IP : 52.91.253.208  /  Your IP : 3.138.36.38   [ Reverse IP ]
Web Server : Apache
System : Linux ip-172-26-9-9 4.19.0-25-cloud-amd64 #1 SMP Debian 4.19.289-1 (2023-07-24) x86_64
User : daemon ( 1)
PHP Version : 7.3.18
Disable Function : NONE
Domains : 3 Domains
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : OFF
Directory :  /bin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /bin/write-mime-multipart
#!/usr/bin/python3
# largely taken from python examples
# http://docs.python.org/library/email-examples.html

import os
import sys

from email import encoders
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from optparse import OptionParser
import gzip

COMMASPACE = ', '

starts_with_mappings = {
    '#include': 'text/x-include-url',
    '#include-once': 'text/x-include-once-url',
    '#!': 'text/x-shellscript',
    '#cloud-config': 'text/cloud-config',
    '#cloud-config-archive': 'text/cloud-config-archive',
    '#upstart-job': 'text/upstart-job',
    '#part-handler': 'text/part-handler',
    '#cloud-boothook': 'text/cloud-boothook'
}


def try_decode(data):
    try:
        return (True, data.decode())
    except UnicodeDecodeError:
        return (False, data)


def get_type(fname, deftype):
    rtype = deftype

    with open(fname, "rb") as f:
        (can_be_decoded, line) = try_decode(f.readline())

    if can_be_decoded:
        # slist is sorted longest first
        slist = sorted(list(starts_with_mappings.keys()),
                       key=lambda e: 0 - len(e))
        for sstr in slist:
            if line.startswith(sstr):
                rtype = starts_with_mappings[sstr]
                break
    else:
        rtype = 'application/octet-stream'

    return(rtype)


def main():
    outer = MIMEMultipart()
    parser = OptionParser()

    parser.add_option("-o", "--output", dest="output",
                      help="write output to FILE [default %default]",
                      metavar="FILE", default="-")
    parser.add_option("-z", "--gzip", dest="compress", action="store_true",
                      help="compress output", default=False)
    parser.add_option("-d", "--default", dest="deftype",
                      help="default mime type [default %default]",
                      default="text/plain")
    parser.add_option("--delim", dest="delim",
                      help="delimiter [default %default]", default=":")

    (options, args) = parser.parse_args()

    if (len(args)) < 1:
        parser.error("Must give file list see '--help'")

    for arg in args:
        t = arg.split(options.delim, 1)
        path = t[0]
        if len(t) > 1:
            mtype = t[1]
        else:
            mtype = get_type(path, options.deftype)

        maintype, subtype = mtype.split('/', 1)
        if maintype == 'text':
            fp = open(path)
            # Note: we should handle calculating the charset
            msg = MIMEText(fp.read(), _subtype=subtype)
            fp.close()
        else:
            fp = open(path, 'rb')
            msg = MIMEBase(maintype, subtype)
            msg.set_payload(fp.read())
            fp.close()
            # Encode the payload using Base64
            encoders.encode_base64(msg)

        # Set the filename parameter
        msg.add_header('Content-Disposition', 'attachment',
                       filename=os.path.basename(path))

        outer.attach(msg)

    if options.output is "-":
        if hasattr(sys.stdout, "buffer"):
            # We want to write bytes not strings
            ofile = sys.stdout.buffer
        else:
            ofile = sys.stdout
    else:
        ofile = open(options.output, "wb")

    if options.compress:
        gfile = gzip.GzipFile(fileobj=ofile, filename=options.output)
        gfile.write(outer.as_string().encode())
        gfile.close()
    else:
        ofile.write(outer.as_string().encode())

    ofile.close()

if __name__ == '__main__':
    main()

# vi: ts=4 expandtab

Anon7 - 2022
AnonSec Team