0

いろいろ考えましたが、適切なタイトルが見つかりませんでした...タイトルについても提案してください。

また、投稿が大きくならないように HTML コードは表示していません。PHP の変数名と図の一部が示されているため、状況が理解しやすいです。

実際の問題はここで説明されています -

これは、大きなコードのほんの一部であるコード スニペットです。混乱は、b/w 2 つの状況です。両方を以下に示します。-

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部分に正規表現構文を1つ追加する必要があります。

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

}
.... 
于 2012-11-18T17:02:45.060 に答える