V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
beimenjun
V2EX  ›  分享发现

💢 某 v2er 做的 App 确实极大可能是基于 localsend 改的

  beimenjun · 186 天前 · 12358 次点击
这是一个创建于 186 天前的主题,其中的信息可能已经有所发展或是发生改变。

起因

这个帖子: https://v2ex.com/t/1052041

我看了下 Repo ,然后说:“你的 Thanks to 部分不加入 localsend 吗?”

OP @LuLiangDev 表示:

@[另外一个 v2er] 不是啊,哪里看出来是 localsend 改的?

@beimenjun 这是什么说法呢。为何要 Thanks to localsend ?

个人想法

在一个开源项目上改进没啥大不了的,本身开源项目就是允许别人修改的。

但是不肯承认是不是吃相差了点啊?

那我现在告诉你为啥要 Thanks to localsend

让我们打开此 App 的 1.0.0 版本 https://github.com/Gentleflow/Airclap/releases/tag/v1.0.0 ,下载 dmg 版本,安装 App ,进入 Applications 文件夹右键刚安装的 App ,选中 “Show Package Contents”,然后我们可以看到一个 Frameworks 文件夹。

依样画葫芦,我们去下载 localsend 的 1.10.0 版本,https://github.com/localsend/localsend/releases/tag/v1.10.0 ,也打开到这个页面。

截图:

可以看到这里的库主要差别在某 App 增加了一些登陆、付费以及数据库相关的。

当然可能有人说这些库都是功能需要的,就算一模一样也有可能。

所以可能有人觉得有没有更强力一点的🔨呢,这时候就可以打开 Info.plist 文件,两个不同的 App ,居然 NSPhotoLibraryUsageDescription 的 key 对应的 value 都是 The app needs photo library access so that the user can select photos to share.

Xcode 是不会提供这个默认选项的,这都得是开发者自己填充的。并且我们可以去 github 搜索 <string>The app needs photo library access so that the user can select photos to share.</string> 这个字符串,得到的搜索结果基本都是 localsend 的 repo 或者 fork 。

这得多巧合啊!

结语

大家自己总结吧。

第 1 条附言  ·  171 天前
来源 #28 的发言,我做个备份

从 Localsend 和 Airclap 的 libapp.so 中提取了源码路径,使用的第三方库基本一致。
重点看了下差异化部分,"package:localsend_app/"开头是 localsend 的源代码路径,"package:airdrop_client/"是 Airclap 的源码路径,存在一些同名文件:

84 条回复    2024-07-09 14:44:18 +08:00
buf1024
    1
buf1024  
   186 天前   ❤️ 4
哈哈,说服力还是不够强。
beimenjun
    2
beimenjun  
OP
   186 天前   ❤️ 1
@buf1024 差不多得了,你还指望我为这种不赚钱的事情做逆向吗?
iyiluo
    3
iyiluo  
   186 天前
原项目是 MIT 协议的,修改后的项目需要保留原作者的版权声明和许可声明
EmbraceQWQ
    4
EmbraceQWQ  
   186 天前   ❤️ 1
刚从那个帖子过来的,这是踢到铁板了,hhhh
beimenjun
    5
beimenjun  
OP
   186 天前   ❤️ 1
@iyiluo 他项目的代码就不是开源的,现在 github 链接其实就是个放广告和发行包的 repo ,更不存在什么声明啥的了。
sucaiking
    6
sucaiking  
   186 天前
图疑似裂了
beimenjun
    7
beimenjun  
OP
   186 天前
@sucaiking

图一 https://imgur.com/fEEa5EI.jpg

图二 https://imgur.com/wGNabBp.jpg

你要不看看 imgur 是不是被你 block 了。
buf1024
    8
buf1024  
   186 天前   ❤️ 1
@beimenjun #2 参考梦弘浏览器,你要把人家底裤都脱了,说服力才强,从某个 repo 抄 plist 还真不能实锤,还真有不少人喜欢 copy plist 文件来修改。
sucaiking
    9
sucaiking  
   186 天前
@beimenjun #7 我看到“Imgur is temporarily over capacity. Please try again later.”的提示。code 是 403 。
那大概是我的网络环境问题。不好意思。
beimenjun
    10
beimenjun  
OP
   186 天前
@buf1024 修改了别人的 plist 还不来 Thanks 一波?
wyl986
    11
wyl986  
   186 天前 via iPhone   ❤️ 16
对那种头像是西装+自以为很帅 pose 的人没有任何好感
buf1024
    12
buf1024  
   186 天前
@beimenjun #10 copy 一个 plist 来修改,来不来 Thanks 真完全看个人,这个和 MIT 关系真不大。关键是他有没有真的是居于 localsend 的源代码进行修改。
gh0st
    13
gh0st  
   186 天前
@wyl986 #11 +1
loshine1992
    14
loshine1992  
   186 天前
只是 plist 和第三方库还不够有说服力
Smilencer
    15
Smilencer  
   186 天前
https://airclipbd.com/

Thanks to Snapdrop...
beimenjun
    16
beimenjun  
OP
   186 天前
@loshine1992 那就看谁有空去逆向咯,反正我觉得我这边的工作已经做完了。
superchijinpeng
    17
superchijinpeng  
   186 天前
抄就完了
yxhzhang185
    19
yxhzhang185  
   186 天前
真是,抄袭别人挣(骗)了点钱,还发帖秀,
coderfox
    20
coderfox  
   186 天前   ❤️ 9
@buf1024 #12 plist 也是源代码的一部分,抄了一样要遵守 MIT 许可证。
microka
    21
microka  
   186 天前
插眼关注一下
w568w
    22
w568w  
   186 天前
@sucaiking #9 imgur 可能把你 block 了。换个节点试试
w568w
    23
w568w  
   186 天前   ❤️ 3
Flutter 逆向难度很大,完全是混淆过的原生代码,而且每代 Dart Compiler 都在变化。想逆向实锤恐怕还要再等等。我也没 Apple 和 Windows 设备,就不掺和了。

一个思路:可以用 Wiresharks 抓包,从广播报文和收发数据报文结构来对比。Plist 的描述信息相同确实问题不大,我做 Flutter 开发又不熟悉 Apple 系的配置的话,确实可能会找一个类似的应用把他的描述复制过来。

开发者能出来自证是最好的,当然他没有举证的义务。实锤之前,别急着上有色眼镜……
w568w
    24
w568w  
   186 天前
再多嘴一句,( LocalSend 的)这些库确实都是 Flutter must-use 的库。你随便找个正经功能的应用,基本都会有。说服力不强。

@w568w #23
wonderfulcxm
    26
wonderfulcxm  
   186 天前 via iPhone
这个 key 相同的 value 我觉得不算强力的证据,就好像很多网站登录后跳转提醒消息都是“登录成功,正在跳转到 xxx”,这也不能说就是抄袭吧,有嫌疑而已。
Puteulanus
    27
Puteulanus  
   186 天前
@w568w 在 GitHub 的搜索里能看到 LocalConnect 和 whisper 这俩也确实是这么做的。。
zaidawesterfield
    28
zaidawesterfield  
   186 天前   ❤️ 28
从 Localsend 和 Airclap 的 libapp.so 中提取了源码路径,使用的第三方库基本一致。
重点看了下差异化部分,"package:localsend_app/"开头是 localsend 的源代码路径,"package:airdrop_client/"是 Airclap 的源码路径,存在一些同名文件:

beimenjun
    29
beimenjun  
OP
   186 天前
@wonderfulcxm 这个如果是几个字母也就算了,但是整句是这样的:

The app needs photo library access so that the user can select photos to share.

你看一遍再打,都不一定能打出一样的。
tjsdtc
    30
tjsdtc  
   186 天前   ❤️ 4
@wyl986 就是论事就好,攻击别人的长相、审美没有必要
yyf1234
    31
yyf1234  
   186 天前 via iPhone   ❤️ 1
@zaidawesterfield 同名文件确实比较可疑,git 搜了几个特征比较强的文件名,都跟 localsend 有关,
file_path_helper.dart
sending_file.dart
receiving_file.dart
wonderfulcxm
    32
wonderfulcxm  
   186 天前 via iPhone
@beimenjun 说实话,很多 app 都 copy 对手界面上的提示语,但复制粘贴别人提示算抄袭吗?我觉得有点狭隘了,要证明复制核心代码才是实锤。
w568w
    33
w568w  
   186 天前
@zaidawesterfield 这基本可以确定了,看看 @LuLiangDev 怎么辩解吧。哪有源码目录结构都一样的。
hccsoul326
    34
hccsoul326  
   186 天前   ❤️ 1
事实证明 厚脸皮确实可以赚钱的
w568w
    35
w568w  
   186 天前   ❤️ 5
beimenjun
    36
beimenjun  
OP
   186 天前
@wonderfulcxm 你觉得不算那就你觉得不算。你也可以继续看其他人回复,上面的文件结构怎么样也不该这么类似吧。
seu
    37
seu  
   186 天前   ❤️ 2
源码目录都一样 名称都一样 这不妥妥的文抄公
DemoJameson
    38
DemoJameson  
   186 天前
@w568w #35 插眼
wonderfulcxm
    39
wonderfulcxm  
   186 天前 via iPhone
@beimenjun 那是另外一个证据,我不清楚,可以另外讨论,比如是不是使用了相同框架,我只说 copy 字符这个事不能作为呈堂证供,更不能说是实锤。
bokey
    40
bokey  
   186 天前
这个跟 landrop 差不多的东西吗?
yeelone
    41
yeelone  
   186 天前
从 plist 确定不能说明什么,我之前开发过一个应用,我也不知道怎么描述我自己应用比较好,就直接去抄了同类型的应用的文案. 这主要是我自己懒得去想文案.
huang9
    42
huang9  
   186 天前
本身 localsend 也是 MIT 许可 ,可以用于抄写代码用于盈利,不知道为啥死不承认呢
kaedea
    43
kaedea  
   186 天前 via Android   ❤️ 2
@wyl986 中国优秀程序员画像:二次元头像 + 熟练的网络技术
xiaoshan5733
    44
xiaoshan5733  
   186 天前
"The app needs photo library access so that the user can select photos to share."这个描述没觉得不妥啊,就是那种很通用的文案。

就拿我写 reactnative 来说,一般都会有个通用文案参考的: https://docs.expo.dev/versions/latest/sdk/imagepicker/#example-appjson-with-config-plugin
beimenjun
    45
beimenjun  
OP
   186 天前
@xiaoshan5733 是很通用,但是通用的表达除了这一种还有千万种。

你在 github 上如果只搜这一段,只会找到 localsend 及其 fork 这么使用。
xiaoshan5733
    46
xiaoshan5733  
   186 天前
@beimenjun 哈哈哈,那就不知道了,不太了解 flutter 一般是怎么用的,写 flutter 的 v 友可以来说说看
iOCZS
    47
iOCZS  
   186 天前
我要是这🐦,我也集成 local send ,只不过我会开源,大家又不是傻子,打肿脸充胖子没意思
cat
    48
cat  
   186 天前
这帖子热度这么高,短时间内这么多回复和顶,为啥掉到 R2 首页最后一位了 🤔
beimenjun
    49
beimenjun  
OP
   186 天前
@cat 可能因为我的账户是被制裁的账户,我的回复花费金币都比别人多。
body007
    50
body007  
   186 天前   ❤️ 1
这个项目作者认为大家不知道 localsend ,也不主动提 localsend (怕大家用免费的 localsend 不买他的产品)。以为发帖可以推广一波,结果弄巧成拙。好奇买他产品的人现在什么想法,就像百度搜索的 7z 、vscode 下载要收费的软件一样让人反感
maleclub
    51
maleclub  
   186 天前 via Android
笑死,大型翻车现场,这下棺材板都被你掀起! Beautiful 😍
chendl111
    52
chendl111  
   186 天前
支持正义楼主
IvanLi127
    53
IvanLi127  
   186 天前   ❤️ 1
话说,自从我见过 localsend 后,这类软件好像越来越多了...
jiezaichan
    54
jiezaichan  
   186 天前
持续关注
Feobe
    55
Feobe  
   186 天前
@zaidawesterfield 请问这是什么文档对比工具?谢谢。
bluedawn
    56
bluedawn  
   186 天前 via iPhone
刚刚去看了一眼 App Store 就觉得这不是和 localsend 完全一致我为什么不用免费的
zaidawesterfield
    57
zaidawesterfield  
   186 天前
vaynecv
    58
vaynecv  
   186 天前
支持,大胆质疑,小心取证
持续关注
monkeylmj
    59
monkeylmj  
   186 天前
持续关注,如果证明是抄的,后续有什么手段么
uiosun
    60
uiosun  
   186 天前
@buf1024 纯调侃:底裤被扒下来,那也是致敬,都是作者一个代码一个代码复刻上去的,哪里抄了,一直是这个样子好吧,😂
caocong
    61
caocong  
   186 天前
@IvanLi127 说明本地跨平台传文件确实是刚需,我就写了一个基于 webrtc 纯 web 的共享文字文件屏幕的小工具团队内部用,确实方便
gooooood
    62
gooooood  
   186 天前
localsend yyds.
Torpedo
    63
Torpedo  
   186 天前   ❤️ 1
用别人代码没什么,但是你不安证书来就过分了。其实就感谢一下就行了 ,这都不愿意
twogoods
    64
twogoods  
   186 天前
看着也没有什么比 localsend 更强的功能啊,用开源的不香吗
wk333
    65
wk333  
   186 天前   ❤️ 1
从 0 到 1 难,从 1 到 1.01 真快啊
horizon
    66
horizon  
   186 天前
@twogoods #64
有的人不知道
信息差
其实我觉得没啥,本质上这是销售能力。。
mgrddsj
    67
mgrddsj  
   186 天前
@IvanLi127 #53 其实一直有这样的需求和相关的软件,只是 LocalSend 火了之后流行做开源的跨平台文件传输工具而已。以前 Android 4 时代就有很多这类闭源商业软件了,我记得的有快牙、茄子快传 (Shareit)、Airdroid…
othercat
    68
othercat  
   186 天前   ❤️ 1
偶然看到这篇,好奇做了一个实验:

我把 Mac App Store 目前的 1.2.0 版本的 Airclap ,app 里面所有 Frameworks ,全部复制到我 1.14.0 的 LocalSend app 进行取代,见图 1
https://www.dropbox.com/scl/fi/6gzbwgvdoauktcsc7b5ts/LocalSend-with-Ariclap-Frameworks-20240625-121141.png?rlkey=69aw9r81c7krxbkd4c36rzpio&dl=0

然后直接打开这个复制后的 LocalSend app ,就神奇的得到了一个 1.14.0 版本的 Airclap 😂 ,见图 2
https://www.dropbox.com/scl/fi/tckxnniqo7sf1mk1q42br/LocalSend-with-Ariclap-Frameworks-20240625-120908.png?rlkey=d3utc61mle70b1lax5lkp9nh6&dl=0

只能说,很有趣~
othercat
    69
othercat  
   186 天前
不好意思,上面两张图顺序贴反了,不过不影响结论~
guanzhangzhang
    70
guanzhangzhang  
   186 天前
@wyl986 我这种截图剧情里的图呢
szyp
    71
szyp  
   186 天前   ❤️ 1
@wyl986 额,你这样不是在开地图炮吗
w568w
    72
w568w  
   185 天前
回声:

从 @LuLiangDev 的 GitHub 主页 [1] 可以看到其昨天向 Gentleflow/Airclap 和 lex-1919/airclap-landingpage 各提交了一次 commit 。然而,分别点进去后发现这两个仓库最后提交时间均为两天前,昨天并没有提交 [2],推测其昨天看到消息后回滚了最后一次 commit 并 force-push 。

目前,其在 GitHub 可查到的最后一次活动是 6 月 23 日 12:03 ,向 lex-1919/airclap-landingpage 提交了 Pull Request [3],该仓库目前禁止非协作者评论。

在 V2EX 和 Airclap 反馈平台最后活动都是一天前 [4, 5]。官方 Discord 目前仍在活跃(收割)中。

[1] https://github.com/LiangLuDev?tab=overview&from=2024-05-01&to=2024-05-31
[2] https://github.com/lex-1919/airclap-landingpage/commits?author=LiangLuDev&since=2024-06-24&until=2024-06-25
[3] https://github.com/lex-1919/airclap-landingpage/pull/1
[4] https://www.v2ex.com/member/LuLiangDev
[5] https://airclap.canny.io/feedback/p/ios-transfers-dont-work
othercat
    73
othercat  
   185 天前   ❤️ 1
我把最新的发现更新在了这个帖子

https://v2ex.com/t/1052440

我觉得 Airclap 代码关键部分可能不是基于 LocalSend 改的。
misaka20
    74
misaka20  
   185 天前
这两点说服力一般
fyxtc
    75
fyxtc  
   185 天前
连个感谢都不愿意写,估计是怕大家知道 localsend 之后全去用 localsend 了,发现 localsend 免费用起来也没差可能还更用好,所以各种主页根本不敢写这个名字,真恶心啊
ClosureEleven
    76
ClosureEleven  
   184 天前
这个帖子沉了?作者也没任何回应
beimenjun
    77
beimenjun  
OP
   184 天前 via iPhone
@ClosureEleven 时间久了的帖子自然会沉。很正常。

作者在 Reddit 和 Discord 上继续销售呢。
fengfuliu
    78
fengfuliu  
   183 天前
作者直接把 issue 这一栏关闭了
beimenjun
    79
beimenjun  
OP
   183 天前
@fengfuliu 笑死人了。
w568w
    80
w568w  
   182 天前
@fengfuliu 本来我还期待是误会,这下好了。

某些国人的下限低到令人发指。
Damnever
    81
Damnever  
   174 天前
关 issue 可还行,看到这个心情复杂 https://www.producthunt.com/posts/airclap
beimenjun
    82
beimenjun  
OP
   173 天前 via iPhone
@Damnever 欢迎来到现实世界。

我其实态度很明确,敢做不敢当者我唾弃。至于他爱怎么推广怎么推广。不影响我对这事的态度。
beimenjun
    83
beimenjun  
OP
   173 天前 via iPhone   ❤️ 1
我其实没有必要也没可能去跟着一个有问题的产品,然后不停的重复跟别人说:

“不要买他们,他们参考了别人的代码却不承认”

“AirClap is a copycat of LocalSend”

“跨平台传文件?先试试 LocalSend 啊。”

对于想赚信息差的钱的团队,任何企图抹平信息差其实成本是很高的。而且这东西跟屋里发现一只蟑螂一样,有一个这种吃相的团队,往往意味着还有大量吃相比他们差不多甚至更烂的团队愿意和他们合作赚信息差的钱。

这就是我一直说的,我能骂就骂,他们能赚就赚。
beimenjun
    84
beimenjun  
OP
   171 天前
不过还是重申一下,虽然我不会弄个 bot 实时监控这件东西,但是如果我上网冲浪这个倒霉产品又碰到我了,那我可能会免费给它指正一下。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2559 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 04:52 · PVG 12:52 · LAX 20:52 · JFK 23:52
Developed with CodeLauncher
♥ Do have faith in what you're doing.