vieyahn2017 / repos

【已经迁移到goto/javaway】
2 stars 1 forks source link

lanyu - github 资源学习汇总 #41

Closed vieyahn2017 closed 5 months ago

vieyahn2017 commented 4 years ago

https://github.com/ilanyu?tab=repositories

之前idea破解工具的制作大神

包括学习go(好几个简单demo),下载,安全上网,安卓破解等的好多资源

vieyahn2017 commented 4 years ago

https://github.com/robertkrimen/otto

Otto is a JavaScript parser and interpreter written natively in Go.

vieyahn2017 commented 4 years ago

https://github.com/ilanyu/xueqiuStock

go写的

vieyahn2017 commented 4 years ago

https://github.com/ilanyu/docker-ocserv

Openconnect server (ocserv) is an SSL VPN server for administrators who require elaborate user management and contro

基于frp的

vieyahn2017 commented 4 years ago

https://github.com/ilanyu/docker-lantern

蓝灯 科学上网

vieyahn2017 commented 4 years ago

Micro8 很多pdf

https://github.com/Micropoor/Micro8

渗透攻击超十年,由于年龄,身体原因,自己感觉快要退出一线渗透攻击了。遂打算把毕生所学用文字表写出来。因为文章涉及到敏感的攻击行为,所以好多需要打马赛克,或者是本地以demo的形式表现出来。当这个行业做久了,你也终有一天发现原来事物的本质是如此重要。比如内网渗透的本质是信息搜集。当年某大佬把这条经验传递给我,同样,今天变成老家伙的我,也希望把这条经验传递下去。

文中一定会出现笔误或者不对的地方,请大家多多包涵,提前向各位说声对不起,所有课程从基础开始(包括工具的介绍,应用等,由于是基础开始,部分内容可能会涉及初级知识点,请见谅),这样以后新来的同事或者想要自我从头学习的同事也可以避开一些弯路,在写的过程中,我深深体会到分享者才是学习中的最大受益者,由于需要成文章,所以需要查阅大量的资料。在整个过程中,又学习到很多知识点。连载其中包括穿插在工作中的项目心得笔记,包括但不限制于代码审计,web渗透,内网渗透,域渗透,隧道介绍,日志溯源与暴力溯源等。如果有课程指定需求介绍相关技术的同事(在我技术能力范围之内),请发我的邮箱:micropoor@gmail.com。在2010-2012年之间一直在写<PHP安全新闻早8点>,但是由于当时的工作原因,就不在写了。这次的所有课程无版权,只希望自己可以在本来已封闭的技术氛围里,依然做出一些技术文档输出。那么这次的教程我想依然想叫<PHP安全新闻早8点>,笔者相信有一天,你会发现原来弄清事物的本质是这样的有趣。

如需指定技术诉求,请留言于下,方便在未来更新的课时中,加入。再次感谢所有读者。

目录结构,请参见Wiki

渗透测试/APT模拟攻击,是一把双刃剑,Micro8系列适用于初中级安全从业人员,乙方安全测试,甲方安全自检,网络安全爱好者等,企业安全防护与提高,该系列遵守:免费,自由,共享,开源。请勿触犯法律,如触犯与本作者无关。当下载/传播/学习等便视为同意该条例。愿读者学有所成,问有所得,静有所思,而私有所惘。

vieyahn2017 commented 4 years ago

基于php和bash的离线下载神器 http://goxz.gq/

https://github.com/ilanyu/offline-download

vieyahn2017 commented 4 years ago

https://github.com/ilanyu/BlockSecureFlag

BlockSecureFlag

没咋写简介。 google搜索如下

ilanyu/BlockSecureFlag: BlockSecureFlag - GitHubgithub.com › ilanyu › BlockSecureFlag

ilanyu/BlockSecureFlag - GitHubgithub.com › ilanyu › BlockSecureFlag › releases Dismiss. Be notified of new releases. Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 40 ...

Xposed框架模块– QQ闪照截图(BlockSecureFlag) - Xposed 作者ilanyu撰写的一款Xposed框架模块,实际上适用于多种包含这种机制的软件

vieyahn2017 commented 4 years ago

https://github.com/ilanyu/MagiskServicesPure

MIUI ServicesPure Magisk

不写md

vieyahn2017 commented 4 years ago

https://github.com/ilanyu/ReverseProxy-Android

不写md,哎

https://github.com/ilanyu/ReverseProxy

ReverseProxy

ReverseProxy in golang

Use:

./ReverseProxy_[OS]_[ARCH] -h

Usage of ReverseProxy_[OS]_[ARCH]:
  -l string
        listen on ip:port (default "0.0.0.0:8888")
  -r string
        reverse proxy addr (default "http://idea.lanyus.com:80")

./ReverseProxy_windows_amd64.exe -l "0.0.0.0:8081" -r "https://www.baidu.com"

Listening on 0.0.0.0:8081, forwarding to https://www.baidu.com

这个代码很简单,就三个文件。干脆列出来

cmd.go

package main

import "flag"

type Cmd struct {
    bind string
    remote string
    ip string
}

func parseCmd() Cmd {
    var cmd Cmd
    flag.StringVar(&cmd.bind, "l", "0.0.0.0:8888", "listen on ip:port")
    flag.StringVar(&cmd.remote, "r", "http://idea.lanyus.com:80", "reverse proxy addr")
    flag.StringVar(&cmd.ip, "ip", "", "reverse proxy addr server ip")
    flag.Parse()
    return cmd
}

handle.go

package main

import (
    "net/http"
    "net/url"
    "net/http/httputil"
    "log"
    "net"
    "time"
    "context"
    "github.com/bogdanovich/dns_resolver"
    "strings"
)

type handle struct {
    reverseProxy string
}

func (this *handle) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    log.Println(r.RemoteAddr + " " + r.Method + " " + r.URL.String() + " " + r.Proto + " " + r.UserAgent())
    remote, err := url.Parse(this.reverseProxy)
    if err != nil {
        log.Fatalln(err)
    }
    dialer := &net.Dialer{
        Timeout:   30 * time.Second,
        KeepAlive: 30 * time.Second,
        DualStack: true,
    }
    http.DefaultTransport.(*http.Transport).DialContext = func(ctx context.Context, network, addr string) (net.Conn, error) {
        remote := strings.Split(addr, ":")
        if cmd.ip == "" {
            resolver := dns_resolver.New([]string{"114.114.114.114", "114.114.115.115", "119.29.29.29", "223.5.5.5", "8.8.8.8", "208.67.222.222", "208.67.220.220"})
            resolver.RetryTimes = 5
            ip, err := resolver.LookupHost(remote[0])
            if err != nil {
                log.Println(err)
            }
            cmd.ip = ip[0].String()
        }
        addr = cmd.ip + ":" + remote[1]
        return dialer.DialContext(ctx, network, addr)
    }
    proxy := httputil.NewSingleHostReverseProxy(remote)
    r.Host = remote.Host
    proxy.ServeHTTP(w, r)
}

main.go

package main

import (
    "net/http"
    "log"
)

var cmd Cmd
var srv http.Server

func StartServer(bind string, remote string)  {
    log.Printf("Listening on %s, forwarding to %s", bind, remote)
    h := &handle{reverseProxy: remote}
    srv.Addr = bind
    srv.Handler = h
    //go func() {
        if err := srv.ListenAndServe(); err != nil {
            log.Fatalln("ListenAndServe: ", err)
        }
    //}()
}

func StopServer()  {
    if err := srv.Shutdown(nil) ; err != nil {
        log.Println(err)
    }
}

func main() {
    cmd = parseCmd()
    StartServer(cmd.bind, cmd.remote)
}
vieyahn2017 commented 4 years ago

https://github.com/ilanyu/gfwlist2dnsmasq

cmd.go

package main

import "flag"

type Cmd struct {
    gfwListUrl string
    dns        string
    saveFile   string
    v          bool
}

func parseCmd() Cmd {
    var cmd Cmd
    flag.StringVar(&cmd.gfwListUrl, "url", "https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt", "gfw list url")
    flag.StringVar(&cmd.dns, "dns", "208.67.220.220#5353", "dns")
    flag.StringVar(&cmd.saveFile, "file", "./dnsmasq.servers.conf", "save file")
    flag.BoolVar(&cmd.v, "v", false, "v")
    flag.Parse()
    return cmd
}

main.go

package main

import (
    "net/http"
    "encoding/base64"
    "io/ioutil"
    "strings"
    "regexp"
    "os"
    "log"
)

func Decode(raw []byte) []byte {
    decoded := make([]byte, base64.StdEncoding.DecodedLen(len(raw)))
    base64.StdEncoding.Decode(decoded, raw)
    return decoded
}

func main() {
    cmd := parseCmd()
    client := http.Client{}
    resp, err := client.Get(cmd.gfwListUrl)
    if err != nil {
        log.Fatalln(err)
    }
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Fatalln(err)
    }
    lines := strings.Split(string(Decode(body)), "\n")
    pattern := `^([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])$`
    compile := regexp.MustCompile(pattern)
    var l []string
    perLine := ""
    for line := range lines {
        if len(lines[line]) == 0 {
            continue
        } else if lines[line][0] == '!' {
            continue
        } else if lines[line][0:2] == "@@" {
            continue
        } else if strings.Contains(lines[line], "/") || strings.Contains(lines[line], "*") || strings.Contains(lines[line], "[") || strings.Contains(lines[line], "%") || !strings.Contains(lines[line], ".") {
            continue
        } else if compile.MatchString(lines[line]) {
            continue
        } else if lines[line][0:2] == "||" {
            if perLine != lines[line][2:] {
                l = append(l, "server=/"+lines[line][2:]+"/"+cmd.dns)
            }
            perLine = lines[line][2:]
        } else if lines[line][0] == '.' {
            if perLine != lines[line][1:] {
                l = append(l, "server=/"+lines[line][1:]+"/"+cmd.dns)
            }
            perLine = lines[line][1:]
        } else {
            if perLine != lines[line] {
                l = append(l, "server=/"+lines[line]+"/"+cmd.dns)
            }
            perLine = lines[line]
        }
    }

    fp, err := os.OpenFile(cmd.saveFile, os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0755)
    if err != nil {
        log.Fatalln(err)
    }
    defer fp.Close()

    dnsmasqServer := strings.Join(l, "\n")

    if cmd.v {
        println(dnsmasqServer)
    }

    fp.WriteString(dnsmasqServer)
}
vieyahn2017 commented 4 years ago

https://github.com/ilanyu/TimeSync

TimeSync

use:

server: TimeSync -type server -ServerAddr 192.168.123.10:2345 client: TimeSync -type client -ServerAddr 255.255.255.255:2345 -Client 192.168.123.11:0

TimeSync.go

package main

import (
    "runtime"
    "os/exec"
    "log"
    "flag"
    "net"
    "time"
    "strconv"
)

// UpdateDate can update system date.
//
// You should provide args like 2017/04/30, is year/month/day
func UpdateDate(date string) error {
    cmd := exec.Command("cmd", "/c", "date", date)
    if err := cmd.Start(); err != nil {
        return err
    }
    if err := cmd.Wait(); err != nil {
        return err
    }
    return nil
}

// UpdateTime can update system time.
//
// You should provide args like 13:45:01.23, is hour:mine:second
func UpdateTime(time string) error {
    cmd := exec.Command("cmd", "/c", "time", time)
    if err := cmd.Start(); err != nil {
        return err
    }
    if err := cmd.Wait(); err != nil {
        return err
    }
    return nil
}

func server(serverAddr string) {
    ServerAddr, err := net.ResolveUDPAddr("udp", serverAddr)
    if err != nil {
        log.Println(err)
    }
    ServerConn, err := net.ListenUDP("udp", ServerAddr)
    defer ServerConn.Close()
    buf := make([]byte, 1024)
    for {
        n, addr, err := ServerConn.ReadFromUDP(buf)
        if err != nil {
            log.Println("Error: ", err)
        }
        resp := string(buf[0:n])
        log.Println("Received ", resp, " from ", addr)
        if resp != "TimeSync" {
            continue
        }
        now := time.Now().Unix()
        ServerConn.WriteToUDP([]byte(strconv.FormatInt(now, 10)), addr)
    }
}

func main() {
    if runtime.GOOS != "windows" {
        panic("Not Windows")
    }
    taip := flag.String("type", "client", "[server|client]")
    serverAddr := flag.String("ServerAddr", "192.168.123.155:2345", "server listen addr, or server addr")
    clientAddr := flag.String("ClientAddr", "192.168.123.155:0", "client addr")
    //netType:= flag.String("netType", "udp", "[tcp|udp]")
    flag.Parse()
    log.Println(*taip)
    switch *taip {
    case "server":
        server(*serverAddr)
    case "client":
        ServerAddr, err := net.ResolveUDPAddr("udp", *serverAddr)
        if err != nil {
            log.Println(err)
        }
        LocalAddr, err := net.ResolveUDPAddr("udp", *clientAddr)
        if err != nil {
            log.Println(err)
        }
        Conn, err := net.ListenUDP("udp", LocalAddr)
        defer Conn.Close()
        if err != nil {
            log.Println(err)
        }

        var addr net.Addr
        var n int
        buf := make([]byte, 1024)
        for {
            _, err = Conn.WriteToUDP([]byte("TimeSync"), ServerAddr)
            if err != nil {
                log.Println(err)
            }
            time.Sleep(time.Second * 1)
            Conn.SetReadDeadline(time.Now().Add(5 * time.Second))
            n, addr, err = Conn.ReadFrom(buf)
            if err != nil {
                log.Println(err)
            } else {
                break
            }
        }
        resp := string(buf[0:n])
        log.Println("Received ", resp, " from ", addr)
        ServerUnixTime, err := strconv.ParseInt(resp, 10, 64)
        if err != nil {
            log.Println(err)
        }
        serverDate := time.Unix(ServerUnixTime, 0).Format("2006-01-02")
        serverTime := time.Unix(ServerUnixTime, 0).Format("15:04:05")
        log.Println(serverDate)
        log.Println(serverTime)
        UpdateDate(serverDate)
        UpdateTime(serverTime)
    default:
        log.Fatalln("Please tell me the type.")
        return
    }
}

nac.syso 好像是个go的编译文件 windows程序获取管理员权限(UAC ) ?

vieyahn2017 commented 4 years ago

https://github.com/ilanyu/adb2dnsmasq

cmd.go

package main

import "flag"

type Cmd struct {
    urls string
    savePath string
    saveMode string
}

func parseCmd() Cmd {
    var cmd Cmd
    flag.StringVar(&cmd.urls, "urls", "https://easylist-downloads.adblockplus.org/easylist.txt|https://easylist-downloads.adblockplus.org/easyprivacy.txt|https://easylist-downloads.adblockplus.org/easylistchina.txt|https://raw.githubusercontent.com/cjx82630/cjxlist/master/cjx-annoyance.txt|https://raw.githubusercontent.com/cjx82630/cjxlist/master/cjxlist.txt", "urls")
    flag.StringVar(&cmd.savePath, "save.path", "./dnsmasq.adb.conf", "save path")
    flag.StringVar(&cmd.saveMode, "save.mode", "a", "save mode [a|t] append or trunc")
    flag.Parse()
    return cmd
}

main.go

package main

import (
    "net/http"
    "log"
    "io/ioutil"
    "regexp"
    "strings"
    "os"
)

func MergeSlice(s1 []string, s2 []string) []string {
    slice := make([]string, len(s1)+len(s2))
    copy(slice, s1)
    copy(slice[len(s1):], s2)
    return slice
}

func getAdbList(url string, adbList chan []string) {
    var adbListTmp []string
    resp, err := http.Get(url)
    if err != nil {
        log.Fatalln(err)
    }
    adbContents, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Fatalln(err)
    }
    adbLines := strings.Split(string(adbContents), "\n")
    re := regexp.MustCompile(`\|\|([a-z0-9\.\-]+[a-z]+[a-z0-9\.\-]+)\^$`)

    for line := range adbLines {
        match := re.FindStringSubmatch(adbLines[line])
        if len(match) == 2 {
            adbListTmp = append(adbListTmp, "address=/"+match[1]+"/0.0.0.0/")
        }
    }
    adbList <- adbListTmp
}

func main() {
    cmd := parseCmd()

    url := strings.Split(cmd.urls, "|")

    adbList := make(chan []string, len(url))

    for i := range url {
        go getAdbList(url[i], adbList)
    }

    var mode int

    if cmd.saveMode == "a" {
        mode = os.O_CREATE | os.O_RDWR | os.O_APPEND
    } else {
        mode = os.O_CREATE | os.O_RDWR | os.O_TRUNC
    }

    fp, err := os.OpenFile(cmd.savePath, mode, 0755)
    if err != nil {
        log.Fatalln(err)
    }
    defer fp.Close()

    var adbContents []string

    for range url {
        adbContents = MergeSlice(adbContents, <-adbList)
    }

    fp.WriteString(strings.Join(adbContents, "\n"))
}
vieyahn2017 commented 4 years ago

https://github.com/ilanyu/memdump

memdump

example use:

# ps // get pid 3149
# cat /proc/3149/maps // get b6946000-b6a12000 r-xp 00000000 08:06 652        /system/lib/libsqlite.so
# ./memdump -pid 3149 -saddr b6946000 -eaddr b6a12000
test OK on x86 android 4.2 (Genymotion Android Emulator)

memdump.go

package main

import (
    "syscall"
    "fmt"
    "os"
    "strconv"
    "flag"
)

func main() {
    pid := flag.Int("pid", 1, "PID")
    start_addr_hex := flag.String("saddr", "0", "start addr(hex)")
    end_addr_hex := flag.String("eaddr", "0", "end addr(hex)")
    fileName := flag.String("filename", "memdump.mem", "filename")
    flag.Parse()
    start_addr, _ := strconv.ParseInt(*start_addr_hex, 16, 64)
    end_addr, _ := strconv.ParseInt(*end_addr_hex, 16, 64)
    length := end_addr - start_addr
    if err := syscall.PtraceAttach(*pid); err != nil {
        fmt.Errorf("PtraceAttach is err: %s", err)
    }
    var ws syscall.WaitStatus
    syscall.Wait4(*pid, &ws, syscall.WNOHANG, nil)
    path := fmt.Sprintf("/proc/%d/mem", *pid)
    fp, err := os.OpenFile(path, os.O_RDONLY, 0755)
    defer fp.Close()
    if err != nil {
        fmt.Errorf("OpenFile is err: %s", err)
    }
    fp.Seek(start_addr, os.SEEK_SET)
    buf := make([]byte, length)
    n, err := fp.Read(buf)
    if err != nil {
        fmt.Errorf("Read is err: %s", err)
    }
    fmt.Println("read " + strconv.Itoa(n))
    fpw, err := os.OpenFile(*fileName, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0755)
    defer fpw.Close()
    fpw.Write(buf)
    if err := syscall.PtraceDetach(*pid); err != nil {
        fmt.Errorf("PtraceDetach is err: %s", err)
    }
}
vieyahn2017 commented 4 years ago

https://github.com/ilanyu/multiDown

Simple Multi-thread Download Lib

multiDown.go

package multiDown

import (
    "net/http"
    "io/ioutil"
    "strconv"
    "sort"
    "bytes"
    "errors"
    "io"
)

// temp save bytes in channel
type content struct {
    id     int
    buffer []byte
    err    error
}
type contents []content

func (c contents) Len() int {
    return len(c)
}
func (c contents) Less(i, j int) bool {
    return c[i].id < c[j].id
}
func (c contents) Swap(i, j int) {
    c[i], c[j] = c[j], c[i]
}

// Simple Multi-thread Download
func Download(url string, connNum int) ([]byte, error) {

    // check thread num
    if connNum < 1 || connNum > 33 {
        return nil, errors.New("1 < connNum < 32")
    }

    if connNum != 1 {

        // Get content-Length
        req, err := http.NewRequest("HEAD", url, nil)
        if err != nil {
            return nil, err
        }
        client := http.Client{}
        resp, err := client.Do(req)
        if err != nil {
            return nil, err
        }
        all, err := strconv.ParseInt(resp.Header.Get("content-Length"), 10, 64)
        per := all / int64(connNum)
        if err != nil {
            return nil, err
        }

        channel := make(chan content)
        for i := 0; i < connNum; i++ {
            s := strconv.FormatInt(per*int64(i)+1, 10)
            if s == "1" {
                s = "0"
            }
            e := strconv.FormatInt(per*int64(i+1), 10)
            if connNum-i == 1 {
                e = resp.Header.Get("content-Length")
            }
            go func(i int, s string, e string, channel chan content) {
                var client2 http.Client
                req2, err := http.NewRequest("GET", url, nil)
                if err != nil {
                    panic(err)
                    return
                }
                req2.Header.Set("Range", "bytes="+s+"-"+e)
                resp2, err := client2.Do(req2)
                if err != nil {
                    channel <- content{err: err}
                    return
                }
                var buf bytes.Buffer
                written, err := io.Copy(&buf, resp2.Body)
                if err != nil {
                    channel <- content{err: err}
                    return
                }
                eI, _ := strconv.ParseInt(e, 10, 64)
                sI, _ := strconv.ParseInt(s, 10, 64)
                if eI-sI > 0 && written == 0 {
                    channel <- content{err: errors.New("not get " + s + "-" + e)}
                    return
                }
                channel <- content{id: i, buffer: buf.Bytes()}
            }(i, s, e, channel)
        }
        con := make(contents, connNum)
        for i := 0; i < connNum; i++ {
            con[i] = <-channel
            if con[i].err != nil {
                return nil, con[i].err
            }
        }
        sort.Sort(con)
        var buf bytes.Buffer
        for i := 0; i < connNum; i++ {
            buf.Write(con[i].buffer)
        }
        return buf.Bytes(), nil
    } else {
        resp2, err := http.Get(url)
        if err != nil {
            return nil, err
        }
        b, err := ioutil.ReadAll(resp2.Body)
        if err != nil {
            return nil, err
        }
        return b, nil
    }
}

func DownloadToFile(filename string, url string, connNum int) error {
    b, err := Download(url, connNum)
    if err != nil {
        return err
    }
    return ioutil.WriteFile(filename, b, 0755)
}

multiDown_test.go

package multiDown

import "testing"

func TestDownload(t *testing.T) {
    _, err := Download("http://192.168.123.12:61323/mp3?filepath=/storage/emulated/0/netease/cloudmusic/Cache/Music1/3413713-128000-c9c99b69897e438a9fbc1d25c3a26399.mp3.uc!&decode=true", 10)
    if err != nil {
        t.Fatal(err)
    }
}

func TestDownloadToFile(t *testing.T) {
    err := DownloadToFile("25703039.mp3", "http://192.168.123.12:61323/mp3?filepath=/storage/emulated/0/netease/cloudmusic/Cache/Music1/3413713-128000-c9c99b69897e438a9fbc1d25c3a26399.mp3.uc!&decode=true", 10)
    if err != nil {
        t.Fatal(err)
    }
}
vieyahn2017 commented 4 years ago

https://github.com/ilanyu/erya

尔雅通识课快进 for 成都航空职业技术学院

index.php


<?php
echo 'javascript:$.getScript("http://' . $_SERVER["HTTP_HOST"] . '/2.php?videoId=" + document.getElementById("videoId").value + "&videoNumber=" + document.getElementById("videoNumber").value + "&courseId=" + document.getElementById("courseId").value + "&schoolCourseId=" + document.getElementById("schoolCourseId").value);$.getScript("http://' . $_SERVER["HTTP_HOST"] . '/4.php?videoId=" + document.getElementById("videoId").value + "&videoNumber=" + document.getElementById("videoNumber").value + "&courseId=" + document.getElementById("courseId").value + "&schoolCourseId=" + document.getElementById("schoolCourseId").value);$.getScript("http://' . $_SERVER["HTTP_HOST"] . '/6.php?videoId=" + document.getElementById("videoId").value + "&videoNumber=" + document.getElementById("videoNumber").value + "&courseId=" + document.getElementById("courseId").value + "&schoolCourseId=" + document.getElementById("schoolCourseId").value);$.getScript("http://' . $_SERVER["HTTP_HOST"] . '/8.php?videoId=" + document.getElementById("videoId").value + "&videoNumber=" + document.getElementById("videoNumber").value + "&courseId=" + document.getElementById("courseId").value + "&schoolCourseId=" + document.getElementById("schoolCourseId").value);$.getScript("http://' . $_SERVER["HTTP_HOST"] . '/10.php?videoId=" + document.getElementById("videoId").value + "&videoNumber=" + document.getElementById("videoNumber").value + "&courseId=" + document.getElementById("courseId").value + "&schoolCourseId=" + document.getElementById("schoolCourseId").value);$.getScript("http://' . $_SERVER["HTTP_HOST"] . '/12.php?videoId=" + document.getElementById("videoId").value + "&videoNumber=" + document.getElementById("videoNumber").value + "&courseId=" + document.getElementById("courseId").value + "&schoolCourseId=" + document.getElementById("schoolCourseId").value);$.getScript("http://' . $_SERVER["HTTP_HOST"] . '/14.php?videoId=" + document.getElementById("videoId").value + "&videoNumber=" + document.getElementById("videoNumber").value + "&courseId=" + document.getElementById("courseId").value + "&schoolCourseId=" + document.getElementById("schoolCourseId").value);$.getScript("http://' . $_SERVER["HTTP_HOST"] . '/16.php?videoId=" + document.getElementById("videoId").value + "&videoNumber=" + document.getElementById("videoNumber").value + "&courseId=" + document.getElementById("courseId").value + "&schoolCourseId=" + document.getElementById("schoolCourseId").value);$.getScript("http://' . $_SERVER["HTTP_HOST"] . '/18.php?videoId=" + document.getElementById("videoId").value + "&videoNumber=" + document.getElementById("videoNumber").value + "&courseId=" + document.getElementById("courseId").value + "&schoolCourseId=" + document.getElementById("schoolCourseId").value);$.getScript("http://' . $_SERVER["HTTP_HOST"] . '/end.php?videoId=" + document.getElementById("videoId").value + "&videoNumber=" + document.getElementById("videoNumber").value + "&courseId=" + document.getElementById("courseId").value + "&schoolCourseId=" + document.getElementById("schoolCourseId").value);';
?>

end.php

<?php
$data = json_decode(file_get_contents("http://cdavtc.tsk.erya100.com/player/playerAction!getVideoUrl?videoId=" . $_GET["videoId"] . "&courseId=" . $_GET["courseId"] . "&schoolId=000343&seriNum=" . $_GET["videoNumber"]),1);
function GetURLPro($data) {
    $rand = base64_encode($data["data"]["totalTime"] . "&2&" . time() . "&" . rand(001,999) . "&" . rand(001,999) . "&Chrome 35.0.1916.153&0");
    return "http://cdavtc.tsk.erya100.com/student/studentVideoAction!recieveNewVideoTime?videoId=" . $_GET["videoId"] . "&videoNumber=" . $_GET["videoNumber"] . "&courseId=" . $_GET["courseId"] . "&rand=" . $rand . "&ecode=" . md5("2erya_tsk" . $rand) . "&schoolCourseId=" . $_GET["schoolCourseId"];
}
echo '$.getJSON(
    "' . GetURLPro($data) . '",
    function(data) {
       if (data.status == "1" || data.status == "4") window.close() ;
    }
);';
echo '$.getScript("http://' . $_SERVER["HTTP_HOST"] . '/end.php?videoId=" + document.getElementById("videoId").value + "&videoNumber=" + document.getElementById("videoNumber").value + "&courseId=" + document.getElementById("courseId").value + "&schoolCourseId=" + document.getElementById("schoolCourseId").value);';

2.php

<?php
function GetMineURL($mine) {
    $rand = base64_encode($mine * 60 . "&1&" . time() . "&" . rand(001,999) . "&" . rand(001,999) . "&Chrome 35.0.1916.153&0");
    return "http://cdavtc.tsk.erya100.com/student/studentVideoAction!recieveNewVideoTime?videoId=" . $_GET["videoId"] . "&videoNumber=" . $_GET["videoNumber"] . "&courseId=" . $_GET["courseId"] . "&rand=" . $rand . "&ecode=" . md5("1erya_tsk" . $rand) . "&schoolCourseId=" . $_GET["schoolCourseId"];
}
echo '$.get("' . GetMineURL(2) . '");';
vieyahn2017 commented 4 years ago

https://github.com/aria2/aria2

aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in command-line. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink

linux命令行的轻量级下载工具

vieyahn2017 commented 4 years ago

https://github.com/ilanyu/docker-atlassian-confluence-server

Dockerfile   
README.md  
confluenceCrack.jar init    
entrypoint.sh   init    
mysql-connector-java-5.1.42.jar 

Quick Start For the directory in the environmental variable CONFLUENCE_HOME that is used to store Confluence data (amongst other things) we recommend mounting a host directory as a data volume:

Start Atlassian Confluence Server:

$> mkdir -p /data/your-confluence-home
$> docker run --restart=always -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 ilanyu/confluence-server

Get Activate Code:

$> docker exec -it confluence java -jar /opt/atlassian/confluence/confluenceCrack.jar

Success. Confluence is now available on http://localhost:8090*