关于那篇丢手机之后被窃取资金的文章一点感想

发现瞎忙了好长一段时间了,好久没有写博客。深夜随便写点想法吧。

废话少说,放原文链接:一部手机失窃而揭露的窃取个人信息实现资金盗取的黑色产业链。后面会附上原文截图。我本来以为只是个常见的丢手机的事情,但是仔细看了下发现好像问题不是那么简单。

如果你的手机丢失了,你会第一时间做什么?我敢说,对于不少设置了找回手机功能的用户,当中一定有大多数人会选择不挂失手机卡,指望着手机联网上传位置信息来找回它。然而却是这点,导致文章作者不仅没有找回手机,还丢了一大笔钱。

原文太长不看的话,总结文章里的事情来说就是:非营业厅上班时间丢手机后,用户无法彻底挂失手机号码,手机号被嘿铲利用,利用各种薄弱的验证从而窃取资金、骗取小贷。

想想这件事,手机号被多数平台过度信任,并且部分省通信公司允许通过电话解挂使得这场悲剧在当晚始终无法停下来。所以从这个角度看来,手机丢失后,第一反应应该是先补办新卡,直接废了丢失手机上的手机卡,而不是指望着定位来找回手机,否则可能造成更大的损失。如果遇到不能挂失手机号的情况的话,就只能指望着事先设定好的SIM卡的PIN码来救你了。

SIM卡上的PIN码设定后,如果在其它手机上使用,就必须先输入PIN码解锁。通常输错3次PIN码,SIM卡就会锁定,此时需要使用PUK码来解锁。通常输错10次PUK码后,SIM卡就会自动报废。

实话实说,看到这篇文章之前我是真的没想到可以有这种骚操作,而且从刚开始用手机到现在,我一直知道SIM卡上的PIN码但是从来没去用过。而且可以说从来没听说过设置这个东西到底有啥好处,这次真的吓到了,赶紧跑去设置。手上几个手机号默认PIN码都是1234,如果不是建议别乱试了,等下锁卡并且只能去营业厅查询PUK就很尴尬了。

所以,大家应该平时事先设定好SIM卡的PIN码,并且禁止手机在屏幕锁定期间显示通知详情。这样可以一定程度上规避这类问题。

一定程度上指的就是只能防一定程度。@Atum在对这件事的扩展文章给SIM卡上PIN、锁屏不显示通知详情后,你就安全了吗?中提到了:

我指的是手机号嗅探短信嗅探,前者可以捕获周围在网的手机号,后者可以在2G网络下嗅探到某个手机号的短信。因此即便是你在锁屏状态下隐藏了通知详情,即便是你有SIM卡PIN,攻击者仍然可以通过这种技术获取手机的验证码,进而展开相同的攻击。

是的,虽然你用SIM卡的PIN码锁定了手机卡,攻击者不能把手机卡拔下来到别的手机上用;你隐藏了通知详情,攻击者也不能在原来的手机上看到短信内容。但是,GSM嗅探可以不需要解开你手机的情况下,直接抓取短信内容。一旦手机回落GSM制式的网络,就会造成威胁。

来看看三大运营商 ,就目前我个人所知的:

  • 移动:2G网络使用GSM,3G已经退网。
  • 电信:2G网络使用CDMA1X。
  • 联通:2G网络使用GSM,但是已经开始退网。3G网络使用WCDMA。

对于4G网络用户来说,开启VoLTE功能可以在4G网络下通话并且不影响上网。目前4G嗅探可没那么严重,可以放心一点,并且现在三大运营商已经在推广VoLTE了。然而,如果没有开通VoLTE功能,打电话时就会回落2/3G网络:移动/电信会掉到2G,联通会掉到3G(2G还是有可能的)。

就据我所知,当前GSM嗅探难度和成本都很低,CDMA和LTE的门槛都要高很多。

所以,没开通VoLTE时通话、信号差等情况下,移动用户是可能掉到GSM网络上,给攻击者带来嗅探机会的。解决这个问题的办法就是,Android等移动设备的用户可以在设置中直接限制只使用4G网络。iOS设备似乎没办法限制,所以大概……现阶段要么携号转网……要么就……看命吧。

不过iOS用户也有个不错的特有的功能:离线查找。就算手机离线,也能依赖其它iOS设备来上报位置信息。给找回带来了多那么一点点的希望。具体细节不太了解就不多说了。

附原文:

聊聊在家里折腾单线复用的经历

这篇就当作是当时计网VLAN实验的一个真实实践吧。

现在大部分人家里的光猫应该都是光纤/网线/高频入户,然后在弱电箱里有个猫,提供一个宽带口和一个IPTV口(不讨论光猫拨号的话)。这个时候一般得要两根网线从弱电箱里走暗线出去,一根去接路由器(当然要是你的弱电箱很大能塞得下路由器而且信号和散热也还行就不用往下看了),一根去接机顶盒。但是很多家庭里一个地方只穿了一根,不够用的话就得折腾一下,我随便说几个方案:

  • 自己再穿一根线,如果暗管的空间还足够的话。这个比较稳,而且也不难,像这个網路不通怎麼辦|最完整拉網路線教學|自己的網路自己救|禾我一起DIY EP.11【弱電通】,实在不行也可以请人来穿一根。
  • 单线复用,利用VLAN,在这根网线上面承载多项不同子网的业务。好处很明显,物理上不需要动线路了。而且目前内网单口千兆跑几个业务问题也不太大,除非是1000M的宽带这种会跑不满,不然应该都没有什么问题。
  • 如果机顶盒支持走无线IPTV(这个比较蛋疼)、光猫支持无线(当然你也用不上这个无线的话),并且能进光猫超级管理页,那么把IPTV的VLAN划到无线上就OK。这个方案可行但我个人不太感冒,毕竟很多时候都只能走2.4GHz频段,拥挤的时候稳定性堪忧。
  • 目前还很小众但是我挺看好的方案:光纤。网线走明线很明显,不太好看,但是光纤不会。TB上面能买到隐形光纤,搭配光纤收发器就可以了,成本不会很高。这里有篇文章提到了vleop mesh用隐形光纤组网达到有线回程-路由器交流。应该也可以买那种有线身补强的然后穿暗管。

这里主要讨论的是第二种方案,并不是我懒得去穿线,而是客厅的暗管很细还穿了2根网线(电视占了一根并且很难改造)和1根同轴电缆,卡得很紧动都动不了(淦,当时他是怎么穿过去的,服了),只好买两个简易的网管交换机来做单线复用了。

其实如果你的路由器可以划VLAN的话(比如自己刷了固件的K2P之类的)或者支持IPTV流量隔离,那买一个其实就够了;另外如果你能完全控制光猫的VLAN,那么应该不需要买了。现在这个时候,家用的简单网管交换机有很多,比较经典的就是网件的GS105E/GS108E(接口数量不一样),价格有点高(不过也有很多洋垃圾)。最近也有人在淘亚马逊(中亚直邮/美亚转运)上面的网件GS908E,价格不错。TP-LINK的TL-SG2005/TL-SG2008(8口这个内置了电源大了点),还有水星的SG105 Pro/SG108 Pro也都可以。

开工之前来复习一下:

比如这几篇:Fundamentals of 802.1Q VLAN Tagging – Cisco MerakiTagged, Untagged, and Native VLANs – Network DirectionWhat is PVID – Jason’s Web SiteHow to configure 802.1Q VLAN on TP-Link Easy Smart/Unmanaged Pro Switches? | TP-Linkdifference between untagged VLAN and PVID。还有问题的话…那就去看802.1Q吧,看完顺便带带弟弟。

首先,我们希望把互联网、IPTV和内网这三个子网隔离开来。我们知道可以通过VLAN来隔离广播域,使得同一个物理交换机上面有多个不互通的子网,除非有三层设备(路由器之类的)做转发。其次,我们希望可以单线复用,就是在一根线上承载不同子网的业务。我们知道Trunk用来连接两个交换机,两个交换机上同一VLAN的设备就可以互相通信,就很符合现在的需求。

VLAN enabled ports are generally categorized in one of two ways, tagged or untagged. These may also be referred to as “trunk” or “access” respectively. The purpose of a tagged or “trunked” port is to pass traffic for multiple VLAN’s, whereas an untagged or “access” port accepts traffic for only a single VLAN. Generally speaking, trunk ports will link switches, and access ports will link to end devices.

Fundamentals of 802.1Q VLAN Tagging – Best Practices

不管是叫access还是untag,trunk还是tag。简言之,我们需要划分3个VLAN,分别承载互联网(光猫Internet到路由器WAN)、IPTV(光猫IPTV到IPTV机顶盒)和内网(和路由器LAN互通)。Trunk(tag)口用来连接这两个交换机,Access(untag)口用来连接设备,它们都用来决定离开这个端口时的动作;PVID来决定一个没有tag的包进入这个端口时应该如何做(不是所有厂商的交换机都有这个,有些是自动的)。

get到上面的点之后,就可以开工了。完工后的拓扑大概会是这个样子的,菜鸡本菜不会用Visio只能随便画一个了:

具体两个交换机上接线应该是这样的:

很显然了,两台交换机上的端口1都是Trunk口,然后端口2、端口3、端口45分别设不同的VLAN。如果假定VLAN 10给互联网,VLAN 20给IPTV,VLAN 11给内网,那么交换机A和B的设置应该一样,VLAN应该是这样的:

  • VLAN 10(Internet):端口1设为Tag;端口2设为Untag;
  • VLAN 20(IPTV):端口1设为Tag;端口3设为Untag;
  • VLAN 11(LAN):端口1设为Tag;端口4和5设为Untag;
  • PVID:端口1设为1,端口2设为10,端口3设为20,端口4和5设为11。

这适用于不在弱点箱内的主路由拨号然后通过弱电箱内的暗线共享给其它房间的设备(例如子路由)的场景。缺点也明显,某些地方的链路容易饱和。例如房间内的网线去公网最高就只能500Mbps,但对于我来说不是什么问题。要解决这个问题可以在光猫上拨号然后其它路由做AP,或者类似的方案,需要根据实际情况做取舍。

此时可以接线进行测试了,如果在两台交换机上不同VLAN间不能互相通讯而相同VLAN间可以通讯,那么应该可以开始正常使用了。

如果有任何错误或问题,烦请在评论区指出。不胜感激。

Material Theme UI 更新5.0+后图标包不再有效?

JetBrains全家桶(IntelliJ IDEA、CLion等)开始升级2020.1了,如果你正在使用Material Theme UI插件的话,更新5.0.0+后会发现图标包风格还是原生的样子。并且刚更新后会有小弹窗:

如果去插件介绍页可以看到更新历史中写了:

据此,图标包迁移到了Atom Material Icons – Plugins | JetBrains。可以直接在IDE的插件页中搜索并安装。

JetBrains Quest (March 13, 2020) Write-Up

废话少说,直接上图:

SGF2ZSB5b3Ugc2VlbiB0aGUgcG9zdCBvbiBvdXIgSW5zdGFncmFtIGFjY291bnQ/

看着像是BASE64编码后的

尝试BASE64解码,可以得到:Have you seen the post on our Instagram account?

所以直达https://jb.gg/kotlin_quest。有一段代码,简单阅读后直接改成这样爆破:

fun main() {
    val s = "Zh#kdyh#ehhq#zrunlqj#552:#rq#wkh#ylghr#iru#wkh#iluvw#hslvrgh#ri#wkh#SksVwrup#HDS1#Li#zh#jdyh#|rx#d#foxh/#lw#zrxog#eh#hdv|#dv#sl1"

    for (n in 1..10) {
        for (c in s) {
            print(c - n)
        }
        print('\n')
    }
}

然后第三行是规律的:We have been working 22/7 on the video for the first episode of the PhpStorm EAP. If we gave you a clue, it would be easy as pi.

那么根据提示就很容易搜到What’s Coming in PhpStorm 2020.1 – EAP Series | Season 2020.1 Episode 122/7pi都似乎在提示3.14,确实3分14秒左右画面出现了抖动,于是开到0.25倍:

右下角设置可以调整播放速率

放慢后注意到了,很明显那个homepage的地址变了一下:

homepage那个键值对的值在3分14秒的时候变成了这个

所以访问https://jb.gg/31415926,JetBrains Quest Quiz,是个答题游戏,建议把他家年度报告打开,还有Google。

第一段还好,第二段就不知道他在bb什么了,不过你会发现首字母都大写了,拿出来好像是一句话:.net day call for speakers blog post image hides the next clue。

那么能找到这篇文章JetBrains .NET Day Online 2020 – Call for Speakers – .NET Tools Blog.NET Tools Blog。图片查看源码能看到文件名写了要去下载版本号为201.6303的社区版IDEA,下一步在每日提示里。然后我就不想干了。

可以在IDEA 2020.1 Quest Build Edition – IntelliJ IDEA – Confluence下载并安装。

每日提示可以在主界面的Help->Tip of the Day中触发,打开主界面的时候默认应该也会打开的。看到大家的图是要求斐波那契数列的第50000000项的前4位和后4位。感觉有点奥数题的样子,应该是能找到规律的,另外我感觉递推来爆破应该问题也不大(Google Codelabs,启动!)。

直接搜的话能看到这篇文章The Mathematical Magic of the Fibonacci Numbers,后4位是15000一个周期,前4位似乎没看到?有空再想想吧,先这样了(先糊弄一下)。

JetBrains Quest (March 11, 2020) Write-Up

第二波解谜,可以在https://twitter.com/jetbrains/status/1237694815283879943找到。

原推文

给出了一段字符串:

.spleh A+lrtC/dmC .thgis fo tuo si ti semitemos ,etihw si txet nehw sa drah kooL .tseretni wohs dluohs uoy ecalp a si ,dessecorp si xat hctuD erehw esac ehT .sedih tseuq fo txen eht erehw si ,deificeps era segaugnal cificeps-niamod tcudorp ehT

仔细看一下就会发现是倒序

比较明显是倒序的,先尝试复原:

fun main() {
    val string = ".spleh A+lrtC/dmC .thgis fo tuo si ti semitemos ,etihw si txet nehw sa drah kooL .tseretni wohs dluohs uoy ecalp a si ,dessecorp si xat hctuD erehw esac ehT .sedih tseuq fo txen eht erehw si ,deificeps era segaugnal cificeps-niamod tcudorp ehT"
    print(string.reversed())
}

会得到:The product domain-specific languages are specified, is where the next of quest hides. The case where Dutch tax is processed, is a place you should show interest. Look hard as when text is white, sometimes it is out of sight. Cmd/Ctrl+A helps.

比较明显:

MPS

来到MPS: The Domain-Specific Language Creator by JetBrains,能发现这里有个:

搜索Dutch tax

打开报告,根据提示,全选来尝试看到白色的文字:

全选即可发现有白色的文字

复制出来可以得到:This is our 20th year as a company, we have shared numbers in our JetBrains Annual report, sharing the section with 18,650 numbers will progress your quest.

所以前往JetBrains 2019 Annual Highlights – Celebrating 20 Years!,找了半天没发现哪里有18650,后面才发现原来是这个加起来刚好是18650:

进去后慢慢翻,有个图片:

有一段火星文?可以慢慢看,也可以看看图片的alt属性:

能勉强看出来是:Did you know JetBrains is always hiring? Check out the kareers(careers) page and see if there is a job for you or a quest challenge to go further at least.

在招聘页面能找到这个Fearless Quester在https://www.jetbrains.com/careers/jobs/fearless-quester-356/,但是忘记截图了,现在已经404了,有点尴尬。

一直觉得自己执行力好差啊…还是要想办法做到今日事今日毕才行…

根据提示后续要到Game Development Tools by JetBrains,用科乐美秘技触发,有一个打砖块游戏,打完砖块就出现了: