找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 18264|回复: 13

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

[复制链接]
发表于 2022-4-21 19:31:23 | 显示全部楼层 |阅读模式
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
这样的格式  求教  先谢
 楼主| 发表于 2022-4-21 19:37:08 | 显示全部楼层
本帖最后由 shitian 于 2022-4-21 19:50 编辑

求教 感谢
 楼主| 发表于 2022-4-22 13:58:06 | 显示全部楼层
求解 感谢
 楼主| 发表于 2022-4-23 08:44:51 | 显示全部楼层
感谢    更新下
 楼主| 发表于 2022-4-24 08:27:09 | 显示全部楼层
我还在。。。
 楼主| 发表于 2022-4-26 07:42:04 | 显示全部楼层
会有人理我的吧?
发表于 2022-4-26 12:17:16 | 显示全部楼层
  1. powershell "([xml](gc 1.xml)).nmaprun.host|foreach{'{0}:{1}' -f $_.address.addr,$_.ports.port.portid}"
复制代码
 楼主| 发表于 2022-4-26 19:11:27 | 显示全部楼层
回复 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直接操作比较难么
 楼主| 发表于 2022-4-26 19:15:28 | 显示全部楼层
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:\>
发表于 2022-4-26 20:14:17 | 显示全部楼层
本帖最后由 idwma 于 2022-4-26 20:17 编辑

那再试试这个,保存为bat文件也能运行的
  1. powershell "(gc 1.xml) -match '<host.*/host>' -replace '.*addr="(\S+)".*portid="(\S+)".*','$1:$2'"
复制代码
发表于 2022-4-26 23:07:24 | 显示全部楼层
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
复制代码
 楼主| 发表于 2022-4-27 07:07:40 | 显示全部楼层
回复 11# went


    确实是可以操作完成了   但是因为一个文本要几万行   好像时间估计得个把小时   老哥能帮优化下么
 楼主| 发表于 2022-4-27 12:28:54 | 显示全部楼层
回复 10# idwma


    还是不对大神
发表于 2022-4-27 12:48:40 | 显示全部楼层
回复 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()
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 01:52 , Processed in 0.021826 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表