フォーマット は以下の通り。ひとつの放送局は1行で記述 項目と項目の間はスペースを.
The b-cas system has been compromised = Free wow wow for those of you with no morals
So there isn't much info in English out there yet, but the BS card system has been hacked. 2ch is where you can find all the details, but any idiot with a card reader and a windows machine can get free BS channels (wow wow, starz etc) with minimal effort. Looks like the B-CAS card company was bloated Ama-kudari, and didn't do anything to harden security for the past 10 years or so. The more you read, the crazier it gets. Sounds like the whole system might just have to be scrapped.
more links: http://toro.2ch.net/test/read.cgi/avi/1340051257/http://www.marumo.ne.jp/http://zirai123.blog.fc2.com/blog-entry-136.html
Join GitHub today
GitHub is home to over 36 million developers working together to host and review code, manage projects, and build software together.
Sign upNhk 2038 Bcas Rarity
#include<Windows.h> |
#include<stdio.h> |
#include<conio.h> |
#include'Global.h' |
#include'Generator.h' |
#include'Decoder.h' |
#include'Keyset.h' |
#include'Keys.h' |
#include'Crypto.h' |
#include'Manager.h' |
staticint DateState; |
staticconstchar * const ExpiryDate[7] = { |
'+7 days', |
'+15 days', |
'+30 days', |
'+90 days', |
'+180 days', |
'+365 days', |
'2038', |
}; |
static u8 CardType; |
static u16 ConvertDateToMJD(u16 Year, u8 Month, u8 Day) |
{ |
u32 l = 0; |
u32 md, yd; |
if ((Month 1) (Month 2)) |
l = 1; |
md = (u32)(((double)Month + 1 + l * 12) * 30.6001); |
yd = (u32)(((double)(Year - 1900) - l) * 365.25); |
return (14956 + Day + md + yd); |
} |
staticvoidConvertMJDToDate(u16 MJD, SYSTEMTIME *Time) |
{ |
u32 y1 = static_cast<u32>((static_cast<double>(MJD) - 15078.2) / 365.25); |
u32 y1r = static_cast<u32>(365.25 * static_cast<double>(y1)); |
u32 m1 = static_cast<u32>((static_cast<double>(MJD) - 14956.1 - y1r) / 30.6001); |
u32 m1r = static_cast<u32>(30.6001 * static_cast<double>(m1)); |
Time->wYear = y1 + 1900; |
Time->wMonth = m1 - 1; |
Time->wDay = MJD - 14956 - y1r - m1r; |
if ((m1 14) (m1 15)) { |
Time->wMonth -= 12; |
++Time->wYear; |
} |
} |
staticvoidPrintMenu(void) |
{ |
printf('%s%sF4 Expiry in %sn', CardType != kType_C ? 'F1 Dump card ' : '', CardType <= kType_B ? 'F2 Print tiers F3 Print email ' : '', ExpiryDate[DateState]); |
printf('n'); |
printf(' W S N A n'); |
printf(' O H E - H l n'); |
printf(' W V 2 T K l n'); |
printf('-------------*---*---*---*---*---*---*n'); |
if (CardType != kType_C) { |
printf('Update 1 2 3 4 5 n'); |
printf('Invalidate q w e r t n'); |
printf('Delete email a s d f g h n'); |
} |
printf('Activate z x c v b n'); |
printf('n'); |
} |
intmain(int argc, char *argv[]) |
{ |
int Index = 0; |
int Arg = 1; |
char *VirtualCard = NULL; |
BCAS::Manager::Abstract *Card; |
argc--; |
while (argc > 0) { |
if (strcmp(argv[Arg], '-virtual') 0) { |
if (argc 1) { |
printf('Missing file parameter.n'); |
return1; |
} |
VirtualCard = _strdup(argv[++Arg]); |
argc--; |
} elseif (strcmp(argv[Arg], '-reader') 0) { |
if (argc 1) { |
printf('Missing file parameter.n'); |
return1; |
} |
Index = atoi(argv[++Arg]); |
argc--; |
} elseif (strcmp(argv[Arg], '-list') 0) { |
Index = -1; |
} else { |
printf('Invalid parameter: %sn', argv[Arg]); |
return1; |
} |
Arg++; |
argc--; |
} |
if (VirtualCard NULL) { |
SCARDCONTEXT Ctx; |
LONG Result; |
char *Reader = NULL; |
Result = SCardEstablishContext(SCARD_SCOPE_USER, NULL, NULL, &Ctx); |
if (Result != SCARD_S_SUCCESS) { |
printf('Failed to establish context, error: %08xn', Result); |
return1; |
} |
DWORD Count = SCARD_AUTOALLOCATE; |
LPTSTR Readers = NULL; |
Result = SCardListReaders(Ctx, NULL, (LPTSTR)&Readers, &Count); |
if (Result != SCARD_S_SUCCESS) { |
if (Result SCARD_E_NO_READERS_AVAILABLE) |
printf('No card readers available.n'); |
else |
printf('Failed to list card readers, error: %08xn', Result); |
SCardReleaseContext(Ctx); |
return1; |
} |
LPTSTR R = Readers; |
Count = 0; |
while (*R != 0) { |
if (Index Count) { |
Reader = _strdup(R); |
break; |
} elseif (Index -1) { |
printf('Reader %d: %sn', Count, R); |
} |
R += strlen(R) + 1; |
Count++; |
} |
SCardFreeMemory(Ctx, Readers); |
if (Reader NULL) { |
if (Index != -1) |
printf('Cannot find a reader at index %dn', Index); |
SCardReleaseContext(Ctx); |
return1; |
} |
BCAS::Manager::Card *RealCard = new BCAS::Manager::Card; |
RealCard->SetReader(Reader); |
Card = RealCard; |
} else { |
BCAS::Manager::Virtual *Dump = new BCAS::Manager::Virtual; |
Dump->SetReader(VirtualCard); |
Card = Dump; |
} |
BCAS::Keys::RegisterAll(); |
Card->Init(); |
BCAS::Manager::Ops *Ops = new BCAS::Manager::Ops; |
Ops->SetCard(Card); |
BCAS::Manager::Manager *Mgr = newBCAS::Manager::Manager(Ops); |
bool Quit = false; |
u16 Date; |
SYSTEMTIME Time; |
GetSystemTime(&Time); |
Date = ConvertDateToMJD(Time.wYear, Time.wMonth & 0xff, Time.wDay & 0xff) + 7; |
while (!Quit) { |
bool NewCard = false; |
bool HasCard; |
u16 Expiry; |
HasCard = Card->WaitForEvent(NewCard); |
if (NewCard true) { |
Mgr->PrintCardInformation(CardType); |
if (CardType kType_INVALID) |
break; |
PrintMenu(); |
continue; |
} |
if (HasCard false) { |
if (_kbhit()) { |
int Selection = _getch(); |
if (Selection 27) { |
break; |
} |
if (Selection 0) |
_getch(); |
} |
continue; |
} |
int Key = _getch(); |
switch (Key) { |
case27: |
Quit = true; |
break; |
case0: |
Key = _getch(); |
switch (Key) { |
case59: |
Mgr->DumpMode(); |
break; |
case60: |
Mgr->PrintEntitlements(); |
break; |
case61: |
Mgr->PrintEmail(); |
break; |
case62: |
DateState = (DateState + 1) % 7; |
switch (DateState) { |
case0: |
Expiry = 7; |
break; |
case1: |
Expiry = 15; |
break; |
case2: |
Expiry = 30; |
break; |
case3: |
Expiry = 90; |
break; |
case4: |
Expiry = 180; |
break; |
case5: |
Expiry = 365 * 2; |
break; |
case6: |
break; |
} |
if (DateState != 6) { |
GetSystemTime(&Time); |
Date = ConvertDateToMJD(Time.wYear, Time.wMonth & 0xff, Time.wDay & 0xff) + Expiry; |
} else { |
Date = 0xffff; |
} |
break; |
default: |
printf('%dn', Key); |
break; |
} |
break; |
// UpdateTiers |
case49: |
Mgr->AddEntitlement(BCAS::Keys::KEYSET_WOWOW, Date); |
break; |
case50: |
Mgr->AddEntitlement(BCAS::Keys::KEYSET_STARCHANNELHD, Date); |
break; |
case51: |
Mgr->AddEntitlement(BCAS::Keys::KEYSET_E2_110CS, Date); |
break; |
case52: |
Mgr->AddEntitlement(BCAS::Keys::KEYSET_SAFETYNET, Date); |
break; |
case53: |
Mgr->AddEntitlement(BCAS::Keys::KEYSET_NHK, Date); |
break; |
// InvalidateTiers |
case113: |
Mgr->InvalidateEntitlement(BCAS::Keys::KEYSET_WOWOW); |
break; |
case119: |
Mgr->InvalidateEntitlement(BCAS::Keys::KEYSET_STARCHANNELHD); |
break; |
case101: |
Mgr->InvalidateEntitlement(BCAS::Keys::KEYSET_E2_110CS); |
break; |
case114: |
Mgr->InvalidateEntitlement(BCAS::Keys::KEYSET_SAFETYNET); |
break; |
case116: |
Mgr->InvalidateEntitlement(BCAS::Keys::KEYSET_NHK); |
break; |
// DeleteEmail |
case97: |
Mgr->DeleteEmail(BCAS::Keys::KEYSET_WOWOW); |
break; |
case115: |
Mgr->DeleteEmail(BCAS::Keys::KEYSET_STARCHANNELHD); |
break; |
case100: |
Mgr->DeleteEmail(BCAS::Keys::KEYSET_E2_110CS); |
break; |
case102: |
Mgr->DeleteEmail(BCAS::Keys::KEYSET_SAFETYNET); |
break; |
case103: |
Mgr->DeleteEmail(BCAS::Keys::KEYSET_NHK); |
break; |
case104: |
Mgr->DeleteEmail(BCAS::Keys::KEYSET_EMAIL); |
break; |
// ActivateTrial |
case122: |
Mgr->ActivateTrial(BCAS::Keys::KEYSET_WOWOW, false, Date); |
Mgr->ActivateTrial(BCAS::Keys::KEYSET_WOWOW, true, Date); |
break; |
case120: |
Mgr->ActivateTrial(BCAS::Keys::KEYSET_STARCHANNELHD, false, Date); |
Mgr->ActivateTrial(BCAS::Keys::KEYSET_STARCHANNELHD, true, Date); |
break; |
case99: |
Mgr->ActivateTrial(BCAS::Keys::KEYSET_E2_110CS, false, Date); |
Mgr->ActivateTrial(BCAS::Keys::KEYSET_E2_110CS, true, Date); |
break; |
case118: |
Mgr->ActivateTrial(BCAS::Keys::KEYSET_SAFETYNET, false, Date); |
Mgr->ActivateTrial(BCAS::Keys::KEYSET_SAFETYNET, true, Date); |
break; |
case98: |
Mgr->ActivateTrial(BCAS::Keys::KEYSET_NHK, false, Date); |
Mgr->ActivateTrial(BCAS::Keys::KEYSET_NHK, true, Date); |
break; |
default: |
printf('%dn', Key); |
break; |
} |
if (!Quit) |
PrintMenu(); |
} |
return0; |
} |
Nhk 2038 Bcas Rar
Copy lines Copy permalink