日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

winpcap 发送数据包

發布時間:2025/4/16 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 winpcap 发送数据包 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

把WinPcap 中分析數據包的代碼復制到VS中,再把WinPcap中數據分析中的一些關于網卡打印的代碼復制到VS中。

// mist12306.cpp : 定義控制臺應用程序的入口點。

//


#include "stdafx.h"

#include <stdlib.h>

#include <stdio.h>

#include <pcap.h>

void main(int argc, char **argv)

{

pcap_t *fp;

char errbuf[PCAP_ERRBUF_SIZE];

u_char packet[100];

int i;

pcap_if_t *alldevs;

pcap_if_t *d;

int inum;

int j=0;

pcap_t *adhandle;


?/* 獲得設備列表 */

? ? if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1)

? ? {

? ? ? ? fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf);

? ? ? ? exit(1);

? ? }

? ??

? ? /* 打印列表 */

? ? for(d=alldevs; d; d=d->next)

? ? {

? ? ? ? printf("%d. %s", ++j, d->name);

? ? ? ? if (d->description)

? ? ? ? ? ? printf(" (%s)\n", d->description);

? ? ? ? else

? ? ? ? ? ? printf(" (No description available)\n");

? ? }


? ? if(j==0)

? ? {

? ? ? ? printf("\nNo interfaces found! Make sure WinPcap is installed.\n");

? ? ? ? return ;

? ? }

? ??

? ? printf("Enter the interface number (1-%d):",j);

? ? scanf("%d", &inum);

? ??

? ? if(inum < 1 || inum > j)

? ? {

? ? ? ? printf("\nInterface number out of range.\n");

? ? ? ? /* 釋放設備列表 */

? ? ? ? pcap_freealldevs(alldevs);

? ? ? ? return ;

? ? }


? ? /* 跳轉到已選設備 */

? ? for(d=alldevs,j=0; j< inum-1 ;d=d->next, j++);

? ??


? ??

? ? /* 打開輸出設備 */

? ? if ( (fp= pcap_open(d->name, ? ? ? ? ? ?// 設備名

? ? ? ? ? ? ? ? ? ? ? ? 100, ? ? ? ? ? ? ? ?// 要捕獲的部分 (只捕獲前100個字節)

? ? ? ? ? ? ? ? ? ? ? ? PCAP_OPENFLAG_PROMISCUOUS, ?// 混雜模式

? ? ? ? ? ? ? ? ? ? ? ? 1000, ? ? ? ? ? ? ? // 讀超時時間\

? ? ? ? ? ? ? ? ? ? ? ? NULL, ? ? ? ? ? ? ? // 遠程機器驗證

? ? ? ? ? ? ? ? ? ? ? ? errbuf ? ? ? ? ? ? ?// 錯誤緩沖

? ? ? ? ? ? ? ? ? ? ? ? ) ) == NULL)

? ? {

? ? ? ? fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n",d->name);

? ? ? ? return;

? ? }


? ? /* 假設在以太網上,設置MAC的目的地址為 1:1:1:1:1:1 */

? ? packet[0]=255;

? ? packet[1]=255;

? ? packet[2]=255;

? ? packet[3]=255;

? ? packet[4]=255;

? ? packet[5]=255;

? ??

? ? /* 設置MAC源地址為 2:2:2:2:2:2 */

? ? packet[6]=91;

? ? packet[7]=91;

? ? packet[8]=91;

? ? packet[9]=91;

? ? packet[10]=91;

? ? packet[11]=91;

? ? ?packet[12]=96;

? ? packet[13]=00;

? ??

? ? /* 填充剩下的內容 */

? ? for(i=14;i<100;i++)

? ? {

? ? ? ? packet[i]=i%256;

? ? }


? ? /* 發送數據包 */

? ? if (pcap_sendpacket(fp, packet, 100 /* size */) != 0)

? ? {

? ? ? ? fprintf(stderr,"\nError sending the packet: \n", pcap_geterr(fp));

? ? ? ? return;

? ? }


? ? return;

}


運行后選擇第二塊網卡,再打開wireshark捕獲數據包。


轉載于:https://blog.51cto.com/12045285/1887767

總結

以上是生活随笔為你收集整理的winpcap 发送数据包的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。