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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dump.c

?? Windows XP下的抓包程序實現
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
 * Copyright (c) 1999 - 2003
 * NetGroup, Politecnico di Torino (Italy)
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the Politecnico di Torino nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 */

#include <stdarg.h>
#include <ntddk.h>
#include <ntiologc.h>
#include <ndis.h>
#include "debug.h"
#include "packet.h"

#include "win_bpf.h"

//-------------------------------------------------------------------

NTSTATUS
NPF_OpenDumpFile(POPEN_INSTANCE Open , PUNICODE_STRING fileName, BOOLEAN Append)
{
   NTSTATUS ntStatus;
   IO_STATUS_BLOCK IoStatus;
   OBJECT_ATTRIBUTES ObjectAttributes;
   PWCHAR PathPrefix;
   USHORT PathLen;
   UNICODE_STRING FullFileName;
   ULONG FullFileNameLength;
   PDEVICE_OBJECT fsdDevice;

   FILE_STANDARD_INFORMATION StandardInfo;
   
    IF_LOUD(DbgPrint("NPF: OpenDumpFile.\n");)

   if(fileName->Buffer[0] == L'\\' &&
      fileName->Buffer[1] == L'?' &&
      fileName->Buffer[2] == L'?' &&
      fileName->Buffer[3] == L'\\'
   ){
      PathLen = 0;
   }
   else{
      PathPrefix = L"\\??\\";
      PathLen = 8;
   }
   
   // Insert the correct path prefix.
   FullFileNameLength = PathLen + fileName->MaximumLength;
   
   FullFileName.Buffer = ExAllocatePoolWithTag(NonPagedPool, 
      FullFileNameLength,
      '0DWA');
   
   if (FullFileName.Buffer == NULL) {
      ntStatus = STATUS_INSUFFICIENT_RESOURCES;
      return ntStatus;
   }
   
   FullFileName.Length = PathLen;
   FullFileName.MaximumLength = (USHORT)FullFileNameLength;
   
   if(PathLen)
      RtlMoveMemory (FullFileName.Buffer, PathPrefix, PathLen);
   
   RtlAppendUnicodeStringToString (&FullFileName, fileName);
   
   IF_LOUD(DbgPrint( "Packet: Attempting to open %wZ\n", &FullFileName);)
   
   InitializeObjectAttributes ( &ObjectAttributes,
      &FullFileName,
      OBJ_CASE_INSENSITIVE,
      NULL,
      NULL );
   
   // Create the dump file
   ntStatus = ZwCreateFile( &Open->DumpFileHandle,
      SYNCHRONIZE | FILE_WRITE_DATA,
      &ObjectAttributes,
      &IoStatus,
      NULL,
      FILE_ATTRIBUTE_NORMAL,
      FILE_SHARE_READ,
      (Append)?FILE_OPEN_IF:FILE_SUPERSEDE,
      FILE_SYNCHRONOUS_IO_NONALERT,
      NULL,
      0 );

    if ( !NT_SUCCESS( ntStatus ) )
    {
        IF_LOUD(DbgPrint("NPF: Error opening file %x\n", ntStatus);)
      
        ExFreePool(FullFileName.Buffer);
      Open->DumpFileHandle=NULL;
        ntStatus = STATUS_NO_SUCH_FILE;
        return ntStatus;
    }
   
   ExFreePool(FullFileName.Buffer);
   
   ntStatus = ObReferenceObjectByHandle(Open->DumpFileHandle,
      FILE_WRITE_ACCESS,
      *IoFileObjectType,
      KernelMode,
      &Open->DumpFileObject,
      0);
   
    if ( !NT_SUCCESS( ntStatus ) )
    {
        IF_LOUD(DbgPrint("NPF: Error creating file, status=%x\n", ntStatus);)
         
      ZwClose( Open->DumpFileHandle );
      Open->DumpFileHandle=NULL;
      
        ntStatus = STATUS_NO_SUCH_FILE;
        return ntStatus;
    }
   
    fsdDevice = IoGetRelatedDeviceObject(Open->DumpFileObject);

   IF_LOUD(DbgPrint("NPF: Dump: write file created succesfully, status=%d \n",ntStatus);)

   return ntStatus;
}   

//-------------------------------------------------------------------

NTSTATUS
NPF_StartDump(POPEN_INSTANCE Open)
{
   NTSTATUS ntStatus;
   struct packet_file_header hdr;
   IO_STATUS_BLOCK IoStatus;
    NDIS_REQUEST pRequest;
   ULONG MediaType;
   OBJECT_ATTRIBUTES ObjectAttributes;

    IF_LOUD(DbgPrint("NPF: StartDump.\n");)

   // Init the file header
   hdr.magic = TCPDUMP_MAGIC;
   hdr.version_major = PCAP_VERSION_MAJOR;
   hdr.version_minor = PCAP_VERSION_MINOR;
   hdr.thiszone = 0; /*Currently not set*/
   hdr.snaplen = 1514;
   hdr.sigfigs = 0;

   // Detect the medium type
   switch (Open->Medium){
      
   case NdisMediumWan:
      hdr.linktype = DLT_EN10MB;
      break;
      
   case NdisMedium802_3:
      hdr.linktype = DLT_EN10MB;
      break;
      
   case NdisMediumFddi:
      hdr.linktype = DLT_FDDI;
      break;
      
   case NdisMedium802_5:         
      hdr.linktype = DLT_IEEE802;   
      break;
      
   case NdisMediumArcnet878_2:
      hdr.linktype = DLT_ARCNET;
      break;
      
   case NdisMediumAtm:
      hdr.linktype = DLT_ATM_RFC1483;
      break;
      
   default:
      hdr.linktype = DLT_EN10MB;
   }

   // Write the header.
   // We can use ZwWriteFile because we are in the context of the application
   ntStatus = ZwWriteFile(Open->DumpFileHandle,
      NULL,
      NULL,
      NULL,
      &IoStatus,
      &hdr,
      sizeof(hdr),
      NULL,
      NULL );

   
    if ( !NT_SUCCESS( ntStatus ) )
    {
        IF_LOUD(DbgPrint("NPF: Error dumping file %x\n", ntStatus);)
      
      ZwClose( Open->DumpFileHandle );
      Open->DumpFileHandle=NULL;
      
        ntStatus = STATUS_NO_SUCH_FILE;
        return ntStatus;
    }

   Open->DumpOffset.QuadPart=24;
         
   ntStatus = PsCreateSystemThread(&Open->DumpThreadHandle,
      THREAD_ALL_ACCESS,
      (ACCESS_MASK)0L,
      0,
      0,
      NPF_DumpThread,
      Open);
   
    if ( !NT_SUCCESS( ntStatus ) )
    {
        IF_LOUD(DbgPrint("NPF: Error creating dump thread, status=%x\n", ntStatus);)
      
      ZwClose( Open->DumpFileHandle );
      Open->DumpFileHandle=NULL;

        return ntStatus;
    }  

   ntStatus = ObReferenceObjectByHandle(Open->DumpThreadHandle,
      THREAD_ALL_ACCESS,
      NULL,
      KernelMode,
      &Open->DumpThreadObject,
      0);

    if ( !NT_SUCCESS( ntStatus ) )
    {
        IF_LOUD(DbgPrint("NPF: Error creating dump thread, status=%x\n", ntStatus);)
      
      ObDereferenceObject(Open->DumpFileObject);
      ZwClose( Open->DumpFileHandle );
      Open->DumpFileHandle=NULL;

        return ntStatus;
    }  

   
   return ntStatus;
   
}

//-------------------------------------------------------------------
// Dump Thread
//-------------------------------------------------------------------

VOID NPF_DumpThread(POPEN_INSTANCE Open)
{
   ULONG      FrozenNic;

    IF_LOUD(DbgPrint("NPF: In the work routine.  Parameter = 0x%p\n",Open);)

   while(TRUE){

      // Wait until some packets arrive or the timeout expires
      NdisWaitEvent(&Open->DumpEvent, 5000);  

      IF_LOUD(DbgPrint("NPF: Worker Thread - event signalled\n");)
         
      if(Open->DumpLimitReached ||
         Open->Size==0){      // BufSize=0 means that this instance was closed, or that the buffer is too
                           // small for any capture. In both cases it is better to end the dump

         IF_LOUD(DbgPrint("NPF: Worker Thread - Exiting happily\n");)
         IF_LOUD(DbgPrint("Thread: Dumpoffset=%I64d\n",Open->DumpOffset.QuadPart);)

         PsTerminateSystemThread(STATUS_SUCCESS);
         return;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧洲激情一区二区| 六月婷婷色综合| 91免费在线播放| 最新热久久免费视频| 99国产欧美久久久精品| 亚洲女同一区二区| 欧美日韩在线精品一区二区三区激情| 亚洲影视在线播放| 欧美日韩国产系列| 懂色av噜噜一区二区三区av| 国产欧美日本一区视频| 99麻豆久久久国产精品免费优播| 亚洲精品写真福利| 欧美日韩成人一区二区| 激情综合色综合久久综合| 国产农村妇女精品| 在线影院国内精品| 美女被吸乳得到大胸91| 国产农村妇女精品| 欧美日韩高清在线| 久久国产福利国产秒拍| 国产精品你懂的在线| 在线视频一区二区三区| 美腿丝袜在线亚洲一区| 国产精品欧美精品| 欧美精品在线视频| 国产精品 日产精品 欧美精品| 亚洲色图在线看| 日韩视频免费观看高清在线视频| 成人在线综合网站| 亚洲午夜精品在线| 国产午夜精品在线观看| 欧美视频第二页| 国产一区二区免费看| 亚洲一区二区视频| 久久久高清一区二区三区| 在线观看日韩一区| 高清视频一区二区| 美国毛片一区二区| 一区二区三区国产| 国产欧美日韩不卡| 日韩一区二区三| 色欧美88888久久久久久影院| 蜜臀精品一区二区三区在线观看 | 狠狠色狠狠色综合| 亚洲三级小视频| 久久久久久一二三区| 欧美日韩国产综合一区二区三区| 高清av一区二区| 免费欧美日韩国产三级电影| 日韩一区在线看| 久久久久国产精品人| 欧美一级黄色片| 欧美日韩国产乱码电影| 91欧美一区二区| 国产91精品一区二区麻豆亚洲| 婷婷中文字幕一区三区| 国产精品久久久久精k8| 26uuuu精品一区二区| 日韩美女在线视频| 在线播放视频一区| 日本韩国欧美三级| 成人av集中营| 成人在线视频首页| 丁香激情综合国产| 国产精品自拍网站| 国产中文字幕一区| 精品无人码麻豆乱码1区2区| 人人精品人人爱| 日韩在线卡一卡二| 日韩电影在线一区二区三区| 亚洲国产精品嫩草影院| 一区二区三区四区不卡视频 | 《视频一区视频二区| 中文天堂在线一区| 中文字幕成人网| 中文在线一区二区| 欧美韩国日本综合| 国产精品白丝在线| 亚洲丝袜美腿综合| 一个色在线综合| 亚洲女同一区二区| 亚洲成av人在线观看| 亚洲成在人线免费| 污片在线观看一区二区| 天天av天天翘天天综合网| 亚洲成人你懂的| 日本网站在线观看一区二区三区| 午夜一区二区三区视频| 日韩av网站在线观看| 日本视频中文字幕一区二区三区| 免费三级欧美电影| 国产一区二区在线观看免费| 国产激情91久久精品导航 | 精品理论电影在线观看| 欧美精品一区二区久久久| 国产欧美日韩一区二区三区在线观看| 久久久噜噜噜久噜久久综合| 国产精品视频第一区| 亚洲免费在线观看视频| 亚洲丶国产丶欧美一区二区三区| 琪琪久久久久日韩精品| 国产精品996| 色美美综合视频| 4438x成人网最大色成网站| 久久亚洲春色中文字幕久久久| 日本一区二区电影| 亚洲一级二级在线| 久久99国产精品久久99果冻传媒| 岛国精品一区二区| 在线观看成人小视频| 日韩精品影音先锋| 中文字幕亚洲成人| 日本欧美一区二区| 成人国产精品免费观看动漫 | 美腿丝袜在线亚洲一区| 成人黄色一级视频| 制服丝袜亚洲色图| 中文字幕欧美激情| 午夜精品久久久| 成人国产精品免费网站| 91精品在线免费观看| 国产精品视频一区二区三区不卡| 午夜精品视频在线观看| 成人激情免费网站| 欧美xxxxxxxx| 亚洲成人精品影院| 成人爱爱电影网址| 欧美一级电影网站| 一区二区欧美在线观看| 国产精品一级片| 7777精品伊人久久久大香线蕉经典版下载| 久久蜜桃av一区二区天堂 | 91视频在线观看| 精品国产3级a| 午夜久久久久久| 91老师片黄在线观看| 久久久另类综合| 日本欧美一区二区| 欧美私人免费视频| 亚洲欧美日韩国产综合在线| 久草在线在线精品观看| 欧美揉bbbbb揉bbbbb| 国产精品初高中害羞小美女文| 精品写真视频在线观看| 欧美精品18+| 一区二区三区成人| 91丨国产丨九色丨pron| 欧美国产国产综合| 精品制服美女久久| 日韩欧美第一区| 图片区小说区区亚洲影院| 在线观看亚洲专区| 亚洲女女做受ⅹxx高潮| 成人丝袜18视频在线观看| 久久久久久一级片| 国产在线精品免费av| 精品乱人伦一区二区三区| 三级欧美在线一区| 欧美亚洲动漫另类| 亚洲一区二区不卡免费| 在线视频欧美精品| 亚洲综合小说图片| 在线观看网站黄不卡| 亚洲午夜视频在线观看| 在线观看亚洲精品| 亚洲va欧美va人人爽| 欧美日韩在线播放三区四区| 一区二区三区不卡视频| 欧美日韩一区三区四区| 亚洲1区2区3区视频| 欧美日韩1234| 人人超碰91尤物精品国产| 欧美一区二区日韩一区二区| 七七婷婷婷婷精品国产| 欧美zozozo| 国产91富婆露脸刺激对白| 国产精品妹子av| 91麻豆精品秘密| 亚洲国产精品久久久男人的天堂| 在线一区二区三区四区五区| 亚洲国产日日夜夜| 7777精品伊人久久久大香线蕉完整版| 日本不卡不码高清免费观看| 日韩欧美aaaaaa| 成人免费看视频| 一区二区三区在线免费播放| 欧美日韩电影在线| 国产在线观看一区二区| 欧美国产视频在线| 日本道色综合久久| 视频在线观看一区| 国产欧美日韩在线视频| 在线精品视频免费观看| 日本v片在线高清不卡在线观看| 日韩精品一区二区三区三区免费 | 欧美r级电影在线观看| 国产精品中文有码| 亚洲狼人国产精品| 日韩一区二区影院|