通過無線網絡卡在資料鏈路層進行通訊
兩台如何能夠繞過
tcp/ip
進行通訊呢?答案就是使用
raw套接字,即原始套接字。
下面給出原始碼,分為
server
端和client端。
server
#include"stdio.h"
#include"string.h"
#include"unistd.h"
#include"sys/socket.h"
#include"netpacket/packet.h"
#include"linux/if_ether.h"
#include"sys/ioctl.h"
#include"net/if.h"
int get_iface_index(int fd, const char* inte***ce_name)
return ifr.ifr_ifindex; }
int main()
close(s); }
client
client
端需要注意的是,需要將網絡卡設為混雜模式才能夠接收到不是專門發 給它的資料,將網絡卡設為混在模式和將網絡卡退出混雜模式的函式在下面的**中都給出了。
#include"stdio.h"
#include"string.h"
#include"unistd.h"
#include"sys/socket.h"
#include"netpacket/packet.h"
#include"linux/if_ether.h"
#include"sys/ioctl.h"
#include"net/if.h"
int get_iface_index(int fd, const char* inte***ce_name)
return ifr.ifr_ifindex; }
int set_promisc(int f, char *i_name)
ifr.ifr_flags |= iff_promisc;
if ((s = ioctl(f, siocsifflags, &ifr)) < 0)
return 1; }
int unset_promisc(int f, char *i_name)
ifr.ifr_flags &=~ iff_promisc;
if ((s = ioctl(f, siocsifflags, &ifr)) < 0)
return 1;
int main()
int s;
unsigned char msg[10]="asdasdaasd";
int n;
struct sockaddr_ll addr;
int socklen;
s = socket(af_packet,sock_raw,htons(eth_p_all));
memset(&addr,0,sizeof(addr));
addr.sll_family = af_packet;
addr.sll_ifindex = get_iface_index(s,"ath0");
addr.sll_protocol = htons(eth_p_all);
addr.sll_halen = 6;
int u=set_promisc(s,"ath0");
bind(s,(struct sockaddr *)&addr,sizeof(addr));
while(1)
close(s); }
rtl8192fu無線網絡卡在Linux下打驅動
系統版本是ubuntu18.04,網絡卡型號是rtl8192fu github鏈結 碼雲 gitee 鏈結 這一步的命令 新建乙個資料夾build並進入 mkdir build cd build 如果沒有git的話先安裝 sudo apt get install git 轉殖專案 git clone...
如何通過無線網絡卡共享寬頻有線連線
先說在windows下的 1,連線有線寬頻的機器,控制面板 網路連線 本地連線 屬性 高階 在 internet 連線共享 下,選中 允許其他網路使用者通過此計算機的 internet 連線來連線 2,無線網路連線 屬性 無線網路配置 用windows配置我的無線網路設定 右下角的高階 僅計算機到計...
通過筆記本自帶的無線網絡卡開通wifi
以win8 6.2.9200.16420作業系統為範例,win 7 sp1同理 1 以管理員身份執行命令提示符 win8系統中,在新版開始選單中,右擊 顯示所有應用 找到cmd命令提示符,右擊,以管理員身份執行 即可開啟cmd命令符 快捷鍵win r 輸入cmd 回車 2 啟用並設定虛擬wifi網絡...