亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? decss.cpp

?? 有爭議的DVD格式解密源程序,其作者正面臨訴訟
?? CPP
字號:
// DeCSS.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "resource.h"
#include <commctrl.h>
#include <shlobj.h>
#include "css/CSSkeysNT.h"
#include "css/CSSscramble.h"

#define MAX_LOADSTRING 100

// Global Variables:
HINSTANCE	g_hInst;							// current instance
int			iDrive;								// drive
BOOL		bKeyReceived;						// did we successfully get the key?
HWND		g_hWnd;								// main window
HWND		g_hWndDrives;						// list of cd-/dvdroms
HWND		g_hWndStatus;						// status window
HWND		g_hWndSector;						// sector
HWND		g_hWndFiles;						// files
HWND		g_hWndTransfer;						// transfer button
CHAR		g_szFolder[MAX_PATH];				// folder to place files
TCHAR		g_szTitle[] = "DeCSS by MoRE";		// The title bar text
TCHAR		g_szWindowClass[] = "DECSS";		// The title bar text

HANDLE		hTransferThread;

BYTE		diskkey[6];
BYTE		titlekey[6];

int __stdcall	WndProc(HWND, UINT, WPARAM, LPARAM);
int				TransferFile(LPVOID);

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{

	INITCOMMONCONTROLSEX	icc;
	
	g_hInst	= hInstance;

	icc.dwSize	= sizeof(icc);
	icc.dwICC	= ICC_LISTVIEW_CLASSES | ICC_TREEVIEW_CLASSES | ICC_BAR_CLASSES |
				ICC_TAB_CLASSES | ICC_UPDOWN_CLASS | ICC_PROGRESS_CLASS |
				ICC_HOTKEY_CLASS | ICC_ANIMATE_CLASS | ICC_WIN95_CLASSES |
				ICC_DATE_CLASSES | ICC_USEREX_CLASSES | ICC_COOL_CLASSES |
				ICC_INTERNET_CLASSES | ICC_PAGESCROLLER_CLASS | ICC_NATIVEFNTCTL_CLASS;
	InitCommonControlsEx(&icc);

	return(DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_DECSS), 0, &WndProc, 0));

}

void AddFilesToComboBox(int iDrive)
{
	CHAR			szTemp[MAX_PATH];
	HANDLE			hSearch;
	COMBOBOXEXITEM	ci;
	WIN32_FIND_DATA	findData;
	
	wsprintf(szTemp, "%c:\\VIDEO_TS\\V*", iDrive);

	ci.mask			= CBEIF_TEXT;
	ci.iItem		= -1;
	ci.pszText		= findData.cFileName;

	SendMessage(g_hWndFiles, CB_RESETCONTENT, 0, 0);

	hSearch = FindFirstFile(szTemp, &findData);
	SendMessage(g_hWndFiles, CBEM_INSERTITEMA, 0, (LPARAM) &ci);

	while(FindNextFile(hSearch, &findData))
	{
		SendMessage(g_hWndFiles, CBEM_INSERTITEMA, 0, (LPARAM) &ci);
	}

}

void UpdateStatusWindow(LPSTR szString)
{
	char curText[2048];

	SendMessage(g_hWndStatus, WM_GETTEXT, 2048, (LPARAM) curText);
	strcat(curText, szString);
	strcat(curText, "\r\n");
	SendMessage(g_hWndStatus, WM_SETTEXT, 0, (LPARAM) curText);
	SendMessage(g_hWndStatus, EM_LINESCROLL, 0, SendMessage(g_hWndStatus, EM_GETLINECOUNT, 0, 0));
}

int __stdcall WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{

	COMBOBOXEXITEM	ci;

	CHAR			szVolume[MAX_PATH];
	CHAR			szTemp[MAX_PATH];
	HANDLE			hFile;
	TCHAR			szLastDrive[] = "C:\\";

	switch (message) 
	{
		case WM_INITDIALOG:
			g_hWndDrives = GetDlgItem(hWnd, IDC_DRIVES);
			g_hWndStatus = GetDlgItem(hWnd, IDC_STATUS);
			g_hWndSector = GetDlgItem(hWnd, IDC_SECTOR);
			g_hWndFiles = GetDlgItem(hWnd, IDC_FILES);
			g_hWndTransfer = GetDlgItem(hWnd, IDC_TRANSFER);

			ci.mask			= CBEIF_TEXT;
			ci.iItem			= -1;
			ci.pszText			= szTemp;
		
			for(szLastDrive[0] = 'C'; szLastDrive[0] != 'Z'; szLastDrive[0]++)
			{
				if(GetDriveType(szLastDrive) == DRIVE_CDROM)
				{
					szVolume[0] = 0;
					GetVolumeInformation(szLastDrive, szVolume, MAX_PATH, 0, 0, 0, 0, 0);
					wsprintf(szTemp, "%s [%s]", szLastDrive, szVolume);
					SendMessage(g_hWndDrives, CBEM_INSERTITEMA, 0, (LPARAM) &ci);

					wsprintf(szTemp, "%c:\\VIDEO_TS\\VIDEO_TS.IFO", szLastDrive[0]);

					hFile = CreateFile(szTemp, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
					if(hFile != INVALID_HANDLE_VALUE)
					{
						SendMessage(g_hWndDrives, CB_SETCURSEL, SendMessage(g_hWndDrives, CB_GETCOUNT, 0, 0) - 1, 0);
						CloseHandle(hFile);
					}
				}
			}

			SendMessage(g_hWndSector, WM_SETTEXT, 0, (LPARAM) "Enter Sector");

			return 0;
		case WM_COMMAND:
				switch(LOWORD(wParam))
				{
					case IDC_GETKEYS:
						{
							int lba = GetDlgItemInt(hWnd, IDC_SECTOR, 0, TRUE);
							int drive = SendMessage(g_hWndDrives, CB_GETCURSEL, 0, 0);
							SendMessage(g_hWndDrives, CB_GETLBTEXT, drive, (LPARAM) szTemp);
							iDrive = szTemp[0];

							bKeyReceived = FALSE;
						
							if(CSSgetdiskkey(iDrive, diskkey))
							{
								UpdateStatusWindow("Error getting disk key");
								break;
							}
						
							wsprintf(szTemp, "Disk Key: %02X%02X%02X%02X%02X", diskkey[0], diskkey[1], diskkey[2], diskkey[3], diskkey[4]);
							UpdateStatusWindow(szTemp);

							if(CSSgettitlekey(iDrive, lba, titlekey))
							{
								wsprintf(szTemp, "Error getting title key for LBA %08X", lba);
								UpdateStatusWindow(szTemp);
							}

							wsprintf(szTemp, "Title key: %02X%02X%02X%02X%02X", titlekey[0], titlekey[1], titlekey[2], titlekey[3], titlekey[4]);
							UpdateStatusWindow(szTemp);

							CSSdecrypttitlekey(titlekey, diskkey);

							wsprintf(szTemp, "Master key: %02X%02X%02X%02X%02X", titlekey[0], titlekey[1], titlekey[2], titlekey[3], titlekey[4]);
							UpdateStatusWindow(szTemp);

							bKeyReceived = TRUE;

							AddFilesToComboBox(iDrive);
						}
					break;

					case IDC_FOLDER:
						{
							BROWSEINFO bi;
							LPITEMIDLIST pidl;

							bi.hwndOwner = hWnd;
							bi.pidlRoot = NULL;
							bi.pszDisplayName = szTemp;
							bi.lpszTitle = "Locate folder where you want the files to be placed...";
							bi.ulFlags = BIF_RETURNONLYFSDIRS;
							bi.lpfn = NULL;
							bi.lParam = 0;	

							pidl = SHBrowseForFolder(&bi);
							
							if(!pidl)
							{
								MessageBox(hWnd, "You didn't locate a folder!\r\nPlease do so before trying to transfer.", "DeCSS (MoRE)", 0);
								break;
							}

							SHGetPathFromIDList(pidl, g_szFolder);

							int iLen = lstrlen(g_szFolder) - 1;
							if(g_szFolder[iLen] == '\\')
								g_szFolder[iLen] = 0;
						}
					break;

					case IDC_TRANSFER:
						{
							DWORD dwExitCode;
							GetExitCodeThread(hTransferThread, &dwExitCode);
							if(dwExitCode == STILL_ACTIVE)
							{
								hTransferThread = 0;
							}
							else
							{
								DWORD threadID;
								hTransferThread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) TransferFile, 0, 0, &threadID);
							}
						}
					break;

				}
			break;
		case WM_CLOSE:
			EndDialog(hWnd, 0);
		case WM_DESTROY:
			PostQuitMessage(0);
			break;
   }
   return 0;
}

int TransferFile(LPVOID Param)
{
	HANDLE		in, out;
	ULONGLONG	pos = 0;
	BYTE		buf[0x800];
	DWORD		sec = 0, esec = 0, r, w;
	CHAR		szDecryptFile[MAX_PATH];
	CHAR		szOutputFile[MAX_PATH];
	CHAR		szBuffer[MAX_PATH];
	CHAR		szCurText[2048];
	CHAR		szBytes[MAX_PATH];
	int			iLen;

	if(bKeyReceived == FALSE)
	{
		MessageBox(g_hWnd, "Master key has not been retrieved!", "DeCSS (MoRE)", 0);
		return 0;
	}

	if(g_szFolder[0] == 0)
	{
		MessageBox(g_hWnd, "Please locate a folder before transferring.", "DeCSS (MoRE)", 0);
		return 0;
	}

	SendMessage(g_hWndFiles, CB_GETLBTEXT, SendMessage(g_hWndFiles, CB_GETCURSEL, 0, 0), (LPARAM) szBuffer);
	wsprintf(szDecryptFile, "%c:\\VIDEO_TS\\%s", iDrive, szBuffer);
	wsprintf(szOutputFile, "%s\\%s", g_szFolder, szBuffer);
	
	iLen = lstrlen(szBuffer) - 1;
	if(szBuffer[iLen - 2] != 'V' && szBuffer[iLen - 1] != 'O' && szBuffer[iLen] != 'B')
	{
		CopyFile(szDecryptFile, szOutputFile, FALSE);
		wsprintf(szDecryptFile, "%s was copied", szBuffer);
		UpdateStatusWindow(szDecryptFile);
		hTransferThread = 0;
		return TRUE;
	}

	in = CreateFile(szDecryptFile, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
	if(in == INVALID_HANDLE_VALUE)
	{
		wsprintf(szOutputFile, "Unable to open %s for reading", szBuffer);
		UpdateStatusWindow(szOutputFile);
		return 0;
	}

	out = CreateFile(szOutputFile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
	if(out==INVALID_HANDLE_VALUE)
	{
		wsprintf(szDecryptFile, "Unable to open %s for writing", szOutputFile);
		UpdateStatusWindow(szDecryptFile);
		CloseHandle(in);
		return 0;
	}

	SendMessage(g_hWndStatus, WM_GETTEXT, 2048, (LPARAM) szCurText);
	SendMessage(g_hWndTransfer, WM_SETTEXT, 0, (LPARAM) "Abort");

	do
	{
		ReadFile(in, buf, 0x800, &r, NULL);
		if(r != 0x800)
			break;
		sec++;
		if(buf[0x14]&0x30)
		{
			esec++;
			CSSdescramble(buf, titlekey);
			buf[0x14] &= 0xcf;
		}
		
		WriteFile(out, buf, 0x800, &w, NULL);
		if(w != 0x800)
		{
			wsprintf(szBuffer, "Error writing to %s", szOutputFile);
			UpdateStatusWindow(szBuffer);
			break;
		}
		if(!(pos & 0xfffff))
		{
			lstrcpy(szBuffer, szCurText);
			wsprintf(szBytes, "%u bytes transferred", pos);
			strcat(szBuffer, szBytes);
			strcat(szBuffer, "\r\n");
			SendMessage(g_hWndStatus, WM_SETTEXT, 0, (LPARAM) szBuffer);
			SendMessage(g_hWndStatus, EM_LINESCROLL, 0, SendMessage(g_hWndStatus, EM_GETLINECOUNT, 0, 0));
		}
			
		pos += 0x800;

	} while(r == 0x800 && hTransferThread);

	if(!hTransferThread)
		UpdateStatusWindow("Decryption aborted by user");

	wsprintf(szBuffer, "Decrypted %u/%u sectors", esec, sec);
	UpdateStatusWindow(szBuffer);

	CloseHandle(in);
	CloseHandle(out);

	SendMessage(g_hWndTransfer, WM_SETTEXT, 0, (LPARAM) "Transfer");

	return TRUE;

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
玉米视频成人免费看| 亚洲乱码日产精品bd| 日韩不卡在线观看日韩不卡视频| 欧美在线制服丝袜| 亚洲一区在线观看免费| 欧美日韩不卡视频| 久久99精品国产| 欧美激情在线观看视频免费| 成人免费高清在线观看| 亚洲免费av在线| 欧美日本在线观看| 韩国精品主播一区二区在线观看| 中文欧美字幕免费| 在线视频一区二区三区| 麻豆freexxxx性91精品| 国产亚洲精品久| 日本精品一区二区三区四区的功能| 伊人开心综合网| 精品乱人伦小说| www.激情成人| 欧美aaaaaa午夜精品| 国产亚洲精品7777| 日本韩国欧美在线| 久久国产剧场电影| 中文字幕亚洲精品在线观看 | 亚洲精品你懂的| 欧美日韩激情一区二区三区| 九九久久精品视频| 亚洲色图视频免费播放| 欧美高清hd18日本| 成人免费福利片| 日韩二区在线观看| 欧美激情中文字幕| 欧美一级生活片| 99这里只有精品| 青青草一区二区三区| 国产精品久久久久三级| 91精品婷婷国产综合久久| 国产99久久久久久免费看农村| 一级精品视频在线观看宜春院| 日韩欧美亚洲一区二区| 日本乱码高清不卡字幕| 国产馆精品极品| 婷婷中文字幕综合| 国产精品久久午夜| 日韩欧美中文字幕制服| 色视频欧美一区二区三区| 精品一区二区在线看| 亚洲综合网站在线观看| 欧美激情在线观看视频免费| 6080yy午夜一二三区久久| 97国产一区二区| 国产美女视频一区| 五月天一区二区三区| 亚洲人成在线观看一区二区| 精品国产乱码久久久久久牛牛| 欧美性色欧美a在线播放| 成人精品小蝌蚪| 国产美女精品一区二区三区| 日韩电影在线免费看| 伊人色综合久久天天| 中文字幕中文字幕一区二区| 欧美v日韩v国产v| 91精品国产入口| 欧美日韩精品系列| 欧美三级电影网| 色综合久久久久久久久| 不卡高清视频专区| 国产盗摄精品一区二区三区在线| 蓝色福利精品导航| 丝袜美腿亚洲色图| 天堂va蜜桃一区二区三区漫画版 | 偷窥国产亚洲免费视频| 亚洲精品日日夜夜| 亚洲啪啪综合av一区二区三区| 中文字幕的久久| 久久精品视频一区| 国产日韩v精品一区二区| 久久久久综合网| 国产婷婷色一区二区三区在线| 2024国产精品| 久久精品无码一区二区三区| 久久这里只有精品视频网| 久久久久久免费| 欧美韩日一区二区三区| 国产午夜一区二区三区| 国产精品另类一区| 综合久久久久久| 亚洲视频每日更新| 亚洲综合男人的天堂| 亚洲一区二区三区四区在线免费观看| 亚洲激情图片qvod| 婷婷丁香久久五月婷婷| 奇米888四色在线精品| 精品一区二区免费在线观看| 狠狠狠色丁香婷婷综合久久五月| 国产在线国偷精品产拍免费yy| 国产一区二区剧情av在线| 懂色av中文字幕一区二区三区| 国产精品一区二区在线看| 懂色av一区二区三区蜜臀| 99精品欧美一区二区三区小说| 91免费看视频| 91精品国产高清一区二区三区| 日韩欧美一级二级三级| 国产欧美日韩精品在线| 亚洲精品视频一区二区| 免费xxxx性欧美18vr| 国产一区二区三区免费在线观看| 大美女一区二区三区| 色欧美乱欧美15图片| 欧美一级理论片| 中文字幕 久热精品 视频在线| 亚洲免费大片在线观看| 久久激情五月婷婷| 91香蕉视频在线| 日韩一二三区视频| 自拍偷拍亚洲综合| 日韩av一二三| 不卡av在线免费观看| 这里只有精品免费| 国产精品五月天| 五月开心婷婷久久| 成人激情视频网站| 欧美一级日韩一级| 亚洲精品免费视频| 国产一区二区三区日韩 | 午夜影院久久久| 国产精品一区二区不卡| 欧美日韩国产另类一区| 久久久久久久电影| 五月天激情综合| 99久久婷婷国产综合精品电影| 欧美一区二区免费视频| 综合欧美亚洲日本| 国产一区二区美女诱惑| 欧美裸体一区二区三区| 1024精品合集| 国产真实乱子伦精品视频| 欧美在线999| 国产精品久久久久久久久久免费看| 亚洲电影你懂得| 99精品视频中文字幕| 久久久久久久久岛国免费| 蜜桃视频在线观看一区二区| 一本色道久久综合亚洲精品按摩| 久久只精品国产| 日本欧美一区二区在线观看| 色综合天天狠狠| 国产日韩欧美综合一区| 久久精品国产成人一区二区三区| 在线日韩av片| 亚洲嫩草精品久久| 成人午夜又粗又硬又大| 欧美xingq一区二区| 青青草国产精品亚洲专区无| 日本道免费精品一区二区三区| 国产精品久久久久aaaa樱花| 国产一区二区三区久久悠悠色av| 51午夜精品国产| 午夜精品久久久久久久蜜桃app| 色婷婷亚洲婷婷| 亚洲欧美日韩精品久久久久| 国产91丝袜在线观看| 久久久久久久久伊人| 国产一区二区三区电影在线观看| 欧美成人一区二区三区在线观看| 日本系列欧美系列| 欧美一区二区三区四区视频| 日本不卡在线视频| 日韩免费观看高清完整版在线观看| 亚洲成人先锋电影| 91精品国产综合久久福利软件| 日韩精品久久久久久| 欧美一区二区三区精品| 六月丁香综合在线视频| 欧美成人福利视频| 国产乱人伦偷精品视频免下载| 久久久久久久久久看片| 国产99久久久国产精品免费看| 国产欧美精品一区| jvid福利写真一区二区三区| 亚洲天堂网中文字| 91极品美女在线| 亚洲妇熟xx妇色黄| 欧美一级电影网站| 国产一区二区精品在线观看| 中文字幕第一区| 欧美性猛片aaaaaaa做受| 五月天欧美精品| 久久亚洲精品小早川怜子| 成人97人人超碰人人99| 亚洲美腿欧美偷拍| 欧美日韩一级二级| 久久精品理论片| 国产精品午夜春色av| 欧美日韩专区在线| 国产精品资源在线| 亚洲激情校园春色| 日韩欧美国产成人一区二区|