nemo_go
nemo_go copied to clipboard
想请教一下,这个前端要怎么修改或编写?
是用哪个框架写的前端嘛?
实在抱歉,不擅长前端,用的是传统的beego+模板的方式(Vali Admin的主题)。之前也想做前后端分离(Vue),因为学习成本和时间的原因放弃。
func InitDB() {
GlobalDB = GetDB()
err := GlobalDB.AutoMigrate(&Task{}, &Domain{}, DomainAttr{}, DomainMemo{}, Ip{}, IpAttr{}, IpColorTag{}, IpMemo{}, Organization{}, Port{}, PortAttr{}, PortInfo{}, Task{}, Vulnerability{})
if err != nil {
log.Fatalf("db.Setup err: %v", err)
}
}
这个函数可以初始化数据库,可以代替手动导入nemo.sql。 师傅的test.go真多,用得真爽
@shadow1ng 最近在考虑完善一些功能,包括:重构组织这一块,通过爱企查等接口获取企业的相关信息,将域名和IP进行关联;引入其它一些比较好的指纹库完善指纹信息;域名的CDN、IP的云服务等识别和标记。最近在实战中突然想到,如果fscan能输出JSON的扫描结果,导入到nemo中是不是更妙?
我可以试着弄弄,json output。然后还有个地方可以优化,whatweb、Wappalyzer、httpx都得访问 /,加上截图,得访问四次了。前面3个可以合并一下。http访问后获取到的数据包可以直接放入Wappalyzer识别,不需要重新访问web
我看了下,数据库查询这块,好像查询得有点慢,估计是循环的东西太多了,得简化一下,有时候得查询一分钟,才能出结果。
端口这块,字段数可以弄多一点,一行能存多点东西,把httpx、Wappalyzer的内容放到一行的话,能直观一点,不然很多重复数据
type Port struct {
Id int `gorm:"primaryKey"`
IpId int `gorm:"column:ip_id"`
PortNum int `gorm:"column:port"`
Status string `gorm:"column:status"`
Ip string `gorm:"column:ip"`
App string `gorm:"column:App"` //指纹信息
Title string `gorm:"column:title"`
Service string `gorm:"column:service"`
Protocol string `gorm:"column:protocol"` //http或https
TlsInfo string `gorm:"column:tlsinfo"` //保留tls证书信息
Waf string `gorm:"column:Waf"`
Cdn string `gorm:"column:cdn"`
CreateDatetime time.Time `gorm:"column:create_datetime"`
UpdateDatetime time.Time `gorm:"column:update_datetime"`
}
可以用Http+数据包传入Wappalyzer代替httpx 访问+Wappalyzer访问
resp,err := req.Get(Url)
if err != nil{
return
}
data := resp.Content()
wappalyzerClient, err := wappalyzer.New()
fingerprints := wappalyzerClient.Fingerprint(resp.R.Header, data)
之前主要是把一些基本功能和想法实现,现在的确是还有很多地方可以完善和优化。