Відповіді:
Ви можете використовувати -H/--header
аргумент:
Ви можете підробити ip адресу:
curl --header "X-Forwarded-For: 192.168.0.2" http://example.com
Приклад:
клієнт
$ curl http://webhost.co.uk
веб-хост
$ tailf access.log | grep 192.168.0.54
192.168.0.54 - - [10/Nov/2014:15:56:09 +0000] "GET / HTTP/1.1" 200 14328 "-"
"curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3
libidn/1.18 libssh2/1.4.2"
клієнт з ip адресою змінено
$ curl --header "X-Forwarded-For: 192.168.0.99" http://webhost.co.uk
веб-хост
$ tailf access.log | grep 192.168.0.99
192.168.0.99 - - [10/Nov/2014:15:56:43 +0000] "GET / HTTP/1.1" 200
14328 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0
zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
людина завиток
-H/--header <header>
(HTTP) Extra header to use when getting a web page. You may
specify any number of extra headers. Note that if you should add
a custom header that has the same name as one of the internal
ones curl would use, your externally set header will be used
instead of the internal one. This allows you to make even
trickier stuff than curl would normally do. You should not
replace internally set headers without knowing perfectly well
what you’re doing. Remove an internal header by giving a
replacement without content on the right side of the colon,
as in: -H "Host:".
Список літератури:
Я думаю, що прийнята відповідь насправді не допоможе вам повністю підробити ваш IP. Ви дійсно не можете підробити свій вихідний IP, якщо у вас немає доступу до маршрутизаторів, близьких до цільової машини.
TCP працює за тристороннім механізмом рукостискання. Ви не зможете завершити це рукостискання, оскільки відповідь на рукостискання від цільової машини перейде на ваш підроблений IP, а не на ваш власний (якщо, як було сказано раніше, ви керуєте його маршрутизаторами поблизу та перенаправляєте відповідь на себе).
PS: Можливо, ви зможете надіслати повідомлення UDP, але я не намагався.
curl
, я припускаю, що вони намагаються отримати доступ до якогось ресурсу HTTP. HTTP через UDP - це не те, що curl
підтримує AFAIK, і не є чимось поза експериментальним.
Можна змінити IP-адресу джерела, якщо ваш інтерфейс локальної мережі має кілька IP-адрес.
Припустимо, у вас є сервер, який має 2 IP-адреси, 1.1.1.10
і 2.2.2.20
:
$ ip route
default via 1.1.1.193 dev eth0
1.1.1.192/27 via 1.1.1.193 dev eth0
1.1.1.192/27 dev eth0 proto kernel scope link src 1.1.1.10
2.2.2.20 via 2.2.2.20 dev eth0 scope link
Ви можете підтвердити свою поточну загальнодоступну IP-адресу за допомогою дивовижного веб-сервісу ifconfig.co :
$ curl -4 ifconfig.co
1.1.1.10
Для доступу до веб-служби ifconfig.co за допомогою іншої IP-адреси ( 2.2.2.20
), ви можете створити маршрут на основі IP-адреси цільового сервера. Використовуйте dig для пошуку цільових IP-адрес із A
записів DNS :
$ dig ifconfig.co
...
ifconfig.co. 39 IN A 104.28.18.94
ifconfig.co. 39 IN A 104.28.19.94
...
Тепер додайте спеціальні маршрути для цих IP-адрес:
$ ip route add 104.28.18.94/32 via 1.1.1.193 dev eth0 src 2.2.2.20
$ ip route add 104.28.19.94/32 via 1.1.1.193 dev eth0 src 2.2.2.20
Знову запустивши curl, ви побачите, що використовуєте іншу вихідну IP-адресу:
$ curl -4 ifconfig.co
2.2.2.20
Також оновлюється ваша інформація про маршрутизацію:
$ ip route
default via 1.1.1.193 dev eth0
1.1.1.192/27 via 1.1.1.193 dev eth0
1.1.1.192/27 dev eth0 proto kernel scope link src 1.1.1.10
2.2.2.20 via 2.2.2.20 dev eth0 scope link
104.28.18.94 via 1.1.1.193 dev eth0 src 2.2.2.20
104.28.19.94 via 1.1.1.193 dev eth0 src 2.2.2.20
Примітка: це працює лише в тому випадку, якщо вихідну IP-адресу можна буде вирішити на вашому сервері, інакше тривимірне рукостискання TCP завершиться невдачею, як зазначено тут .