PowerShell и ЖЖ: аутентификация challenge-response, ч.2 (практика через интерфейс «flat»)

Feb 08, 2023 14:23

Ранее в этой серии постов:
...
11. Общение с ЖЖ из PowerShell: простейшая аутентификация, получаю текст поста (интерфейс «flat»), ч.3
12. Общение с ЖЖ из PowerShell: простейшая аутентификация, получаю текст поста (интерфейс «XML-RPC»)
13. PowerShell: преобразование хеш-таблицы в формат XML-RPC
14. PowerShell и ЖЖ: аутентификация challenge-response и регистр букв хеш-суммы, ч.1

Окружение: операционная система «Windows 10», программа-оболочка «PowerShell» версии 7.

Готовлю нужные функции

function toHashTable($str) {
$arr = $str -split '\r?\n'
$hash = @{}
for ($i = 0; $i -lt $arr.Length; $i += 2) {
$hash[$arr[$i]] = $arr[$i + 1]
}
return $hash
}

function getHash($str, $alg) {
$stringAsStream = [System.IO.MemoryStream]::new()
$writer = [System.IO.StreamWriter]::new($stringAsStream)
$writer.write($str)
$writer.Flush()
$stringAsStream.Position = 0
(Get-FileHash -InputStream $stringAsStream -Algorithm $alg).Hash.ToLower()
}

Аутентификация «challenge-response», получаю пост журнала по интерфейсу «flat»

$body = @{
mode = "getchallenge"
}
$Response = Invoke-WebRequest -URI "https://www.livejournal.com/interface/flat" -Body $body -Method "POST"
$params = toHashTable($Response.Content)
$hPass = getHash "пароль" "MD5"
$hResp = getHash ($params["challenge"] + $hPass) "MD5"
$body = @{
mode = "getevents"
user = "vbgtut"
auth_method = "challenge"
auth_challenge = $params["challenge"]
auth_response = $hResp
selecttype = "one"
itemid = "148"
ver = "1"
}
$Response = Invoke-WebRequest -URI "https://www.livejournal.com/interface/flat" -Body $body -Method "POST"
$params = toHashTable($Response.Content)
$params["events_1_url"]

https://vbgtut.livejournal.com/37952.html

В этом посте - только код, все пояснения уже даны в предыдущих постах.

Инструмент, Образование, Сайтостроение, Программирование, ЖЖ

Previous post Next post
Up