成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

用delphi獲取主板BIOS信息

瀏覽:5日期:2024-07-05 11:53:40

1、讀取主板序列號

2、AWard Bios密碼讀取

3、讀取BIOS信息

4、獲取BIOS日期信息

=========================================

1、讀取主板序列號

uses SHA1, Base64;function GetHashedBiosInfo: string;var  SHA1Context: TSHA1Context;  SHA1Digest: TSHA1Digest;begin  // Get the BIOS data  SetString(Result, PChar(Ptr($F0000)), $10000);  // Hash the string  SHA1Init(SHA1Context);  SHA1Update(SHA1Context, PChar(Result), Length(Result));  SHA1Final(SHA1Context, SHA1Digest);  SetString(Result, PChar(@SHA1Digest), sizeof(SHA1Digest));  // Return the hash string encoded in printable characters  Result := B64Encode(Result);end;function GetBiosInfoAsText: string;var  p, q: pchar;begin  q := nil;  p := PChar(Ptr($FE000));  repeat if q <> nil then begin  if not (p^ in [#10, #13, #32..#126, #169, #184]) then begin if (p^ = #0) and (p - q >= 8) then begin  Result := Result + TrimRight(String(q)) + #13#10; end; q := nil;  end; end else  if p^ in [#33..#126, #169, #184] then q := p; inc(p);  until p > PChar(Ptr($FFFFF));  Result := TrimRight(Result);end;procedure TForm1.FormCreate(Sender: TObject);begin  Memo1.Lines.Text := GetBiosInfoAsText;end;========================2、AWard Bios密碼讀取(應該是jingtao的文章,但是ID沒有記錄)

Unit AwardBiosPas;//Write by lovejingtao//http://www.138soft.cominterfaceuses windows,SysUtils;function My_GetBiosPassword:String;implementationfunction CalcPossiblePassword(PasswordValue: WORD): string;varI: BYTE;C: CHAR;S: string[8];beginI := 0;while PasswordValue <> 0 do  begin Inc(I); if $263 > PasswordValue then  begin if $80 > PasswordValue then  S[I] := CHAR(PasswordValue) else if $B0 > PasswordValue then  S[I] := CHAR(PasswordValue and $77) else if $11D > PasswordValue then  S[I] := CHAR($30 or (PasswordValue and $0F)) else if $114 > PasswordValue then  begin S[I] := CHAR($64 or (PasswordValue and $0F)); if '0' > S[I] then  S[I] := CHAR(BYTE(S[I]) + 8);  end else if $1C2 > PasswordValue then  S[I] := CHAR($70 or (PasswordValue and $03)) else if $1E4 > PasswordValue then  S[I] := CHAR($30 or (PasswordValue and $03)) else  begin S[I] := CHAR($70 or (PasswordValue and $0F)); if 'z' < S[I] then  S[I] := CHAR(BYTE(S[I]) - 8);  end;  end else  S[I] := CHAR($30 or (PasswordValue and $3)); PasswordValue := (PasswordValue - BYTE(S[I])) shr 2;  end;S[0] := CHAR(I);PasswordValue := I shr 1;while PasswordValue < I do  begin {this is to do because award starts calculating with the last letter} C := S[BYTE(S[0]) - I + 1]; S[BYTE(S[0]) - I + 1] := S[I]; S[I] := C; Dec(I);  end;CalcPossiblePassword := S;end;function readcmos(off: byte): byte;varvalue: byte;beginasm xor ax, ax mov al, off out 70h, al in al, 71h mov value, alend;readcmos := value;end;function My_GetBiosPassword:String;varsuperpw, userpw: word;S:String;beginif Win32Platform <> VER_PLATFORM_WIN32_NT then //不是NTbeginpchar(@superpw)[0] := char(readcmos($1C));pchar(@superpw)[1] := char(readcmos($1D));pchar(@userpw)[0] := char(readcmos($64));pchar(@userpw)[1] := char(readcmos($65));S:='超級用戶密碼為:'+CalcPossiblePassword(superpw)+#13+'用戶密碼為:'+CalcPossiblePassword(userpw);Result:=S;endelseResult:='用戶系統為NT,無法獲取BISO密碼!';end;end.=========================

3、讀取BIOS信息

{程序使用Windows 95/2000平臺,自動檢測系統類型,然后進行不同調用}

uses BiosHelp;procedure TForm1.Button1Click(Sender: TObject);varDump: TRomBiosDump;i: Integer;beginReadRomBios(Dump, rrbmAutomatic);for i := 1 to $000FFFFF - $000F0000 - 1 do  Memo1.Lines.Add(IntToHex(Dump[i + $000FFFFF], 2));end;(******************************************************************************** ** BIOS Help - read ROM BIOS on Windows 95/98/SE/ME/NT/2K/XP** ** Copyright (C) 2001, Nico Bendlin (nico@bendlin.de)  ** ** Compiler: Delphi 4.03/5.01/6.00 ** Version: 1.03, 2001-09-02** ********************************************************************************){ postum scriptum: sorry for the bad english, i wrote it in a hurry }unit BiosHelp;{$ALIGN ON}{$MINENUMSIZE 4}interfaceusesWindows;typePRomBiosDump = ^TRomBiosDump;TRomBiosDump = array[$000F0000..$000FFFFF] of Byte;typeTReadRomBiosMethod = (  rrbmAutomatic, { Autodetect OS type and use proper method }  rrbmGeneric,{ Use 16-bit COM program to dump the BIOS }  rrbmMemory, { Read from memory (Win9x) }  rrbmPhysical{ Read from physical memory object (WinNT) }  );function ReadRomBios(var Dump: TRomBiosDump; Method: TReadRomBiosMethod;Timeout: DWORD = INFINITE): Boolean;function GetRomBiosBuffer(const Dump: TRomBiosDump; Address: Pointer;var Buffer; BufferSize: Cardinal): Cardinal;function GetRomBiosString(const Dump: TRomBiosDump; Address: Pointer): string;function GetRomBiosLongLong(const Dump: TRomBiosDump; Address: Pointer): LONGLONG;function GetRomBiosDWord(const Dump: TRomBiosDump; Address: Pointer): DWORD;function GetRomBiosWord(const Dump: TRomBiosDump; Address: Pointer): Word;function GetRomBiosByte(const Dump: TRomBiosDump; Address: Pointer): Byte;implementation{################################################################################ ## GENERIC METHOD  ## ## Create an temporary folder, save an 16bit COM program (RomDump.com) into it, ## execute program redirected to an file (Rom.dmp, RomDump.com simply dumps the ## memory range F000:0000-F000:FFFF to STDOUT), read dump file into the buffer, ## and finally cleanup all temporary files and directories. ## ## (the function RomDumpCode is x86 specific, which i wrote to generate 16-bit ## code with the help of the 23-bit Delphi compiler, never try to execute the ## pseudo-code in your program! it will not work in 32-bit protected mode) ## ################################################################################}{ *INTERNAL* - Pseudo 16-bit code }typePRomDumpCodeInfo = ^TRomDumpCodeInfo;TRomDumpCodeInfo = (rdciStart, rdciEnd, rdciSize);function _RomDumpCode(Info: TRomDumpCodeInfo): Pointer;varCodeStart: Pointer;CodeEnd: Pointer;beginasm JMP @@End { *BEGIN* 16-bit code } { -- never use it in your program! -- } { COM which writes ROM-BIOS to StdOut }@@Start: { Dump F000:0000-F000:FFFE } XOR eDX, eDX // DS = 0xF000  ; Data segment MOV DH, 0F0h MOV DS, eDX XOR eDX, eDX // DX = 0x0000  ; Data offset XOR eCX, eCX // CX = 0xFFFF  ; Data length DEC eCX XOR eBX, eBX // BX = 0x0001  ; STDOUT (file handle) INC eBX MOV AH, 40h  // DosCall(0x40) ; INT21, DOS_WRITE_TO_HANDLE INT 21h JC @@Exit// On error exit ; AL = Error code { Dump F000:FFFF } XOR eDX, eDX // DS = 0xF000  ; Data segment MOV DH, 0F0h MOV DS, eDX XOR eDX, eDX // DX = 0xFFFF  ; Data offset DEC eDX XOR eCX, eCX // CX = 0x0001  ; Data length INC eCX MOV eBX, eCX // BX = 0x0001  ; STDOUT (file handle) MOV AH, 40h  // DosCall(0x40) ; INT21, DOS_WRITE_TO_HANDLE INT 21h JC @@Exit// On error exit ; AL = Error code MOV AL, 0 // no error ; AL = 0@@Exit: MOV AH, 4Ch  // DosCall(0x4C) ; INT21, DOS_TERMINATE_EXE INT 21h@@End: { *END* 16-bit code } MOV CodeStart, OFFSET @@Start MOV CodeEnd, OFFSET @@Endend;case Info of  rdciStart: Result := CodeStart;  rdciEnd: Result := CodeEnd;  rdciSize: Result := Pointer(Cardinal(CodeEnd) - Cardinal(CodeStart));else  Result := nil;end;end;{ *INTERNAL* - Save 16-bit code to file }function _RomDumpCodeToFile(const Filename: string): Boolean;varComFile: THandle;Size: Cardinal;beginResult := False;ComFile := CreateFile(PChar(Filename), GENERIC_WRITE, FILE_SHARE_READ, nil,  CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);if ComFile <> INVALID_HANDLE_VALUE thentry  Result := WriteFile(ComFile, _RomDumpCode(rdciStart)^, Cardinal(_RomDumpCode(rdciSize)), Size, nil) and (Size = Cardinal(_RomDumpCode(rdciSize)));  if not Result then DeleteFile(PChar(Filename));finally  CloseHandle(ComFile);end;end;{ *INTERNAL* - Execute 16-bit code redirected to file }function _RomDumpCodeExecute(const Com, Dmp: string; Timeout: DWORD): Boolean;varComSpec: string;si: TStartupInfo;pi: TProcessInformation;beginResult := False;SetLength(ComSpec, MAX_PATH);SetLength(ComSpec,  GetEnvironmentVariable('ComSpec', PChar(@ComSpec[1]), MAX_PATH));if Length(ComSpec) > 0 thenbegin  FillChar(si, SizeOf(TStartupInfo), 0);  si.cb := SizeOf(TStartupInfo);  si.dwFlags := STARTF_USESHOWWINDOW;  si.wShowWindow := SW_HIDE;  if CreateProcess(nil, PChar(ComSpec + ' /C ' + Com + ' > ' + Dmp), nil, nil, False, CREATE_NEW_CONSOLE or CREATE_NEW_PROCESS_GROUP, nil, nil, si, pi) then  try Result := WaitForSingleObject(pi.hProcess, Timeout) <> WAIT_TIMEOUT;  finally CloseHandle(pi.hProcess); CloseHandle(pi.hThread);  end;end;end;function DirectoryExists(const Dir: string): Boolean;varAttr: DWORD;beginAttr := GetFileAttributes(PChar(Dir));Result := (Attr <> $FFFFFFFF) and  (Attr and FILE_ATTRIBUTE_DIRECTORY = FILE_ATTRIBUTE_DIRECTORY);end;{ Get BIOS dump the generic way }function ReadRomBios16(var Buffer: TRomBiosDump; Timeout: DWORD): Boolean;constTempSub = '~RomDmp';ComName = 'RomDump.com';DmpName = 'Rom.dmp';varTempPath: string;TempDir: string;TempIdx: Integer;TempIdxStr: string;ComFile: string;DmpFile: string;DmpHandle: THandle;Written: DWORD;beginResult := False;SetLength(TempPath, MAX_PATH);SetLength(TempPath, GetTempPath(MAX_PATH, PChar(@TempPath[1])));if Length(TempPath) > 0 thenbegin  if (TempPath[Length(TempPath)] <> '') then TempPath := TempPath + '';  TempIdx := 0;  repeat Inc(TempIdx); Str(TempIdx, TempIdxStr); TempDir := TempPath + TempSub + TempIdxStr;  until not DirectoryExists(TempDir);  if CreateDirectory(PChar(TempDir), nil) then  try TempDir := TempDir + ''; ComFile := TempDir + ComName; DmpFile := TempDir + DmpName; if _RomDumpCodeToFile(ComFile) then try  if _RomDumpCodeExecute(ComFile, DmpFile, Timeout) then  begin DmpHandle := CreateFile(PChar(DmpFile), GENERIC_READ,  FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0); if DmpHandle <> INVALID_HANDLE_VALUE then try  FillChar(Buffer, SizeOf(TRomBiosDump), 0);  Result := ReadFile(DmpHandle, Buffer, SizeOf(TRomBiosDump), Written, nil) and (Written = SizeOf(TRomBiosDump)); finally  CloseHandle(DmpHandle); end;  end; finally  DeleteFile(PChar(DmpFile));  DeleteFile(PChar(ComFile)); end;  finally RemoveDirectory(PChar(TempDir));  end;end;end;{################################################################################ ##  DIRECT METHOD (Win9x) ## ## Due to the fact that Windows 95/98/ME maps the BIOS into every Win32 process ## for read access it is very simple to fill the buffer from memory.## ################################################################################}function ReadRomBios9x(var Buffer: TRomBiosDump): Boolean;beginResult := False;try  FillChar(Buffer, SizeOf(TRomBiosDump), 0);  Move(Pointer(Low(TRomBiosDump))^, Buffer, SizeOf(TRomBiosDump));  Result := True;except  // ignore exceptionsendend;{################################################################################ ##  PHYSICAL MEMORY METHOD (WinNT) ## ## On Windows NT the ROM BIOS is only available through the named kernel object ## 'DevicePhysicalMemory'. Because it is impossible to open kernel objects in ## user mode with standard Win32 API functions we make use of NT's nativeAPI in ## NtDll.dll ("NT-Layer") namely ZwOpenSection. ## ## (note: mostly there are two versions of every function ZwXxx and NtXxx. The ## only difference in kernel mode is that the NtXxx version works in conside- ## ration to security while ZwXxx not. But in user mode both work like NtXxx.) ## ## At first the section is opened with ZwOpenSection. Normally we would proceed ## ZwMapViewOfSection, ZwUnmapViewOfSection, and NtClose. But the functions are ## more complex and there is no needing for it. With the handle (because we are ## in the "very simple" user mode =) we now use MapViewOfFile, UnmapViewOfFile, ## and CloseHandle to map an memory window (the ROM BIOS) into our process. ## ## Due to the fact that ZwOpenSection returns NT error-codes in case of failure ## we have to translate it to an Win32 error-code (RtlNtStatusToDosError). ## All NT specific functions are dynamically loaded -- because the applications ## should start on Win9x systems =) ## ################################################################################}{ For more information see Windows 2000/XP DDK }{ It works on Windows NT 4.0 too, use NtDll.dll }typeNTSTATUS = Integer;constSTATUS_SUCCESS = NTSTATUS(0);STATUS_INVALID_HANDLE = NTSTATUS($C0000008);STATUS_ACCESS_DENIED = NTSTATUS($C0000022);typePUnicodeString = ^TUnicodeString;TUnicodeString = packed record  Length: Word;  MaximumLength: Word;  Buffer: PWideChar;end;constOBJ_INHERIT = $00000002;OBJ_PERMANENT = $00000010;OBJ_EXCLUSIVE = $00000020;OBJ_CASE_INSENSITIVE = $00000040;OBJ_OPENIF = $00000080;OBJ_OPENLINK = $00000100;OBJ_KERNEL_HANDLE = $00000200;OBJ_VALID_ATTRIBUTES = $000003F2;typePObjectAttributes = ^TObjectAttributes;TObjectAttributes = record  Length: ULONG;  RootDirectory: THandle;  ObjectName: PUnicodeString;  Attributes: ULONG;  SecurityDescriptor: PSecurityDescriptor;  SecurityQualityOfService: PSecurityQualityOfService;end;constObjectPhysicalMemoryDeviceName = 'DevicePhysicalMemory';ObjectPhysicalMemoryName: TUnicodeString = (  Length: Length(ObjectPhysicalMemoryDeviceName) * 2;  MaximumLength: Length(ObjectPhysicalMemoryDeviceName) * 2 + 2;  Buffer: ObjectPhysicalMemoryDeviceName;  );ObjectPhysicalMemoryAccessMask: ACCESS_MASK = SECTION_MAP_READ;ObjectPhysicalMemoryAttributes: TObjectAttributes = (  Length: SizeOf(TObjectAttributes);  RootDirectory: 0;  ObjectName: @ObjectPhysicalMemoryName;  Attributes: OBJ_CASE_INSENSITIVE;  SecurityDescriptor: nil;  SecurityQualityOfService: nil;  );typeTFNZwOpenSection = function(out SectionHandle: THandle;  DesiredAccess: ACCESS_MASK; ObjectAttributes: PObjectAttributes): NTSTATUS;stdcall;TFNRtlNtStatusToDosError = function(Status: NTSTATUS): DWORD; stdcall;constntdll = 'ntdll.dll';varZwOpenSection: TFNZwOpenSection;RtlNtStatusToDosError: TFNRtlNtStatusToDosError;function ReadRomBiosNt(var Buffer: TRomBiosDump; Timeout: DWORD): Boolean;varNtLayer: HMODULE;Status: NTSTATUS;Section: THandle;View: Pointer;beginResult := False;NtLayer := GetModuleHandle(ntdll);if NtLayer = 0 then  SetLastError(ERROR_CALL_NOT_IMPLEMENTED)elsebegin  if not Assigned(ZwOpenSection) then ZwOpenSection := GetProcAddress(NtLayer, 'ZwOpenSection');  if not Assigned(RtlNtStatusToDosError) then RtlNtStatusToDosError := GetProcAddress(NtLayer, 'RtlNtStatusToDosError');  if not (Assigned(ZwOpenSection) and Assigned(RtlNtStatusToDosError)) then SetLastError(ERROR_CALL_NOT_IMPLEMENTED)  else  begin Status := ZwOpenSection(Section, ObjectPhysicalMemoryAccessMask,  @ObjectPhysicalMemoryAttributes); case Status of  STATUS_SUCCESS: try  View := MapViewOfFile(Section, ObjectPhysicalMemoryAccessMask, 0, Low(TRomBiosDump), SizeOf(TRomBiosDump));  if Assigned(View) then  try FillChar(Buffer, SizeOf(TRomBiosDump), 0); Move(View^, Buffer, SizeOf(TRomBiosDump)); Result := True;  finally UnmapViewOfFile(View);  end; finally  CloseHandle(Section); end;  STATUS_ACCESS_DENIED: Result := ReadRomBios16(Buffer, Timeout); else  SetLastError(RtlNtStatusToDosError(Status)) end;  end;end;end;{################################################################################ ##  ReadRomBios## ################################################################################}function ReadRomBios(var Dump: TRomBiosDump; Method: TReadRomBiosMethod;Timeout: DWORD = INFINITE): Boolean;beginResult := False;case Method of  rrbmAutomatic: if (Integer(GetVersion) < 0) then try  Result := ReadRomBios9x(Dump); except  Result := ReadRomBios16(Dump, Timeout); end else  Result := ReadRomBiosNt(Dump, Timeout);  rrbmGeneric: Result := ReadRomBios16(Dump, Timeout);  rrbmMemory: Result := ReadRomBios9x(Dump);  rrbmPhysical: Result := ReadRomBiosNt(Dump, Timeout);else  SetLastError(ERROR_INVALID_PARAMETER);end;end;{################################################################################ ## Utilities to simplify the access to data as generic standard types  ## ################################################################################}function GetRomBiosBuffer(const Dump: TRomBiosDump; Address: Pointer;var Buffer; BufferSize: Cardinal): Cardinal;beginResult := 0;if (Cardinal(Address) >= Low(TRomBiosDump)) and  (Cardinal(Address) <= High(TRomBiosDump)) thenbegin  Result := BufferSize;  if (Cardinal(Address) + BufferSize > High(TRomBiosDump)) then Result := High(TRomBiosDump) - Cardinal(Address) + 1;  Move(Dump[Cardinal(Address)], Buffer, Result);end;end;function GetRomBiosString(const Dump: TRomBiosDump; Address: Pointer): string;beginResult := '';if (Cardinal(Address) >= Low(TRomBiosDump)) and  (Cardinal(Address) <= High(TRomBiosDump)) then  Result := string(PChar(@Dump[Cardinal(Address)]));end;function GetRomBiosLongLong(const Dump: TRomBiosDump; Address: Pointer): LONGLONG;typePLongLong = ^LONGLONG;beginResult := 0;if (Cardinal(Address) >= Low(TRomBiosDump)) and  (Cardinal(Address) <= High(TRomBiosDump) - SizeOf(LONGLONG) + 1) then  Result := PLongLong(@Dump[Cardinal(Address)])^;end;function GetRomBiosDWord(const Dump: TRomBiosDump; Address: Pointer): DWORD;beginResult := 0;if (Cardinal(Address) >= Low(TRomBiosDump)) and  (Cardinal(Address) <= High(TRomBiosDump) - SizeOf(DWORD) + 1) then  Result := PDWORD(@Dump[Cardinal(Address)])^;end;function GetRomBiosWord(const Dump: TRomBiosDump; Address: Pointer): Word;beginResult := 0;if (Cardinal(Address) >= Low(TRomBiosDump)) and  (Cardinal(Address) <= High(TRomBiosDump) - SizeOf(Word) + 1) then  Result := PWord(@Dump[Cardinal(Address)])^;end;function GetRomBiosByte(const Dump: TRomBiosDump; Address: Pointer): Byte;beginResult := 0;if (Cardinal(Address) >= Low(TRomBiosDump)) and  (Cardinal(Address) <= High(TRomBiosDump) - SizeOf(Byte) + 1) then  Result := PByte(@Dump[Cardinal(Address)])^;end;end.==========================================

4、獲取BIOS日期信息

{--------------------------------------------------------------------------}{獲取BIOS的日期信息,估計可能在2000下適用,但是可能需要獲取權限}function GetBiosDate1: String;varBuffer: Array[0..8] Of Char;N: DWORD;beginReadProcessMemory(GetCurrentProcess,  Ptr($FFFF5),  @Buffer,  8,  N);Buffer[8] := #0;result := StrPas(Buffer)end;function GetBiosDate2: String;beginresult := string(pchar(ptr($FFFF5)));end;

標簽: IOS
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
一区二区三区成人| 激情文学综合插| 六月婷婷色综合| 亚洲一区二区三区精品视频| 综合网在线视频| 欧美视频1区| 久久久久久久久久久久电影 | 国产精品久久久久久久久免费相片 | 一区二区三区日韩| 亚洲精品视频啊美女在线直播| 国产欧美一区二区在线观看| 99久精品国产| 精品嫩草影院久久| 国产成人亚洲综合a∨猫咪| 欧美日韩性生活| 麻豆精品精品国产自在97香蕉| 美日韩免费视频| 亚洲一区二区三区视频在线| 亚洲精品在线免费| 中文字幕在线观看不卡视频| 国产精品国码视频| 中文字幕在线观看不卡| 在线欧美不卡| 亚洲愉拍自拍另类高清精品| 在线一区亚洲| 亚洲一区二区中文在线| 国产精品三区www17con| 亚洲综合男人的天堂| 亚洲一区二区三区精品视频| 性欧美大战久久久久久久久| 久久青草久久| 免费看欧美美女黄的网站| 一本色道亚洲精品aⅴ| 日本中文字幕不卡| 7777女厕盗摄久久久| 国产精品99久久久久| 精品久久久久久亚洲综合网| 95精品视频在线| 中文字幕乱码久久午夜不卡| 亚洲精品1区| 亚洲自拍偷拍综合| 久久中文精品| 国产美女一区二区三区| 26uuu精品一区二区在线观看| 99久久国产免费看| 国产精品三级电影| aa成人免费视频| 亚洲福利一区二区三区| 91成人免费在线| 高清视频一区二区| 中国av一区二区三区| 国产欧美不卡| 麻豆freexxxx性91精品| 日韩视频免费直播| 欧美成人亚洲| 亚洲伦在线观看| 久久婷婷一区| 国产成人av一区二区三区在线| 久久综合九色综合久久久精品综合 | 中文字幕二三区不卡| 亚洲国产片色| 日韩极品在线观看| 日韩美女一区二区三区四区| 狠狠爱www人成狠狠爱综合网| 亚洲一区二区三区四区的| 欧美日韩黄视频| eeuss影院一区二区三区| 亚洲丝袜制服诱惑| 欧洲av在线精品| www.成人在线| 亚洲摸摸操操av| 日本乱码高清不卡字幕| 成人动漫一区二区三区| 亚洲精品一二三| 欧美丝袜丝交足nylons| 91无套直看片红桃| 一区二区三区中文字幕精品精品| 欧美午夜精品理论片a级按摩| 不卡电影一区二区三区| 亚洲精品乱码久久久久久久久| 色视频成人在线观看免| 成人精品小蝌蚪| 亚洲乱码国产乱码精品精98午夜| 欧美色男人天堂| 欧美日韩亚洲一区二区三区四区| 性做久久久久久免费观看| 欧美狂野另类xxxxoooo| 欧美日韩网站| 蜜臀av在线播放一区二区三区| 久久久精品免费免费| 美女黄网久久| aaa欧美日韩| 亚洲午夜免费电影| 日韩一二三四区| 国产精品普通话对白| 国产精一区二区三区| 亚洲欧美日韩国产手机在线| 欧美区一区二区三区| 狠狠色狠狠色综合人人| 九九国产精品视频| 成人免费小视频| 欧美性一区二区| 欧美日韩岛国| 蜜臀av性久久久久av蜜臀妖精| 国产亚洲制服色| 可以免费看不卡的av网站| 成人午夜激情在线| 夜色激情一区二区| 久久综合九色综合97_久久久| 欧美一级视频| 成人网在线播放| 香蕉久久一区二区不卡无毒影院| 欧美成人女星排行榜| 亚洲一区日韩在线| 91最新地址在线播放| 丝袜亚洲另类丝袜在线| 国产亚洲精久久久久久| 日本电影亚洲天堂一区| 影音先锋久久精品| 成人黄色综合网站| 免费国产亚洲视频| 最好看的中文字幕久久| 欧美tickling挠脚心丨vk| 色婷婷av一区二区三区大白胸| 亚洲电影自拍| 99这里都是精品| 久久激情五月激情| 亚洲一区二区三区自拍| 久久久久久久电影| 欧美疯狂性受xxxxx喷水图片| 国产伦精品一区二区三区四区免费 | 亚洲天堂2014| 精品99一区二区| 91福利社在线观看| 亚洲激情偷拍| 99久久久精品免费观看国产蜜| 日韩二区三区四区| 亚洲视频小说图片| 久久久精品黄色| 欧美一卡二卡三卡四卡| 色成年激情久久综合| 日韩亚洲国产精品| 午夜电影亚洲| 国产麻豆精品久久一二三| 天天影视涩香欲综合网 | 国产一区二区伦理片| 亚洲18女电影在线观看| 日韩一区在线免费观看| 久久综合久久鬼色| 717成人午夜免费福利电影| 亚洲综合丁香| 亚洲天堂偷拍| 97久久超碰国产精品电影| 国内精品第一页| 日本在线不卡一区| 亚洲成av人片| 亚洲综合丝袜美腿| 亚洲精品乱码久久久久久久久 | av资源站一区| 国模一区二区三区白浆| 婷婷夜色潮精品综合在线| 日韩理论片在线| 国产精品网曝门| 久久久99免费| 精品国产1区二区| 欧美一区二区三区日韩视频| 欧美精品 日韩| 717成人午夜免费福利电影| 一本色道久久加勒比精品| 性色一区二区| 亚洲精品乱码| 日韩一区二区免费看| 亚洲经典在线| 亚洲欧洲精品一区二区| 狠狠色综合网| 亚洲成人原创| 亚洲欧洲精品一区二区三区波多野1战4 | 不卡av在线网| 国产精品456露脸| 国产在线看一区| 久久国产尿小便嘘嘘| 久久不见久久见免费视频7| 午夜国产精品影院在线观看| 亚洲一区二区三区在线播放| 一区二区三区 在线观看视频 | 不卡av电影在线播放| 成人理论电影网| 91农村精品一区二区在线| 91一区一区三区| 欧美日韩成人一区二区三区| 欧美午夜视频在线| 亚洲午夜精品一区二区 | 欧美日韩国产精品成人| 欧美日韩久久久一区| 欧美影院一区二区三区| 日本电影亚洲天堂一区| 欧美在线看片a免费观看| 欧美日韩高清一区二区三区| 在线播放中文字幕一区| 日韩免费成人网|