Antworten:
Sie können das -H/--header
Argument verwenden:
Sie könnten Ihre IP-Adresse fälschen:
curl --header "X-Forwarded-For: 192.168.0.2" http://example.com
Beispiel:
client
$ curl http://webhost.co.uk
Web-Host
$ 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"
Client mit geänderter IP-Adresse
$ curl --header "X-Forwarded-For: 192.168.0.99" http://webhost.co.uk
Web-Host
$ 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"
Mann locken
-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:".
Verweise:
Ich denke, die akzeptierte Antwort wird Ihnen nicht wirklich helfen, Ihre IP vollständig zu fälschen. Sie können Ihre Quell-IP nicht wirklich fälschen, es sei denn, Sie haben Zugriff auf Router in der Nähe des Zielcomputers.
TCP arbeitet mit einem 3-Wege-Handshake-Mechanismus. Sie können diesen Handshake nicht abschließen, da die Handshake-Antwort vom Zielcomputer an Ihre gefälschte IP-Adresse und nicht an Ihre eigene IP-Adresse gesendet wird (es sei denn, Sie steuern, wie bereits erwähnt, die in der Nähe befindlichen Router und leiten die Antwort an sich selbst weiter).
PS: Möglicherweise können Sie eine UDP-Nachricht senden, aber ich habe es nicht versucht.
curl
, gehe ich davon aus, dass sie versuchen, auf eine HTTP-Ressource zuzugreifen. HTTP über UDP curl
unterstützt weder AFAIK noch ist es zu diesem Zeitpunkt mehr als experimentell.
Es ist möglich, die Quell-IP-Adresse zu ändern, wenn Ihre lokale Netzwerkschnittstelle mehrere IP-Adressen hat.
Angenommen, Sie haben einen Server mit 2 IP-Adressen 1.1.1.10
und 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
Sie können Ihre aktuelle öffentliche IP-Adresse mit dem fantastischen Webservice ifconfig.co überprüfen :
$ curl -4 ifconfig.co
1.1.1.10
Um mit der anderen IP-Adresse ( ) auf den Webdienst ifconfig.co zuzugreifen 2.2.2.20
, können Sie eine Route erstellen, die auf der IP-Adresse des Zielservers basiert. Verwenden Sie dig, um die Ziel-IP-Adressen aus den DNS- A
Einträgen zu ermitteln:
$ dig ifconfig.co
...
ifconfig.co. 39 IN A 104.28.18.94
ifconfig.co. 39 IN A 104.28.19.94
...
Fügen Sie nun benutzerdefinierte Routen für diese IP-Adressen hinzu:
$ 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
Wenn Sie curl erneut ausführen, sehen Sie, dass Sie die andere Quell-IP-Adresse verwenden:
$ curl -4 ifconfig.co
2.2.2.20
Außerdem werden Ihre Routing-Informationen aktualisiert:
$ 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
Hinweis: Dies funktioniert nur, wenn die Quell-IP-Adresse in Ihren Server aufgelöst werden kann. Andernfalls schlägt der TCP-3-Wege-Handshake fehl, wie hier erläutert .