Неверное приведение из System.Data.SqlDbType в System.Data.DbType - PullRequest
0 голосов
/ 06 марта 2019

Я писал скрипт для импорта файлов cookie в Google Chrome.

В Powershell 3 мой скрипт работает нормально, но в Powershell 2 у меня возникает проблема при попытке вставить массив байтов. Ошибка:

Cannot convert argument "1", with value: "Binary", for "Add" to type "System.Data.DbType":
"Cannot convert value "Binary" to type "System.Data.DbType".
Error: "Invalid cast from 'System.Data.SqlDbType' to System.Data.DbType'.""
At C:\Users\root\Desktop\processhacker-2.39-bin\1.ps1:90 char:22
+         $sql.Parameters.Add <<<< ("@encrypted_value", [System.Data.SqlDbType]"binary").value = $byte;

Сценарий выглядит следующим образом:

Add-Type -AssemblyName System.Security #connect  DPAPI

$parent_dll = $MyInvocation.MyCommand.Path | Split-Path -Parent
$sqlite_library_path = $parent_dll+"\System.Data.SQLite.dll" #path to dll SQLite
[void][System.Reflection.Assembly]::LoadFrom($sqlite_library_path)

$con = New-Object -TypeName System.Data.SQLite.SQLiteConnection
$path = Get-ChildItem "C:\Users\$env:username\AppData\Local\Google\Chrome\User Data\Default\cookies" -Recurse

function decrypt_password ($enc_pass) {
    $bytes = $enc_pass.encrypted_value.ToCharArray() | % {[byte] $_}
    $decrypt_char=[System.Security.Cryptography.ProtectedData]::protect($bytes, $null, [Security.Cryptography.DataProtectionScope]::LocalMachine) #| % {[byte] $_}
    return $decrypt_char
}

$encrypted_array = import-Csv -Path .\c.txt
$con = New-Object -TypeName System.Data.SQLite.SQLiteConnection
$con.ConnectionString = "Data Source=$path"
$con.Open()

foreach ($item in $encrypted_array) {
    $item.encrypted_value=decrypt_password -enc_pass $item
    $sql = $con.CreateCommand();
    $sql.commandtext = "INSERT INTO cookies (encrypted_value) VALUES (@encrypted_value)";
    $sql.Parameters.Add("@encrypted_value", [System.Data.SqlDbType]"binary").value = [byte[]]$item.encrypted_value;
    $fff=$sql.ExecuteNonQuery()
    $sql.Dispose()
}

$con.Close()
...