[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 求解 bat处理 masscan扫描结果

masscan扫描结果为  1.xml
格式为
  1. <?xml version="1.0"?>
  2. <!-- masscan v1.0 scan -->
  3. <?xml-stylesheet href="" type="text/xsl"?>
  4. <nmaprun scanner="masscan" start="1650538456" version="1.0-BETA"  xmloutputversion="1.03">
  5. <scaninfo type="syn" protocol="tcp" />
  6. <host endtime="1650538456"><address addr="27.50.161.24" addrtype="ipv4"/><ports><port protocol="tcp" portid="80"><state state="open" reason="syn-ack" reason_ttl="53"/></port></ports></host>
  7. <host endtime="1650538456"><address addr="27.50.161.34" addrtype="ipv4"/><ports><port protocol="tcp" portid="80"><state state="open" reason="syn-ack" reason_ttl="117"/></port></ports></host>
  8. <host endtime="1650538456"><address addr="27.50.161.21" addrtype="ipv4"/><ports><port protocol="tcp" portid="80"><state state="open" reason="syn-ack" reason_ttl="117"/></port></ports></host>
  9. <host endtime="1650538456"><address addr="27.50.161.31" addrtype="ipv4"/><ports><port protocol="tcp" portid="80"><state state="open" reason="syn-ack" reason_ttl="117"/></port></ports></host>
  10. <host endtime="1650538456"><address addr="27.50.161.30" addrtype="ipv4"/><ports><port protocol="tcp" portid="80"><state state="open" reason="syn-ack" reason_ttl="117"/></port></ports></host>
  11. <host endtime="1650538456"><address addr="27.50.161.29" addrtype="ipv4"/><ports><port protocol="tcp" portid="80"><state state="open" reason="syn-ack" reason_ttl="117"/></port></ports></host>
  12. <runstats>
  13. <finished time="1650538467" timestr="2022-04-21 18:54:27" elapsed="11" />
  14. <hosts up="6" down="0" total="6" />
  15. </runstats>
  16. </nmaprun>
复制代码
想保存为  1.txt  格式如下

27.50.75.89:80
27.50.68.164:80
27.50.21.153:8080
这样的格式  求教  先谢

本帖最后由 shitian 于 2022-4-21 19:50 编辑

求教 感谢

TOP

求解 感谢

TOP

感谢    更新下

TOP

我还在。。。

TOP

会有人理我的吧?

TOP

  1. powershell "([xml](gc 1.xml)).nmaprun.host|foreach{'{0}:{1}' -f $_.address.addr,$_.ports.port.portid}"
复制代码

TOP

回复 7# idwma


    您好  请问是直接打开 powershell   然后文件放到对应目录里直接运行代码么? 现在是这样
PS C:\> ([xml](gc 1.xml)).nmaprun.host|foreach{'{0}:{1}' -f $_.address.addr,$_.ports.port.portid}
无法将值“System.Object[]”转换为类型“System.Xml.XmlDocument”。错误:“出现意外的文件结尾。以下元素未封闭: nmaprun. 第
204 行,位置 192。”
所在位置 行:1 字符: 1
+ ([xml](gc 1.xml)).nmaprun.host|foreach{'{0}:{1}' -f $_.address.addr,$_.ports.por ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: ( [],RuntimeException
    + FullyQualifiedErrorId : InvalidCastToXmlDocument



是bat直接操作比较难么

TOP

PS C:\> powershell "([xml](gc 1.xml)).nmaprun.host|foreach{'{0}:{1}' -f $_.address.addr,$_.ports.port.portid}"
所在位置 行:1 字符: 52
+ ([xml](gc 1.xml)).nmaprun.host|foreach{'{0}:{1}' -f .address.addr,.ports.port.po ...
+                                                    ~
必须在“-f”运算符后面提供一个值表达式。
所在位置 行:1 字符: 53
+ ([xml](gc 1.xml)).nmaprun.host|foreach{'{0}:{1}' -f .address.addr,.ports.port.po ...
+                                                     ~~~~~~~~~~~~~
表达式或语句中包含意外的标记“.address.addr”。
所在位置 行:1 字符: 66
+ ([xml](gc 1.xml)).nmaprun.host|foreach{'{0}:{1}' -f .address.addr,.ports.port.po ...
+                                                                  ~
参数列表中缺少参量。
    + CategoryInfo          : ParserError: ( [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : ExpectedValueExpression

PS C:\>

TOP

本帖最后由 idwma 于 2022-4-26 20:17 编辑

那再试试这个,保存为bat文件也能运行的
  1. powershell "(gc 1.xml) -match '<host.*/host>' -replace '.*addr=\"(\S+)\".*portid=\"(\S+)\".*','$1:$2'"
复制代码

TOP

test.bat,ASNI编码
引号分隔字符串看这里http://www.bathome.net/viewthread.php?tid=39745&highlight=for%2B%D2%FD%BA%C5
  1. @echo off & cd /d "%~dp0"
  2. REM 输入输出文件
  3. set "in_file=1.xml"
  4. set "out_file=1.txt"
  5. (
  6. for /f tokens^=4^,10^delims^="" %%i in ('findstr /b /C:"<host " "%in_file%"') do echo %%i:%%j
  7. )>"%out_file%"
  8. pause&exit
复制代码

TOP

回复 11# went


    确实是可以操作完成了   但是因为一个文本要几万行   好像时间估计得个把小时   老哥能帮优化下么

TOP

回复 10# idwma


    还是不对大神

TOP

回复 12# **ian


    test.bat  ansi编码
  1. #&cls&@cd /d "%~dp0" & powershell -c "Get-Content '%~0' | Out-String | Invoke-Expression " & pause&exit
  2. #输入输出文件
  3. $in_file = '1.xml'
  4. $out_file = '1.txt'
  5. #输出
  6. $fis = [System.IO.File]::OpenText($in_file)
  7. $fos = [System.IO.File]::CreateText($out_file)
  8. while($line = $fis.ReadLine()){
  9.     if($line -match 'addr="([0-9\.]+)".*portid="(\d+)">'){
  10.         $fos.WriteLine($Matches[1] + ':' + $Matches[2])
  11.     }
  12. }
  13. $fis.Close()
  14. $fos.Close()
复制代码

TOP

返回列表