multipart / form-data Цербер FTP - PullRequest
       30

multipart / form-data Цербер FTP

0 голосов
/ 15 января 2019

В течение последней недели я пытался понять, как загружать файлы на Cerberus FTP через HTTP-запрос, но я продолжаю получать тот же ответ от сервера.

Если я изменяю contentype на что-то другое, он завершается с ошибкой проверки CSRF.

Есть идеи?

Кажется, это проблема форматирования, но я не могу понять, где. В WinDiff запрос слегка отключен, потому что после атрибута Cookie есть дополнительный пробел. Должен ли этот тип запроса быть на 100% точным с точки зрения пробелов и тому подобного?

В Fiddler запросы выглядят одинаково.

Дайте мне знать, если требуется скрипт загрузки веб-сайта, форма не позволила мне загрузить весь скрипт.

      "
Response: 
    HTTP/1.1 200 Ok
    Server: CerberusFTPServer/9.0
    X-Frame-Options: SAMEORIGIN
    X-Content-Type-Options: nosniff
    X-XSS-Protection: 1
    Content-Security-Policy: frame-ancestors 'self'
    Referrer-Policy: same-origin
    Cache-Control: no-cache, private, must-revalidate
    Content-Type: application/json; charset=utf-8
    Set-Cookie: cftpSID=w6QPdMOWDsO_wq-Dsw-Cj8KSw57CjwjDlQnDvistBw; Path=/; HttpOnly;
    Date: Tue, 15 Jan 2019 09:22:24 GMT
    Content-Length: 126

    {"files":[{"delete_type":"","delete_url":"","error":"Form data not complete","name":"","size":0,"thumbnail_url":"","url":""}]}"





#upload

$file = "C:\Users\michael\Desktop\1024000.txt"

    $fileName = Split-Path $File 
    $boundary = [guid]::NewGuid().ToString()

    $fileBinary = [System.IO.File]::ReadAllBytes($File)

    $enc = [System.Text.Encoding]::GetEncoding("iso-8859-1")

    $fileEncoded = $enc.GetString($fileBinary)


$Uri='http://172.16.0.82/file/upload'

$ContentType = "text/plain"

$boundary = "-----------------------------7e3a63120b435"        

$FNAME = "1024000.txt"

$FileContent= $fileEncoded

$template = @' 
{5}
{0}
Content-Disposition: form-data; name="cd"

/
{0}
Content-Disposition: form-data; name="csrftoken"

{4}
{0}
Content-Disposition: form-data; name="files[]"; filename="{1}"
Content-Type: {2}

{3}
{0}--

'@

$conn = "Connection: Keep-Alive"
$body = $template -f $boundary, $FNAME, $ContentType, $FileContent, $csrftoken, $conn


$ConType="multipart/form-data; boundary="+$boundary

$header=@{
'X-Requested-With'='XMLHttpRequest'
'Accept-Encoding'= 'gzip, deflate'
'Referer'='http://172.16.0.82/file'
'Content-Type'= "$ConType"
'Accept'='application/json, text/javascript, */*; q=0.01'
'Pragma'='no-cache'
'User-Agent' = 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko'
'Host' = '172.16.0.82'
'Accept-Language' = 'en-DK,en-GB;q=0.8,en-US;q=0.6,en;q=0.4,da;q=0.2'
}


Invoke-webrequest -Uri $Uri -Method POST -Body $body -Headers $header -websession $session
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...