原始论文和辅助脚本,用于帮助分析互联网 RFC 的安全方面。
本仓库包含一份 RFC 安全审查(以 RFC 的风格撰写),以及多个 python 辅助脚本。这些脚本用于获取底层分析所需的数据,并生成必要的 Cypher(neo4j 图数据库)代码,以支持对 RFC 语料库进行图数据库分析。
本仓库中的脚本仅仅是快速脚本,用于提取白皮书所需的信息,并将其转换为 CSV 格式,以便导入到 neo4j(在此例中)图数据库中。这些脚本在提取的数据方面绝非详尽无遗,因此仅作为示例/模板使用。
要提取 RFC 之间的电子邮件和废弃关系,请在 RFC 语料库上运行以下脚本,这些脚本将生成包含这些关系的 CSV 文件:
https://github.com/m4ttl/RFC-Security-Research/blob/main/RFC%20Email%20Processing/email-Cypher.py https://github.com/m4ttl/RFC-Security-Research/blob/main/RFC%20Precedent%20Processing/parsejsoncypher.py
然后将 CSV 文件导入 neo4j,例如:
MERGE (rfc:RFC {name: csvLine.rfc})
MERGE (email:Email {name: csvLine.email})
CREATE (email)-[:CONTRIBUTED_TO]->(rfc)
对于废弃关系,请按如下方式导入到 neo4j:
LOAD CSV WITH HEADERS FROM 'file:///standalone.csv' AS csvLine
MERGE (rfc:RFC {name: csvLine.rfc, title: csvLine.title})
LOAD CSV WITH HEADERS FROM 'file:///updated_by.csv' AS csvLine
MERGE (rfc:RFC {name: csvLine.rfc, title: csvLine.title})
MERGE (updaterfc:Updaterfc {name: csvLine.updatedby})
CREATE (rfc)-[:UPDATED_BY]->(updaterfc)
LOAD CSV WITH HEADERS FROM 'file:///updates.csv' AS csvLine
MERGE (rfc:RFC {name: csvLine.rfc, title: csvLine.title})
MERGE (updatesrfc:Updatesrfc {name: csvLine.updates})
CREATE (rfc)-[:UPDATES]->(updatesrfc)
LOAD CSV WITH HEADERS FROM 'file:///obsoleted_by.csv' AS csvLine
MERGE (rfc:RFC {name: csvLine.rfc, title: csvLine.title})
MERGE (obsoletedbyrfc:Obsoletedbyrfc {name: csvLine.obsoletedby})
CREATE (rfc)-[:OBSOLETED_BY]->(obsoletedbyrfc)
LOAD CSV WITH HEADERS FROM 'file:///obsoletes.csv' AS csvLine
MERGE (rfc:RFC {name: csvLine.rfc, title: csvLine.title})
MERGE (obsoletesrfc:Obsoletesrfc {name: csvLine.obsoletes})
CREATE (rfc)-[:OBSOLETES]->(obsoletesrfc)
然后,可以使用白皮书中记载的各种查询来查询所需信息,并创建所需的关系连接图。