├── README.md
├── config
├── ca
│ ├── server.crt
│ └── server.key
└── config.json
└── tools
├── doFernflower.sh
└── fernflower.jar
/README.md:
--------------------------------------------------------------------------------
1 | [](https://twitter.com/intent/follow?screen_name=Hktalent3135773) [](https://twitter.com/intent/follow?screen_name=Hktalent3135773) [](https://github.com/hktalent/)
2 | # Ai(ChatGPT-4) Code Security Audit
3 |
4 | 源码近期放出:https://github.com/hktalent/AiCSA
5 |
6 |
7 |
8 |
9 |
10 | # feature
11 | - 相同 jar、相同 java 文件,chatGPT ( GPT-4 ) 只执行一次,结果保留在索引库中,所以不用担心多次重复执行的问题
12 | - 免费的 chatGPT 限速20次/分钟,付费用户可以通过修改 config/config.json 调整频率
13 | - 文件大于 3500 字节自动拆分发送给 chatGPT,避免过长的文件导致 chatGPT 无法处理
14 | - 支持 若干个 openai api key,提高并发能力
15 | - 基于大数据索引存储结果
16 | - 提供 HTTP/2.0 HTTP/3.0 web 界面
17 |
18 | # web UI
19 |
20 |
21 | ```
22 | mkdir -p src config
23 | vi config/config.json
24 | ./AiCSA
25 |
26 | open https://127.0.0.1:8080/indexes/
27 | ```
28 |
29 | # How Test
30 | - 运行前,请先调整 ./tools/doFernflower.sh 文件,确保 java 是 11 或高版本
31 | - 确定 rt.jar 的路径,修改 ./tools/doFernflower.sh 文件中的 rt.jar 路径
32 |
33 | ```
34 | find /Library/Java/JavaVirtualMachines -name "rt.jar"
35 | ```
36 |
37 | out
38 | ```
39 | /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/rt.jar
40 | /Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/rt.jar
41 | ```
42 |
43 | ## config/config.json example
44 | LimitPerMinute: 建议 api key 个数 * 3
45 | ```
46 | {
47 | "proxy": "socks5://127.0.0.1:7890",
48 | "LimitPerMinute": 6,
49 | "HttpPort": 8080,
50 | "org": "org-xx",
51 | "api_key": "sk-xxx,sk-xxx2",
52 | "Prefix": "用中文问答,分析%s java代码存在哪些安全风险,如何验证、确认他们",
53 | "CheckRpt": true
54 | }
55 | ```
56 |
57 | # How build
58 | ```
59 | go get -u ./...
60 | go mod vendor
61 | go build -o AiCSA main.go
62 | ```
63 |
64 | ## 反编译jar to java
65 | - 源码将自动保存在 src 目录中
66 | - 不同的 ja r会根据hash构建一个源码目录,避免多个jar的源码冲突
67 |
68 | ```
69 | find $HOME/MyWork/vulScanPro/tools/weblogic/weblogic12.2.1.3 -type f -name "*.jar" | xargs -I {} ./tools/doFernflower.sh {}
70 | ls $HOME/MyWork/vulScanPro/tools/weblogic/weblogic12.2.1.3/coherence/lib/*.jar|xargs -I {} ./tools/doFernflower.sh {}
71 | ./tools/doFernflower.sh $HOME/MyWork/vulScanPro/tools/weblogic/weblogic12.2.1.3/coherence/lib/coherence.jar
72 | ```
73 |
74 | # Tips
75 | - Mac OS 所有子目录图片转换为mp4
76 | ```
77 | brew install ffmpeg
78 | brew update && brew upgrade ffmpeg
79 |
80 | find $HOME/Downloads/outImg -name '*.png' | sort | sed 's/.*/"&"/' | tr '\n' ' ' | xargs ffmpeg -r 30 -i - -c:v libx264 -pix_fmt yuv420p output.mp4
81 | ```
82 |
83 | ## 💖Star
84 | [](https://starchart.cc/hktalent/AiCSA_pub)
85 |
86 | # Donation
87 | | Wechat Pay | AliPay | Paypal | BTC Pay |BCH Pay |
88 | | --- | --- | --- | --- | --- |
89 | |
|
|[paypal](https://www.paypal.me/pwned2019) **miracletalent@gmail.com**|
|
|
90 |
91 |
--------------------------------------------------------------------------------
/config/ca/server.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIIEHjCCAoagAwIBAgIQfgmp3dWDievJrXCOfOtWWzANBgkqhkiG9w0BAQsFADBb
3 | MR4wHAYDVQQKExVta2NlcnQgZGV2ZWxvcG1lbnQgQ0ExGDAWBgNVBAsMDzUxcHdu
4 | QDEyMy5sb2NhbDEfMB0GA1UEAwwWbWtjZXJ0IDUxcHduQDEyMy5sb2NhbDAeFw0y
5 | MjExMDMwNTQ5MjZaFw0yNTAyMDMwNTQ5MjZaMEMxJzAlBgNVBAoTHm1rY2VydCBk
6 | ZXZlbG9wbWVudCBjZXJ0aWZpY2F0ZTEYMBYGA1UECwwPNTFwd25AMTIzLmxvY2Fs
7 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApE/9Clmh7YE0NCKGGQAM
8 | jV1GXqlJfewpGI0obIBuVoqmt2cOTun7JaPhb4KuDEunREQTU8DzSncbLvD8z3aT
9 | nDE0wStOhyi0oazRTuBQwoR+ILTGSa2gzGQCIBYGfA0G5qtKQz5pWgjoz79tr5gI
10 | DMsORMKYuwrXKiZd8CvzOy7i5d4GygoNYu8Eic1BKqLAdHkik65aJcpJgZDGPyTl
11 | +cIBcoEJrebSd+WogG7SSUe+9hmF7rtxIq6Dj6cPfjbRqCXlXZ9DDj95cFPGc7aG
12 | vDCREeiq7L4dhdocUffv6pyxmTUXuAwTk39JeLP5UkburISpHdrQU/FQ7y4pgIlq
13 | UQIDAQABo3YwdDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEw
14 | HwYDVR0jBBgwFoAUhaCEJ+jtqBlId8qkJCImD6D1HZkwLAYDVR0RBCUwI4IJbG9j
15 | YWxob3N0hwR/AAABhxAAAAAAAAAAAAAAAAAAAAABMA0GCSqGSIb3DQEBCwUAA4IB
16 | gQAAAD9ueHOj68QCWi0kk3+kXcMAGuQtiqxrPfNI/gskbCdOyJJc78o/zOYSkcOJ
17 | 3KOgfxlX6OTjnLXM5o5Rf6pcFpzmAOCBdXj1EGlcusP9J9pgzqrx3pVhw1Tu1iYM
18 | lef+1fF6c0R8Z4X65TmdbAXPW83+1LVn6rEqW8fzIK7nEnR39Q8xF8hLkSSA1wGJ
19 | 2MWzhfS0gkRu4eMJ9MShiUisGywGuvi0Q0sWrNZMwF/tCdfxeHriQAnxpx8E9Irg
20 | 3YxFmq+YBsMAfHbrWqAs5TFU99fJ+jQkDQxKKCcjgVUyyhu+AUL+mMh/znDrjz9X
21 | Py3hIqW8t5VNqomda/errd0Zv8DLpznUfmMJmG3iQuq5p9GQbXU4xVQN2MHfck5i
22 | 74F9MFONnlnS0XCOL4YMiPRq3hgF+EnM0gnCd5u8RwDhHe7KqTiHzHdZ2RlOWTgr
23 | YYKIibMm/AO15MXNwDkA2+ey7QQsQu7n6bXOIS8eSXfpxY0IWitek981AHQDCLco
24 | Cks=
25 | -----END CERTIFICATE-----
26 |
--------------------------------------------------------------------------------
/config/ca/server.key:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCkT/0KWaHtgTQ0
3 | IoYZAAyNXUZeqUl97CkYjShsgG5Wiqa3Zw5O6fslo+Fvgq4MS6dERBNTwPNKdxsu
4 | 8PzPdpOcMTTBK06HKLShrNFO4FDChH4gtMZJraDMZAIgFgZ8DQbmq0pDPmlaCOjP
5 | v22vmAgMyw5Ewpi7CtcqJl3wK/M7LuLl3gbKCg1i7wSJzUEqosB0eSKTrlolykmB
6 | kMY/JOX5wgFygQmt5tJ35aiAbtJJR772GYXuu3EiroOPpw9+NtGoJeVdn0MOP3lw
7 | U8Zztoa8MJER6Krsvh2F2hxR9+/qnLGZNRe4DBOTf0l4s/lSRu6shKkd2tBT8VDv
8 | LimAiWpRAgMBAAECggEAUmVKHsaTzOXdp8coN6EuqjT79LwvflXOxeEDRGWi7wLY
9 | V1/2bNwodNeZVLHTVZcaacE5b+ZyGgVgPEncfKyZmNmT+soctupSqkBfNY6G8QQ/
10 | u2briEbpO5Vq+2wQFGTz8Pg0ZUQG0H9nP8Ze2o8CemfY3+I1dJYbD6fts2JWtnYe
11 | z7WMoQjU9GFZYviRtAz/wOZvJ/NwnDqCzw4f6xLDP6SfeIgVIGNWp/rXpP20zw0q
12 | z2ieSiypj6SlS4sOk6wgs3/vK1sF0KYXcEKcIfhebKYsRN3xJI1vpXKys2Tfn3xH
13 | f8cT5etVFQ743irXTagGfxEh+xm+GfyqAZXA6YFzgQKBgQDSN/0RUKbJhuQz0MIn
14 | v43mEBoYoFOc6Gaa+xlWU66rD1xkmxtfJ9WtiXR19h9ix1Y0q9CUUvnBPA6SbSAn
15 | Jadiz+tMJrLlxFnRNvErYsZMMuK/E+PXXg78J54nzQEl0fb2e2P6NiMWgksrMDdv
16 | VrJKK4cmmVpVCWjYcV13mtxeIwKBgQDIGKgnZsZNmk+Bq7EzfkkLo6M2tQRM8kXG
17 | 4RGeVkDGXP/q4o4w0Gh1W3xq4GQsWsrzgjgi0UOm9Lj0f6BhAJv8rpiNaTJGg6KK
18 | Yw9Ay3tRbhkHv58zwYvTcufDXaUhToWFTg/HKK1zt29WBGguT1cqTnQncFgnIjEx
19 | 9jbgRGFK+wKBgQCiilnpNnQPpHX0Pniw5SKhfVfALM8ZpnQXZwl7Py7x4umsfGWY
20 | mKNWD871mn1AEiLsjOC0nsewCnC19RyESE/5TgyAD/gJQl20L4gf5LqwljPOTGHB
21 | 1188xqE54v/9LzCF+ngeMhfFQq8+UIS8WMt4H9nbFX3L/H+Nw3HileHIAwKBgHAC
22 | TW7w+yTJsqP1xlX65Uzcpyqineus2x5/MuudgNkJikCj3dC5eR/ovHbfcXPaxy0U
23 | wfPLjMFS0I4dO1vRiYAjBEZ0kq4iVcR9uzYcMcXdialqvOWt/GW7Nr2IGD3SxK9g
24 | iTiFLsNN9ccC5Ia35yVJkX/aRZ5yZ3N+Ti2wWX4tAoGBALxqbln818k9UtaGXwXx
25 | cHuueF/diqm/pscvA5lmRxndahr8ML03a215XI1oANdKJ7fcYSX+Hu3dylBqXDSw
26 | /OQcQ075ynysO5/zE1hJMMqI+xbSwukGec4/9bYxqj0HfknfZ4drD0/RT+zl7R3i
27 | O2jw/3lEXOJFdsCdDmaAusAA
28 | -----END PRIVATE KEY-----
29 |
--------------------------------------------------------------------------------
/config/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "proxy": "socks5://127.0.0.1:7890",
3 | "LimitPerMinute": 20,
4 | "thread": 64,
5 | "HttpPort": 8080,
6 | "org": "org-xxx",
7 | "api_key": "sk-xx",
8 | "Prefix": "用中文问答,分析java代码存在哪些安全风险、易受到攻击的脆弱代码,如何验证、确认他们",
9 | "CheckRpt": true
10 | }
--------------------------------------------------------------------------------
/tools/doFernflower.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | Java11="/usr/local/Cellar/openjdk@11/11.0.16.1/libexec/openjdk.jdk/Contents/Home/bin/java"
4 | RtJar="/Library/Java/JavaVirtualMachines/openjdk-8.jdk/Contents/Home/jre/lib/rt.jar"
5 |
6 | # 当前bashwenj目录
7 | szCurFile=$(basename "$1")
8 | # 运行本bash的当前目录
9 | szCurDir=$(dirname "$(readlink -f "$0")")
10 | # 生成src目录,避免不同jar冲突
11 | srcDir=$(md5sum "$1"|sed 's/ .*//g')
12 | srcDir1="${szCurDir}/../src/${srcDir}"
13 | if [ -d "${srcDir1}" ]; then
14 | echo "${srcDir1} already exists! Exiting script..."
15 | exit 1
16 | fi
17 |
18 |
19 | mkdir -p "${srcDir1}"
20 | ${Java11} -jar ${szCurDir}/fernflower.jar -din=1 -hdc=0 -dgs=1 -rsy=1 -lit=1 "$1" -e=${RtJar} "${srcDir1}"
21 |
22 | cd ${srcDir1}
23 | unzip -o "${szCurFile}"
24 | rm -rf "${szCurFile}"
25 |
--------------------------------------------------------------------------------
/tools/fernflower.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hktalent/AiCSA_pub/9c5c5d32b2b7bbe59119dd6de8ba67339c9e89d1/tools/fernflower.jar
--------------------------------------------------------------------------------