V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  gleport  ›  全部回复第 1 页 / 共 3 页
回复总数  51
1  2  3  
2022-02-15 18:19:27 +08:00
回复了 workwonder 创建的主题 程序员 [viaproxy] 我基于 graftcp 封装了一个命令行代理 helper
忘了 makefile 写法了,请忽略😅
2022-02-15 18:07:33 +08:00
回复了 workwonder 创建的主题 程序员 [viaproxy] 我基于 graftcp 封装了一个命令行代理 helper
很不错!不过发现首层目录缺少 Makefile 导致不能执行 `make -C graftcp`,是否忘提交了?
2021-07-07 21:26:12 +08:00
回复了 gleport 创建的主题 分享创造 一种把指定程序的 TCP 流量重定向到代理的方法
@mjikop1231 和 proxychains 的主要差别是支持 golang 的程序。
2021-02-25 09:06:22 +08:00
回复了 iceorange 创建的主题 程序员 cproxy: 使用简单的 Linux per app 透明代理
回应一下楼主说的 graftcp 每次要起两个程序的问题:graftcp-local 是设计为守护进程方式使用的,"sudo systemctl --now enable graftcp-local.service" 后使用方式和 proxychains 基本一致。
适合用字典树来实现。把这 100 万个词组从 MySQL 读出存进一棵字典树里,不会消耗多大内存。

一百多行左右的核心代码就可以完成了:

```go
package main

import (
"fmt"

"github.com/hmgle/trie-x/go/trie"
)

func main() {
t := trie.New()
t.Insert("yellow wall", 1)
t.Insert("little cat", 1)
t.Insert("brown cat", 1)
t.Insert("yellow dog", 1)
t.Insert("coffee cup", 1)

content := "a little cat is sleeping behind a yellow wall with a yellow dog"
hits := t.ScanContent(content)
for _, hit := range hits {
fmt.Printf("word: %s, offset: %d\n", hit.Word, hit.Offset)
}
}
```

输出:

```
word: little cat, offset: 2
word: yellow wall, offset: 34
word: yellow dog, offset: 53
```
2020-05-06 09:04:42 +08:00
回复了 1and0 创建的主题 Ubuntu ubuntu 有办法让终端走 proxy 吗?
浏览了上面的回复,发现不少人对设置代理这方面存在误解。比如:
设置环境变量 http_proxy=socks5:********。有人提到需要配置 HTTP 协议的而不是 sock5,其实这完全取决于要运行的这个程序认不认,很多软件是支持这种方式的。https://twitter.com/chenshaoju/status/1181780020345233408 这里也提到了。设置环境变量的方法是把选择权完全交给要运行的程序,具有一定局限性。程序读取什么名字的环境变量,怎么转换就是它自己的事情了,有些程序是不支持的。
2020-05-05 14:17:27 +08:00
回复了 1and0 创建的主题 Ubuntu ubuntu 有办法让终端走 proxy 吗?
proxychains 对 Go 编译出来的无效。docker 可以参考 https://github.com/hmgle/graftcp/issues/14
2020-01-16 11:18:35 +08:00
回复了 abu666 创建的主题 问与答 问下大佬们如何通过跳板机连接数据库
之前总结过一些通过跳板机连接 MySQL、Redis 等服务的技巧:
https://hmgle.github.io/wiki/tip/forwarded_tips.html
希望能帮到你。
2019-11-05 18:02:30 +08:00
回复了 qiuyesuifeng 创建的主题 前端开发 让数据库运行在浏览器里? TiDB + WebAssembly 告诉你答案
想问一下楼主编译出来的 TiDB wasm 文件有多大。
我之前刚好也把一个用 Go 写的象棋引擎生成了 wasm 在浏览器运行,动用了 wasm-opt 和 wasm-strip 后,也有 2 MB 多一点,感觉体积还是挺大的。
2019-08-27 13:49:05 +08:00
回复了 namek 创建的主题 问与答 请问 v2 的大佬 我这眼睛是怎么回事啊啊啊
楼主是否有趴着桌子午睡的习惯,眼球可能收到了物理挤压?
2019-01-23 19:23:49 +08:00
回复了 ishiguang 创建的主题 程序员 有办法把 ubuntu18 所有的命令行程序网路走 ss5 代理么?
graftcp
2018-08-06 23:37:56 +08:00
回复了 gleport 创建的主题 奇思妙想 一种实现 HTTPS 抓包的方法
楼上列举的部分工具,它们的原理基本一致,有些是和 Charles 一样都是闭源收费软件,基本都需要代理全局流量来达到效果。而这种方式是仅仅影响到需要分析的程序的。我仅仅是提出一种想法,没有这方面需求的话也就没有必要继续了。
2018-08-06 09:57:15 +08:00
回复了 gleport 创建的主题 分享创造 一种把指定程序的 TCP 流量重定向到代理的方法
@lyztonny tsocks 功能类似,但无法实现重定向静态链接程序的 TCP 流量功能,graftcp 对这点做了改进。
2018-08-05 19:32:37 +08:00
回复了 gleport 创建的主题 分享创造 一种把指定程序的 TCP 流量重定向到代理的方法
2018-08-04 12:10:38 +08:00
回复了 gleport 创建的主题 分享创造 一种把指定程序的 TCP 流量重定向到代理的方法
@qf0129 可以的,graftcp-local 启动后,graftcp ssh user@xxx 就可以了。或者:
graftcp bash
在这个新 Shell 里面 ssh user@xxx
2018-08-04 12:08:19 +08:00
回复了 gleport 创建的主题 分享创造 一种把指定程序的 TCP 流量重定向到代理的方法
@lemonda 如果是 PHP 未运行前,可以通过 graftcp 启动一个 Shell, 如: `graftcp bash`,然后在这个新 Shell 内启动 PHP。
如果是已经运行的 PHP,那么 graftcp 目前没有实现对正在运行的进程 attach 进行跟踪。
Linux 里 ptrace 可以跟踪一个没有血缘关系的运行时进程,但需要以 root 权限修改默认的 /proc/sys/kernel/yama/ptrace_scope 值为 0:

sudo su
echo "0" > /proc/sys/kernel/yama/ptrace_scope

需要这个功能的话,可以提一个 issue,我有时间实现一下,有人能 PR 就更好了~
2018-08-04 10:34:30 +08:00
回复了 gleport 创建的主题 分享创造 一种把指定程序的 TCP 流量重定向到代理的方法
@codehz 这里没看明白,是用 Unix domain socket 代替处理 TCP connect 的监听服务吗?
前面应该是我没有说清楚开端口的原因:因为不能通过修改 write buffer 往里面加入更多的数据(否则我们可以直接把 connect 重定向到 proxy, 每次 write/send 之前改写里面的 buffer, 把发送数据转换为 SOCKS5 协议的数据就可以了,不需要连接到现在 graftcp-local 这个中转处理数据的这一步。我之前踩了这个坑:),以为可以通过共享内存的方式为被跟踪的 app 新增一片更大的可读写内存,查了 execve 的手册才知道所有的共享内存在 execve 之前都被解除了),所以需要有一个 TCP server 来处理 app 的 connect 请求,这就是 graftcp-local
开了 2233 这个端口监听的原因。

正如 @1423 提到,graftcp-local 这部分的功能可以合并进 graftcp,如果这样实现的话,为了避免同时运行多个 graftcp 出现端口冲突的情况,每个 graftcp 监听的端口得不相同。这种做法带来的好处很明显,不需要 graftcp-local 了。后期有时间的话,我可能会把 graftcp-local 这部分的功能合并进 graftcp。有好的想法或实现的话,欢迎 PR 哦。

考虑到调用 ptrace 和实现 SOCKS5 客户端的方便性,以及程序体积等因素,用 Rust 实现也许是个不错的选择。
2018-08-03 17:37:08 +08:00
回复了 gleport 创建的主题 分享创造 一种把指定程序的 TCP 流量重定向到代理的方法
@dbw9580 被跟踪的进程再 fork 子进程,子进程也会被跟踪。里面的例子:
./graftcp bash 开一个 shell, 然后在这个 shell 里面运行所有命令产生的 connect 都会被重定向了。因为 ptrace 设置跟踪时加了 PTRACE_O_TRACECLONE 和 PTRACE_O_TRACEFORK、PTRACE_O_TRACEVFORK 标志位。
2018-08-03 17:32:51 +08:00
回复了 gleport 创建的主题 分享创造 一种把指定程序的 TCP 流量重定向到代理的方法
@1423
1. 可以把它们合在同一个程序,但这个程序需要同时能使用 ptrace 及实现 SOCKS5 的客户端功能,而用 C 实现 SOCKS5 客户端的话比较折腾。还有一个原因是要处理 connect() 请求,它必须是一个监听并处理连接请求的 TCP 服务端。如果都嵌入同一个程序的话,就得每一个实例都新开一个新的端口进行监听,否则运行多个 graftcp 端口就冲突了。而每打开一个就新开一个监听端口的话,好像比较奇怪。当然这是可以实现的,这方面可以改进。
2. 只处理 connect, epoll 不需要处理。
从入坑之作《编码的奥秘》到《 CPU 自制入门》造轮子。。。
1  2  3  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   858 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 22:46 · PVG 06:46 · LAX 15:46 · JFK 18:46
Developed with CodeLauncher
♥ Do have faith in what you're doing.