1

好的,所以我的最终目标是拥有一个可以放置在外部驱动器或闪存盘甚至 cd 中的自动运行文件,如果运行将执行一堆废话,最终将计算机的 ip 信息发送回我。到目前为止,这就是我所拥有的......

一个批处理文件

  • 打开一个 cmd 窗口并运行 ipconfig /all > tcpinfo.txt 将所有 ipconfig 存储在一个文件中
  • 然后文件创建一个html文件

    回声 ^http://anthonyrussell.info/scripts/sendmail.php? computerinfo="这是 ipconfig 信息应该去的地方"^>^^^ >>sendEmail.html`

--批处理文件做的最后一件事是执行html文件

HTML 文件重定向到我创建的一个 php 页面,该页面使用我们创建的 html 文件传递​​的 GET 信息发送一封电子邮件。

所以这一切都有效,除了我无法将 ipconfig 信息放入 html 代码中......

有任何想法吗?

下面是我正在使用的 bat 代码。随意运行它。我已将其配置为如果您在电子邮件中添加 altEmail= 的位置,它会将其发送到您想要进行测试的任何地方。否则它会被路由给我。

将此保存为anynameyouwant.bat

cd desktop
ipconfig /all > tcpinfo.txt
echo ^<html^>^<head^>^<meta HTTP-EQUIV="REFRESH"content="0;url=http://anthonyrussell.info/scripts/sendmail.php?computerinfo=ip:127.0.0.1&altEmail="^>^</head^>^</html^> >> sendEmail.html
sendEmail.html

更新

所以有时最简单的答案确实是最好的。这个场景的重点是从可能或可能没有盗窃驱动器或磁盘的人那里获取计算机信息。

想法是让它自动运行->启动批处理文件->捕获comp信息->创建html文件->带信息的电话回家

我最终做的不是从命令提示符捕获公共 IP(我现在确信无法完成),我只是创建一个 html 文件,启动它,然后在我的服务器上捕获访问者 ID,然后通过电子邮件发送它在正文中以及我在命令提示符中捕获的计算机名称。

感谢大家的意见。这是一个有趣的练习

4

6 回答 6

1

使用卷曲。你可以做 GET、POST 和许多其他有用的东西。

于 2013-02-09T20:11:17.013 回答
1

您可以将 IP 地址 fromipconfig放入 for 语句中以获取如下变量:

for /f "tokens=2 delims=:" %%a in ('ipconfig ^| find "IPv4"') do set ipaddress=%%a

然后将您的回声更改为

echo ^<html^>^<head^>^<meta HTTP EQUIV="REFRESH"content="0;url=http://anthonyrussell.info/scripts/sendmail.php computerinfo=ip:%ipaddress%&altEmail="^>^</head^>^</html^> >> sendEmail.html

话虽如此,这可能是一个本地 IP 地址,而不是公共的,因此没有用。如果我没记错的话,没有本地方法可以获取公共 IP 地址。

编辑:

您可以混合使用 VBS 和批处理

获取ip.vbs

Dim o
Set o = CreateObject("MSXML2.XMLHTTP")
o.open "GET", "http://ifconfig.me/ip", False
o.send
CreateObject("Wscript.Shell" ).Run "getip.bat" & o.responseText,0

获取ip.bat

cd desktop
echo ^<html^>^<head^>^<meta HTTP-EQUIV="REFRESH"content="0;url=http://anthonyrussell.info/scripts/sendmail.php?computerinfo=ip:%1&altEmail="^>^</head^>^</html^> >> sendEmail.html
sendEmail.html    

这只是此处提供的解决方案的略微修改版本。请注意,这是未经测试的。

于 2013-02-09T20:58:18.507 回答
0

您可以使用反引号将 ipconfig(或任何其他命令)的输出放入变量中:

<?php
$ipconfig=`ipconfig`;
print $ipconfig;

然后,您可以使用 php 邮件发送输出(确保首先在 php 配置中将 smtp 服务器设置为有效,或者使用 pear mail 之类的 php smtp 库)

于 2013-02-09T20:41:40.067 回答
0

好的,答案如下。

我还不能让它正确地发送计算机输出,但这就是你将两者结合在一起的方式。诀窍是使用 COPY 命令。所以创建一半的html文件。追加计算机信息,然后追加 HTML 文件的其余部分。现在只是让它工作......

echo computerinfoblah >> computerInfoFile.txt
echo ^<html^>^<head^>^<meta HTTP-EQUIV="REFRESH"content="0;url=http://anthonyrussell.info/scripts/sendmail.php?computerinfo=" >> sendemail.html
COPY sendemail.html + computerInfoFile.txt
echo &altEmail="^>^</head^>^</html^> >> sendemail.html
sendemail.html
于 2013-02-09T20:48:03.947 回答
0

我这样做的方法是首先解决您将保存 txt 文件的位置...如果它在驱动器上,让我们说 E:\ 然后保存它。

cd E:\

然后,我会将数据保存到文本文件中。

ipconfig /all > tcpinfo.txt

之后我会调用它来声明每一行这样的变量(假设我想要主机行,在我的情况下是我的文本文件中的第 4 行)

< tcpinfo.txt (
set /p notimportant=
set /p notimportant=
set /p notimportant=
set /p hostname=
)

然后,如果您想将数据发送到您的网站并且您的页面正确处理它,那么您可以直接将用户发送到该网站,并提供以下信息:

start http://anthonyrussell.info/scripts/sendmail.php?hostname=%hostname%

您必须根据您想要的字段来指定 GET 的内容。然后,您从网页中获取该数据并使用它将数据发送到您的电子邮件。

于 2013-02-09T21:25:22.343 回答
0

如果您的客户端可以连接到 smtp 服务器,那么就这样做而不是使用您的 Web 服务器。如果安装了 powershell,则内置 cmdlet 用于发送电子邮件。只需让你的批处理脚本运行 powershell.exe 并给它一个脚本块来执行。

于 2013-02-09T23:40:26.193 回答