golang社工库 数据扫描程序

https://github.com/xiaojiong/scanfile

演示站点: http://www.weigongkai.com/   7G数据 2s完成扫描

package scanfile

/*
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int IndexStr(char *haystack, char *needle,unsigned int begin) {
 char *p = strstr(haystack+begin, needle);
 if (p)
 return p - haystack;
 return -1;
}

int IndexChar(char *haystack, char c,unsigned int begin) {
 char *p = haystack = haystack + begin;

 while(*p != ‘‘) {
 if(*p == c) {
 return p - haystack;
}
++p;
}
 return -1;
}

int LastIndexChar(char *haystack, char c,unsigned int begin) {
 int len = strlen(haystack);
 if(begin > 0) {
 if (begin > len) {
 return -1;
}
 } else {
 begin = len - 1;

}

 haystack +=begin;
 while(1) {
 if(*haystack == c) {
 return begin;
}
 if(begin == 0) {
 return -1;
}
--haystack;
--begin;
}
 return -1;
}
*/
import"C"
import"unsafe"

func strScan(str *string, key *string, counter *Counter) []string {
 begin := 0
 CStr := C.CString(*str)
 Ckey := C.CString(*key)

 defer func() {
C.free(unsafe.Pointer(CStr))
C.free(unsafe.Pointer(Ckey))
}()

 var res []string

 for {
 var index int = 0
 if index = int(C.IndexStr(CStr, Ckey, C.uint(begin))); index == -1 {
break
}
 var startIndex int = 0
 if index > 0 {
 if pos := int(C.LastIndexChar(CStr, ‘n‘, C.uint(index))); pos != -1 {
 startIndex = pos + 1
}
}
 var endIndex int = len(*str)
 if pos := int(C.IndexChar(CStr, ‘n‘, C.uint(index))); pos != -1 {
 endIndex = pos + index
}
 begin = endIndex

 if counter.IsMax() {
break
}
 res = append(res, (*str)[startIndex:endIndex])
counter.Add()
 if begin == len(*str) {
break
}
}
 return res
}
package scanfile

import (
"io"
"os"
"sync"
)

var LineFeed = byte(‘n‘) //文本换行符标识
var BufSize = 1024 * 1024 // buf大小

func Scan(files []string, searchStr *string) string {

 var result ScanResult
//计数器
 counter := InitCounter(10)

//扫描结果输出通道
 out := make(chan *FileRes, 10)

 fileCount := len(files)

 for i := 0; i < fileCount; i++ {
 go ScanFile(files[i], searchStr, counter, out)
}

 for i := 0; i < fileCount; i++ {
result.AddFileRes(<-out)
}

result.AddCounter(counter)
 return result.ToJson()
}

func ScanFile(fileName string, searchStr *string, counter *Counter, out chan *FileRes) {
 //文件 IO
 fileContentChan := fileRead(fileName, counter)

 fileRes := InitFileRes(fileName)

 //使用多路复用 wg防止线程泄漏
 wg := sync.WaitGroup{}
 for i := 0; i < 3; i++ {
wg.Add(1)
 go func() {
 for {
 if text, ok := <-fileContentChan; ok {
 if counter.IsMax() {
//清空未读取channel
clearFileContentChan(fileContentChan)
break
 } else {
 if counter.IsMax() {
break
}
 rs := strScan(text, searchStr, counter)
 for i := 0; i < len(rs); i++ {
fileRes.Add(rs[i])
}
}
 } else {
break
}
}
wg.Done()
}()
}
wg.Wait()
 out <- fileRes
}

func clearFileContentChan(c chan *string) {
 for {
 if _, ok := <-c; ok == false {
break
}
}
}

func fileRead(fileName string, counter *Counter) chan *string {
 fileContentChan := make(chan *string, 5)
 go func() {
 fh, err := os.Open(fileName)
 if err != nil {
panic(err)
}

//异常处理
 defer fh.Close()

 buf := make([]byte, BufSize)

 var start int64
 fh.Seek(start, 0)
 for {
 //超过计数器最大返回值 跳出程序
 if counter.IsMax() {
break
}
 n, err := fh.Read(buf)
 if err != nil && err != io.EOF {
panic(err)
}
 if n == 0 {
break
}

 l := lastByteIndex(buf, LineFeed)
 content := string(buf[0 : l+1])
 start += int64(l + 1)
 fh.Seek(start, 0)
 fileContentChan <- &content
}
close(fileContentChan)
}()
 return fileContentChan
}

func lastByteIndex(s []byte, sep byte) int {
 for i := len(s) - 1; i >= 0; i-- {
 if s[i] == sep {
 return i
}
}
 return -1
}
时间: 2024-07-31 17:10:26

golang社工库 数据扫描程序的相关文章

社工库杂谈

"社工库"这个词很多人并不陌生,而且也有越来越多的新闻开始提及社工库,比如:1. 2016年3月,江苏淮安公安机关网络安全保卫部门成功侦破一起侵犯公民个人信息案,抓获犯罪嫌疑人8名,捣毁国内最大的网络社工库"K8社工库"(www.k8sec.com),查获公民个人信息20亿条.2. 2016年12月,南都记者700元就买到同事行踪,包括乘机.开房.上网吧等11项记录,很多数据源自社工库. 社工库这个产业链一直很火爆,不过国家也在打击,搜索"社工库"

如何抵御社工库类的黑客攻击?在明文密码已泄露的情况下保护自己?

说到社工库,现在很流行,数据也越来越庞大.详细,其威胁程度日愈严重. 其中威胁最高的就属密码库了,也是数量最大,影响范围最广的. 密码库主要来源就不说了,各种拖库-- 其中密码形式主要分这几种: 第一种是未加密的明文密码,威胁程度最高.(不得不说这种储存明文密码的站点有多么的二逼!更可悲的是这种站点有很多!!) 另一种是加密过的密码密文,威胁程度视加密等级而定. 第三种是破译成本很低的密码密文,例如仅一次MD5,等低强度加密算法,威胁程度最高. 其中无法破译的密文,情况还好点,暂时没什么大的影响

社工库源码大全(转)

部分源码存在云盘里,请根据下载名对应下载. searchku社工库源码 本程序采用ThinkPHP框架开发.框架在系统层面提供了众多的安全特性,确保你的网站和产品安全无忧.这些特性包括: XSS安全防护表单自动验证强制数据类型转换输入数据过滤表单令牌验证防SQL注入图像上传检测 https://github.com/fengxuangit/searchku ASWQL社工库源码 https://github.com/Mr9esx/ASWQL Sky_Sgk社工库源码 导入sky.sql修改网站用

使用ELK搭建社工库

https://mp.weixin.qq.com/s?__biz=MjM5MDkwNjA2Nw==&mid=2650373776&idx=1&sn=e823e0d8d64e6e31d22e89b3d23cb759&scene=1&srcid=0720BzuzPl916oZWVGfiwduR&key=77421cf58af4a65382fb69927245941b4402702be12a0f1de18b1536ac87135d4763eab4e820987f0

中国寒龙反网络病毒联盟官网www.hackerschina.org更新公告。社工库更新公告。

大家好欢迎使用中国寒龙反网络病毒联盟在线平台. 本平台为国际公益网站SEC平台 在这里本站近期更新的社工库包括:天涯数据 乌云网会员数据 南宫数据 中南股份数据 QQ数据 和某住址社工MM数据 以及个人数据  如果再本站搜索不到您想要的资料说明本站未曾更新您相关的数据资料 不过在此您对本站搜索关键字的使用需要有一定的技巧设置如:搜索 人名字  QQ号  手机号 身份证号等等产品序列号等等,本产品序列号和商家号只供搜索中南股份和南宫的数据.谢谢使用本站. 另外本站在年底期间将会升级服务器,,升级期

SoYun社工库最新源码以及审计出的漏洞报告信息

本文作者:浅蓝 前段时间有人发过搜云的源码,都好长时间了. 这次我放出个最新的. 是在他换模板之前的源码.(现在的搜云后端基本没什么变化 换了个模板而已) 同时审计出来了一些漏洞.. 我里面的数据库配置信息等重要敏感信息换成了"马赛克" 以下附上审计出的漏洞 1.user.ph#sql注入 265行 $card = $_POST['card']; if ($_POST['card']) {     $sql = "select * from alipay where card

应用安全 - 社工 - 大数据 - Fofa - 汇总

搜索语法 title=”abc” header=”abc” body=”abc” domain=”xx.com” host=”.xx.cn” port=”443” ip=”1.1.1.1” protocol=”https” city=”Beijing” region=”Zhejiang” country=”CN” cert=”xx.com” 高级搜索 title=”powered by” && title!=discuz title!=”powered by” && bod

社工数据搜索引擎搭建

作者:le4f http://le4f.net/post/post/build-social-engineer-evildata-search-engine 如何设计搭建一个社工库 从初起设计一个社工库,到现在的Beta,前前后后零零整整花了不下一个月的时间,林林总总记录下来,留给需要之人 泄露数据库格式不一,长相奇葩,因需将用户名.密码.邮箱.哈希等信息按表分列入库,故整理数据是很耗时间的一步 整体架构 选择了Debian x64+Mysql+Mysqlcft+Sphinx+Nginx+PHP

如何防御黑客的社工?

首先,这里基于社会工程学的攻击该怎么理解?这将是一个讨论的前提. ——————————————————————我想利用社工进行的攻击就是基于对人性的分析理解而展开的攻击,而不再是基于对机器对编码的理解而进行的解密.规则突破等. 据我所知,很多很多能提权也就是能黑掉小至个人账户大到企业内网的黑客是不需要就编码进行过多分析的,甚至有些人并不具备编码能力.然而,事实是,他们真的把你黑了,把你眼中高大上的企业黑了. 所以基于社会工程学的攻击到了什么程度?——————————————————————答案是