[#93964] perl6 grammar rules in ruby — Charles Comstock <cc1@...>

Has anyone taken a look at the idea of having embedded grammars in ruby

21 messages 2004/03/01

[#94023] Why's (Poignant) Guide to Ruby, Chapter Four: Little Leaves of Code — why the lucky stiff <ruby-talk@...>

Just wanted everyone to know that Chapter Four of the (Poignant) Guide

15 messages 2004/03/01

[#94037] Rubyx OS (Ruby oriented linux distro) — Andrew Walrond <andrew@...>

I am pleased to announce the first public release of Rubyx, codename

39 messages 2004/03/02

[#94062] pickaxe with pics? — Dick Davies <rasputnik@...>

17 messages 2004/03/02

[#94068] dynamic assignment of instance variables — gv@... (Gerard A.W. Vreeswijk)

$ cat try.rb

19 messages 2004/03/02

[#94110] why are Hashes so unsorted? what's your solution? — Ruby Baby <ruby@...>

I try to avoid questions like "Why doesn't Ruby do what ___ does?"

14 messages 2004/03/03

[#94144] Mozilla gets support for other client-side languages in the future, how about Ruby? — Erik Terpstra <erik@...>

Interesting slides:

9 messages 2004/03/03

[#94190] rescue inside block -> syntax error — Simon Strandgaard <neoneye@...>

While reading this message:

15 messages 2004/03/04

[#94424] random range — Charles Comstock <cc1@...>

Why doesn't rand take an integer range and then generate a random number

23 messages 2004/03/06
[#94432] Re: random range — Hal Fulton <hal9000@...> 2004/03/06

Charles Comstock wrote:

[#94434] Re: random range — Joel VanderWerf <vjoel@...> 2004/03/06

Hal Fulton wrote:

[#94436] Re: random range — "David A. Black" <dblack@...> 2004/03/06

Hi --

[#94487] Looking for HTML templating system — Andreas Schwarz <usenet@...>

I am looking for a templating system for my forum

19 messages 2004/03/07

[#94517] proposal: class<<obj to invoke extend_object — Simon Strandgaard <neoneye@...>

'obj.extend' and 'class<<obj' are close cousins..

22 messages 2004/03/07

[#94612] RedCloth 2.0.2 -- A Textile Humane Web Text Generator — why the lucky stiff <ruby-talk@...>

For your immediate perusal and swift renouncement:

10 messages 2004/03/09

[#94672] saving array — mopthisandthat@... (Phidippus)

After I do bunch of computations and create a huge array with bunch of

18 messages 2004/03/10

[#94686] Possibility of 2nd edition of _The Ruby Way_ — Hal Fulton <hal9000@...>

Hello, all.

17 messages 2004/03/10

[#94760] convincing a webhost to support ruby — Mark Hubbart <discord@...>

Hi all,

15 messages 2004/03/11

[#94813] Jruby 0.7.0 — Thomas E Enebo <enebo@...>

20 messages 2004/03/12
[#94815] Re: [ANN] Jruby 0.7.0 — gabriele renzi <surrender_it@...1.vip.ukl.yahoo.com> 2004/03/12

il Sat, 13 Mar 2004 02:33:49 +0900, Thomas E Enebo <enebo@acm.org> ha

[#94817] Re: [ANN] Jruby 0.7.0 — Thomas E Enebo <enebo@...> 2004/03/12

On Sat, 13 Mar 2004, gabriele renzi defenestrated me:

[#94935] RubyGems 0.2.0 — Chad Fowler <chad@...>

The first public release of RubyGems (http://rubygems.rubyforge.org)

26 messages 2004/03/14

[#94985] GUI testing on unix — Simon Strandgaard <neoneye@...>

I am curious to if there exists any GUI testing packages for unix.

17 messages 2004/03/16

[#94998] RAA trouble and maintenance — "NAKAMURA, Hiroshi" <nahi@...>

Hi,

14 messages 2004/03/16

[#95014] RAA - So much is broken — Lothar Scholz <mailinglists@...>

Hello,

15 messages 2004/03/16

[#95060] YAML tutorial — Matt Lawrence <matt@...>

Ok, I am so not a Ruby wizard. In fact, I don't do much development at

15 messages 2004/03/17

[#95098] groovy — David Garamond <lists@...6.isreserved.com>

Groovy, a scripting language targeted for JVM, was mentioned in Slashdot

14 messages 2004/03/17

[#95155] Installer packages for MacOSX — Mark Hubbart <discord@...>

Hi, all

18 messages 2004/03/17

[#95190] Thinking about a date-matching algorithm... — Hal Fulton <hal9000@...>

I did a little swapping of ideas with dblack on this. Now I'm

22 messages 2004/03/18

[#95200] Log4r 1.0.5 now with RubyGems option — Leon Torres <leon@...>

Greetings, I'm pleased to announce the release of Log4r 1.0.5. The

11 messages 2004/03/18

[#95230] Ruby and Mozilla — paul vudmaska <paul@...>

--- Simon Strandgaard <neoneye@adslhome.dk <http://us.f104.mail.yahoo.com/ym/Compose?To=neoneye@adslhome.dk&YY=90525&order=down&sort=date&pos=0&view=a&head=b>> wrote:

12 messages 2004/03/18

[#95290] calling outer-scope method of same name — "Bill Kelly" <billk@...>

Hi all!

16 messages 2004/03/18
[#95292] Re: calling outer-scope method of same name — "David A. Black" <dblack@...> 2004/03/18

Hi --

[#95340] Kwartz (2004-03-19) released — Makoto Kuwata <kwa@...>

Hi folks,

31 messages 2004/03/19
[#95367] Re: [ANN] Kwartz (2004-03-19) released — Andreas Schwarz <usenet@...> 2004/03/19

Hi,

[#95405] Re: [ANN] Kwartz (2004-03-19) released — Andreas Schwarz <usenet@...> 2004/03/19

Makoto Kuwata wrote:

[#95412] Re: [ANN] Kwartz (2004-03-19) released — Makoto Kuwata <kwa@...> 2004/03/19

Andreas,

[#95453] Re: [ANN] Kwartz (2004-03-19) released — Andreas Schwarz <usenet@...> 2004/03/20

Makoto Kuwata wrote:

[#95484] Re: [ANN] Kwartz (2004-03-19) released — Makoto Kuwata <kwa@...> 2004/03/21

[#95490] Re: [ANN] Kwartz (2004-03-19) released — Thomas Fini Hansen <beast@...> 2004/03/21

On Sun, Mar 21, 2004 at 11:39:26AM +0900, Makoto Kuwata wrote:

[#95518] Re: [ANN] Kwartz (2004-03-19) released — Andreas Schwarz <usenet@...> 2004/03/21

Makoto Kuwata wrote:

[#95553] Re: [ANN] Kwartz (2004-03-19) released — Andreas Schwarz <usenet@...> 2004/03/22

Makoto Kuwata wrote:

[#95386] Can $LOAD_PATH be relative? — ptkwt@... (Phil Tomson)

24 messages 2004/03/19
[#95389] Re: Can $LOAD_PATH be relative? — ptkwt@... (Phil Tomson) 2004/03/19

In article <wsqk71gd188.fsf@io.com>, Jim Menard <jimm@io.com> wrote:

[#95398] Re: Can $LOAD_PATH be relative? — Patrick Bennett <patrick.bennett@...> 2004/03/19

Phil Tomson wrote:

[#95400] Re: Can $LOAD_PATH be relative? — "David A. Black" <dblack@...> 2004/03/19

Hi --

[#95403] Re: Can $LOAD_PATH be relative? — Patrick Bennett <patrick.bennett@...> 2004/03/19

[#95434] converting javascript to ruby (nested methods) — yvon.thoravalNO-SPAM@... (Yvon Thoraval)

i have a script written in javascript and want to translate it into ruby

10 messages 2004/03/20

[#95517] What to gem? — Robert Feldt <feldt@...>

Hi,

14 messages 2004/03/21

[#95560] Need some advice on PickAxe II — Dave Thomas <dave@...>

Folks:

74 messages 2004/03/22

[#95636] Tempfile consuming a lot of memory — thomass@... (Thomas)

I'm using a lot of Tempfile's and I have been made aware that they

17 messages 2004/03/23

[#95693] proposal - enforce lower_case for variables and methods — Simon Strandgaard <neoneye@...>

Ruby does already enforce CamelCase for class/modules.

29 messages 2004/03/24

[#95769] File.stat.size errors with file sizes over 2Gigs. — walter@...

File.stat('file_name').size returns erroneous file sizes when the

16 messages 2004/03/24

[#95782] Quick Introduction to RubyGems — Gavin Sinclair <gsinclair@...>

Hi folks,

17 messages 2004/03/24

[#95875] Errors with "make" step, while compiling ruby under AIX 5.2 — Ruby Ruby <ruby4lover@...>

I am wanted to install ruby 1.8.1 under AIX 5.2. During the installation, while doing the "make" part of it, the process abruptily ended with the following errors:

15 messages 2004/03/25
[#95883] Re: Errors with "make" step, while compiling ruby under AIX 5.2 — nobu.nokada@... 2004/03/26

Hi,

[#95918] Re: Errors with "make" step, while compiling ruby under AIX 5.2 — Ruby Ruby <ruby4lover@...> 2004/03/26

I am sorry to insist but this is important to me.

[#95960] Status of AOP in Ruby — Markus Jais <markusjais@...>

Hello

22 messages 2004/03/27

[#95984] deciding between ruby and python — "Serve Lau" <ik@...>

I'm trying to decide to learn either python or ruby. Are there fundamental

119 messages 2004/03/28
[#96006] Re: deciding between ruby and python — klausm0762@... (Klaus Momberger) 2004/03/28

"Serve Lau" <ik@detongiser.com> wrote in message news:<106dlen5mr97q76@corp.supernews.com>...

[#96503] Re: deciding between ruby and python — Ville Vainio <ville@...> 2004/04/04

>>>>> "James" == James Britt <jamesUNDERBARb@neurogami.com> writes:

[#96508] Re: deciding between ruby and python — Dan Doel <djd15@...> 2004/04/04

As you say, this whole thread has been done many times before.

[#96566] Re: deciding between ruby and python — Ville Vainio <ville@...> 2004/04/05

[#96691] Re: deciding between ruby and python — gabriele renzi <surrender_it@...1.vip.ukl.yahoo.com> 2004/04/07

il Wed, 07 Apr 2004 05:35:39 GMT, dagbrown@LART.ca (Dave Brown) ha

[#95992] Madeleine 0.6 — Anders Bengtsson <ndrsbngtssn@...>

23 messages 2004/03/28

Re: Manipulating UDP sender's address

From: Gennady <gfb@...>
Date: 2004-03-19 16:25:21 UTC
List: ruby-talk #95366
Hi, Florian

Thank you so very much!!! I expected only some tips, but got a complete 
working solution. It is amazing, I am impressed. It works like a charm.

I am so sorry I could not thank you immediately, I was out for several 
days.

Thanks a lot once again,
Gennady.

P.S.
   BTW, in your post's UDPSpoofer there're 2 identical sets of methods 
ip2long, ipchecksum, make_ip_header, make_udp_header ;-)


Florian Frank wrote:
> On 2004-03-17 04:14:18 +0900, Gennady wrote:
> 
>>Is there a way, in general, to "fake" a sender's IP address when
>>sending a UDP packet? I need to receive a UDP packet on one port and
>>redirect it to another "pretending" that it is from the original
>>sender.
>>
>>Even if it is not possible from Ruby now, I would appreciate any 
>>pointers so that I can make an extension to do it (if at all possible).
> 
> 
> Spoofing seems to work pretty good in Ruby (see below). You would have
> to recalculate the ip header checksum (and probably also the udp
> checksum), if you want to change the source address of a given packet .
> 
> BTW, the ipchecksum algorithm is really beautiful in Ruby:
> 
> def ipchecksum(data)
>     checksum = data.unpack("n*").inject(0) { |s, x| s + x }
>     ((checksum >> 16) + (checksum & 0xffff)) ^ 0xffff
> end
> 
> Here comes my little hack:
> 
> require 'socket'
> 
> class UDPSpoofer
> 
>     @@id = 1234 - 1
> 
>     def initialize
>         @s = Socket.new(Socket::PF_INET, Socket::SOCK_RAW, Socket::IPPROTO_RAW)
>         @s.setsockopt(Socket::IPPROTO_IP, Socket::IP_HDRINCL, 1)
>     end
> 
>     def send(src, sport, dst, dport, payload = '')
>         dst_numeric = dst.split(/\./).map { |x| x.to_i }
>         to = [ Socket::AF_INET,
>             dport, dst_numeric, '' ].flatten.pack('snCCCCa8')
>         packet = make_ip_header([
>             [ '01000101', 'B8' ],                # version, hlen
>             [ 0, 'C' ],                          # tos
>             [ 28 + payload.size, 'n' ],          # total len
>             [ @@id += 1, 'n' ],                  # id
>             [ 0, 'n' ],                          # flags, offset
>             [ 64, 'C' ],                         # ttl
>             [ 17, 'C' ],                         # protocol
>             [ 0, 'n' ],                          # checksum
>             [ ip2long(src), 'N' ],               # source
>             [ ip2long(dst), 'N' ],               # destination
>         ])
>         packet << make_udp_header([
>             [ sport, 'n'],                        # source port
>             [ dport, 'n' ],                       # destination port
>             [ 8 + payload.size, 'n' ],            # len
>             [ 0, 'n' ]                            # checksum (mandatory)
>         ])
>         packet << payload
>         @s.send(packet, 0, to)
>     end
> 
>     private
> 
>     def ip2long(ip)
>         long = 0
>         ip.split(/\./).reverse.each_with_index do |x, i|
>             long += x.to_i << (i * 8)
>         end
>         long
>     end
> 
>     def ipchecksum(data)
>         checksum = data.unpack("n*").inject(0) { |s, x| s + x }
>         ((checksum >> 16) + (checksum & 0xffff)) ^ 0xffff
>     end
> 
>     def make_ip_header(parts)
>         template = ''
>         data = []
>         parts.each do |part|
>             data += part[0..-2]
>             template << part[-1]
>         end
>         data_str = data.pack(template)
>         checksum = ipchecksum(data_str)
>         data[-3] = checksum
>         data.pack(template)
>     end
> 
>     def make_udp_header(parts)
>         template = ''
>         data = []
>         parts.each do |part|
>             data += part[0..-2]
>             template << part[-1]
>         end
>         data.pack(template)
>     end
> 
>     def ip2long(ip)
>         long = 0
>         ip.split(/\./).reverse.each_with_index do |x, i|
>             long += x.to_i << (i * 8)
>         end
>         long
>     end
> 
>     def ipchecksum(data)
>         checksum = data.unpack("n*").inject(0) { |s, x| s + x }
>         ((checksum >> 16) + (checksum & 0xffff)) ^ 0xffff
>     end
> 
>     def make_ip_header(parts)
>         template = ''
>         data = []
>         parts.each do |part|
>             data += part[0..-2]
>             template << part[-1]
>         end
>         data_str = data.pack(template)
>         checksum = ipchecksum(data_str)
>         data[-3] = checksum
>         data.pack(template)
>     end
> 
>     def make_udp_header(parts)
>         template = ''
>         data = []
>         parts.each do |part|
>             data += part[0..-2]
>             template << part[-1]
>         end
>         data.pack(template)
>     end
> 
> end
> 
> us = UDPSpoofer.new
> loop do # fire!
> 	us.send('192.168.1.66', 666, '192.168.1.1', 42, 'i am on the ether')
> end
> 


In This Thread