1

この記事のソースRAW_SOCKETを使用してUDPパケットを偽造する他のホストから、たとえば192.168.10.1->192.168.10.131のようにeth0IPアドレスを所有するパケットを生成しています。

しかし、tcpdumpは、パケットがeth0ではなくloに到着していることを示しています... on lo-

10:10:18.332284 IP (tos 0x0, ttl 64, id 768, offset 0, flags [DF], proto UDP (17), length 71)
192.168.10.1.57961 > 192.168.10.131.12001: [udp sum ok] UDP, length 43

そしてeth0には沈黙があります。

パケットをeth0に到着させるために、コードを変更するにはどうすればよいですか? Cソースファイルへの直接リンク

4

1 に答える 1

1

ご覧のとおり、udpの代わりにtcp関数を使用する必要があります

UDPの場合、optnameをSO_BINDTODEVICEに設定できます

const char device[] = "eth0";
rc=setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, device, sizeof(device));
if (rc != 0) 
{
 printf ("%s: could not set SO_BINDTODEVICE (%s)\n",
    argv[0], strerror(errno));
 exit (EXIT_FAILURE);
}
于 2012-11-10T08:46:01.213 に答える