From 305e8ac5ba3d13918f2e338969c27030b0cac5b6 Mon Sep 17 00:00:00 2001 From: Rostislav Kirillov Date: Mon, 21 Jan 2019 06:22:17 +0500 Subject: [PATCH 1/4] some readme --- README.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..7ed6b84 --- /dev/null +++ b/README.md @@ -0,0 +1,45 @@ +# VkNet.TokenMagic +### Languages: [EN](#Readme-English), [RU](#Readme-Русский) + +# Readme English + +Extension for [VkNet](https://github.com/vknet/vk) to authenticate as Android application, giving you access to full Audio API and probably more. +This is a heavily refactored C# port of [PHP vk-audio-token](https://github.com/vodka2/vk-audio-token) - all credits for reverse engineering and black magic to original author. + +How it works: +* Makes requests to Google servers as an Android app -> gets `receipt` string +* Authenticates in VK using regular flow with login and password -> gets `token` string +* Authenticates in VK arain using `receipt` and `token` -> gets **`refreshed token`** + +### This `refreshed token` gives you god mode and allows full API access. + +## Installation + +### Nuget + Install-Package VkNet.TokenMagic + +### .NET CLI + dotnet add package VkNet.TokenMagic + + + +# Readme Русский + +Расширение [VkNet](https://github.com/vknet/vk) для аутентификации под видом Android-приложения для доступа к полному API аудиозаписей и, возможно, даже больше. +Это сильно отрефакторенный порт [PHP vk-audio-token](https://github.com/vodka2/vk-audio-token) - вся уважуха за реверс и черную магию автору оригинала. + +Как оно работает: +* Делает запросы к серверам Google, прикидываясь Android-приложением -> получает строку `receipt` +* Аутентифицируется в VK по стандартной схеме с логином и паролем -> получает строку `токен` +* Аутентифицируется в VK еще раз, используя `receipt` и `токен` -> получает строку **`обновленный токен`** + +### Этот `обновленный токен` дает расширенные права и полный доступ к API. + + +## Установка + +### Nuget + Install-Package VkNet.TokenMagic + +### .NET CLI + dotnet add package VkNet.TokenMagic From 3ae3e138180262dd4568aafa1f42f754508230fa Mon Sep 17 00:00:00 2001 From: Rostislav Kirillov Date: Mon, 21 Jan 2019 06:29:55 +0500 Subject: [PATCH 2/4] added examples to readme --- README.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/README.md b/README.md index 7ed6b84..6354771 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,21 @@ How it works: ### .NET CLI dotnet add package VkNet.TokenMagic +## Examples +```c# + //Add all the stuff to DI container: + var services = new ServiceCollection(); + services.AddVkTokenMagic(); + var vkNet = new VkApi(services); + + // use login+password + vkNet.Authorize(new ApiAuthParams + { + Login = "LOGIN", + Password = "PASSWORD", + }); +``` +[Full test project is here](https://github.com/Rast1234/VkNet.TokenMagic/blob/master/Example/Program.cs) # Readme Русский @@ -43,3 +58,19 @@ How it works: ### .NET CLI dotnet add package VkNet.TokenMagic + +## Примеры +```c# + //Добавляем все в DI контейнер: + var services = new ServiceCollection(); + services.AddVkTokenMagic(); + var vkNet = new VkApi(services); + + // используем логин+пароль + vkNet.Authorize(new ApiAuthParams + { + Login = "LOGIN", + Password = "PASSWORD", + }); +``` +[Полный тестовый проект здесь](https://github.com/Rast1234/VkNet.TokenMagic/blob/master/Example/Program.cs) From d0d027bad314490dd1b66914c1bb73fcfa6720aa Mon Sep 17 00:00:00 2001 From: Rostislav Kirillov Date: Mon, 21 Jan 2019 06:44:16 +0500 Subject: [PATCH 3/4] added notes --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index 6354771..28ee452 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,13 @@ How it works: ``` [Full test project is here](https://github.com/Rast1234/VkNet.TokenMagic/blob/master/Example/Program.cs) +## Notes +* Cache token if possible! +* Authentication flow might be broken in non-trivial cases (2FA, captcha, etc) +* Had to reinvent RestClient with underlying HttpClient +* No dependencies on ProtocolBuffers +* No dependencies on external services except Gooogle + # Readme Русский @@ -74,3 +81,10 @@ How it works: }); ``` [Полный тестовый проект здесь](https://github.com/Rast1234/VkNet.TokenMagic/blob/master/Example/Program.cs) + +## Заметки +* Кэшируйте токен, если возможно! +* Аутентификация может быть сломана в нетривиальных случаях (2-х факторная, капча, и тд) +* Пришлось переизобретать RestClient с используемым HttpClient +* Нет зависимости от ProtocolBuffers +* Нет зависимости от внешних сервисов, помимо Google From 92e554b2dc7b5e484c1ad9c337ed2eb09ff76a21 Mon Sep 17 00:00:00 2001 From: Rostislav Kirillov Date: Mon, 21 Jan 2019 06:51:05 +0500 Subject: [PATCH 4/4] fixed examples --- README.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 28ee452..84ce708 100644 --- a/README.md +++ b/README.md @@ -23,9 +23,12 @@ How it works: ## Examples ```c# - //Add all the stuff to DI container: +using VkNet.TokenMagic; + ... var services = new ServiceCollection(); - services.AddVkTokenMagic(); + + //Add all the stuff to DI container: + services.AddTokenMagic(); var vkNet = new VkApi(services); // use login+password @@ -68,9 +71,12 @@ How it works: ## Примеры ```c# - //Добавляем все в DI контейнер: +using VkNet.TokenMagic; + ... var services = new ServiceCollection(); - services.AddVkTokenMagic(); + + // Добавляем весь хлам в DI контейнер: + services.AddTokenMagic(); var vkNet = new VkApi(services); // используем логин+пароль