{"id":11221,"date":"2015-11-11T20:00:03","date_gmt":"2015-11-12T04:00:03","guid":{"rendered":"https:\/\/blog.digilentinc.com\/?p=11221"},"modified":"2024-12-28T16:40:28","modified_gmt":"2024-12-29T00:40:28","slug":"reverse-engineering-a-nand-flash-device-management-algorithm","status":"publish","type":"post","link":"https:\/\/digilent.com\/blog\/reverse-engineering-a-nand-flash-device-management-algorithm\/","title":{"rendered":"Reverse-Engineering a NAND Flash Device Management Algorithm"},"content":{"rendered":"<p>When you hear &#8220;reverse engineering&#8221;, do you usually think of ease and comfort? I certainly don&#8217;t. <a href=\"http:\/\/hackaday.com\/2014\/08\/06\/reverse-engineering-a-nand-flash-device-management-algorithm\/\">This Hackaday post<\/a> by Mathieu Stephan covers Joshua Wise&#8217;s project to reverse engineer a broken SD card in order to retrieve its data.<\/p>\n<figure id=\"attachment_11225\" aria-describedby=\"caption-attachment-11225\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/joshuawise.com\/projects\/ndfslave\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-11225 size-medium\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/11\/broken-sd-card-600x450.jpg\" alt=\"The broken SD card.\" width=\"600\" height=\"450\" data-wp-pid=\"11225\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/11\/broken-sd-card-600x450.jpg 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/11\/broken-sd-card.jpg 1024w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><figcaption id=\"caption-attachment-11225\" class=\"wp-caption-text\">The broken SD card.<\/figcaption><\/figure>\n<p>This six month long project involved first desoldering the SD card\u2019s Flash chip.\u00a0The initial deconstruction\u00a0revealed\u00a0that only the integrated SD-to-NAND Flash controller was damaged. The Flash then had to be soldered onto a breadboard and connected to a Digilent Nexys 2 FPGA board. \u00a0Joshua checked that his wire-made bus was reliable and generated two 12GiB dump files on his computer.<\/p>\n<p>He was eventually able to recover all the images, videos, and files on the SD card. To view the source code and check hardware configurations, check out <a href=\"http:\/\/joshuawise.com\/projects\/ndfslave\">Wise&#8217;s post about the project<\/a>!<\/p>\n<p>&nbsp;<\/p>\n<div class='watch-action'><div class='watch-position align-left'><div class='action-like'><a class='lbg-style6 like-11221 jlk' data-task='like' data-post_id='11221' data-nonce='6ff13f8e23' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Like' \/><span class='lc-11221 lc'>0<\/span><\/a><\/div><div class='action-unlike'><a class='unlbg-style6 unlike-11221 jlk' data-task='unlike' data-post_id='11221' data-nonce='6ff13f8e23' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Unlike' \/><span class='unlc-11221 unlc'>0<\/span><\/a><\/div><\/div> <div class='status-11221 status align-left'>Be the 1st to vote.<\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>Reverse engineering a broken SD card with the help of an FPGA buddy.<\/p>\n","protected":false},"author":7,"featured_media":11226,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4327,35,1561],"tags":[1662,104],"ppma_author":[4464],"class_list":["post-11221","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-projects","category-fpga","category-applications","tag-fpga","tag-project-2"],"jetpack_featured_media_url":"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/11\/broken-sd-card-nexys2.jpg","jetpack_sharing_enabled":true,"authors":[{"term_id":4464,"user_id":7,"is_guest":0,"slug":"amber_mear","display_name":"Amber Mear","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/d0fc56ab4035f79884675bde2a948e84c1d14dd33b730b4c142dde6f1a962395?s=96&d=mm&r=g","1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":"","9":"","10":""}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/11221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/comments?post=11221"}],"version-history":[{"count":1,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/11221\/revisions"}],"predecessor-version":[{"id":31234,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/11221\/revisions\/31234"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media\/11226"}],"wp:attachment":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media?parent=11221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/categories?post=11221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/tags?post=11221"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=11221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}