0

想了很多,但找不到合适的标题……所以也建议标题。

此外,我没有显示 HTML 代码以避免使帖子变大。附上PHP变量名和部分图,很容易理解情况。

此处描述了实际问题 -

这是一个代码片段,它只是大代码的一小部分。混淆是两种情况。两者都在下面提到。-

PHP代码:

   while($npacket>=1) {
       $count=0;
       $out_file=fopen("packet.txt","w");

       while($count<$payload_length ) {
           $c=fgetc($file);
           fputs($out_file,$c);
           $count++;
       }

       $data_file=`cat packet.txt`;

       if($datatyp=="ascii")
           $fpayload="-f packet.txt";
       else if($datatyp=="hex")
           $fpayload="-d0x$data_file";


       $random="";

       if( $ip=="tcp" || $ip=="udp" ) 
            exec("sendip -v -p ipv6 $fpayload  $random $adv_cont -6s $sip $optext -p  $proto $cont -$s $sapp_port -$d $dapp_port $dip ");

       else {

问题在这里....

       echo "this is $fpayload it";

       exec(" echo sendip -v -p ipv6 $fpayload $random $adv_cont -6s $sip $optext -p icmp $icmp_cont $dip > sample ");

       }

       usleep("$igap");

       if(!$flag)
           $npacket--;

       }

       fclose($out_file);
       fclose($file);

       }

对于指定为输入的 1 个数据包和有效负载,

1) 输入:616263646566

在此处输入图像描述

输出 :

  $ cat payload.txt 
  616263646566
  $ cat packet.txt 
  616263646566
  $ cat sample 
  $

2)输入:6162636465666768

输出 :

  $ cat payload.txt 
  6162636465666768
  $ cat packet.txt 
  6162636465666768
  $ cat sample 
  sendip -v -p ipv6 -d0x6162636465666768   -6s 2001::100  -p icmp  2001::200

请帮我找出问题到底出在哪里?

编辑:

文件权限:

 $ ls -l payload.txt packet.txt sample 
 -rwxrwxrwx 1 udit udit 13 Nov 17 20:57 packet.txt
 -rwxrwxrwx 1 udit udit 13 Nov 17 20:57 payload.txt
 -rwxrwxrwx 1 udit udit  0 Nov 17 20:57 sample
4

1 回答 1

0

问题实际上是在$fpayload变量末尾存在空格和空字符。只需要在 else 部分添加一个正则表达式语法。

.........
else if($datatyp=="hex") {
     $fpayload="-d0x$data_file";
     $fpayload=preg_replace('/\s+/', '', $fpayload);

}
.... 
于 2012-11-18T17:02:45.060 回答