121 lines
4.5 KiB
JavaScript
121 lines
4.5 KiB
JavaScript
/**
|
||
* 高级分析:找出"成功模式"而不是"成功BIN"
|
||
* 目标:在保持BIN多样性的同时,提高成功率
|
||
*/
|
||
|
||
// 70张成功卡号
|
||
const fullCards = [
|
||
// 原始16张
|
||
'6228367545055812', '6228367548774419', '6228367546781457', '6228367542738949',
|
||
'6228367542602400', '6228367548575105', '6228367546496080', '6228367540057649',
|
||
'6228367549574719', '6228367548435128', '6228367542797374', '6228367545956423',
|
||
'6228367547237848', '6228367540385107', '6228367544252006', '6228367547562054',
|
||
// 今天54张
|
||
'6228367541130577', '6228367540744030', '6228367549888788', '6228367549131205',
|
||
'6228367541450744', '6228367547238010', '6228367547300364', '6228367540814288',
|
||
'6228367546042579', '6228367546361755', '6228367542443235', '6228367543564435',
|
||
'6228367548400627', '6228367544445204', '6228367542653734', '6228367549976732',
|
||
'6228367540810302', '6228367540707201', '6228367545237808', '6228367544322734',
|
||
'6228367541880148', '6228367549130520', '6228367547863197', '6228367541210049',
|
||
'6228367549031561', '6228367542464926', '6228367542487000', '6228367545452860',
|
||
'6228367548491592', '6228367545022853', '6228367545864858', '6228367544742832',
|
||
'6228367540023658', '6228367547416988', '6228367547093159', '6228367549198576',
|
||
'6228367548160064', '6228367546223252', '6228367544873785', '6228367541299976',
|
||
'6228367542940032', '6228367546998937', '6228367545800241', '6228367543770784',
|
||
'6228367545976843', '6228367547542551', '6228367543917914', '6228367545657930',
|
||
'6228367586381796', '6228367544322809', '6228367549131254', '6228367543917146',
|
||
'6228367546998903', '6228367545864460'
|
||
];
|
||
|
||
console.log('=== 高级分析:成功模式识别 ===\n');
|
||
|
||
// 分析1:BIN的第10-12位(extension)的规律
|
||
console.log('1. BIN Extension(第10-12位)分析:\n');
|
||
const extensions = {};
|
||
fullCards.forEach(card => {
|
||
const ext = card.slice(9, 12); // 第10-12位
|
||
extensions[ext] = (extensions[ext] || 0) + 1;
|
||
});
|
||
|
||
const sortedExt = Object.entries(extensions)
|
||
.sort((a, b) => b[1] - a[1])
|
||
.slice(0, 10);
|
||
|
||
sortedExt.forEach(([ext, count]) => {
|
||
const percent = (count / 70 * 100).toFixed(1);
|
||
console.log(` ${ext}: ${count}次 (${percent}%)`);
|
||
});
|
||
|
||
// 分析2:完整BIN(13位)的第13位规律
|
||
console.log('\n2. BIN最后一位(第13位)分析:\n');
|
||
const lastDigits = {};
|
||
fullCards.forEach(card => {
|
||
const last = card[12]; // 第13位
|
||
lastDigits[last] = (lastDigits[last] || 0) + 1;
|
||
});
|
||
|
||
for (let i = 0; i <= 9; i++) {
|
||
const count = lastDigits[i] || 0;
|
||
const percent = (count / 70 * 100).toFixed(1);
|
||
console.log(` ${i}: ${count}次 (${percent}%)`);
|
||
}
|
||
|
||
// 分析3:后3位数字的"和"的规律
|
||
console.log('\n3. 后3位数字之和的分布:\n');
|
||
const sums = {};
|
||
fullCards.forEach(card => {
|
||
const last3 = card.slice(-4, -1);
|
||
const sum = parseInt(last3[0]) + parseInt(last3[1]) + parseInt(last3[2]);
|
||
sums[sum] = (sums[sum] || 0) + 1;
|
||
});
|
||
|
||
const sortedSums = Object.entries(sums)
|
||
.sort((a, b) => b[1] - a[1])
|
||
.slice(0, 10);
|
||
|
||
sortedSums.forEach(([sum, count]) => {
|
||
const percent = (count / 70 * 100).toFixed(1);
|
||
console.log(` 和=${sum}: ${count}次 (${percent}%)`);
|
||
});
|
||
|
||
// 分析4:后3位数字的"奇偶性"规律
|
||
console.log('\n4. 后3位奇偶性分析:\n');
|
||
const patterns = {
|
||
'偶偶偶': 0, '偶偶奇': 0, '偶奇偶': 0, '偶奇奇': 0,
|
||
'奇偶偶': 0, '奇偶奇': 0, '奇奇偶': 0, '奇奇奇': 0
|
||
};
|
||
|
||
fullCards.forEach(card => {
|
||
const last3 = card.slice(-4, -1);
|
||
const pattern = last3.split('').map(d => parseInt(d) % 2 === 0 ? '偶' : '奇').join('');
|
||
patterns[pattern]++;
|
||
});
|
||
|
||
Object.entries(patterns)
|
||
.sort((a, b) => b[1] - a[1])
|
||
.forEach(([pattern, count]) => {
|
||
const percent = (count / 70 * 100).toFixed(1);
|
||
console.log(` ${pattern}: ${count}次 (${percent}%)`);
|
||
});
|
||
|
||
// 分析5:Luhn校验位的分布
|
||
console.log('\n5. Luhn校验位(最后一位)分布:\n');
|
||
const checkDigits = {};
|
||
fullCards.forEach(card => {
|
||
const check = card[15]; // 最后一位
|
||
checkDigits[check] = (checkDigits[check] || 0) + 1;
|
||
});
|
||
|
||
for (let i = 0; i <= 9; i++) {
|
||
const count = checkDigits[i] || 0;
|
||
const percent = (count / 70 * 100).toFixed(1);
|
||
console.log(` ${i}: ${count}次 (${percent}%)`);
|
||
}
|
||
|
||
console.log('\n=== 关键发现 ===\n');
|
||
console.log('基于以上分析,可以优化生成策略:');
|
||
console.log('1. 优先选择高频的BIN Extension');
|
||
console.log('2. 后3位数字之和倾向于某些值');
|
||
console.log('3. 奇偶性组合有明显偏好');
|
||
console.log('4. 结合马尔可夫链,在保持BIN多样性的同时提高成功率');
|