ac5474012 发表于 2012-8-9 12:37:07

我想通过电脑A的AU3程序传递一个信息到电脑B的AU3程序求助?

我想做个更改密码的程序,用户输入正确旧密码就可以更改新密码了。但是这信息如果在两台机器或者说是两个不同计算机的AU3程序之前传递呢?

william_chin 发表于 2012-8-9 13:17:40

这个涉及到通信 比较复杂啊 顶一下

ac5474012 发表于 2012-8-9 13:44:20

实际上我要的是方案,能解决这个问题我认为越简单越好

ac5474012 发表于 2012-8-9 14:06:59

回复 2# william_chin


    通讯吗?你有这方面的例子吗?其实我考虑可以把信息写入一个txt在用FTP把txt传到服务器上的这种方式。包的原型

nivisde 发表于 2012-8-9 14:09:21

我想到有三种方式。
一:服务端,客户端,还有一个 ChangPdw.exe .
服务端传旧密码和新密码的校验给客户端,客户端接到参数后验证密码,然后以传参方式启动ChangPwd.exe

二:服务端,客户端。
服务端传旧密码和新密码的校验给客户端,客户端把密码加密存储于本地文件,然后客户端定时读取文件解密数据修改密码。

三:网络验证方式。服务端POST修改验证网站上的数据,然后客户端获取那个地址的数据进行修改也可以。

ajian55 发表于 2012-8-9 14:54:34

如果是局域网内:
1.可以直接用TCP/UDP在客户端和服务器之间传递数据包(两端都要写exe程序)。
2.也可以把服务器做成web服务器,客户端通过post/get方式联系服务器(客户端需要写exe程序,服务器端做网页)。
如果是外网:
1.如果你有web服务器,那么可以如同局域网的方式2,建议用此种方式。
2.如果客户端和服务器都直接连外网,可以如同局域网的方式1,如果有任意一个是通过路由器连外网的,那么局域网穿透可不是那么好实现的。
3.找个可以pop/smtp收发邮件的邮箱,将每份密码数据每封邮件地保存在邮箱内,可以pop读邮件、验证、然后发一封改好的邮件过去并删除以前旧用户密码的邮件(效率低)。
4.如果有可以直接post操作博文的博客或网站空间,可以将密码数据加密保存成博文,取回解密验证修改再加密传回去。

ac5474012 发表于 2012-8-9 15:43:32

回复 5# nivisde

我想到有三种方式。
一:服务端,客户端,还有一个 ChangPdw.exe .
服务端传旧密码和新密码的校验给客户端 ...
nivisde 发表于 2012-8-9 14:09 http://www.autoitx.com/images/common/back.gif

关键是怎么传输






    

ac5474012 发表于 2012-8-9 15:45:22

回复 6# ajian55

如果是局域网内:
1.可以直接用TCP/UDP在客户端和服务器之间传递数据包(两端都要写exe程序)。
2.也可以 ...
ajian55 发表于 2012-8-9 14:54 http://www.autoitx.com/images/common/back.gif

1.可以直接用TCP/UDP在客户端和服务器之间传递数据包(两端都要写exe程序)。
这个怎么实现?我对这个最感兴趣了,求例子。

post/get方式是什么意思?有例子吗?

ajian55 发表于 2012-8-9 17:59:21

回复 9# sliqi


    web方式其实做一个页面就够了。

   FTP不安全,au3反起来超简单,随便就能搞到FTP账户密码,等下你整个空间都废了,就算代码迷惑也无济于事,另外即便不去分析迷惑过的代码,抓包可是轻而易举的事。

   如果是外网用,但服务器或客户端又在局域网,要做内网穿透似乎有点麻烦吧?我4年前想做个类似的客户/服务端的程序,但苦于无法穿透内网,最后乖乖用MFC搞的。

ajian55 发表于 2012-8-9 18:34:46

本帖最后由 ajian55 于 2012-8-9 18:39 编辑

回复 8# ac5474012

如果只在局域网用,第1种很简单。但是要在外网用的话,似乎会面临局域网穿透的问题,多年以前我没能解决,不知道有高手解决了没。

具体实现代码在帮助文档的“网络管理”部分,TCP、UDP的都有,局域网的网络条件不会差,所以这两种任意一种都能实现你的要求。UDP更简单。
这里给你贴个帮助文档里UDP通信的例子:;;这是一个 UDP 服务器
;;请先运行服务端

; 开始 UDP 服务
;==============================================
UDPStartup()

; 注册清理函数.
OnAutoItExitRegister("Cleanup")

; 绑定到一个套接字(SOCKET)
;==============================================
$socket = UDPBind("127.0.0.1", 65532)
If @error <> 0 Then Exit

While 1
    $data = UDPRecv($socket, 50)
    If $data <> "" Then
      MsgBox(0, "UDP 数据", $data, 1)
    EndIf
    sleep(100)
WEnd

Func Cleanup()
    UDPCloseSocket($socket)
    UDPShutdown()
EndFunc
;;这是一个 UDP 客户端
;;请先运行服务端

; 开始 UDP 服务
;==============================================
UDPStartup()

; 注册清理函数.
OnAutoItExitRegister("Cleanup")

; 打开一个"套接字"("SOCKET")
;==============================================
$socket = UDPOpen("127.0.0.1", 65532)
If @error <> 0 Then Exit

$n=0
While 1
    Sleep(2000)
    $n = $n + 1
    $status = UDPSend($socket, "消息 #" & $n)
    If $status = 0 then
      MsgBox(0, "错误", "当发送 UDP 消息时发生错误: " & @error)
      Exit
    EndIf
WEnd

Func Cleanup()
    UDPCloseSocket($socket)
    UDPShutdown()
EndFunc
post/get其实是网页值传递方式,具体请网上搜索。
也给你举个get的例子:
假如你的网站“http://localhost”的web根目录下有文件“get.php”,内容如下:<?php
error_reporting( 0 );
if($_GET['user']) {
$user= $_GET['user'];
$pwd= $_GET['pwd'];
//这里你可以将得到的数据存到数据库,或者写入文件,或者...随你怎么样都成
exit();
}
?>然后,你只要访问“http://localhost/get.php?user=admin&pwd=12345”,之前的那个网页就能得到你从客户端传递过来的值,得到$user="admin",$pwd="12345"。至于怎样访问,你可以内嵌一个隐藏的ie对象、可以创一个xmlhttp对象、对于get其实InetGet 足矣。

nivisde 发表于 2012-8-9 19:40:18

回复 7# ac5474012

内网穿透问题确实比较棘手。但是你要不是做非法勾当等等,路由隐射没问题吧?


http://hi.baidu.com/new/amibeo

此连接是我用来给客户机传送参数的。客户端获取这个地址的参数进行对应的调整。

ajian55 发表于 2012-8-9 22:25:10

本帖最后由 ajian55 于 2012-8-9 22:28 编辑

回复 12# nivisde


    先不管楼主是什么用途。

   当年我写的客户端程序是一个共享程序,难道我跑去每个用户那里给他设置DMZ ? ~

    况且有时候预“设”不能啊,比如公司网吧等没有路由设置权限的地方~

nivisde 发表于 2012-8-10 09:47:29

回复 13# ajian55

路由隐射需要你自己跑去弄吗?
如果你需要把你的客户端软件部署到每个网吧的客户机,你难道都不需要操作网吧服务器的?
既然能操作网吧服务器。顺便做隐射有问题否?
非法用途不清楚软件操作的才会没权限设置,或者被干掉。

且不管你怎么说,客户端穿透内网问题不能解决,你还不想做隐射,你如何是好?


我那个是个地址,我没有服务端程序,只有客户端程序。
客户端程序有一个ID例 20c573da7ab76f144be1ddbc,就是对应的 参数获取页面
有点类似于网络验证的味道,但是单单这个页面的验证会导致转向本地验证的破解方法容易
破解这个参数。这个完善的验证当然不只这个的。

我有另外的验证方式是验证客户端是否符合条件可以得到这个地址,进而去获得这个页面的参数。
然后把参数分解出来放入程序对应的参数位置。

相当于那个页面就是我的服务端,客户端直接在那个地址接收到参数。
程序当然可以继续扩展获取更多变化的参数。
如果我有自己固定的服务器,我也可以自己建立更安全的参数传递页面。
页: [1]
查看完整版本: 我想通过电脑A的AU3程序传递一个信息到电脑B的AU3程序求助?