Hi, you can use two package: Socket, and Net::RawIP (needs libpcap);

With Net::RawIP you can built packet (ip,udp,tcp) how you want and to
analize the
packet.

Ex.

use Net::RawIP qw(:pcap);
use Socket;
$a=new Net::RawIP;
$|=1;
$filtro='ip proto \\tcp and (dst host '.$host.' or src host '.$host.')';

##$host is a variabile that contains the host in dot , or simbolic nane
notation
$tout=60;
$size=1500;
$pcap=$a->pcapinit('eth0',$filtro,$size,$tout);
$offset=linkoffset($pcap);
for(;;){
    $pc=&next($pcap,$t);
    if($pc){
        $a->bset(substr($pc,$offset));
        ##you can read the packet;
        ($ipsg)=$a->get({ip=>['saddr']});   ##(IP address source)
        $ipsg=inet_ntoa(pack("N",$ipsg));     ## Trasform the bynary
pack
in a dot
notation

        ($ipdst)=$a->get({ip=>['daddr']});  ##(IP address destination)
        $ipdst=inet_ntoa(pack("N",$ipdst));

        ($portsg)=$a->get({tcp=>['source']});  #port source
        ($portdst)=$a->get({tcp=>['dest']});  ## port destination

        ($syn)=$a->get({tcp=>['syn']});  #es: rst,ack,psh....

        ($seq)=$a->get({tcp=>['seq']});   ###seq number
        $seq=sprintf("%u",$seq);
 ##
        ($ack_seq)=$a->get({tcp=>['ack_seq']});  ### ack number
        $ack_seq=sprintf("%u",$ack_seq);

        ($data)=$a->get({tcp=>['data']});  ### data !!!!
        $d1=substr $data,0,1    ##extract the first byte
        ($h1)=unpack("H2",$d1);   ##convert in HEX format
    }
}


you can built packet es:
$b=new Net::RawIP;
$b->set(ip=>{saddr=>$sip,daddr=>$dip},tcp=>{source=>$ports,dest=>$ports,ack=>1,syn=>,seq=>$x,ack_seq=>$y,data=>$dt}});

$b->send;

Bye




>
> I was wondering if any of you guys could help me out with some insight

> on building a data structure for sending and receiving binary data.
>
> Here is what I am doing:
> 1.  building a tcp client to query a server with data
> 2.  the client sends the binary data stream, and then receives binary
> data stream from server, and closes the socket
> 3.  I would like to be able to build a structure where I can modify
> certain bytes (whether decimal, hex, or binary) before sending the
> stream, such as to create a "message", and then sending the message to

the server.
>
> 4.  When the message is received, I would like to be able to read it
> into an ordered structure so that I can retrieve certain bits after I
> have decoded the stream into decimal or hex ASCII representations.
>
> For example, my packet sniffer is showing the following:
> 0000: 000a c844 0000 f00a 0401 0008 0009 c844  ...D...........D
> 0010: 0000 f00b 0000 0000 07c8 4080 00dc a000  ..........@.....
>
> I need to read each one of these bytes in a de-limited way.
>
> Has anyone done this before or can give me any kind of insight?  Is
> there another list that would be better for this?  I would GREATLY
> appreciate any and all insight.
>
> Thanks,
> Jason O.
>
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]


_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to