diff --git a/.vs/Cheat Preguntados/v14/.suo b/.vs/Cheat Preguntados/v14/.suo
new file mode 100644
index 0000000..2c7c37e
Binary files /dev/null and b/.vs/Cheat Preguntados/v14/.suo differ
diff --git a/Cheat Preguntados.sln b/Cheat Preguntados.sln
new file mode 100644
index 0000000..c4563cb
--- /dev/null
+++ b/Cheat Preguntados.sln
@@ -0,0 +1,28 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.25420.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cheat Preguntados", "Cheat Preguntados\Cheat Preguntados.csproj", "{2304E068-E602-4AE9-8AC4-DFCCEB35D03C}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {2304E068-E602-4AE9-8AC4-DFCCEB35D03C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2304E068-E602-4AE9-8AC4-DFCCEB35D03C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2304E068-E602-4AE9-8AC4-DFCCEB35D03C}.Debug|x86.ActiveCfg = Debug|x86
+ {2304E068-E602-4AE9-8AC4-DFCCEB35D03C}.Debug|x86.Build.0 = Debug|x86
+ {2304E068-E602-4AE9-8AC4-DFCCEB35D03C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2304E068-E602-4AE9-8AC4-DFCCEB35D03C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2304E068-E602-4AE9-8AC4-DFCCEB35D03C}.Release|x86.ActiveCfg = Release|x86
+ {2304E068-E602-4AE9-8AC4-DFCCEB35D03C}.Release|x86.Build.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/Cheat Preguntados/App.config b/Cheat Preguntados/App.config
new file mode 100644
index 0000000..3c88dd4
--- /dev/null
+++ b/Cheat Preguntados/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/Cheat Preguntados/Cheat Preguntados.csproj b/Cheat Preguntados/Cheat Preguntados.csproj
new file mode 100644
index 0000000..2315bdd
--- /dev/null
+++ b/Cheat Preguntados/Cheat Preguntados.csproj
@@ -0,0 +1,138 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {2304E068-E602-4AE9-8AC4-DFCCEB35D03C}
+ Exe
+ Properties
+ Cheat_Preguntados
+ Cheat Preguntados
+ v4.5.2
+ 512
+ true
+ publicar\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ false
+ true
+
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+ Cheat_Preguntados.Core
+
+
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE
+ full
+ x86
+ prompt
+ MinimumRecommendedRules.ruleset
+ true
+
+
+ bin\x86\Release\
+ TRACE
+ true
+ pdbonly
+ x86
+ prompt
+ MinimumRecommendedRules.ruleset
+ true
+
+
+
+ ..\packages\Colorful.Console.1.2.9\lib\net452\Colorful.Console.dll
+ True
+
+
+ ..\..\..\..\..\Desktop\Nueva carpeta\FiddlerCore4.dll
+
+
+ ..\..\..\..\..\Desktop\Nueva carpeta\Newtonsoft.Json.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+
+ False
+ Microsoft .NET Framework 4.7.1 %28x86 y x64%29
+ true
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
+
+
+
\ No newline at end of file
diff --git a/Cheat Preguntados/Cheat Preguntados.csproj.user b/Cheat Preguntados/Cheat Preguntados.csproj.user
new file mode 100644
index 0000000..75001d7
--- /dev/null
+++ b/Cheat Preguntados/Cheat Preguntados.csproj.user
@@ -0,0 +1,13 @@
+
+
+
+ publicar\
+
+
+
+
+
+ es-ES
+ false
+
+
\ No newline at end of file
diff --git a/Cheat Preguntados/ConsoleOutput.cs b/Cheat Preguntados/ConsoleOutput.cs
new file mode 100644
index 0000000..1a0091e
--- /dev/null
+++ b/Cheat Preguntados/ConsoleOutput.cs
@@ -0,0 +1,96 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using Console = Colorful.Console;
+
+namespace Cheat_Preguntados
+{
+ public class ConsoleOutput : Core
+ {
+ public void ConsoleWelcome()
+ {
+ Console.Title = "Cheat for Preguntados - apps.facebook.com/triviacrack";
+ Console.SetWindowSize(_variables.ConsoleWindowWidth, _variables.ConsoleWindowHeight);
+ /*if (_ownerProfile != null)
+ WriteLine($"Bienvenido/a {_ownerProfile.username }", "", ConsoleColor.White);*/
+ //System.Console.SetWindowSize(89, 30);
+ List Lines = new List();
+ Lines.Add("");
+ Lines.Add(@" _____ _ _ _____ _ _ ");
+ Lines.Add(@" / ____| | | | | __ \ | | | | ");
+ Lines.Add(@" | | | |__ ___ __ _| |_| |__) _ __ ___ __ _ _ _ _ __ | |_ __ _ __| | ___ ___ ");
+ Lines.Add(@" | | | _ \ / _ \/ _ | __| ___| __/ _ \/ _ | | | | _ \| __/ _ |/ _ |/ _ \/ __|");
+ Lines.Add(@" | |____| | | | __| (_| | |_| | | | | __| (_| | |_| | | | | || (_| | (_| | (_) \__ \");
+ Lines.Add(@" \_____|_| |_|\___|\____|\__|_| |_| \___|\___ |\____|_| |_|\__\____|\____|\___/|___/");
+ Lines.Add(@" __/ | ");
+ Lines.Add(@" |___/ ");
+ foreach (string Line in Lines)
+ {
+ int Spacing = Console.WindowWidth - Line.Length - 1;
+ string Ln = Line;
+
+ for (int s = 0; s < Spacing; s++)
+ Ln += ' ';
+ WriteLine(Ln, "", Color.White);
+ }
+ Color colorCustom = (Color)new ColorConverter().ConvertFromString("#1D97C");
+ Write("\n\tAutor JAX", "", colorCustom);
+ Write(" | ", "", Color.White);
+ Write($"Versión de desarrollo {_variables.VersionApplication} ", "", colorCustom); Console.Write(Convert.ToString(_variables.VersionBeta ? "Beta" : ""), Color.Red);
+ Write(" | ", "", Color.White);
+ Write("github.com/JAX20/", "", colorCustom);
+ Console.WriteLine("\n");
+ }
+
+ public void ShowDetailsOwner()
+ {
+ WriteLine(((Equals(_ownerProfile.userProfile.gender, "male") ? "Bienvenido " : "Bienvenida ") + _ownerProfile.facebookProfile.name), "Cheat", Color.White);
+ //WriteLine("Cantidad de monedas: " + _ownerProfile.userProfile.coins);
+ WriteLine("");
+ }
+
+ public void ShowInformationGame()
+ {
+ int correct_answer = _gameInformation.spins_data.spins[0].questions[0].question.correct_answer;
+ for (int n = 1; n <= _variables.ConsoleWindowWidth; n++)
+ {
+ Write("-", "", Color.White, Color.Black);
+ }
+ WriteLine("");
+ WriteLine("█ Información de la partida - " + DateTime.Now, "", Color.Gold);
+ WriteLine(" Categoría: " + _gameInformation.spins_data.spins[0].questions[0].question.category, "", Color.Cyan);
+ WriteLine(" Pregunta: " + _gameInformation.spins_data.spins[0].questions[0].question.text, "", Color.Cyan);
+ WriteLine(" Respuestas: " + string.Join(", ", _gameInformation.spins_data.spins[0].questions[0].question.answers), "", Color.Cyan);
+ Write(" Respuesta correcta: ", "", Color.Cyan);
+ WriteLine(_gameInformation.spins_data.spins[0].questions[0].question.answers[correct_answer], "", Color.GreenYellow);
+ }
+
+ public void Write(string body, string head = "", Color? foregroundColor = null, Color? backgroundColor = null)
+ {
+ Console.ForegroundColor = foregroundColor ?? _variables.DefaultForegroundColor;
+ Console.BackgroundColor = backgroundColor ?? _variables.DefaultBackgroundColor;
+
+ if (head != string.Empty)
+ Console.Write($"[{head}] ");
+ Console.Write($"{body}");
+ }
+ public void WriteLine(string body, string head = "", Color? foregroundColor = null, Color? backgroundColor = null)
+ {
+ Console.ForegroundColor = foregroundColor ?? _variables.DefaultForegroundColor;
+ Console.BackgroundColor = backgroundColor ?? _variables.DefaultBackgroundColor;
+
+ if (head != string.Empty)
+ Console.Write($"[{head}] ");
+ Console.WriteLine($"{body}");
+ }
+
+ public void WriteError(string error)
+ {
+ WriteLine(error, "Error", Color.Red);
+ }
+ public void WriteError(Exception error)
+ {
+ WriteLine("Information error: " + error.Message + Environment.NewLine + error.StackTrace, "Error", Color.Red);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Cheat Preguntados/Core.cs b/Cheat Preguntados/Core.cs
new file mode 100644
index 0000000..4c73a2c
--- /dev/null
+++ b/Cheat Preguntados/Core.cs
@@ -0,0 +1,59 @@
+using Cheat_Preguntados.FiddlerCore;
+using Cheat_Preguntados.Game;
+using System;
+using System.Drawing;
+using System.Runtime.InteropServices;
+using Console = Colorful.Console;
+
+namespace Cheat_Preguntados
+{
+ public class Core
+ {
+ /*
+ * Create instances of the class to use later
+ */
+ public static OwnerProfile _ownerProfile = new OwnerProfile();
+ public static GameInformation _gameInformation;
+ public static Variables _variables = new Variables();
+ public static HandlerFiddlerCore _handlerFiddlerCore = new HandlerFiddlerCore();
+ public static ConsoleOutput _consoleOutput = new ConsoleOutput();
+
+ static void Main(string[] args)
+ {
+ try
+ {
+ handler = new ConsoleEventDelegate(ConsoleEventCallback); //Instance for the method ConsoleEventCallback
+ SetConsoleCtrlHandler(handler, true); // Call to the API SetConsoleCtrlHandler
+ _consoleOutput.ConsoleWelcome();
+ new OwnerProfile(); // Create the instances that are in the constructor
+ new OpponentProfile(); // Create the instances that are in the constructor
+ _handlerFiddlerCore.Start();
+ _consoleOutput.WriteLine("Inicie ahora sesión en FaceBook si aún no lo hizo y luego entre en alguna partida que sea modo Clásico. \nEsperando...", "Cheat");
+ _variables.ImStarted = true;
+ _consoleOutput.WriteLine("");
+ while (true) { System.Threading.Thread.Sleep(500); } // Prevent the application from closing
+ }
+ catch (Exception e)
+ {
+ _consoleOutput.WriteError(e);
+ _handlerFiddlerCore.Stop();
+ Certificate.Uninstall();
+ _consoleOutput.WriteLine("\n\nThe application will close after pressing a key");
+ Console.ReadKey();
+ }
+ }
+
+ #region Console Application Exit
+ static ConsoleEventDelegate handler;
+ private delegate bool ConsoleEventDelegate(int eventType);
+ [DllImport("kernel32.dll", SetLastError = true)]
+ private static extern void SetConsoleCtrlHandler(ConsoleEventDelegate callback, bool add); // SetConsoleCtrlHandler is a function from kernel32.dll
+ static bool ConsoleEventCallback(int eventType)
+ {
+ if (eventType == 2) // Close windows console
+ _handlerFiddlerCore.Stop();
+ return false;
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Cheat Preguntados/FiddlerCore/Certificate.cs b/Cheat Preguntados/FiddlerCore/Certificate.cs
new file mode 100644
index 0000000..d828a2e
--- /dev/null
+++ b/Cheat Preguntados/FiddlerCore/Certificate.cs
@@ -0,0 +1,39 @@
+using Fiddler;
+using System;
+
+namespace Cheat_Preguntados.FiddlerCore
+{
+ class Certificate
+ {
+ public static void Install()
+ {
+ /*
+ * Find and create certificates for use in HTTPS interception
+ */
+
+ // Determine if the self signed root certificate exists
+ if (!CertMaker.rootCertExists())
+ {
+ // Create a self signed root certificate to use as the trust anchor for HTTPS interception certificate chains
+ if (!CertMaker.createRootCert())
+ throw new Exception("Unable to create certificate for FiddlerCore.");
+
+ // Prompts the user to add it to the trusted store.
+ if (!CertMaker.trustRootCert())
+ throw new Exception("Unable to create certificate for FiddlerCore.");
+ }
+ }
+
+ public static bool Uninstall()
+ {
+ // Determine if the self signed root certificate exists
+ if (CertMaker.rootCertExists())
+ {
+ // Removes Fiddler generated certificates. Parameter True for remove root
+ if (!CertMaker.removeFiddlerGeneratedCerts(true))
+ return false;
+ }
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Cheat Preguntados/FiddlerCore/HandlerFiddlerCore.cs b/Cheat Preguntados/FiddlerCore/HandlerFiddlerCore.cs
new file mode 100644
index 0000000..3f63582
--- /dev/null
+++ b/Cheat Preguntados/FiddlerCore/HandlerFiddlerCore.cs
@@ -0,0 +1,115 @@
+using System.Text;
+using Fiddler;
+using Cheat_Preguntados.Game;
+using System.Drawing;
+using Console = Colorful.Console;
+using System.Collections.Generic;
+using System;
+
+namespace Cheat_Preguntados.FiddlerCore
+{
+ public class HandlerFiddlerCore : Core
+ {
+ public void Start()
+ {
+ _consoleOutput.WriteLine("Iniciando proxy...", "Cheat");
+ FiddlerApplication.AfterSessionComplete += FiddlerApplication_AfterSessionComplete; // Create event AfterSessionComplete. This event fires when a session has been completed
+ FiddlerApplication.Startup(8888, FiddlerCoreStartupFlags.Default); // Start FiddlerCore listening on the specified port
+ _consoleOutput.WriteLine("Instalando certificado SSL...", "Cheat");
+ Certificate.Install(); // Create certificate for use in HTTPS interception
+ }
+ private void FiddlerApplication_AfterSessionComplete(Session oSession)
+ {
+ try
+ {
+ /*
+ * Example query urls
+ * Details of the game and opponent: https://api.preguntados.com/api/users/IDOWNER/games/IDGAME
+ * Details of the owner: https://api.preguntados.com/api/users/IDOWNER/
+ * https://api.preguntados.com/api/social-login // Full profile
+ * https://api.preguntados.com/api/users/IDOWNER/dashboard
+ */
+ string FullUrl = oSession.fullUrl;
+ string[] FullUrlParameters = FullUrl.Split('/');
+ if (FullUrl.StartsWith("https://api.preguntados.com/api/") & _variables.ImStarted)
+ {
+ #region Not Working
+ if (FullUrl.Contains("users") & !FullUrl.Contains("games")) // Get profile from owner. Not working
+ {
+ //PathAndQuery = "/api/users/IDOWNER/assets/web"
+
+ if (_ownerProfile == null & oSession.PathAndQuery.Split('/').Length == 4)
+ {
+ if (oSession.ResponseBody.Length > 5)
+ {
+ OwnerProfile profile = Newtonsoft.Json.JsonConvert.DeserializeObject(Encoding.Default.GetString(oSession.ResponseBody));
+ _ownerProfile = profile;
+ _variables.DetectedTheDetailsFromOwner = true;
+ }
+ }
+ }
+ #endregion
+
+ if (FullUrl.Contains("users") & FullUrl.Contains("games")) // Get details of the opponent and information of the game (questions, correct answer ...) and others details
+ {
+ _gameInformation = Newtonsoft.Json.JsonConvert.DeserializeObject(Encoding.UTF8.GetString(oSession.ResponseBody));
+ _consoleOutput.ShowInformationGame();
+ }
+ if (FullUrlParameters[4] == "social-login") // Login data
+ {
+ Dictionary