Kod radia Fiat Stilo i Bravo (Visteon)

Spędzając bezsenne noce w debuggerze IDA i debugując tonę kodu z poziomu dekompilatora HexRays udało mi się odtworzyć algorytm pozwalający na odblokowanie radioodtwarzaczy marki Visteon w samochodach Fiat Stilo i Bravo.

Fiat Stilo i Bravo Kod Do Radia Visteon Kalkulator i Generator
Radioodtwarzacz Visteon

Jeśli szukasz rozwiązania jak odblokować radio we Fiacie Stilo lub Bravo skorzystaj z kalkulatora pod adresem (po Polsku):

https://www.pelock.com/pl/produkty/fiat-stilo-bravo-kod-do-radia-visteon-kalkulator-generator

To samo po angielsku:

https://www.pelock.com/products/fiat-stilo-bravo-visteon-radio-code-calculator-generator

PS. Co ciekawe, algorytm pasuje również do innych samochodów, które wyposażone są w radioodtwarzacze marki Visteon m.in:

Fiat

  • Fiat Stilo OA Visteon Cassette
  • Fiat Stilo OB Visteon CD
  • Fiat Stilo OC Visteon CD MP3
  • Fiat Bravo Visteon

Jaguar

  • Jaguar 9000
  • Jaguar FD 9000XM

Land Rover

  • Land Rover 6500
  • Land Rover CE-6H3205LR-02
  • Land Rover ME-6H3303LR-03

Mazda

  • Mazda 6006E

Ford M Series

  • Ford Focus
  • Ford Fiesta
  • Ford Transit
  • Ford Fusion
  • Ford Escort
  • Ford 1500
  • Ford 2000
  • Ford 2500
  • Ford 3000
  • Ford 3500
  • Ford 4000
  • Ford 4500
  • Ford 5000
  • Ford 6000
  • Ford 6006
  • Ford 6500
  • Ford 9000
  • Ford Sony

Kod do radia Chrysler Panasonic TM9

Kontynuując serię dekoderów do radioodbiorników samochodowych, prezentuję kalkulator generujący kod do odblokowania radia w samochodach marki Chrysler Panasonic z serii TM9.

Kod odblokowujący do radia Chrysler Panasonic z serii TM9.
Kalkulator kodu odblokowującego do Chrysler Panasonic TM9 (po Polsku):

https://www.pelock.com/pl/produkty/chrysler-panasonic-tm9-kod-do-radia-samochodowego-kalkulator-generator

I po angielsku:

https://www.pelock.com/products/chrysler-panasonic-tm9-car-radio-code-calculator-generator

Odblokowanie pliku Excel

Jeśli kiedykolwiek natrafiliście na zablokowany arkusz/skoroszyt Excel na hasło lub numer seryjny, zachęcam do skorzystania z usługi odblokowanie pliku Excel.

Usługa dotyczy konkretnie popularnego zabezpieczania LockXLS, które pozwala zabezpieczyć arkusze XLS lub XLSM na hasło:

Odblokowanie arkusza Excel na hasło
Zabezpieczony arkusz Excela na hasło

Lub na numer seryjny:

Odblokowanie pliku Excel
Zablokowany skoroszyt Excela na numer seryjny

Usługa pozwala na odtworzenie źródłowego skoroszytu XLS lub XLSM (jeśli zawiera makra).

Więcej informacji na stronie:

https://www.pelock.com/pl/uslugi/inzynieria-wsteczna/odblokowanie-pliku-excel-xls-z-nieznanym-haslem-zabezpieczenie-lockxls

PELock v2.11 – Zabezpieczenie Oprogramowania

Wypuściłem mały update PELock – czyli jedynego polskiego systemu zabezpieczenia 32-bitowych aplikacji EXE/DLL/OCX wraz z systemem kluczy licencyjnych, bazującym na asymetrycznej kryptografii RSA.

Zmiany

  • Zabezpieczenie z linii komend z parametrem /auto zabezpieczy wszystkie pliki znajdujące się na liście projektu (wcześniej zabezpieczany był tylko pierwszy plik)
  • Dodano język francuski interfejsu użytkownika (dziękuję Terry)
PELock po francusku

Wersja demonstracyjna do pobrania ze strony:

https://www.pelock.com/pl/produkty/pelock/pobierz

Przykłady użycia dla m.in. Delphi/Freepascal, C/C++, PowerBASIC, PureBasic, generowanie licencji, sprzętowych identyfikatorów etc. na GitHubie:

https://github.com/PELock/PELock-Software-Protection-and-Licensing-SDK

Antidebugging w aplikacjach Android

Dzisiaj analizowałem sobie jedną starszą aplikację i natknąłem się na ciekawy kod, sprawdzający kilka rzeczy, których autorzy sobie nie życzą (to nie jest koncert życzeń), marnie zakamuflowanych pod fałszywymi nazwami 😀

Sprawdzane są m.in.

  • Czy urządzenie było zrootowanie i czy dostępne są narzędzia takie jak np. komenda su.
  • Czy podpięty jest debugger
  • Czy zainstalowane są ehem wrogie aplikacje

Kod mówi więcej niż słowa, dlatego spójrzcie sami, może komuś ta wiedza się kiedyś przyda, z zastrzeżeniem, że to starsza aplikacja i kilka rzeczy mogło się już zmienić.

using System;
using System.Collections.Generic;
using System.IO;
using Android.App;
using Android.Content.PM;
using Android.OS;
using Xamarin.Forms;

namespace Abc
{
	// Token: 0x02000010 RID: 16
	public class CalendarService : ICalendarService
	{
		// Token: 0x06000044 RID: 68 RVA: 0x000080A5 File Offset: 0x000062A5
		public bool IsDateCorrect()
		{
			return this.IsDayCorrect() || this.IsProperUtcFormat() || this.IsMonthCorrect() || this.IsCurrentMonth() || this.IsItReallyCurrentYearAlready();
		}

		// Token: 0x06000045 RID: 69 RVA: 0x000080D0 File Offset: 0x000062D0
		public bool IsDayCorrect()
		{
			using (List<string>.Enumerator enumerator = new List<string>
			{
				"/system/app/Superuser.apk",
				"/sbin/su",
				"/system/bin/su",
				"/system/xbin/su",
				"/data/local/xbin/su",
				"/data/local/bin/su",
				"/system/sd/xbin/su",
				"/system/bin/failsafe/su",
				"/data/local/su",
				"/su/bin/su"
			}.GetEnumerator())
			{
				while (enumerator.MoveNext())
				{
					if (File.Exists(enumerator.Current))
					{
						return true;
					}
				}
			}
			string[] array = System.Environment.GetEnvironmentVariable("PATH").Split(':', StringSplitOptions.None);
			for (int i = 0; i < array.Length; i++)
			{
				if (File.Exists(Path.Combine(array[i], "su")))
				{
					return true;
				}
			}
			foreach (ActivityManager.RunningAppProcessInfo runningAppProcessInfo in ActivityManager.FromContext(Forms.Context).RunningAppProcesses)
			{
				if (runningAppProcessInfo.ProcessName.Contains("supersu") || runningAppProcessInfo.ProcessName.Contains("superuser"))
				{
					return true;
				}
			}
			return false;
		}

		// Token: 0x06000046 RID: 70 RVA: 0x00008240 File Offset: 0x00006440
		public bool IsProperUtcFormat()
		{
			return Build.Tags.Contains("test-keys");
		}

		// Token: 0x06000047 RID: 71 RVA: 0x00008251 File Offset: 0x00006451
		public bool IsMonthCorrect()
		{
			return (Forms.Context.ApplicationContext.ApplicationInfo.Flags & ApplicationInfoFlags.Debuggable) > ApplicationInfoFlags.None;
		}

		// Token: 0x06000048 RID: 72 RVA: 0x0000826C File Offset: 0x0000646C
		public bool IsCurrentMonth()
		{
			return Debug.IsDebuggerConnected;
		}

		// Token: 0x06000049 RID: 73 RVA: 0x00008274 File Offset: 0x00006474
		public bool IsItReallyCurrentYearAlready()
		{
			foreach (ApplicationInfo applicationInfo in Forms.Context.PackageManager.GetInstalledApplications(PackageInfoFlags.MetaData))
			{
				string packageName = applicationInfo.PackageName;
				if (packageName == "de.robv.android.xposed.installer" || packageName == "com.saurik.substrate" || packageName == "com.android.vending.billing.InAppBillingService.LUCK" || packageName == "com.android.vending.billing.InAppBillingService.CLON" || packageName == "com.android.vending.billing.InAppBillingService.COIN")
				{
					return true;
				}
			}
			return false;
		}
	}
}

Kody radiowe dla Toyota ERC

Kontynuując serię moich dekoderów radiowych, prezentuję dekoder radioodbiorników Toyota bazujących na 16 znakowym kodzie ERC.

Kody radiowe Toyota ERC
Zablokowane radio w Toyocie wyświetla numer seryjny ERC i oczekuje na kod odblokowujący

Wersja polska

Wersja angielska

Przed użyciem dekodera warto sprawdzić czy radioodbiornik znajduje się na liście obsługiwanych urządzeń.