Coding a SYN Scanner guide ( source included )

Giorgos Keramidas keramida at ceid.upatras.gr
Fri Mar 30 01:04:12 EEST 2007


On 2007-03-30 00:58, ithilgore <advent.cloud.strife at gmail.com> wrote:
> Καλη παρατηρηση γενικα και απο τους 2. Καταλαβα τι εννοειτε αλλα στον
> συγκεκριμενο κωδικα συμβαινουν τα εξης:
> α) Το pseudo header χρησιμοποιειται **μονο** για το datagram που
> στελνουμε και **μονο** για τον υπολογισμο του checksum : με αλλα λογια
> δεν χρησιμοποιειται πουθενα σε συνδυασμο με την read( )
>
> Να θυμισω λιγο τον κωδικα :

Δεν έχω δει τον κώδικα.  Η σελίδα του αρχικού link κάνει timeout
όταν πάω να την ανοίξω.  Οπότε μπορεί να σου λέω και κάτι άσχετο.

> Αλλα θα μπορουσε να σκεφτει κανεις και το αλλο:  Κοιταξτε τα
> <netinet/ip.h> και γενικα τα επισημα headers.

Εδώ πάλι διαφωνώ κάπως...

Στο δικό μου λειτουργικό, που χρησιμοποιεί κι αυτό gcc για να κάνει
build τα πάντα, το netinet/ip.h header περιέχει:

% /*
%  * Structure of an internet header, naked of options.
%  */
% struct ip {
% #if BYTE_ORDER == LITTLE_ENDIAN
%         u_int   ip_hl:4,                /* header length */
%                 ip_v:4;                 /* version */
% #endif
% #if BYTE_ORDER == BIG_ENDIAN
%         u_int   ip_v:4,                 /* version */
%                 ip_hl:4;                /* header length */
% #endif
%         u_char  ip_tos;                 /* type of service */
%         u_short ip_len;                 /* total length */
%         u_short ip_id;                  /* identification */
%         u_short ip_off;                 /* fragment offset field */
% #define IP_RF 0x8000                    /* reserved fragment flag */
% #define IP_DF 0x4000                    /* dont fragment flag */
% #define IP_MF 0x2000                    /* more fragments flag */
% #define IP_OFFMASK 0x1fff               /* mask for fragmenting bits */
%         u_char  ip_ttl;                 /* time to live */
%         u_char  ip_p;                   /* protocol */
%         u_short ip_sum;                 /* checksum */
%         struct  in_addr ip_src,ip_dst;  /* source and dest address */
% } __packed __aligned(4);

Το linux έχει αρκετά πιο "περίεργες" ιδέες για το networking.

> Δεν τα εχει πουθενα ως packed. Αυτο που λεω ειναι οτι θα μπορουσε να
> ειναι default συμπεριφορα ως attribute αλλα απο'τι φαινεται δεν
> χρειαζεται στις περιπτωσεις αυτες.

Μπα, νομίζω χρειάζεται (ειδικά στα netinet/* headers).

Remember SPARC & SIGBUS :-)





More information about the unix-admin-gr mailing list