লেখার শুরুতেই জানিয়ে দিই আমি জানি না লেখাটি কতোদূর লম্বা কি খাটো হতে পারে; তবুও কি এক অযাচিত তাড়নায় লেখার শুরু – দেখা যাক শেষ অবধি কতোদূর গড়ায়….
আমরা নিশ্চয়ই “ফিংগারপ্রিন্ট” শব্দটার অবশ্যই পরিচিত – তথাপি একটু অবাক হলেও আপনি নিজেই কিন্তু আপনার ফিংগারপ্রিন্ট চিনেন না!
এই যেমন আয়নাতে কিংবা ক্যামেরাতে আপনার চেহারা তো আপনার নিকট অবশ্যকীয়ভাবে পরিচিত – তবে আপনারই হাতের আঙ্গুলের চিহ্নের সাথে আপনি কতোটুকু পরিচিত?!
বলতে গেলে এতোসব আঁকিবুঁকির মাঝে কিসব প্যাটার্ন এর কিছুুই আমরা জানি না; আর এই না জানা বিষয়টিই যে কতোটা গুরুত্বপূর্ণ আপনার পরিচয়ের জন্য তা হয়তো একটু সহজভাবে চিন্তা করলেই অনুমান করতে পারবেন। উদাহরণস্বরূপ এই যেমন সহজভাবে আপনার NID কার্ড ডাটা লিক হলেও সেটি ততোক্ষন পর্য়ন্ত আপনার সীমকার্ড রিপ্লেসমেন্ট/আপনার নিবন্ধনের অধীনে নতুন সীমকার্ড ক্রয় করা সম্ভব নয় যতোক্ষন না অবধি আপনার ফিংগারপ্রিন্ট পাওয়া যাচ্ছে। অন্যদিকে আপনার মোবাইলের লক হতে বিদেশ যাত্রা অবধি প্রায় প্রতিটি ক্ষেত্রেই এই ফিংগারপ্রিন্ট নামক আঁকিবুঁকি’টাই আপনার প্রতিনিধিত্ব করছে!
যা হউক – এই আর্টিকেলটি এখন সেই ফিংগারপ্রিন্ট নামক অচেনা বিষয়টিকে গভীরভাবে চিনে হ্যাকিং প্রয়াস!
নিশ্চয়ই এটি মন্দ কাজ বৈকি তথাপি Technology যেখানে Tech Know Logy তখন Lazy না হয়ে Logic দ্বারা Tech এর পরিপূর্ণ Knowing প্রয়াস আহামরি জঘন্য নয় হয়তো; আর “উপদেশ” বিষয়টা এক বাক্যের বাতুলতা ছাড়াও নৈতিকতা বজায় রেখেও “ভালো মানুষ না হউক – মন্দ মানুষ না হওয়া” যায় বৈকি!
তাইবলে Tech কে No করিয়ে কিসের Technology সিদ্ধি লাভ!!!
এনিওয়্যে রূপক কথার ভাববাক্য ছাড়া সরাসরি যদি মূল বিষয়ে যদি বলতে হয় তাহলে ডিজিটালি ফিংগারপ্রিন্ট হ্যাকিং আসলেই বেশ কঠিন এবং এক কথাতে প্রায় অসম্ভব বিষয় (যদিনা আপনি আপনার ব্রেইন’কে ক্রিটিকাল থিংকিং-তে কমপ্লেক্স বিষয় কঠিন না করিয়েই ক্রিয়েটিভ প্রডিউস করতে সমর্থ হউন) – কেননা আমাদের এই ফিংগারপ্রিন্ট আদতে কোন ইমেইজ তথা ফটোর মতো থাকে না যাতে সহজেই তা লিক এবং আফটার লিক ইউটিলাইজ করা যায়।
তবুও মূল বিষয়ের প্রাসঙ্গিক আরও কিছু তথ্য এখানে যুক্ত করতে হচ্ছে….
(১) পানির গ্লাসে কাউকে পানি খাওয়ানোর ছুতোই কাচের গ্লাসে তার হাতের আঙ্গুলের প্রতিচ্ছবি নেওয়া [যদিও প্রায়শ বায়োমেট্রিক পদ্ধতিতে কেবলমাত্র বৃদ্ধাঙ্গুলি এবং প্রথমার ছাপ প্রয়োজন হয় তথাপি কাচের গ্লাসে পাঁচটি আঙ্গুলের ছাপ পাওয়ার সম্ভবনা বেশ]।
(২) ইষৎ পাউডার যুক্ত করা কার্ড / মেটাল প্লেট / গ্ল্যাসিক ম্যাটেরিয়াল / তেলাক্ত বা আঠাযুক্ত ম্যাটেরিয়াল ইত্যাদি সোস্যাল ইঞ্জিনিয়ারিং এর মাধ্যমে ব্যবহার।
(৩) আপনি চাইলে AI ফিংগারপ্রিন্ট এপ্লিকেশনটি ব্যবহার করতে পারেন যা উচ্চ মেগাপিক্সেলের ক্যামেরা ডিভাইস কাজ করতে পারে [AI Fingerprint Capture] এটি একইসাথে গিটহাবে ওপেন রিপোজিটরী রইলো যা আপনি চাইলে আরও ডেভোলপমেন্ট করতে পারেন [গিট রিপোজিটরী: ]
এখন এখানেও একটি বিষয় উল্লেখ্য যে – কেউ তো আর সেধে সেধে এসে হাতের আঙ্গুলের ছাপ দিতে ফটো তুলবে না তাইনা?
ওহো…এখানেই আসলে “সাইকোলজির কিঞ্চিৎ খেলা” যেখানে “একজন অবিশ্বাসী মানুষও হাতের রেখাতে তার ভাগ্যে কি আছে সেটা জানতে চায়” সেখানে এতোটুকু নির্লিপ্ত মানসিকতায় আপনার সবটুকুন হ্যাক হওয়ার যথেষ্ট রসদ যোগান দিতে পারে।
আচ্ছা যাই হউক তাই হউক…এখনো পোস্টের মূল বিষয়ে আসা হয়নি!
মূলত আমাদের মোবাইল ডিভাইসে [যেসব এনড্রোয়েড মোবাইলের ডিভাইসে আউটার ফিংগারপ্রিন্ট প্যাড থাকে এবং যেসব ডিভাইস ইন্টার্নাল টাচস্ক্রীনের নিচে টাচ সেন্সর হিডেন থাকে] যে ফিংগারপ্রিন্ট আমরা ইউটিলাইজ করি আদৌ সেটি ইমেইজ আকারে থাকে না। এটি মূলত Secure Enclave / Trusted Execution Environment (TEE) আকারে চিপে বাইরের ফিংগারপ্রিন্ট (যা ridge ending, bifurcation, orientation, minutiae points আকারে) সিকিউরিটি ম্যাচিং করিয়ে ভেরিফাই করে। এমনকি এই ফিংগারপ্রিন্ট ডিভাইসের AES বাইনারি এনক্রিপটেড ফরম্যাটে ISO/ANSI এক্সটেনশনে কেবলমাত্র এই ভেরিফিকেশন সিস্টেম অথেনটিকেশান করে মাত্র।
সুতরাং ফিংগারপ্রিন্ট হ্যাক করার প্রায়ই Zero পসিবিলিটি!!!!
আচ্ছা এই যে Zero পসিবিলিটি – সেখান হতেই মাথাতে আসে Zero Day Vulnerability [এটির প্রথাগত ডেফিনিশন ভিন্ন এবং আমি এটাকে ভিন্নভাবে ডেফিনাইট করি – এটি একান্তই ব্যক্তিগত বিষয় যা পোস্টে বলার আবশ্যকতা রাখে না] যেখানে সেই Zero এর ডাটাকে কিভাবে ইউটিলাইজ করে সেটার ভ্যালিডিটি গেইন করা যায়?!
আচ্ছা….. এই যে আমাদের ফিংগারপ্রিন্ট এর ডাটা যা কিনা ইমেইজ আকারে না থাকলেও ডিভাইসের সিকিউরিটি চিপে ক্রস ভেরিফাই হয় সেখানে মূলত কোন ডাটার আদান প্রদান ঘটে?!
এখানে আমাদের ফিংগারপ্রিন্ট না ড্র হলেও ঐ বাইনারি এনক্রিপট্রেড কোডটিই আসলে আপনার ও আমার ফিংগারপ্রিন্ট ও ডিভাইসের মাঝের রিলেশনাল পরিচিত ক্যারি করে – এটি যদি পাওয়া যায় তাহলে পক্ষান্তরে একরূপ আপনার ফিংগারপ্রিন্টের ডাটার অনুলিপিই পাবো; যা কিনা USB ডাটা আকারে যেকোন ডিভাইসে ইনপুট করিয়ে সিস্টেম লেয়ার বাইপাস করা যেতে পারে।
এখানে এটির কোড ডেমোনেস্ট্রেশান প্রদান করছি [মূলত মূল জাভাস্ক্রিপ্ট ফাংশান]।
<script>
/* ========= Utility: typing effect ========= */
const output = document.getElementById('output');
function typeOut(text, speed=10){
output.textContent = '';
let i = 0;
(function step(){
output.textContent += text.slice(i, i+2);
i += 2;
if(i < text.length) setTimeout(step, speed);
})();
}
function printJSON(obj, prefix="> "){
const txt = prefix + JSON.stringify(obj, null, 2);
typeOut(txt);
}
function clearOutput(){
typeOut('> Cleared.');
}
/* ========= Base64 helper ========= */
function bufferToBase64(buffer){
const bytes = new Uint8Array(buffer);
let binary = '';
const chunk = 0x8000;
for(let i=0;i<bytes.length;i+=chunk){
binary += String.fromCharCode.apply(null, bytes.subarray(i,i+chunk));
}
return btoa(binary);
}
/* ========= Feature check ========= */
function ensureSupport(){
if(!('credentials' in navigator) || !navigator.credentials){
typeOut('> ERROR: WebAuthn not supported in this browser/context.');
throw new Error('WebAuthn not supported');
}
}
/* ========= Registration ========= */
async function registerCredential(){
try{
ensureSupport();
typeOut('> Initializing credential creation...');
const publicKey = {
challenge: new Uint8Array([Math.random()*255|0, Math.random()*255|0, Math.random()*255|0]),
rp: { name: "Example App" },
user: {
id: new Uint8Array(16),
name: "[email protected]",
displayName: "User"
},
pubKeyCredParams: [{ type: "public-key", alg: -7 }],
authenticatorSelection: { userVerification: "required" },
timeout: 60000,
attestation: "direct"
};
const credential = await navigator.credentials.create({ publicKey });
const data = {
type: credential.type,
id: credential.id,
rawId: bufferToBase64(credential.rawId),
attestationObject: bufferToBase64(credential.response.attestationObject)
};
printJSON(data, '> Credential Registered:\n');
console.log('Credential registered:', data);
}catch(err){
typeOut('> ERROR: ' + err);
console.error(err);
}
}
/* ========= Authentication ========= */
async function authenticateUser(){
try{
ensureSupport();
typeOut('> Awaiting fingerprint scan...');
const publicKey = {
challenge: new Uint8Array([Math.random()*255|0, Math.random()*255|0, Math.random()*255|0]),
timeout: 60000,
userVerification: "required"
};
const assertion = await navigator.credentials.get({ publicKey });
const data = {
type: assertion.type,
id: assertion.id,
rawId: bufferToBase64(assertion.rawId),
authenticatorData: bufferToBase64(assertion.response.authenticatorData),
clientDataJSON: bufferToBase64(assertion.response.clientDataJSON),
signature: bufferToBase64(assertion.response.signature)
};
printJSON(data, '> Authentication Success:\n');
console.log('Authentication assertion:', data);
}catch(err){
typeOut('> ERROR: ' + err);
console.error(err);
}
}
</script>
এখন কথা হতে পারে তাহলে হ্যাক হবে কিভাবে?
মূলত আমরা যারপরনাই যতোই সতর্ক থাকি তথাপি মোবাইল লক হলে তো অবশ্যই সেটা প্রায়শ (যাদের ক্ষেত্রে ফিংগারপ্রিন্ট ক্যাপচার সিকিউরিটি ফাংশন এনাবল থাকে) সহজেই সেটি আনলক করি; এক্ষেত্রে এমন এটিকে ওয়েব এপ্লিকেশনে কনভার্ট করে যেকোন ডিভাইস হতে ফিংগারপ্রিন্ট ক্যাপচার ও সেইভ করা পসিবল; এক্ষেত্রে আলাদা করে php ফাংশান যুক্ত করে নিতে হবে যেটার মডিউল এক্সিকিউশন নিচে কোড আকারে দিচ্ছি :
<?php
// save_data.php
// Read JSON input from JavaScript
$data = json_decode(file_get_contents("php://input"), true);
if(!$data || !isset($data["payload"])){
die("No data received");
}
// File to store JSON
$file = "fingerprint_data.json";
// Load old data if exists
$oldData = [];
if(file_exists($file)){
$oldData = json_decode(file_get_contents($file), true);
if(!is_array($oldData)) $oldData = [];
}
// Append new record
$oldData[] = [
"action" => $data["action"],
"time" => date("Y-m-d H:i:s"),
"data" => $data["payload"]
];
// Save back to JSON file
file_put_contents($file, json_encode($oldData, JSON_PRETTY_PRINT));
echo "Data saved successfully!";
?>
সম্পূর্ণ গিটহাব প্রজেক্ট’টির রিপোজিটর লিংক:-
আচ্ছা কিছু কথা শুনুন – এই রিপোজিটরীটিকে আমি ওয়েব পেইজ আকারে করেছিলাম; তবে Google তার সিস্টেম Automatic সুপার ফিশিং বিবেচনায় তাৎক্ষণিক আমার সকল গিট রিপোজিটরী ক্রোম ব্রাউজারে ওয়ার্নিং এনে দেয়। সুতরাং মডিউল টেস্ট পারপাসে করলে অবশ্যই Zip আকারে দেওয়া ফাইল [পাসওয়ার্ড ছাড়াই] আনজিপ করে এরপর এক্সিকিউট করবেন অথবা ওয়েব এপ্লিকেশনের পরিবর্তে এপ্লিকেশনের মাঝে ইমপ্লিমেন্ট করবেন নয়তো রিভার্স ইঞ্জিনিয়ারিং এর বিস্তৃর্ণ কারাখানায় ব্রেইনটাকে ব্যবহার করবেন…..
যাই হউক লেখার এই পর্যায়ে আরেকটি কথা বলি – যেসকল সীম কোম্পানি সীমকার্ড বিক্রির জন্য এজেন্টের নিকট অথেনটিক এপ্লিকেশন ও স্ক্যানার প্রোভাইড করে তাদের হতেও ফিংগারপ্রিন্ট চুরি হতে পারে।
হয়তো আপনি অবশ্যই ভাববেন যে এটি কোনভাবেই পসিবল নয় – তবে এটি করার কতো যে খোলা পথ রয়েছে সেটি একটু চিন্তা করলেই আপনার মাথাতেও চলে আসবে। তবুও বাস্তবিক বিষয়গুলো ছাড়া আমি টেকনিক্যালি অন্য একটি দিকে ফোকাস করি যেখানে যেকেউ ঐসব সীমকার্ড বিক্রির অথেনটিক এপ্লিকেশনে ফিংগারপ্রিন্ট দিলে (যদিও ডান ও বাম হাতের কেবল বৃদ্ধাঙ্গুলি ও প্রথমা প্রয়োজন হয়) সেটি গ্রীন ইফেক্ট ভেরিফাই করে তথাপি খুব সাময়িক সময়ের জন্য স্ক্রিনের মাঝের প্যাডের অংশে আক্ষরিকভাবেই সঠিক প্যাটার্ন ড্র হয়; যেটি শুধুমাত্র একটি স্ক্রিনরেকর্ডার এপ্লিকেশন চালু রাখলেই সকল ডাটা গ্রাব হতে পারে। আর যদি সেই এপ্লিকেশন স্ক্রিন রেকর্ড প্রোহ্যাবিট করে তবুও সেকেন্ড লেয়ার ক্যামের সাহায্য এমনটা হতেই পারে।
যাই হউক এতোসব প্যাচালে আপনি ফিংগারপ্রিন্ট হ্যাকিং এর কতোটুকু জানলেন আর কিভাবে কার সাথে কেমন করে কোন উদ্দেশ্য এটি ব্যবহার করবেন সেটি একান্তই আপনার ব্যাপার (উপদেশ শুনতে শ্রুতিমধুর তবে কাজে লাগে না) – তদুপরি অন্যের ফিংগারপ্রিন্ট না হাতরে আপনি যদি একবার নিজের হাতের প্যাটার্নে তাকান তাহলে অবশ্যই উজ্জ্বল ভবিষ্যত দেখতে পাবেন [যদি এই বিদ্যা অনৈতিকতায় ব্যবহার না করে একই রকম থিংকিং আপনার মাখাতেও কাজে লাগান]।
TrickBD Support Team এর সদয় দৃষ্টি আকর্ষণ করছি: আমার পরবর্তী সকল আর্টিকেল [ভবিষ্যতে যা লিখবো এবং সদ্য পেমেন্ট করা আর্নিং সবটা মিলিয়ে যখন তা 10,000 BDT পরিপূর্ণ হবে তখন সেটা হতে TrickBD এর কিছু মেম্বার বা অথর কিংবা কনট্রিবিউটর যারাই আছেন তারা যেন ইফেক্টিভ কিছু করতে পারেন সেটার জন্য ব্যায় করা হবে – সুতরাং অনুগ্রহ করে আমার সকল আর্নিং উইড্রো যেন রেসট্রিক্ট করা হয় এবং পরিপূর্ণতা পেলে যদি আমি সেইসময় বর্তমান নাও থাকি তবে উক্ত অর্থ দ্বারা এই অনুরোধটি বাস্তবায়নের সবিনয় নিবেদন রইলো।
শুভকামনা রইলো।
ফেসবুক নিমন্ত্রণ রইলো :- Humayun Shariar Himu
ভালো থাকুন।
একটি বিষয় উল্লেখ করছি: যেহেতু ইদানীং সময়ে আমার জন্য TrickBD পোস্ট/ভিজিট করাও প্রত্যাহিক কারনে কঠিন হয়ে গিয়েছে তাই লেখার শেষ অংশে TrickBD কর্তৃক এটি জানানো। এমন নয় যে নেইম বা ফেইম অথবা কিছু ক্লেইম করার জন্য এমনটা শো অফ।
ইভেন ট্রিকবিডি আজ রাত ৮ টার সময়ও আই-ব্যাংকিং হতে আর্নিং পে করে যার পরিপ্রেক্ষিতে জানানো।
হয়তো এমন হতে পারে একটি সময় আমি থাকবো না কিংবা হয়তো আমার অথরশীপ থাকলো না কিংবা যা যা কিছু…..
তবুও যেন এটি সবিশেষ ইফেক্টিভ হয়; একজন হলেও যেন বলতে পারে TrickBD Has Changed My Life.
যাই হউক এমনিতেও ব্যক্তিগতভাবে মন মানসিকতার বিশ্রী অবস্থা তথাপি পোস্ট লেখার জন্য গিটহাবে রিপো (কনটেক্সট) এর অনেক কিছুই আছে।
আপনারা যদি চান তবে সেইসব রিপো ফলোআপ করতে পারেন এবং আরও ইফেক্টিভ করে আপনার মতো করে প্রজেক্ট তৈরী করতে পারেন (ক্রেডিট নিষ্প্রয়োজন)।
ভালো থাকুন…
মূল বিষয়টা হচ্ছে এমন একটি AI সার্চ মেশিন যেটা যেকোন সাবজেক্ট ওয়াইজ AI রেসপন্সের সাথে সাথে সার্চ রেজাল্ট শো করাবে; সেটি সারফেস ওয়েব + ইউটিউব হতে।
বিষয়টা সাধারণ মনে হলেও মডিউল সিস্টেম একটু কমপ্লেক্স থাকবে।
“আমি যা সার্চ করছি” সেটার বিপরীতে এই একটি টেক্সট রেসপন্স করবে;একইসাথে সারফেস ওয়েব হতে সম্পর্কিত তথ্য দেখাবে – সেখানে কোন স্পেসিফিক টার্ম থাকলে সেটার ওয়াইজ পরিপূর্ণ কিওয়ার্ড বা ফ্রেইস ধরে রেসপন্স বা রি-রিসার্চ করবে + যেখানে যা যা প্রয়োজন সেটার টিউটোরিয়াল ইউটিউব রেজাল্ট হতে আসবে; একইসাথে সম্ভব হলে ডিপ ওয়েব এক্সটেনশন যুক্ত হবে।
কঠিন – তবে অসম্ভব নয়; আপনার অবজার্ভেটিভ মন্তব্য কাম্য
আমি মিস করছি কিন্তু…
ও হ্যা, আপনাকে যে মরফিকের মতো প্রজেক্ট নিয়ে কথা বলেছিলাম সেটার মডেল দাড় করাতে পেরেছি।
সুতরাং আমার ডিমনেশিয়াল ইফেক্ট থাকলেও হয়তো এতোটা ভোলা হয়ে যায়নি!
প্রজেক্ট প্রোটোটাইপ
https://razzrunai.vercel.app/
আমি এনজয় করি – কারন যখন কেউ আমার পেছনে ত্রুটি খুঁজতে থাকে তখন এক প্রকার আমার সিকিউরিটি এক্সপ্লোরারের কাজ করে যা কিনা আমাকে সেল্ফ ডেভোলপ হওয়ার অবকাশ দেয়। আর এতোটাই আমি খারাপ – তাতে আমি নিজে ক্ল্যারিফাই হলে আপনি যদি আস্বাদন পান তবে বলি “আমি তো আমাকে শয়’তানের প্রতিবিম্ব মনে করি” – অবশ্য সেটার ডেফিনেশান যার যার ব্যক্তিগত চিন্তা চেতনার ওপর নির্ভর করে।
এখন আপনি হ্যাপি হতে পেরেছেন কি?
যদি হ্যাপি হউন তাতেই আমার স্যাটিসফেকশান।
একটা বিষয় মাথাতে ঘুরছে যা আপনি সলিউশন করতে পারবেন বা আইডিয়া দিতে পারবেন হয়তো (এই যেমন আপাত ফ্রি টাইমে হুট করে ট্রিকবিডিতে আসা তেমনি চিন্তাতে যদি হঠাৎ মাথাতে আসে তাহলে জানিয়েন): মরফিক এর প্রজেক্ট’টি ডিপ্লয়মেন্ট না করেই AI + Search Engine একসাথে ইউটিলাইজ করা যায় কি? গিটে আছে – তবে কাস্টমাইজেশনে রুট ফাইলে হচ্ছে না।
আপনার ডাকডাকগো কিংবা ব্লেমিং গুগল পীর সবটার সবটুুকু তীতিক্ষা আর নির্যাস মিলিয়ে একটা কিছু হউক।
ক্রেডিট বা আমাকে জানতেও হবে না – আপনিই না হয় করুন তবুও দারুন কিছু হতে পারে [যা আমি পারছি না]