记一次TL-R479-GPE-AC V4.0 SSH破解

同步于个人博客

高手解法

点击展开 后台打开 诊断模式以启动SSH
echo -n "LAN口12位MAC地址" | md5sum #取前16位作密码
ssh root@YOUR-IP 33400 #注意端口
### 下面是破解过程

手中一台TPLINK TL-R479-GPE-AC V4.0 因无法将WAN与LAN直通,路由器自身只能使用WAN上网,故需破其SSH,因新机,遂不拆之

网上流传导出配置解压,导出后无法解压,7-zip也不识别为压缩文件 此路不通

后从官网找到原始固件 binwalk 解包后发现 /etc/init.d/dropbear 即SSH服务文件

然后发现其服务开启时设置了密码(应该是root)然后偷梁换柱强制修改密码

使用mksquashfs重新压缩上传固件

好! 不知道怎么签名固件 破解失败

固件是无法入手了,便从得知的root密码算法入手

之前已发现打开诊断模式即可开启SSH端口(端口号33400)

在后台打开诊断模式并导出诊断信息

导出后是一个bin文件,使用7-zip打开

拉到最后一行发现MAC地址与系统中显示的WAN地址不一样( 后来才发现这是LAN口的MAC地址 )

便根据研究原始固件得到的算法 – md5 mac地址后取前16位

echo -n "诊断信息的MAC地址" | md5sum #根据MAC算出密码取前16位
ssh root@YOUR-IP 33400 #注意端口

然后一下就进去了 (bushi)

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
好的,让我们分步骤来实现。 首先,我们需要准备一些数据来构建我们的推荐系统。假设我们有一个电影推荐系统,我们将使用电影数据集来构建它。 1. 数据准备 我们将使用 MovieLens 数据集,它包含了大量的电影评分数据。您可以在 https://grouplens.org/datasets/movielens/ 上下载数据集。 下载完数据集后,我们需要解压缩它并将文件移动到我们的项目目录中。我们将使用以下文件: - ratings.csv:包含用户对电影的评分 - movies.csv:包含电影的详细信息 我们将使用 Pandas 库来加载和处理这些文件。运行以下代码: ```python import pandas as pd # 加载数据 ratings = pd.read_csv('ratings.csv') movies = pd.read_csv('movies.csv') # 合并数据 data = pd.merge(ratings, movies, on='movieId') ``` 现在,我们准备好使用数据来构建推荐系统。 2. 朴素贝叶斯分类器 我们将使用朴素贝叶斯分类器来预测用户可能喜欢的电影类型。我们将使用 scikit-learn 库来实现这个分类器。运行以下代码: ```python from sklearn.naive_bayes import MultinomialNB from sklearn.feature_extraction.text import CountVectorizer # 创建特征向量 vectorizer = CountVectorizer(token_pattern=r'\b\w+\b') X = vectorizer.fit_transform(movies['genres']) # 创建朴素贝叶斯分类器 nb = MultinomialNB() nb.fit(X, movies['title']) ``` 这个朴素贝叶斯分类器将基于电影类型来预测用户可能喜欢的电影。我们可以使用以下代码来测试它: ```python # 预测用户可能喜欢的电影 user_genre = 'Action|Adventure|Sci-Fi' user_genre_vec = vectorizer.transform([user_genre]) predicted_movies = nb.predict(user_genre_vec) # 打印预测的电影 print(predicted_movies) ``` 现在我们已经有了一个朴素贝叶斯分类器来预测用户可能喜欢的电影类型,接下来我们将使用 k-means 聚类算法来为用户推荐电影。 3. k-means 聚类算法 我们将使用 k-means 算法来将电影分成不同的群组。我们将使用 scikit-learn 库来实现这个算法。运行以下代码: ```python from sklearn.cluster import KMeans from sklearn.pipeline import make_pipeline # 创建 k-means 管道 pipeline = make_pipeline( CountVectorizer(token_pattern=r'\b\w+\b'), KMeans(n_clusters=5) ) # 训练 k-means 模型 pipeline.fit(movies['genres']) # 预测电影属于哪个群组 predicted_groups = pipeline.predict(movies['genres']) ``` 现在,我们已经将电影分成了不同的群组,接下来我们将为每个用户推荐电影。 4. 推荐系统 我们将使用以下算法为每个用户推荐电影: - 找到与用户最相似的其他用户 - 从这些用户喜欢的电影中选择一个群组 - 从该群组中选择一部电影,该电影没有被该用户评分过 让我们逐步实现这个算法。 首先,我们将通过计算每对用户之间的相似度来找到与用户最相似的其他用户。我们将使用 Pearson 相关系数来计算相似度。运行以下代码: ```python import numpy as np # 计算每对用户之间的 Pearson 相关系数 def pearson_similarity(user1, user2): # 找到两个用户共同评分的电影 movies1 = ratings[ratings['userId'] == user1]['movieId'] movies2 = ratings[ratings['userId'] == user2]['movieId'] common_movies = set(movies1).intersection(set(movies2)) # 如果两个用户没有共同评分的电影,则相似度为 0 if len(common_movies) == 0: return 0 # 找到两个用户共同评分电影的评分 ratings1 = ratings[(ratings['userId'] == user1) & (ratings['movieId'].isin(common_movies))]['rating'] ratings2 = ratings[(ratings['userId'] == user2) & (ratings['movieId'].isin(common_movies))]['rating'] # 计算 Pearson 相关系数 return np.corrcoef(ratings1, ratings2)[0, 1] # 找到与用户最相似的其他用户 def find_similar_users(user): similarities = [] for other_user in ratings['userId'].unique(): if other_user != user: similarity = pearson_similarity(user, other_user) similarities.append((other_user, similarity)) # 按照相似度排序 similarities.sort(reverse=True, key=lambda x: x[1]) return similarities[:10] ``` 现在我们已经找到了与用户最相似的其他用户,接下来我们将选择一个群组,该群组包含这些用户喜欢的电影。 ```python # 找到喜欢某个电影的用户所在的群组 def find_group(movieId): genre = movies[movies['movieId'] == movieId]['genres'].values[0] group = pipeline.predict([genre])[0] return group # 找到从某个群组中选择一部未评分电影的用户 def find_movie(user, group): # 找到用户已经评分过的电影 rated_movies = ratings[ratings['userId'] == user]['movieId'] # 找到群组中所有电影 group_movies = movies[predicted_groups == group]['movieId'] # 从群组中选择一部未评分电影 for movie in group_movies: if movie not in rated_movies: return movie return None ``` 现在我们已经准备好为每个用户推荐电影了。运行以下代码: ```python # 为每个用户推荐电影 for user in ratings['userId'].unique(): # 找到与用户最相似的其他用户 similar_users = find_similar_users(user) # 选择一个群组,该群组包含这些用户喜欢的电影 group = None for other_user, similarity in similar_users: rated_movies = ratings[ratings['userId'] == other_user]['movieId'] for movie in rated_movies: group = find_group(movie) if group is not None: break if group is not None: break # 从该群组中选择一部电影,该电影没有被该用户评分过 movie = find_movie(user, group) # 打印推荐的电影 if movie is not None: title = movies[movies['movieId'] == movie]['title'].values[0] print(f"User {user} may like: {title}") ``` 现在我们已经为每个用户推荐了一部电影,接下来我们将生成关系提取(知识图谱)的代码。 5. 关系提取(知识图谱) 我们将使用 spaCy 库来生成关系提取。运行以下代码: ```python import spacy # 加载英文模型 nlp = spacy.load('en_core_web_sm') # 定义实体类型 entity_types = ['PERSON', 'ORG', 'GPE', 'PRODUCT'] # 生成关系提取 def extract_relations(text): # 将文本作为 spaCy 文档处理 doc = nlp(text) # 找到所有实体 entities = [] for ent in doc.ents: if ent.label_ in entity_types: entities.append(ent) # 生成所有实体之间的关系 relations = [] for i in range(len(entities)): for j in range(i+1, len(entities)): relation = (entities[i].text, entities[i].label_, entities[j].text, entities[j].label_) relations.append(relation) return relations ``` 现在我们已经准备好使用提取的关系来构建知识图谱了。我们将使用 NetworkX 库来实现这个知识图谱。运行以下代码: ```python import networkx as nx import matplotlib.pyplot as plt # 创建空的知识图谱 graph = nx.Graph() # 添加实体和关系 for row in data.itertuples(): title = row.title genres = row.genres.split('|') for genre in genres: graph.add_node(genre) graph.add_edge(title, genre) text = row.title + ' ' + row.genres relations = extract_relations(text) for relation in relations: graph.add_node(relation[0], type=relation[1]) graph.add_node(relation[2], type=relation[3]) graph.add_edge(relation[0], relation[2], label='related to') # 绘制知识图谱 pos = nx.spring_layout(graph) nx.draw_networkx_nodes(graph, pos, node_size=10) nx.draw_networkx_edges(graph, pos, width=0.5) nx.draw_networkx_labels(graph, pos, font_size=8) nx.draw_networkx_edge_labels(graph, pos, font_size=6) plt.show() ``` 现在我们已经生成了一个知识图谱,其中包含电影、类型和实体之间的关系。 希望这个代码能帮助到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值