【資料】wpcap.dll/Packet.dll庫中相應函數

來自於《網絡分析技術揭祕》前三章試讀連接:http://book.2cto.com/201208/1359.html。我目前沒有導出dll看過html

一.wpcap.dll導出的函數


1.與libpcap庫兼容的函數
第一部分是與libpcap庫兼容的函數,其可兼容UNIX平臺,因此這些函數可在Windows與Linux平臺上工做 網絡

。這些函數以下所示。
pcap_open_live函數用於打開本地主機的網絡適配,而且可進行網絡數據包的捕獲,其原型以下:
pcap_t *爌cap_open_live (const char *device, int snaplen, int promisc, int to_ms,
    char *ebuf);
pcap_open_dead函數用於建立一個pcap_t結構體,而不是用於數據捕獲,其原型以下:
pcap_t *爌cap_open_dead (int linktype, int snaplen);
pcap_open_offline函數用於打開一個libpcap格式的存儲文件,來讀取數據包,其原型以下:
pcap_t *爌cap_open_offline (const char *fname, char *errbuf);
pcap_close函數用來釋放打開函數pcap_openXXX所得到的相關資源,其原型以下:
void爌cap_close (pcap_t *p);
pcap_findalldevs函數用於返回所找到的適配器列表,其原型以下:
int爌cap_findalldevs (pcap_if_t **alldevsp, char *errbuf);
pcap_freealldevs函數用於釋放由pcap_findalldevs返回的適配器列表,其原型以下:
void爌cap_freealldevs (pcap_if_t *alldevsp);
pcap_handler爲捕獲數據包的回調函數的原型,其原型以下:
typedef void(*爌cap_handler )(u_char *user, const struct pcap_pkthdr *pkt_header,
    const u_char *pkt_data);
pcap_dispatch函數用於接收一組數據包,其原型以下:
int爌cap_dispatch (pcap_t *p, int cnt, pcap_handler callback, u_char *user);
pcap_loop函數用於接收一組數據包,其原型以下:
int爌cap_loop (pcap_t *p, int cnt, pcap_handler callback, u_char *user);
pcap_breakloop函數用於設置一個標誌位,該標誌會強制pcap_dispatch函數或pcap_loop函數返回,再也不 函數

繼續循環,其原型以下:
void爌cap_breakloop (pcap_t *);
pcap_next函數用於返回下一個可用的數據包,其原型以下:
u_char *爌cap_next (pcap_t *p, struct pcap_pkthdr *h);
pcap_next_ex函數用於從一個網絡適配器設備或從一個脫機文件中讀取一個數據包,替代pcap_next()函 oop

數,其原型以下:
int爌cap_next_ex (pcap_t *p, struct pcap_pkthdr **pkt_header,
    const u_char **pkt_data);
pcap_sendpacket函數用於發送單個原始數據包一次或屢次,其原型以下:
int爌cap_sendpacket (pcap_t *p, u_char *buf, int size);
pcap_compile函數用於將一個用高級語言描述的過濾表達式編譯成一個可以被過濾虛擬機所執行的低層字 大數據

節碼,其原型以下:
int爌cap_compile (pcap_t *p, struct bpf_program *fp, char *str,
    int optimize, bpf_u_int32 netmask);
pcap_comiple_nopcap函數用於將高級語言描述的過濾表達式轉換成能被過濾虛擬機所執行的低層字節碼 spa

。該函數在不須要打開適配器的狀況下就能夠執行此轉換,其原型以下:
int爌cap_compile_nopcap (int snaplen_arg, int linktype_arg,
    struct bpf_program *program, char *buf, int optimize, bpf_u_int32 mask);
pcap_setfilter函數用於將一個過濾器的字節碼與一個內核捕獲實例相關聯,其原型以下:
int爌cap_setfilter (pcap_t *p, struct bpf_program *fp);
pcap_freecode函數用於釋放pcap_compile或pcap_compile_nopcap函數用來存儲字節碼的program結構體 code

,其原型以下:
void爌cap_freecode (struct bpf_program *fp);
pcap_stats函數用於返回當前捕獲的統計信息,其原型以下:
int爌cap_stats (pcap_t *p, struct pcap_stat *ps);
pcap_dump_open函數用於打開一個文件,寫入數據包,其原型以下:
pcap_dumper_t *爌cap_dump_open (pcap_t *p, const char *fname);
pcap_dump函數用於將數據包存儲到文件,其原型以下:
void爌cap_dump (u_char *user, const struct pcap_pkthdr *h, const u_char *sp);
pcap_dump_flush函數將輸出緩衝寫入存儲文件,這樣,任何使用pcap_dump函數存儲但尚未寫入文件的 htm

數據包,會被馬上寫入文件,其原型以下:
int爌cap_dump_flush (pcap_dumper_t *p);
pcap_dump_close函數用於關閉一個存儲文件,其原型以下:
void爌cap_dump_close (pcap_dumper_t *p);
2.與libpcap不兼容的函數
第二部分是與libpcap不兼容的函數,是針對Windows平臺的部分擴展函數,是對libpcap庫的擴展,只能 隊列

用於Windows平臺。
pcap_live_dump函數用於將捕獲的數據存儲到內核文件中,其原型以下:
int爌cap_live_dump (pcap_t *p, char *filename, int maxsize, int maxpacks);
pcap_live_dump_ended函數用於判斷內核文件存儲是否結束,其原型以下:
int爌cap_live_dump_ended (pcap_t *p, int sync);
pcap_stats_ex函數用於返回當前捕獲的統計信息,其原型以下:
struct pcap_stat *爌cap_stats_ex (pcap_t *p, int *pcap_stat_size);
pcap_setmode函數用於將工做模式設置爲mode,其原型以下:
int爌cap_setmode (pcap_t *p, int mode);
pcap_setmintocopy函數用於定義最少字節數,對適配器執行一次讀操做時,要求內核緩衝區中的數據達 ip

到該字節數後纔可返回,其原型以下:
int爌cap_setmintocopy (pcap_t *p, int size);
pcap_sendqueue_alloc函數用於分配一個發送隊列,其原型以下:
pcap_send_queue *爌cap_sendqueue_alloc (u_int memsize);
pcap_sendqueue_destroy函數用於釋放與一個發送隊列相關的全部資源,其原型以下:
void爌cap_sendqueue_destroy (pcap_send_queue *queue);
pcap_sendqueue_queue函數用於把一個原始數據包添加到queue參數所指定的發送隊列的尾部,其原型如

下:
int爌cap_sendqueue_queue (pcap_send_queue *queue,
    const struct pcap_pkthdr *pkt_header, const u_char *pkt_data);
pcap_sendqueue_transmit函數用於發送一個數據包隊列到網絡,其原型以下:
u_int爌cap_sendqueue_transmit (pcap_t *p, pcap_send_queue *queue, int sync);
pcap_findalldevs_ex函數用於返回所找到的適配器列表,其原型以下:
int爌cap_findalldevs_ex (char *source, struct pcap_rmtauth *auth,
    pcap_if_t **alldevs, char *errbuf);
pcap_open函數用於打開一個通用的數據捕獲源(包括本地主機、遠程主機、文件三種類型),以便進行

捕獲或發送操做,其原型以下:
pcap_t *爌cap_open (const char *source, int snaplen, int flags,
int read_timeout, struct pcap_rmtauth *auth, char *errbuf);

 

 

二.  Packet.dll中函數


PacketGetAdapterNames函數用於獲取可用網絡適配器的列表,以及它們對應的描述,其原型以下:
BOOLEAN PacketGetAdapterNames(PTSTR pStr,PULONG  BufferSize);
PacketGetNetInfoEx函數用於得到一個適配器的全部地址信息,諸如IP地址、網絡掩碼地址與廣播地址等

,其原型以下:
BOOLEAN PacketGetNetInfoEx(PCHAR AdapterName, npf_if_addr* buffer, PLONG NEntries);
PacketOpenAdapter函數用於打開一個適配器,其原型以下:
LPADAPTER PacketOpenAdapter(PCHAR AdapterNameWA);
PacketCloseAdapter函數用於關閉一個給定的適配器並釋放相關的ADAPTER結構體資源,其原型以下:
VOID PacketCloseAdapter(LPADAPTER lpAdapter);
PacketSendPacket函數用於發送封裝後的數據包到網絡上,其原型以下:
BOOLEAN PacketSendPacket(LPADAPTER AdapterObject,LPPACKET lpPacket,BOOLEAN Sync);
PacketSendPackets函數用於把發送隊列中的待發數據包發送到網絡上,其原型以下:
INT PacketSendPackets(LPADAPTER AdapterObject, PVOID PacketBuff,
    ULONG Size, BOOLEAN Sync);
PacketAllocatePacket函數用於分配一個_ADAPTER結構體內存空間,其原型以下:
LPPACKET PacketAllocatePacket(void);
PacketInitPacket函數主要用於初始化一個_PACKET結構體,其原型以下:
VOID PacketInitPacket(LPPACKET lpPacket,PVOID Buffer,UINT Length);
PacketFreePacket函數用於釋放一個_ADAPTER結構體內存空間,其原型以下:
VOID PacketFreePacket(LPPACKET lpPacket);
PacketReceivePacket函數用於從NPF驅動程序中讀取數據,其原型以下:
BOOLEAN PacketReceivePacket(LPADAPTER AdapterObject,
    LPPACKET lpPacket,BOOLEAN Sync);
PacketSetHwFilter函數用於給到來的數據包設置一個硬件過濾條件,其原型以下:
BOOLEAN PacketSetHwFilter(LPADAPTER  AdapterObject,ULONG Filter);
PacketSetNumWrites函數用於設置單個數據包重複發送的次數,其原型以下:
BOOLEAN PacketSetNumWrites(LPADAPTER AdapterObject,int nwrites);
PacketRequest函數用於在驅動程序上執行一個參數的查詢/設置操做,其原型以下:
BOOLEAN PacketRequest(LPADAPTER  AdapterObject,BOOLEAN Set,
    PPACKET_OID_DATA  OidData);
PacketSetBuff函數用於設置一個與捕獲實例相關的內核緩衝區大小,其原型以下:
BOOLEAN PacketSetBuff(LPADAPTER AdapterObject,int dim);
PacketSetBpf函數用於設置一個內核級的數據包過濾器,其原型以下:
BOOLEAN PacketSetBpf(LPADAPTER AdapterObject, struct bpf_program *fp);
PacketGetStats函數用於爲當前捕獲會話返回狀態統計信息值,其原型以下:
BOOLEAN PacketGetStats(LPADAPTER AdapterObject,struct bpf_stat *s);
PacketGetStatsEx函數用於返回當前捕獲會話的狀態統計信息值,它爲PacketGetStats函數的增強版(具

體內容見後面的章節),其原型以下:
BOOLEAN PacketGetStatsEx (LPADAPTER AdapterObject,struct bpf_stat *s;)
PacketGetNetType函數用於返回一個適配器網絡數據鏈路層的類型信息,其原型以下:
BOOLEAN PacketGetNetType(LPADAPTER AdapterObject, NetType *type);
PacketSetReadTimeout函數用於設置一個適配器上讀操做的超時時間,其原型以下:
BOOLEAN PacketSetReadTimeout(LPADAPTER AdapterObject,int timeout);
PacketSetMode函數用於設置NPF的工做模式,其原型以下:
BOOLEAN PacketSetMode(LPADAPTER AdapterObject,int mode);
PacketSetMinToCopy函數用於定義最少字節數,對適配器執行一次讀操做時,只有內核緩衝區中的數據達

到該字節數後才能夠返回,其原型以下:
BOOLEAN PacketSetMinToCopy(LPADAPTER AdapterObject,int nbytes);
PacketSetDumpName函數用於告訴內核驅動程序NPF內核轉儲文件的名稱,其原型以下:
BOOLEAN PacketSetDumpName(LPADAPTER AdapterObject, void *name, int len);
PacketSetDumpLimits函數用於設置內核轉儲的限制值,包括文件所能存儲的最大字節數與最大數據包數

,其原型以下:
BOOLEAN PacketSetDumpLimits(LPADAPTER AdapterObject,
    UINT maxfilesize, UINT maxnpacks);
PacketIsDumpEnded函數用於返回內核轉儲過程的狀態,好比告訴經過PacketSetDumpLimits函數設置的一

個限制是否已經達到,其原型以下:
BOOLEAN PacketIsDumpEnded(LPADAPTER AdapterObject, BOOLEAN sync);
PacketSetLoopbackBehavior函數用於設置NPF驅動程序對環回數據的處理方式(捕獲或丟棄),其原型如

下: BOOLEAN PacketSetLoopbackBehavior(LPADAPTER AdapterObject, UINT LoopbackBehavior);

相關文章
相關標籤/搜索