Setting X-Forwarded-For In C


 
Thread Tools Search this Thread
Top Forums Programming Setting X-Forwarded-For In C
# 1  
Old 08-14-2016
Setting X-Forwarded-For In C

Question, I've been trying to find information for setting the X-Forwarded-For header in C programs, or basically how spoofing it works. I've seen how to do this in ruby, python, and even with curl. I tried searching Google for it, but have came up empty handed. Any links, examples or advice much appreciated.
# 2  
Old 08-14-2016
Try searching Google "x-forwarded-for socket C"

sent from my HTC smartphone
# 3  
Old 08-14-2016
The best I could do with "x-forwarded-for socket C" in Google was finding someone's re-write of Stunnel. While better than anything I've found so far, it didn't show how to manually set an ip for your x-forwarded-for header. Maybe its possible to end that code that way. Or maybe I'm not seeing something else?
# 4  
Old 08-18-2016
If you're writing for CGI, headers in C are no different than in any other language -- they're just text. In some ways they're simpler, since C doesn't try to "take control" of them the way PHP does, etc.

Code:
#include <stdio.h>

int main(void) {
        // Read any POST data from stdin via fgets or other stdio calls
        // Server variables are in the environment, available via getenv, etc

        printf("Content-Type:  raw/text-only\n");
        printf("X-Forwarded-For:  ...\n");
        printf("\n");
        printf("Actual Document Content\n");

        return(0);
}

This User Gave Thanks to Corona688 For This Post:
# 5  
Old 08-21-2016
Thank you Corona688. I meant to reply sooner, but the week got away from me. However, I'm unsure if I explained myself correctly. I'm not trying to find how to read the X-Forwarded-For from incoming requests, but more or less looking for information on how to spoof the X-Forwarded-For with outgoing requests in C. I know in Python it would be done with something like this:

Code:
import urllib2,cookielib

cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders = [('X-Forwarded-For','1.2.3.4'),]
resp=opener.open('http://example.com/logIP.php')

While in ruby it would be done like this:

Code:
require "net/http"
require "uri"

url = URI.parse("http://www.whatismyip.com/automation/n09230945.asp")

req = Net::HTTP::Get.new(url.path)
req.add_field("X-Forwarded-For", "0.0.0.0")

res = Net::HTTP.new(url.host, url.port).start do |http|
  http.request(req)
end

puts res.body

I haven't been able to find much information with doing this in C though.
# 6  
Old 08-23-2016
Python in particular suffers from library-itis. If there's something which can be done, there's not just one but several conflicting libraries preinstalled for you.

C is more of a "do it yourself" language. It doesn't really lend itself to one-liners. But it gives you a level of control scripting languages don't.

Do you have wget?

Code:
#include <stdio.h>

int main(void) {
        const char *ip="1.2.3.4";
        printf("X-Forwarded-For:  %s\n", ip);
        printf("Content-Type:  text/html\n");
        printf("\n");

        // Turn over to external wget utility
        // execl never returns, your program "becomes" the command you told it to run.
        execlp("wget", "http://website.com/whatever.php", "-q" "-O" "-", NULL);
        // ...unless it can't find wget, in which case it returns an error, and so should we.
        return(1);
}

I'm not aware of a "standard" CGI library for C which everyone already has, but a quick look finds cgic: cgic: an ANSI C library for CGI Programming

Last edited by Corona688; 08-23-2016 at 12:56 PM..
# 7  
Old 08-23-2016
You might also consider running a complete proxy such as tinyproxy.
This User Gave Thanks to Corona688 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Is it possible that X11 can be forwarded through a SSH tunnel

I communicate with the server via a ssh tunnel, configured via Putty. Recently, I'm trying to forward the X11 through it, but it doesn't work. Is there any one work this way? Searched with google, but didn't find anything. Thx in adv. (2 Replies)
Discussion started by: sleepy_11
2 Replies

2. Solaris

Is there a difference between setting a user as nologin and setting it as a role?

Trying to figure out the best method of security for oracle user accounts. In Solaris 10 they are set as regular users but have nologin set forcing the dev's to login as themselves and then su to the oracle users. In Solaris11 we have the option of making it a role because RBAC is enabled but... (1 Reply)
Discussion started by: os2mac
1 Replies

3. UNIX for Dummies Questions & Answers

Setting up Xlaunch

I have a Win7 laptop that I have installed Xming with Xlaunch so that I can remote a Solaris10 server. After the initial install on my Win7 machine what do I need to set and configure to be able to remote Solaris. This is my 3rd day working with Unix. (1 Reply)
Discussion started by: SIFT3R
1 Replies

4. Red Hat

Cronjob setting

Hi there There's a script I would like to run daily every 5 minutes and this job should restart every 12:03AM so it would append to a new file with the following day date format instead of running and updating continuously into one log. I am not sure of the syntaxing, what I did was to set it... (9 Replies)
Discussion started by: hedkandi
9 Replies

5. Shell Programming and Scripting

alias setting

I want to set an alias to connect to sqlplus and also run a command while it it logs in. How can I do that? (4 Replies)
Discussion started by: som.nitk
4 Replies

6. UNIX for Dummies Questions & Answers

Need some help on setting up rsync

I need to "sync" a directory from a prod server to a test server. Rsync is working but it prompts for a password and I'd like to automate the process. The directory on the prod/source server is owned by root, and some subdirectories are only readable by root. On the test/destination servers, I can... (1 Reply)
Discussion started by: LAToro
1 Replies

7. Fedora

Setting up Cronjob

Hi, I had to setup some cron jobs using crontab -e when logged in as root. I noticed that the jobs only run when the permissons on the shell script file are set to execute on root and other. Why does "other" have to have its execution permission set? (6 Replies)
Discussion started by: mojoman
6 Replies

8. AIX

Syslog - Message forwarded from

I am not a Unix / AIX admin, but am working with one that doesn't seem to know how to set up syslog to forward messages to me the way I need them. Every message they send me has "Message forwarded from <insert host name here>:" but I need it to only have the host name. In the examples below,... (2 Replies)
Discussion started by: mlbillow
2 Replies

9. AIX

Timezone Setting

Hi On several AIX 5.3 LPARs the timezone is currrently set to: TZ=NZST-12NZDT,M9.5.0/02:00,M4.1.0/03:00 Daylight savings in NZ starts on Sun 28th Sep 2008, which is the fourth Sunday. Do I need to change my TZ variable to NZST-12NZDT,M9.4.0/02:00,M4.1.0/03:00 or will AIX interpret the fifth... (2 Replies)
Discussion started by: KiwiP
2 Replies

10. UNIX for Dummies Questions & Answers

New ip setting

I want to change the IPsetting and the broadcast setting. With ipconfig I get this: hme0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 inet xx.17x.18x.xx netmask fffffff0 broadcast xx.17x.18x.xx ether yy:0:yy:b6:yy:xx What command(squence) do I use to... (6 Replies)
Discussion started by: kuultak
6 Replies
Login or Register to Ask a Question