作者:牙谷牙狗 公众号:最人物(ID:iiirenwu)

















转自:https://mp.weixin.qq.com/s/BSFiLws8QjvZnqvohzJISw
分享个人经验,保留阅读记录,做时间的朋友
作者:牙谷牙狗 公众号:最人物(ID:iiirenwu)
转自:https://mp.weixin.qq.com/s/BSFiLws8QjvZnqvohzJISw
2020年12月3日凌晨三点零七分,广州天河广场天宝阁18楼188房,蛋壳公寓租户钟春源发了人生最后一条朋友圈:
对不起。
后面是两个微信刚上线的(裂开)表情。
此时,其他房间的三位室友都还在梦乡中。半个小时后,离小钟房间最远的舍友起床上厕所,推开门,才发现整个走廊都都是烟。
搜寻一圈后,他发现浓烟是从钟春源房间的门缝,不停地涌出。
他没有小钟密码锁的密码,打不开小钟房门,只能大声拍门喊叫,但是无人回应。他马上叫醒了其他两个舍友,跑到楼下通知了物业保安,并报了警。
十分钟后,警察、医生、消防员先后赶到。他们问小钟舍友,房内是不是少了个人?
这时,他们才发现钟春源已经从18楼一跃而下了。
大家从没想过,这位平时话不多、但并不内向的男孩会选择用自杀,来结束掉眼前的噩梦。
2000年出生的钟春源是惠州人,刚从一所职业技术学院毕业。九月份,他和蛋壳公寓签了一年的租约。
房子本来是三室一厅,按照长租公寓运营商的惯例,蛋壳把客厅隔断成了一个卧室,整个房子塞进去了四个租客。钟春源住的小屋只有十平米,只有衣柜、床、桌子、空调。
因为没有工作,他选择了蛋壳的租金贷,租金加其他费用共计每月1450元,一年总共一万八千元不到。租住在天宝阁的三个月里,他偶尔会出去面试,其他大部分时间窝在屋子里打游戏。舍友说,他其实很努力的找工作了,但一直处于待业状态。
9月的一天,他在朋友圈还发了一个找工作的聊天截图,说:
又想骗我进厂。
这个2000年出生的男生平时喜欢在朋友圈分享游戏,比如英雄联盟、CS:GO,舍友们跟他的交流不太多,对他的评价是:
闷骚。
租下这个小房子没多久,蛋壳公寓暴雷的消息就传来了。舍友们听说很多租户真的被房东赶出去了,也都惴惴不安。
钟的室友回忆,11月25日或者26日,公寓的大门上出现了房东贴的通知,他说自己已经两个月没收到租金了:
限你们看到通知后,一周内搬离本房间。
按照这则通知,最后期限就是12月3日或者12月4日。
在此期间,小钟的舍友收到房东的微信消息,一周后,要么交房租,要么走人。
这样的事情,已经普遍发生在蛋壳的租户中。
2020年1月,蛋壳公寓在美国上市。它把一个为年轻租户准备的实景样板房,搬到了纽交所门口。蛋壳创始人高靖说,他希望为每一个身处异乡的年轻人,提供一个温暖的壳。
根据蛋壳披露的数字,在全国13座城市有42万间房子,至少有50万租客牵涉其中。十个月后的冬天,几万个年轻人或者被迫搬离,或者与房东对峙。
“壳”碎了一地。
钟春源自杀前的一周,室友们没怎么见到他,他们都有工作,都要早起和加班。大家都是通过微信交流的,聊的也都是蛋壳的事。
12月1日的下午,钟春源突然和舍友说,我要回老家了,在这里又要房租又要吃饭,还要水电费。回去打工两个月就能还清租金贷了,到时说要还能随时还:
不影响我征信。
梨视频采访了房东,问让租户搬离的事。房东否认了要求房客搬离的要求:
没有这样的事情,没有。
其实房东自己,又何尝不是受害者。
对于小钟的自杀,目前还没有官方结论。钟春源的纵火是出于什么动机、蛋壳的暴雷是否是压垮他的最后一根稻草,还有待更深入的调查。
如果真的是因为蛋壳,那就是整个暴雷事件中最大的一个悲剧了。
12月4日,就在钟春源下18楼不到24小时后,蛋壳公寓租金贷的合作银行微众银行提出了一个解决方案:蛋壳租金贷客户退租后,与我行签署协议,将退租后蛋壳公寓所欠客户的预付租金,用于抵偿客户在我行的贷款,然后我行结清该笔贷款。
蛋壳租金贷客户不用继续还贷,也能结清贷款。政策落实前,微众银行还保证不催收、不扣款、不计息、不影响信用。
这条让很多蛋壳租户松一口气的安置政策,其实就晚到了一天。
事故发生后,蛋壳的管家联系了小钟的舍友,问他的问题是:
房间是不是出了问题,还要不要续租。
转自:https://mp.weixin.qq.com/s/SkCpYAoJm3I0AiOLFa3fWQ
这两天刘瑜的一篇演讲火了,一些小伙伴可能不知道这人,有那么几年这人挺活跃,写了一套《民主的细节》,我还看了,那时候觉得还不错,后来在美国生活了一段时间,实地体验后,发现她那几本书也同样充满文科知识分子的酸腐味。至于那个演讲,其实还是老调重弹:
孩子压力太大,家长逼得太死,还是要给孩子喘息空间。
还说自己是不战而降的妈妈,自己的女儿,正在势不可挡的成为一个普通人。
每个人的价值排序不同,不是所有人都愿意用舒适、用从容、用轻松去交换成功,而追求舒适、从容、轻松也未必是什么罪过。如果一个人选择“自在”放弃“成功”,这也未必是坏事。
而且说了她的教育观,“说了这么多,我的教育观是什么?其实就是两句话:认识自我、接纳自我。”
大概是这样的,如果大家想看原文,百度“刘瑜 普通人”就能看到。
你可能以为我要反驳她说的。
事实上我觉得她说的每句话都很对,我都同意,但是你问我,我会让我孩子按照她说的这个逻辑来过吗?
不会。
原因只有一个,我不是清华教授。
1 社会有好几个大学
咱们从小接受的教育就是要好好学习,因为将来要去考大学,大学又分了好几种,985、211、普通大学、还有三本,三本上不了还有专科。
但是不少人可能没注意到,这个社会还有不少隐形大学,智力,美貌,家境,关系,每个维度上都有层级,都分成大学、三本和专科。
而且更重要的一点是,很多东西只能是你父母教给你,别人一方面不一定会,就算会也不一定说,比如怎么赚钱这种事,别人怎么可能教你嘛,如果主动教你,基本都是已经不赚钱的技巧,他们跑出来卖铲子了。
不知道啥是“卖铲子”?就是金子已经挖没了,有人把铲子卖掉了。
一般一波行情已经结束,那些赚到钱的人出来把赚钱技巧卖掉,反正也用不着了,这就是卖铲子。这也是为啥我说“如何判断一个行业赚不赚钱?”,你去找找有人卖铲子没,如果开始卖了,说不定已经到头了,如果到处都是卖的,那这个行业基本完了。
所以说,人生的残酷不仅仅是自己的条件,更多的是父母的关系、见识和财富。
智商不太好遗传,或者说不稳定遗传,两口子都是教授,自己孩子去读三本的有的是(此处没有歧视三本的意思)。
但是这不是故事的结尾,这才是开始,毕竟漫长的人生路,高考是唯一一次“无装备受限决斗”,今后的路,那就是拼三代的资源,人家的那些可以遗传的资源就开始起作用了,如果普通人家的娃没考上,东莞工厂等着你。
如果清华教授的娃没考上,先升本,再考研,如果没有导师愿意收,那就父母去打个招呼,每一步程序都是合法的,你能说有问题?
这两天学了个新词,叫“学术近亲繁殖”,说的是大学里有资源的那些人互相提携,理论上两个农民也可以互相提携,可是他们没啥可交换资源,自然也就提携不起啥来。
这一方面是人脉的比拼,同时也是见识的比拼。人家可能考大学没考上,但是可能其他领域已经大学毕业了,只是其他人不知道,还挺高兴暂时领先。
就像早几年那些有钱的小孩大学没考上,于是出国了,这两年你终于知道这个捷径了,人家已经不出国了,因为现在国外花钱读的大学含金量暴跌,人家又开始寻思考研了。
或者说,学历是普通人的唯一敲门砖,对于一些人来说,这只是兜里其中一块砖,万一没握牢,还可以通过其他办法重新弄一块回来,而且每次都比其他人快,等其他人知道了,就已经换了战场。
这些逻辑都是全世界通用的,因为如果某个孩子他父母是业界大拿,你帮了他孩子,能够获得稳定收益,为什么不呢?
而且也几乎没有父母说我能帮到我孩子,但是我就不帮,肯定会出手嘛。人越到后半程,越能发现所谓的各种奋斗目标,其实最后都是为了后代,这种写在基因里的“基本的动机”,会装扮成各种稀奇古怪的想法钻到你脑子里,越到后来越赤裸裸。
也就是说,父母的资源本身就是孩子资源的一部分。而且相互帮衬这个习惯不是中国的,是全世界的,甚至是智人的。
学过英文的话,就知道这些欧美口头禅啥意思吧?
“do me a favor”(帮个忙);
“you own me”(你欠我的);
“we are even”(我们两清)。
这个意义上讲,中文世界反倒含蓄一些,不那么直接,不那么赤裸裸。如果大家想深刻体会美国人是怎么处理人际关系的,依旧推荐《亿万》,看完能颠覆很多大家对美国的固有观念。
当然了,说这个不是想愤世嫉俗要批评社会不公,其实这就是社会的本来面貌,关系、钱、美貌、智力这些东西的本质都是一样的,都是货币,都是可以拿来交易的,在哪个国家都差不多,用《人民的名义》里的话讲,“关系现在不叫关系,叫政治资源”,用川皇的话讲,“这可能就是生活”。
回到文章开始的那个话题,刘瑜作为清华教授,完全可以给自己的娃托底,其他人行吗?你们见过社会上层的光辉亮丽,见过社会基层有多凶残吗?
我发现很多没孩子的人都喜欢说“如果自己有孩子,就让孩子以自己喜欢的方式过一生”。
其实吧,绝大部分家长并不是蠢,也不是有病,之所以天天逼孩子,他们是以自己经历,知道了一个常识,如果以孩子喜欢的方式混,他只能幸福地过十来年,剩下的日子基本就是望不到头的灰暗和无奈。绝大多数人发自内心喜欢的东西都不赚钱,也没啥卵用,如果不提前搞点防身技能,到了社会上就是个被吊打的命,喝奶茶都喝不起网红款。
甚至有人说,逼孩子不如逼自己,问题是绝大部分人到了三十岁,已经基本成型了,逼也没啥用了,孩子还处于可塑期,逼一下效果有加成,今天多读一眼书,将来就可以少看别人一个脸色。
不少人说去国外得了,其实这也是个误区,去国外就解决问题了?朋友圈一堆美国那边的家长,好几个都是妈妈辞职在家看孩子,美国的崛起之道就是残酷的竞争,真以为跑美国就可以躲的过?而且是什么错觉让你以为美国那边的好大学容易申请了?你不想在中国上野鸡大学,去了美国就能接受了?对,还不是考,得申请,那个推荐信的权重非常重。
而且说不定美国那边的娃长大了,世界也彻底变平了,又需要跟东亚怪物房里出来的人一起竞争,到时候你玩的过吗?
绕来绕去吧,你就会发现其实绝大部分家长在“逼孩子”这个问题上并没有什么错。错在家里没有矿,错在父母没资源,所以得去参加残酷的竞争。
基层老百姓逼着孩子上是因为担心孩子跟自己一样了,中产阶级焦虑,那是因为担心阶级掉落。只有搞房地产的老王不着急,他的儿子考不上大学可以去读伦敦大学学院(UCL)嘛,大学没毕业可以给五个小目标,赔二十个小目标爹也可以给打底嘛,又不是出不起,反正已经欠了银行那么多,为啥不多欠点呢。
所以我说,刘瑜站在她的层面说那些话,一点问题都没,我如果哪天不再担心阶层跌落了,我说不定也会像她那么想。但是现在不行,该咋办咋办。
2 “二八定律”在哪都适用
我以前一直以为,这个社会越往上,人应该是越聪明、越厉害才对,毕竟他们是经过层层选拔的。
事实上这些年发现不是,道理我上文说的已经很清楚了,有些人是通过考大学、参加社会大比拼上来的,但是还有很多人他在智力和能力方面连个专科都算不上,他是在别的领域牛逼,这些领域已经是研究生或者博士了,所以被提上来了。
这些别的领域包括但是不仅限于:
家境牛逼;
有特殊资源;
有特殊背景;
某方面有神奇技能。
我给大家举个例子大家就懂了。
前几天跟一大学同学唠嗑的时候他说了一件事,他说他现在在一家审计公司工作,有几个合伙人,还有一头猪。这头猪每天也不来上班,就挂在他们公司名下当合伙人。
说那哥们是头猪,并不是贬义,因为那哥们自己刚一入职就说把他当猪就可以了,反正啥也不会,也不会来上班,但是希望能帮到大家。大家很快就发现这哥们有神奇技能,他能通过父母给公司拉到项目,所以年底这货的奖金反而是最高的,公司也不能没有他。
有些小伙伴可能不太爽,但是这就是这个社会的奇怪运行方式,甚至这种模式一定程度上讲,才是这个社会的本源。
大家可能还见过一些人,跟猪似的,屁也不懂,啥也不会,但是依旧身居高位,我这些年碰到好几次,一开始挺纳闷,后来慢慢弄明白了,这也是圈子。
众所周知,“领导”这玩意有些人是天生的,但是领导是很孤单的,他既要跟下边的人合作,也要跟下边的人对抗,防止下边的人糊弄他,怎么办呢?
没啥办法,只能是搞点小圈子,弄几个人进来,让他们替自己看着场子,领导自己可能不是猪,但是他的小圈子里很可能有那么几头,他经常跟自己的小圈子打交道,时间长了不可避免对这些人非常信任,走哪都带着,等他上去了,那几头猪就跟着上去了。
这也是为啥我前段时间发微博说,很多行业其实是门槛高的离谱,如果你一旦进去了,就发现里边的很多人都在做着猪的事,二八定律在哪都差不多,在哪都是糊涂蛋占大多数。
3 普通人的出头之道
说了半天,可能有小伙伴说,今天文章的格调太阴暗了吧?
其实不是,只是说一下这个社会运行的逻辑,以及告诉大家不要听那些身居高位的人谈成长,人生轨迹不一样,人家的孩子一出生就带着三个大学毕业证,其他人呢?
那普通人永无出头之日了?
那不是,就算在阶级最严酷的古代,我国有科举,欧洲可以通过海外探险给自己弄个爵位什么的,现在这个通道其实要宽的多,尽管有人通过外挂作弊,但是依旧有很多机会。
首先咱们依旧可以通过高考出头,不要跟着那些家里有矿的人起哄,好好研究怎么培养注意力,怎么培养韧性,锻炼好身体,去攻那些艰苦的山头,条件不好还怕苦,那这辈子也就那样了。
不少人问,高考真的能改变人生吗?
如果你起点很低,10000%会改变,读不读大学完全是两条人生路径,别听他们扯什么白领收入还不如瓦工,那你为啥不去做瓦工呢?还不是那活不是人干的而且根本没有任何保障?
那当白领就有保障?
不一定,但是总有那么几阵风吹来,哪怕你是头猪,说不定也上天了,比如我们上文说到的那种领导,组织小圈子的时候说不定把你弄进去了,你的人生就起飞了。
尽管政治不正确,不过社会确实是分层的,越往上,机会越多,稀里糊涂上位的概率也越大。人的一生全靠浪,位置越高风越大,起风了,你可能就飞起来了。
而且我上文也说了,赛道有好多条,说不定其中有一条写着你的名字呢,有人在“人脉”或者“父母”那条赛道上一生下来就本科毕业了,说不定哪条赛道你也早就毕业了,但自己却一无所知,还是要多探索做琢磨。
4 尾声
所有成熟社会都分成三个阶段。
第一个阶段鼓励奋斗,鼓励每个人勤奋,只要奋斗就能翻身,这个阶段我们比较熟,大概从八十年代开始,一直持续到这几年;
接下来就是第二个阶段,几十年的快速发展下来,社会急剧拉开差距,一部分人积累起了巨大的财富和地位壁垒。这些人开始变得云淡风轻,表示一切随缘就可以了,不信你看我,我就不逼我自己,也不逼我家娃,而且我还从某贝借款去旅行。
第三个阶段大家彻底放松了,几乎每个人从一开始就有自己的定位,比如德国那种模式最明显,小孩小学四年级的时候就稀里糊涂做了分流,理论上讲专科和职高可以升大学,其实凤毛麟角,现在越来越多的国家都在搞这种模式。下图来自微博博主“拉瓦轴”。
当然了,这个过程中会有大量的文章提供理论支持,比如告诉你上职高很好,体力劳动也不错,甚至比白领强,但是说这些话的人都会把自己的娃往大学里塞。
这种模式中国这几年有不少人在叫好,可是德国那边批评非常多,认为这种模式撕裂了社会,德国今年不也有不少人在抵制口罩嘛,这些人脑子进水了,心瞎,看不到德国上层都躲村里去了,也看不到德国中层都捂得严严实实,有德国学着说这就是多年撕裂化教育的结果,一部分人正在变回猪。
德国那边也有一些人正在推动教改,不过难度非常大,因为教改之后的受益人群不明显,却会损害一部分人的利益。
我们反复说过,中产不担心解决固化,他们担心的是不够固化,他们最烦基层泥腿子通过硬拼上来抢了本来属于自己娃的位置,他们这些娃身上已经堆了上千万的装备,学区房、无数兴趣班、课外辅导什么的,智力不稳定遗传这事简直是太多人的噩梦。
文末总结一句吧,任何上层社会的人,说自己要随遇而安让孩子做个普通人,这个没问题,如果鼓动别人也跟自己一样,基本没安好心,他们让你干啥你偏不干啥。
转自:https://mp.weixin.qq.com/s/gw48XkNmVbyRIG6kThwcJw
“张小龙、唐岩都是湖南人,投社交就要投湖南的产品经理。”
1
曾李青
“局里这座庙才多大啊?不适合你这样大开大合的性格,你当然应该去外面发展了,天大地大,你这样的有志青年,一定大有可为。”
60万。
“我们每个月都只拿120块工资,他哪里来一千万美金?”
“我们投的。”
刘炽平代表腾讯负责收购工作,曾李青协助执行……
2
张小龙
气质接近……
“难道我就要这样过一生?”
“Foxmail没有商业模式,要加广告,要盈利。”
“为什么非要这样?只要有用户,有情怀就好了。”
“这样的软件,我们一两个月就能做出来。”
“你和团队继续留在广州,而你们的使命,就是把鸡肋的QQ邮箱打造成为中国的hotmail!”
3
唐岩
“这哥们就是一股泥石流……”
他起码能试3次。
“我作为一个互联网公司的CEO,却一行代码也没写过,也不会做设计,不会做销售,不会搞运营,我什么都不会,我就是公司的吉祥物。”
我其实最想做个古惑仔。
“他打我,难道我不还手?!”
4
姚劲波
为什么在纳斯达克敲钟的不是58同城?
“你们走了,我怎么办?”
浩涌,人生苦短,咱们再聊聊呗?
“你先别挖我的人,我们再谈”。
“我已经到你楼下了,你不下来,我就上去。”
5
写在最后
转自:https://mp.weixin.qq.com/s/fkR1PkXhPeCH9OBPvqmPIQ
【导语】:Masscan 是一个批量端口扫描器,程序运行在单机上,每秒传输 1 千万个数据包,可以在 6 分钟之内扫完整个互联网。它是迄今为止,速度最快的端口扫描器。
简介
Masscan 的输入输出类似于 nmap,如果对工具的性能将信将疑,可以手动去尝试一把。
该工具使用异步传输,类似于scanrand、unicornscan 和 ZMap 等扫描器。并且它更加灵活,允许自定义端口和 IP 地址范围。
注意:masscan 使用它自己的 TCP/IP 栈,可能会和其他的端口扫描器冲突。这意味着,你要么使用 —src-ip 选项来配置一个与本地不同的 IP 地址 ,要么使用 —src-port 选项来配置 Massscan 使用的源端口。也可以配置内部防火墙(比如pf或者iptables)将操作系统的其他端口墙在外面。
这个工具免费,但是大家的爱心捐助可以帮助它更好的发展;比特钱包地址如下:
1MASSCANaHUiyTtR3bJ2sLGuMw5kDBaj4T
项目地址:
https://github.com/robertdavidgraham/masscan
在Debian/Ubuntu,使用如下命令安装:
sudo apt-get install git gcc make libpcap-dev
clone https://github.com/robertdavidgraham/masscan git
cd masscan
make
Massscan程序默认在masscan/bin子目录下。如果你想把这个程序安装在系统的其他地方,例如/usr/local/bin,需要自己手动复制。
该项目由大量的小文件组成,可以使用多线程来完成快速构建:
make -j
虽然 Linux 是该工具的主要运行平台,但是它也可以在其他的操作系统上很好的运行。下面是一些其他的构建信息:
Windows w/ Visual Studio: 使用 VS10
Windows w/ MingGW: 使用make
Windows w/ cygwin: 不支持
Mac OS X /w XCode: 使用 XCode4
Mac OS X /w cmdline: 使用make
FreeBSD: 使用gmake
其他系统: 尝试把所有的文件一起编译
如果发包量要超过20万/秒,需要因特尔的网卡,网卡要求10Gbps。除此之外,还需要一个驱动,名字叫PF_RING ZC。要想使用PF_RING ZC,还需要安装下面的组件:
libpfring.so (安装在/usr/lib/libpfring.so)
pf_ring.ko (PF-RING自己的内核驱动)
ixgbe.ko (因特尔10-gbps网卡驱动)
此外,还需要构建libpcap.so文件。
当Masscan探测到网卡为zc:enp1s0时,就会自动切换到PF_RING ZC模式。
这个工具内嵌自测组件,可以自己进行测试:
make regress
bin/masscan --regress
selftest: success!
以上的回归测试涵盖大量的复杂代码,你应该在构建后再尝试。
为了测试工具性能,可以执行下面的命令:
bin/masscan 0.0.0.0/4 -p80 --rate 100000000 --router-mac 66-55-44-33-22-11
选项–router-mac虚拟出来一个假的路由mac地址,所以发送的数据包都在本地,不会跑到互联网上。
你也可以测试offline模式,看看在没有网络开销的情况下,这个程序能跑多快:
bin/masscan 0.0.0.0/4 -p80 --rate 100000000 --offline
在offline模式下,进行性能测试,这个程序就会使用PF_RING,几乎没有网络开销。
这个工具使用类似nmap。比如扫描某网段的一些端口:
# masscan -p80,8000-8100 10.0.0.0/8
以上的命令完成下面3个事情:
扫描10.x.x.x子网,一共160万地址
扫描端口80,还有8000-8100范围内的端口,一共102个
扫描结果可以输出到指定文件
使用–echo,可以看到工具完整的选项列表。命令会抛出当前配置并退出。这个输出也可以用作程序的输入。
echo > xxx.conf masscan -p80,8000-8100 10.0.0.0/8 --
masscan -c xxx.conf --rate 1000
Masscan不仅可以探测端口的开放状态,它也可以完成TCP连接以及和对应端口应用之间进行交互。通过跟应用程序交互,可以获取到简单的banner信息。
这是因为masscan拥有自己的TCP/IP协议栈,跟程序所在操作系统的协议栈是不同的。当本地系统接收到被探测目标的SYN-ACK包时,它会回应一个RST包。但是之前masscan为了获取banner信息而建立的连接,会在此时关闭。
解决这个问题最简单的办法就是,为masscan指定一个IP地址。比如下面的命令:
source-ip 192.168.1.200 masscan 10.0.0.0/8 -p80 --banners --
这个指定的地址必须要在本地地址的子网中,否则不能在其他系统上使用。
在一些场景中,比如wifi,这种操作就不起作用了。在这些场景中,你也可以用防火墙来解决上面连接中断的问题。防火墙会阻止本地的TCP/IP栈看到数据包,但是masscan仍然是可以看到这个数据包的。例如,linux下:
iptables -A INPUT -p tcp --dport 61000 -j DROP
source-port 61000 masscan 10.0.0.0/8 -p80 --banners --
你可以通过修改配置文件,来解决linux和masscan端口冲突的问题。把linux使用的端口划定一个范围:
/proc/sys/net/ipv4/ip_local_port_range
在2018年8月的kali中,这个范围是32768 to 60999,因此,选择的端口应该在这些端口之外。
可以设置一个iptables规则,时间限制到下次机器重启之前。如何保存这个配置取决于你的linux发行版。一般是用iptables-save或者是iptables-persistant。
在Mac OS X和BSD上,也是类似的步骤。可以使用下面的命令来查找这个范围:
# sysctl net.inet.ip.portrange.first net.inet.ip.portrange.last
在FreeBSD和更早的Mac OS版本上,使用如下的ipfw命令:
in sudo ipfw add 1 deny tcp from any to any 40000
source-port 40000 masscan 10.0.0.0/8 -p80 --banners --
在高于MacOS X版本还有OpenBSAD上,使用pf包过滤器。在/etc/pf.conf文件中加入下面一行:
block in proto tcp from any to any port 40000
然后启用防火墙,运行下面的命令:
# pfctrl -E
如果防火墙已经启用,要么重启机器,要么使用下面的命令,重新导入这个规则:
# pfctl -f /etc/pf.conf
Window不会回应RST包,以上的方式都是无效的。但是,masscan仍然可以使用它自己的IP地址很好的运行。因此,如果可能的话,你应该使用为masscan指定IP的方法。
对于比如像心脏滴血漏洞(选项为–heartbleed)的探测,也是banner信息探测的一种,是十分必要的。
虽然masscan对于内网来说十分有效,但是当初设计也考虑到了整个互联网。所以,它可以使用如下的命令,直接扫描整个互联网:
# masscan 0.0.0.0/0 -p0-65535
扫描整个互联网是不好的。一方面,有一部分被扫描的信息资产不会返回有效的信息。另一方面,一些站点会跟踪扫描,禁止你再访问。因此,你要想扫描很多大量的地址,可以设置黑名单或者例外IP范围。如下:
# masscan 0.0.0.0/0 -p0-65535 --excludefile exclude.txt
这只是把扫描结果输出到终端。如果你想把扫描结果保存到一个文件中,使用下面的命令:
# masscan 0.0.0.0/0 -p0-65535 -oX scan.xml
以上命令把扫描结果存放到一个XML文件中。你也可以把扫描结果放进数据库。
但是,这仅仅是默认的扫描速率(100个包/秒)。如果你想加速扫描,使用如下命令:
# masscan 0.0.0.0/0 -p0-65535 --max-rate 100000
上面的命令把扫描速率设置到了10万数据包/秒,这个设置扫描整个互联网的IP,速率大概是每10个小时一个端口。如果想扫描整个端口,那就需要655360个小时。
以上所有的命令都跟nmap兼容。除此之外,还有一些隐形设置选项跟nmap也是一样的。例如:-sS ,-Pn, -n ,–randomize-hosts, –send-eth等。同样的,扫描结果输出的xml文件也是跟nmap兼容的。
当然,masscan跟nmap还有有很多不同的地方。本质上来说,masscan是异步传输的实现方式,这导致它跟nmap有着根本性的区别。
以上命令行的方式比较麻烦。下面有更简单的方式,就是把设置都保存在一个文件中。上面命令的中的设置写到文件中,如下:
# My Scan
rate = 100000.00
output-format = xml
output-status = all
output-filename = scan.xml
ports = 0-65535
range = 0.0.0.0-255.255.255.255
excludefile = exclude.txt
启用以上配置:
# masscan -c myscan.conf
当你重复扫描时,以上的方式将会让扫描更加简单。
默认的,masscan首次启动就会导入配置文件:/etc/masscan/masscan.conf。但之后的配置参数修改都会覆盖之前的默认文件。整个工作都是自动化完成的。
默认的,masscan会产生同样大小的文本文件。同时这个文件也可以很容易的转换成其他格式。下面有五种可以支持的格式:
xml: 使用参数-oX <filename>. 或者使用参数 –output-format xml 和–output-filename <filename>.
binary: 这是masscan内建指令. 它输出的文件更小, 扫描整个互联网可以用这个参数,不至于把硬盘塞满。它还需要解析. 命令选项–readscan将会读取这个二进制扫描文件。使用–readscan再搭配-oX选项就会输出一个xml的扫描结果文件。
grepable: 这是nmap的-oG选项实现的,输出结果很容易被命令行工具解析。只需要使用参数-oG <filename>或者使用–output-format grepable和 –output-filename <filename>.
json: 输出结果保存为json,使用参数-oJ <filename>或者–output-format json 和–output-filename <filename>。
list: 这是一个list,每行一个ip和端口对儿。使用参数-oL <filename>或者–output-format list和–output-filename <filename>. 格式是:
<port state> <protocol> <port number> <IP address> <POSIX timestamp>
open tcp 80 XXX.XXX.XXX.XXX 1390380064
尽管masscan跟nmap从根本上来说是完全不同的,但是开发者尽了最大的努力让namp的用户使用masscan时会觉得比较熟悉。下面是这两款工具之间最重要的两个不同点:
不指定默认扫描端口, 你必须明确扫描端口:-p <ports>
目标主机是IP地址或者IP地址范围, 而不是DNS名或者nmap使用的子网范围(比如10.0.0-255.0-255).
你可以认为masscan的以下选项是长期有效的:
–sS: 只进行SYN探测 (目前是这样,将来会改进)
–Pn: 不首先ping主机,这是异步传输的基本要求
–n: 不进行DNS解析
—randomize-hosts: 完全随机化扫描
—send-eth: 发送原生数据包
如果你想了解其他和nmap兼容的设置,使用下面的命令:
# masscan --nmap
这个程序发送数据包非常快。在windows或者是虚拟机中,可以达到30万/秒的速率。在linux(不是虚拟机)上,可达到160万/秒。速度快到可以摧毁大部分的网络。
注意,这个工具只能用来自己破坏自己的网络。该工具在使用时随机选择目标IP,不应该用来破坏任何一个远程网络。
默认的扫描速率是100数据包/秒。可以使用下面的选项来提高速率到一百万:–rate 1000000。
以下几部分将主要介绍Masscan的设计问题,帮助你了解为什么本工具会有这么强大的性能。感兴趣的同学,可继续往下阅读。
main.c文件包含了main()函数,也包含了transmit_thread()和 receive_thread()函数。这些函数刻意写的比较通俗易懂,且有大量的注释。你可以逐行阅读这些代码来了解这个程序的设计。
masscan是一个异步传输的设计。换句话说,它和nmap的关系就好比nginx和apache的关系。它的发送和接收线程是分开的,相互之间具有极大的独立性。在scanrand, unicornscan和ZMap中也有同样的设计。
由于它的异步性,包允许传输多块,该工具就可以运行多块。
Masscan和其他扫描器之间一个最关键的区别在于它的目标地址是随机的。
最基本的原则是定义一个从0开始的索引变量,在每次探测时,每次增加1。用C语言实现如下:
for (i = 0; i < range; i++) {
scan(i);
}
还必须把索引翻译成IP地址。如果你想扫描所有的私有IP,那么扫描范围如下:
192.168.0.0/16
10.0.0.0/8
172.16.0.0/12
在这个例子中,前64K的索引对应的目标地址是192.168.x.x。然后,后来的160万个索引对应的目标地址是10.x.x.x。最后,其余的索引对应的目标地址范围是172.16.x.x。
上面的例子我们只有3个范围。当扫描整个互联网的时候,实际上会超过100个范围。那是因为你必须设置黑名单还有很多排除在外的子网范围。这个把想扫描的范围分割成了成百个更小的范围。
这就导致程序运行变慢。我们每秒传输100万个包,并且必须每次传输包和探测都需要将索引变量转换成IP地址。我们通过使用二分法来解决这个问题,而且占用很少的内存。包传输在这种速率下,缓存效率开始影响算法效率。
理论上还存在大量更有效的技术手段,但是,在实际应用中,这些手段都因为占用过多内存而导致速度变的更慢。
我们声明一个函数pick(),用来实现把索引转换成IP地址。实现如下:
for (i = 0; i < range; i++) {
ip = pick(addresses, i);
scan(ip);
}
Masscan不仅支持IP范围,也支持端口范围。这意味着,我们需要从IP地址和端口的索引变量中去拿IP和端口。下面是实现:
range = ip_count * port_count;
for (i = 0; i < range; i++) {
ip = pick(addresses, i / port_count);
port = pick(ports, i % port_count);
port);
}
这又增加了代码的另一个负担。在X86架构的CPU上,除法/取模运算指令大约需要90个时钟周期或者30纳秒。当以100万包/秒的速率传输时,每个包仅仅只有100纳秒的时间。我找不到更加优化的方式了。
幸运的是,两个这样的操作可以同时进行。因此,做上面的两个运算不会比做一个增加负担。
事实上,对于上述的运算问题,存在着更优的选择。但是逐一增加索引变量要通过C++实现。实际上,我们需要随机化这个变量。我们要随机化目标IP地址的扫描顺序,否则由于扫描速度过快,会破坏目标网络。我们要均匀的将流量分摊到目标地址上。
我们随机化的方式非常简单,就是加密索引变量。根据定义,加密是随机的,并且在原始的索引变量和输出之间增加一个一对一的mapping。
这意味着,我们线性的完成了这个范围,但是输出的IP地址却是完全随机的。代码实现如下:
range = ip_count * port_count;
for (i = 0; i < range; i++) {
x = encrypt(i);
ip = pick(addresses, x / port_count);
port = pick(ports, x % port_count);
port);
}
这也是一个主要的成本。一旦这个范围值是不可预测的大小,而不是2的倍数,我们就不能用比较节约资源的二进制技术,比如&和^。相反,我们就必须使用%操作符。在我当前的基准下,加密一个变量需要花费40纳秒的时间。
这个架构允许很多比较酷的特性。例如,支持分片。你可以选择5个机器,每个机器设置五分之一的扫描,或者使用范围数/分片数。
分片可以通过多台机器实现,或者单台机器多个网卡实现。如果你想,也可以在一个网卡上分配多个IP地址来实现分片。
或者,你也可以在加密函数上使用一个seed或一个key,以此,每次扫描时,你可以得到一个不同的顺序。比如x = encrypt(seed, i)。
我们也可以通过退出程序来暂停扫描,并且记住当前的i值,之后再重启扫描。在整个开发过程中,我做了很多。我注意到,在互联网扫描时,出现了错误,我就去终止扫描。然后在我修复bug后,再重启。
另一个特点就是重发。数据包在网络传输中有时会丢失,因此你可以接连发两个包。但是,有时会出现一个包丢失,另一个紧跟着的包也丢失的情况。
因此,你想要发送数据的二分之一的副本,这很简单。我们有一个rate变量,这个变量是每秒钟传输数据包的数量,因此重新传输的函数就是在索引的基础上,简单用i+rate即可。
异步传输技术因为解决了C10K问题而被熟知。Masscan的设计是为了下一个量级扩展:C10M问题。
C10M问题的解决方式就是绕过内核。在Masscan中,主要有三种内核绕过方式:
自定义网络驱动
用户模式TCP栈
用户模式异步传输
Masscan可以使用PF_RING DNA驱动器。这个驱动采用直接内存访问的方式传输数据包。数据包传输没有内核的干预,直接从用户模式内存到网络驱动器。
这种方式允许软件以硬件可支持的最大速率传输数据包,即使是一个低速CPU。如果一台电脑上有8个10-gbps个网卡,这意味着,你的传输速度可以达到一亿/秒。
Masscan有它自己内建的TCP栈,这是为了可以从TCP连接中获取banner。这意味着如果电脑有足够的内存,它可以轻易的支持一百万并发的TCP连接。
Masscan没有互斥锁。现代的互斥锁(aka. futexes)主要是用户模式,但是他们都存在两个问题。
第一个问题是,他们造成了缓存链在CPU之间来回跳动;第二个问题是,当存在资源争夺时,他们会做一个系统声明,进入内核。这会杀掉性能。
互斥锁在程序的速度之路上,严重限制了程序的可扩展性。相反,Masscan 使用“环”来同步处理这个事情,比如,当用户模式下的TCP栈在接收一个线程时,这个线程传输的包不能被这个传输线程干涉。
这个代码可以很好的在linux,windows还有mac os X上运行。所有重要位都基于C90标准。因此可以使用微软的Visual Studio 编译。还可以使用Clang/LLVM在Mac OS X上编译,也可以用GCC在linux上完成编译。
windows和Mac上不能设置传输包的数量,只能是默认值30万/秒,然而linux上可以做到150万/秒。不管怎样,都会比你想象中要快。
该项目为脆弱性发现提供了奖金,具体信息查看文件 VULNINFO.md。
这个项目使用了安全函数strcpy_s(),strcpy()函数不安全。
这个项目有自动化单元回归测试。
为了让每个使用端口扫描的人都有种熟悉的感觉,该工具的开发中做了很多的努力,让它的输入/输出更像是nmap。
这个工具由Robert Graham开发。
邮箱: robert_david_graham@yahoo.com
twitter: @ErrataRob
项目地址:
https://github.com/robertdavidgraham/masscan
– EOF –
转自:https://mp.weixin.qq.com/s/b0VCFVc2tOMMaIQh1pgE3w