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

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

  beimenjun · 4 天前 · 9763 次点击

起因

这个帖子: 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 。

这得多巧合啊!

结语

大家自己总结吧。

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

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

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

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

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

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

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

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

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

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

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

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

从 @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  
   3 天前   ❤️ 1
我把最新的发现更新在了这个帖子

https://v2ex.com/t/1052440

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

作者在 Reddit 和 Discord 上继续销售呢。
fengfuliu
    78
fengfuliu  
   19 小时 41 分钟前
作者直接把 issue 这一栏关闭了
beimenjun
    79
beimenjun  
OP
   17 小时 4 分钟前
@fengfuliu 笑死人了。
w568w
    80
w568w  
   9 小时 27 分钟前
@fengfuliu 本来我还期待是误会,这下好了。

某些国人的下限低到令人发指。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   911 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 28ms · UTC 20:47 · PVG 04:47 · LAX 13:47 · JFK 16:47
Developed with CodeLauncher
♥ Do have faith in what you're doing.