2

システム上で 0-day Java エクスプロイトであったものを見つけたので、各ユーザー プロファイルの Java .idx ファイルを調べて、アクティブな 0-day 脅威を示している可能性のある疑わしい URL を探すことにしました。

私はこれから始めました:

for /d %%A in ("C:\Documents and Settings\*") do (
findstr /S "http://" "%%A\Application Data\Sun\Java\Deployment\cache\6.0\*" >> C:\temp\javaurls.txt)

これにより、URL でいっぱいのファイルが生成されますが、それらは多くの制御情報やその他の興味のないものとかなり混同されています。私がやりたいのは、見つかったすべての小文字の「http://」に対して改行を作成することです。バッチファイルでコマンドラインを使用してこれを行う方法を知っている人はいますか?

4

2 に答える 2

0

「他のツールを使えばいいんだ!」ということはわかっています。答えは迷惑になる可能性があります。ただし、Windows のバッチ ファイル/コマンド ライン ユーティリティは非常に悪いので、この種の作業を頻繁に行う必要がある場合は、他のオプションを検討する価値があると思います。文書化されていない、非標準の、壊れた正規表現を理解し、最も基本的な機能でさえハックなソリューションが必要な場合を除きます

いくつかのオプション:

各 の前に改行を追加するためにバッチ ファイルに追加できる Perl の 1 行を次に示しますhttp://

perl -pi.bak -e "s|(http://)|\n$1|g" C:\temp\javaurls.txt

ただし、ゼロから始める場合は、バッチ ファイルを使用するのではなく、Perl ですべてを行います。

于 2012-12-18T15:12:27.733 に答える
0

私は一般的に他の人が表明した感情に同意します-バッチはテキストの処理が苦手です。別の言語またはツールを使用することは、タスクに適しています。

しかし、それはバッチで行うことができます:-)

それぞれの前に改行を挿入するだけで、html://それほど難しくありません

@echo off
setlocal disableDelayedExpansion
:: The first FOR loop loads a quoted linefeed into %%L
:: The blank line within the IN() clause is critical. Do not remove.
for %%L in (^"^

^") do (
  for /d %%A in ("C:\Documents and Settings\*") do (
    for /f "eol=: delims=" %%B in (
      'findstr /S "http://" "%%A\Application Data\Sun\Java\Deployment\cache\6.0\*"'
    ) do (
      set "line=%%B"
      setlocal enableDelayedExpansion
      echo(!line:http://=%%~Lhttp://!
      endlocal
    )
  )
) >c:\temp\javaurls.txt

しかし、アドレスの前に各ファイルの名前を保存し、結果の行のみをhttp://保存するのは本当に面倒です。

@echo off
setlocal disableDelayedExpansion
:: The first FOR loop loads a quoted linefeed into %%L
:: The blank line within the IN() clause is critical. Do not remove.
for %%L in (^"^

^") do (
  for /d %%A in ("C:\Documents and Settings\*") do (
    for /f "tokens=1* delims=:" %%B in (
      'findstr /S "http://" "%%A\Application Data\Sun\Java\Deployment\cache\6.0\*"'
    ) do (
      set "line=%%C"
      setlocal enableDelayedExpansion
      set "line=!line:http://=%%~Lhttp://!"
      for /f "delims=" %%D in (
        '"cmd /v:on /c echo(^!line^!|findstr http://"'
      ) do (
        if "!!" equ "" endlocal
        echo %%B: %%D
      )
    )
  )
) >c:\temp\javaurls.txt
exit /b
于 2012-12-18T17:31:34.503 に答える