views:

616

answers:

4

How do you do low low level sockets in C, example: actually sending a SYN.

A: 

I suspect the nmap sources would be an excellent place to look.

Josh Matthews
+1  A: 

You want to use raw sockets. In *nix, you need to be root to be able to create raw sockets. I'm not sure if it's possible in Windows.

Adam Rosenfield
it's possible and you have to be administrator(or system) to do it.
Kalmi
+6  A: 

Raw sockets are your friend.

There have been some links to useful information on this question.

Also consult Chapter 25 "Raw sockets" of Steven's "Unix Network Programming"

If you're attempting cross platform code you may find libpcap a useful alternative.

Andrew Edgecombe
+6  A: 

What you actually want is a raw socket ... you can completely control the headers and flags with the raw socket interface, but programming them is much more challenging. Here's a great tutorial to get you started: http://mixter.void.ru/rawip.txt.

Steve Moyer