Open mutr opened 3 years ago
First to lines, feel free to check for errors
(This file must be converted with BinHex 4.0)
:$QaKD@jIEfeKDf8ZCfPQ*%G*4QBi3NPO!3!!!!Rq!!!#L4aa4dP!I$PKPJ$L!)!
!!2rrr~!!!#~!!!!!PJ$L!!!#ri52U4(VlaS+%YU,XpkmHdOpiNL@*Pl*kFQfEKY
Decoding that header will result in a lain_omake.gif file. rest of the code would be image data
Googling first line leads me to this site http://www.noisywires.net/layer:09/layer:09.html
Looks like he abandoned it way before we picked it up.
Also file 2 lines:
(This file must be converted with BinHex 4.0)
:$'PZEQpMC@jd,QT`C`"+8%9(1%**638!!!!,1J!!!!!C%2rBrq!!%%T'58B!!3)
"!5`",!!!rqd##&"SEh4[FfK[F#!c,M!!1%**632T!!!!!!"i!!B!!!")!%J!!!!
!![d#32rHrrB$*`**NJ-&H32I!!,p!!*B!PJ!!!!!'185`!*B!#d&S&1X!#B)!3%
"!"J!!5F2!!%!!3!!!!!!!!!!!!!!J!!"!!!"!3!!!!!!!!!!!!!!!!!!!!!!!!!
!-!%#'!%#!!!!%J!%1%**632Y!!!!!!!3!5`!!!!"!!)",!!!!!%!!MK#58d%$3!
Im going to binge type file 2 with a podcast tomorrow.
It may be useful to identify the font so that it can be overlaid. Just doing the first line by hand, I'm already getting some differences when compared to the first line on the website, which isn't a good sign. However, that might just be me.
For clarity, im posting all available characters in BinHex 4.0
!"#$%&'()*+,-012345689@ABCDEFGHIJKLMNPQRSTUVXYZ[`abcdefhijklmpqr
@Agapurnis Post your progress in the comments.
The font is one of Courier (typeface) variant. I will try to make a dataset for neural network from this font. I am interested in making a fully automated solution. I hope to find time for this on Saturday.
Guys you're not going to find anything useful. It's the psd file of the image converted to text and overlaid on the picture. The table of contents of rebuild explains it.
@rikkaonline The TOK just says that image inside. We already know the file names. It's lain_omake.gif
and innocent.jpg
.
As you can see it's not even .psd
.
What do you mean by useful? Did you hear about "hack value"?
Hack value is the notion used by hackers to express that something is worth doing or is interesting. This is something that hackers often feel intuitively about a problem or solution. An aspect of hack value is performing feats for the sake of showing that they can be done, even if others think it is difficult.
This files is part of the history of Lain fandom. The content of the file is not really matter. If something is encoded it must be decoded. I enjoy the process. For me it's like a 20 years old puzzle. А time capsule.
Here's what the book says: The psd filename is right there.
You're not going to get anything useful in the sense that there is not a message or "code" hidden there to be cracked. He wanted to throw some random text on the pic to look cool so he ran the psd file through a tool to get that. If you want to run ocr on it to see what you can accomplish then sure have fun, but it's not going to yield data that has intrinsic value, and its certainly not worth the time sink of transcribing it all by hand.
Please look at other pages in TOC. Every layer has .psd not just 09. It's not related to content of the encoded file, it's related to page itself.
You can easily check that you are wrong. Try to decode the fragments we posted here.
First several bytes of the first file: lain_omake.gif\x00GIFf8BIN\x01
As you can see file has GIF signature and extension.
GIF files start with a fixed-length header ("GIF87a" or "GIF89a") giving the version, followed by a fixed-length Logical Screen Descriptor giving the pixel dimensions and other characteristics of the logical screen.
import base64
ref = '!"#$%&\'()*+,-012345689@ABCDEFGHIJKLMNPQRSTUVXYZ[`abcdefhijklmpqr'
mytrans = str.maketrans(ref, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')
base64.b64decode(inp.translate(mytrans).encode())
inp=':$QaKD@jIEfeKDf8ZCfPQ*%G*4QBi3NPO!3!!!!Rq'
base64.b64decode(inp.translate(mytrans).encode())
Easy peasy.
You're not going to get anything useful in the sense that there is not a message or "code" hidden there to be cracked.
I definitely don't expect to find the "code" that let me become Knights members or hack the pentagon. Ha-ha.
and its certainly not worth the time sink of transcribing it all by hand.
If you do not see value in something, this does not mean that it does not exist. If person A transcribed a file by hand and checksum matches then he or she will be the first in the world who do this. I will accept his PR right away and his name will be in this repository forever. Everyone who will google this code will see that a specific person A was the first.
If someday person B can suggest a better and more elegant solution requiring less hand work I will glad to add his code too. This will not cancel that the person A was first. That's the value. If you can't see this value just don't do it. It's not for you. Do something that has value to you.
Of course every page has a psd file, every page is an image. That's the filename of the image on that page. It's related to the content of the encoded file by the text description that literally says that's what the text is.
You can easily check that you are wrong. Try to decode the fragments we posted here. A psd file could contain the contents of a gif file somewhere in it if that file is imported into it.
You still don't understand. It's not just a file or an artwork. It's a MESSAGE. The message from authors of Lain to those who can find it, open it and understand it. When someone open it that means that he or she was the recipient. It's like a catch message in a bottle. The content is not matter at all because recipient already know what this message is about. This message is about importance of information. If you're not interested just move it to the spam folder.
Oh, man. You are boring :)
I generate a dataset from background and Courier font and train a simple NN on it.
Works perfect on test data but not on real. Need to add variability and switch to CNN.
Real data:
Thats nice also here are the lines from the second pic, without the last 10 lines. some characters could be others, i also included ? mark if the character was unreadable
(This file must be converted with BinHex 4.0)
:$'PZEQpMC@jd,QT`C`"+8%9(1%**638!!!!,1J!!!!!C%2rBrq!!%%T'58B!!3)
"!5`",!!!rqd##&"SEh4[FfK[F#!c,M!!1%**632T!!!!!!"i!!B!!!")!%J!!!!
!![d#32rHrrB$*`**NJ-&H32I!!,p!!*B!PJ!!!!!'185`!*B!#d&S&1X!#B)!3%
"!"J!!5F2!!%!!3!!!!!!!!!!!!!!J!!"!!!"!3!!!!!!!!!!!!!!!!!!!!!!!!!
!-!%#'!%#!!!!%J!%1%**632Y!!!!!!!3!5`!!!!"!!)",!!!!!%!!MK#58d%$3!
!!!!!!!!!!(Ji3NP0!r-!!!!!!!!!!!!!!!!!!$K#58d%#J!!!!!!!3!!1%**65F
3!!!!!!!+!!%!!!!!!!!!!!MK#58d$p3!!!!!5!![CQB!!3"XCQB!"J!!!!!!!3!
[CQB!!3$KQCS!"J!!!!!!!!3!b!!!!!3"D!!!"J!!!!!!!3!e!!!!!3!Y!!!!"J!
!!!!!!6K#58d$q!!!!!!!F!!!rrrrrrrrrrrrrrrrrrrrrrrrrrrrr`2s!!!!!2r
rrrrrrrrrrrrrrrrrrrrrrrrrrrm$k!!!!!$rrrrrrrrrrrrrrrrrrrrrrrrrrrr
r!qJ!!!!!rrrrrrrrrrrrrrrrrrrrrrrrrrrrr`2s!!!i3NP0"!J!!!!!!"!!!!!
"!!!#3!!!!N!!!!!!1%**6338!!!!!!!%!!!!#MK#58d%"J!!!!!!"`!!!!!!!3%
!rq)#,%P$3ep38Np'58a&!!%"!!!#(%&%3N8#%!!!E@jdFP*(3L"B@9SJ"mm!!`!
G!!!!'J!eB@0cF%&38%!!!!!!EQpZC3!!!!!!!!!!!!!!!!!!!!!!!2E@!!%!!!!
!dbe"4%*&!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!+Bh"bG!!!!2`!!!!NC'9cB`!!!5!!!!"PGh4`G!!!!BJ!!!!8BQY`G!!
!!C`!!!!8FP453`!!!E!!!!!1Ce453`!!!F!!!!!1BP453`!!!G!!!!!1FPKC@J!
!!H!!!!!8CeKC@J!!!I3!!!!8BPKC@J!!!JJ!!!!8G'9iG!!!!!!SBbNJ-6Nj15"
"C'pLC5"6HA0dC@ec)%PZBbi!C'9cB`!!!!!!!!!+3A"`E'8J8NG#!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"B@9SJ!!!!!!!!me%!!3!!!!%@c&K
C@L!!!!!!!!!!!!!!!!!!!!!!Bh9bGJ!!!!!!!!!"!Fd!!!0eFRB!!!!!!!!!!3(
0!!"MGA*f!!!!!!!!!!%"c3!!@&PD)!!!!!!!!(Qp!!""8J!!",PB@9SJ!!!!!!!
!9[J!!+`[!!!G!eKC@L!!!!!!!!!Q)J!!%Rm!!,&`rri!*NCTE'8JGh!TG(4PEL"
LH5""C'pLC5"3D'pdEh0SEh#S)$8Z-[rZ!!j'C'pLC3"NJ!!!!!(rf`#%!"!,#`X
-#a?-$"!A#`d2&aX8%"?8'amA&aFA&am4$??-$!`-%3?-$!`-$!`-$!`-$!`-$!`
-$!`-$!`-$!`-$!`"%3m2%4-4&4)5&431$Ji8&!i1$Ji8%3`-$!`-%4%-$!`-$!`
4&!`-$!`-$!`-$!`-$!`-$!`-$!`-$!`-$!`-$2r!!"%)!8!!MJ-")J!#%3%$%3(
rh3!%!!Rra!%r!!!""3%"!3%"!3!!!!!!!!!$!!%#"!8'"`J*#JX"!!%&!3%"!3%
"!!!!!!!!!!%!!J-%"3B(#!N+#a!!!33"!`)%!J8("JJ&!``c!3!#%3-%)4)a"8&
4B4-LFB%b"K54SE&#)b398X&L-c4bJY&$"b@58r$Km@0c04DLXS-Q4*08C%A#Sh3
f&p*9iQAbXi6$dhAMmdBRP+5&Y*A%e16dTEA&eHAe9QCfKTDQYXE@j[Bh4eGRGiH
AT1i(eqIh%3!#!J%#"!3$"!8'"`F'"68"!!)4!b%a%J4"8@&a)K-&-S'4&+'a3L2
"8Y(`-b4LiA+#NN06&@0c02%P"KDLXS-(*MA#dN569+-AC%990R4Pi[+cK-26GH2
c4T5NKE59a06Np+@eaGAPp9CQGSD@TVE'eZEf*cG(9fGhKjHRYmIrfJ!-!`%!!K%
$%3!r!23%NNNP+556*+A6%J+$130"U815G58P`LQhK0[3Lj4h&&2#Qp3+3HdU[+8
T*1!fC#G9Jk%GMJiD),#+C****)8NNNNT55555Rrrd23%NNNP,)0edHe[2G%XGYD
51HbVHRVZGbPVdA4(8VX"j+FZ6&dF+-T$64NTH8T3h@KUB@JTF3645&bKkU'pqZL
P@ce!iGqbEC*d63!eC#d&%V-[jK$p,p&ZMh$P-ahZ%m*'l#$4"G!*e&N14h8NjJ8
NNNNT55555RrrdI3%NNNP)Ec!#!ka&bHbU%TNT%D"QJ0%Qk8*1b$#F&3Xe61+a4h
C!%Q2@,(NZe4Aiaefr*,'CYphhYa2LB#P!&DXFT'p(20,qB1`VQ23jQT1K'D'aST
GNJ!&XTNk)S'SM3UZ+`f1DH1b)D16C*i5[C%21SRmP$chE$4Y%+5K81F`&65BbT*
***5NNNNP2rr5p!55558JbK1!942+dEK0C9&pHf#1#Q5(9QaR4'(3RQG#V,+kRX$
52F4bJ2U,(3H1a66#Y91N$SfD(5f1i8(0HkcAXL8X"!F0#V!!qDPk"L-U*@D)!8N
NNQ0C$[EZV2NL5*K4XqL4iT*'k((G"fq+XUX'"M`1i4fQ4+36,Zb5555@U55558r
rdr3%NNNP,1%Y)3I4Q(Eh'S4NNNJdeDaYPTd)8a@A#?kMX91bN?$p4S81,?%H("5
AAHc0P@`b$Ti)UB6#@i?,6CC*P(Hha6K15NLP`!%NTRK**5cQJMc3kAD15LUZ6YZ
+54VSf8N`6T)8NNNNTrr8p!55558T****5P&d3T*L*58T4)8Nd**4PUNaX+F")K*
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
)1UMZ*q#85888P"56!3R3@V+5C1NT55555P****+1rp1d"****5NNNNP+3RJ%SLJ
8NK!kX%K&B2Z8A`2815$bL[1bQ0N`85`1LLd&Te1UB!Q8PTA5553@U+G-R58T***
*5NNNNP2rd23%NNNP+55558XH&"62#JLN-A"4!JUC6!*,1ANP5E+3!`U55dP5G-R
3@V*dNNP+55558T****6r!2r4p!55558T****6%TNj6)T$%TfT&*U5@5G-R33ZNN
NNKC1Q6T+8NNNNT55555Rrp,d"****5NNNNP-6bQ+FmTLLN-5RDN8QT*C"1Q#G"D
ZNNNNT55555P****+8NNNNTrrf85X!!!!:
Nice work! I need it to validate my NN. Sent you invite to the repo. Feel free to upload it.
Another version. Thanks to Roman
(This file must be converted with BinHex 4.0)
:$'PZEQpMC@jd,QT`C`"+8%9(1%**638!!!!,1J!!!!!C%2rBrq!!%%T'58B!!3)
"!5`",!!!rqd##&"SEh4[FfK[F#!c,M!!1%**632T!!!!!!"i!!B!!!")!%J!!!!
!![d#32rHrrB$*`**NJ-&H32I!!,p!!*B!PJ!!!!!'185`!*B!#d&S&1X!#B)!3%
"!"J!!5F2!!%!!3!!!!!!!!!!!!!!J!!"!!!"!3!!!!!!!!!!!!!!!!!!!!!!!!!
!-!%#'!%#!!!!%J!%1%**632Y!!!!!!!3!5`!!!!"!!)",!!!!!%!!MK#58d%$3!
!!!!!"!!!!(Ti3NP0!r-!!!!!!!J!!!!!!!!!!$K#58d%#J!!!!!!!3!!1%**65F
3!!!!!!!+!!%!!!!!!!!!!MK#58d$p3!!!!!!5!![CQB!!3"XCQB!"J!!!!!!!3!
[CQB!!3#KQCS!"J!!!!!!!3!b!!!!!3"D!!!!"J!!!!!!!3!e!!!!!3!Y!!!!"J!
!!!!!!6K#58d$q!!!!!!!F!!!rrrrrrrrrrrrrrrrrrrrrrrrrrrrr`2S!!!!!2r
rrrrrrrrrrrrrrrrrrrrrrrrrrrm$k!!!!!$rrrrrrrrrrrrrrrrrrrrrrrrrrrr
r!qJ!!!!!rrrrrrrrrrrrrrrrrrrrrrrrrrrrr`2S!!!i3NPO"!J!!!!!!"!!!!!
"!!!#3!!!!N!!!!!!1%**6338!!!!!!!%!!!!#MK#58d%"J!!!!!!"`!!!!!!!3%
!rq)#,%P$3ep38Np'58a&!!%"!!!#(%&%3N8#%!!!E@jdFP*(3L"B@9SJ"mm!!`!
G!!!!'J!eB@0cF%&38%`!!!!!EQpZC3!!!!!!!!!!!!!!!!!!!!!!!2E@!!%!!!!
!dbe"4%*&!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!+Bh"bG!!!!2`!!!!NC'9cB`!!!5!!!!"PGh4`G!!!!BJ!!!!8BQY`G!!
!!C`!!!!8FP453`!!!E!!!!!1Ce453`!!!F!!!!!1BP453`!!!G!!!!!1FPKC@J!
!!H!!!!!8CeKC@J!!!I3!!!!8BPKC@J!!!JJ!!!!8G'9iG!!!!!!SBbNJ-6nj15"
"C'pLC5"6HA0dC@ec)%PZBbi!C'9cB`!!!!!!!!!+3A"`E'8J8NG#!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"B@9SJ!!!!!!!!me%!!3!!!!%@с&K
C@L!!!!!!!!!!!!!!!!!!!!!!Bh9bGJ!!!!!!!!!"!Fd!!'0eFRB!!!!!!!!!!3(
0!!"MGA*f!!!!!!!!!!%"c3!!@&PD)!!!!!!!!(Qp!!""8J!!",PB@9SJ!!!!!!!
!9[J!!+`[!!!G!eKC@L!!!!!!!!!Q)J!!%Rm!!,&`rri!*NCTE'8JGh*TG(4PEL"
LH5""C'pLC5"3D'pdEh0SEh#S)$8Z-[rZ!!j"C'pLC3"NJ!!!!!(rf`#%!"!,#`X
-#a[-$"!A$`d2&aX8%"*8'amA&aFA&am4$'*-$!`-%3`-$!`-$!`-$!`-$!`-$!`
-$!`-$!`-$!`-$!`"%3m2%4-4&4)5&431$Ji8&!i1$Ji8%3`-$i`-%4%-$!`-$!`
4$!`-$!`-$!`-$!`-$!`-$!`-$!`-$!`-$!`-$2r!!"%)!8!!MJ-")J!#%3%$%3(
rh3!%!!Rra!%r!!!""3%"!3%"!3!!!!!!!!!$!!%#"!8'"`J*#JX"!!%&!3%"!3%
"!!!!!!!!!!%!!J-%"3B(#!N+#a!!!33"!`)%!J8("JJ&!``c!3!#%3-%)4)a"8&
4B4-LFB%b"K54SE&#)b398X&L-c4bJY&$"b@58r$Km@0c04DLXS-Q4*08C%A#Sh3
f&p*9iQAbXi6$dhAMmdBRP+5&Y*A%e16dTEA&eHAe9QCfKTDQYXE@j[Bh4eGRGiH
AT1I(eqIh%3+#!J%#"!3$"!8'"`F'"68"!!)4!b%a%J4"8@&a)K-&-S'4&+'a3L2
"8Y(`_b4LiA+#NN06&@0c02%P"KDLXS-(*MA#dN569+-AC%990R4Pi[+cK-26GH2
c4T5NKE59a06Np+"eaGAPp9CQGSD@TVE'eZEf*cG(9fGhKjHRYmIrfj!-!`%!!K%
$%3!r!23%NNNP+556*+A6%J+$130"U815G58P`LQhK0[3Lj4h&&2#Qp3+3HdU[+8
T*i!fC#G9Jk%GMJiD),#+C****)8NNNNT55555Rrrd23%NNNP,)0edHe[2G%XGYD
51HbVHRVZGbPVdA4(8VX"j+FZ6&dF+-T$64NTH8T3h@KUB@JTF3645&bKkU'pqZL
P@ce'iGqbEC*d63!eC#d&%V-[jK$p,p&ZMh$P-ahZ%m*'1#$4"G!*e&N14h8NjJ8
NNNNT55555RrrdI3%NNNP)Ec!#!ka&bHbU%TNT%D"QT0%Qk8*1b$#F&3Xe61+a4h
C!%Q2@,(NZe4Aiaefr*,'CYphhUa2LB#P!&DXFT'p(20,qB1`VQ23jQT1K'D'aST
GNJ!&XTNk)S'SM3UZ+`f1DH1b)D16C*i5[C%21SRmP$chE$4Y%+5K81F`&65BbT*
***5NNNNP2rr5p!55558JbK1!942+dEK0C9&pHf#1#Q5(9QaR4'(3RQG#V,+kRX$
52F4bJ2U,(3H1a66#Y9iN$SfD(5f1i8(0HkcAXL8X"!F0#V!!qDPk"L-U*@D)!8N
NNQ0C$[EZV2NL5*K4XqL4iT*'k((G'fq+XUX'"M`1i4fQ4+36,Zb5555@U55558r
rdr3%NNNP,1%Y)3I4Q[Eh'S4NNNJdeDaYPTd)8a@A#(hMX91bN!$p4S81,%H'("5
AAHc0P@`b$Ti)UB6#@i*,6CC*P(Hha6K15NLP`!%NTPK**5cQJMc3kAD15IUZ6YZ
+54VSf8N`6T)8NNNNTrr8p!55558T****5P&d3T*L*58T4)8Nd**4PUNaX+F")K*
9V5%kL0&)F*+A9DmHq9B3,a1JJGNah6--X#NKdr3#)LJ1U55553rreI3%NNNP+55
558T-NN%P,T***+8Q6T*+BN*!Tc`Qe#59d+mF&%h+&ZV38LSEXUa$!TU,4$3&**!
!9****+Ire[3%NNNP+55558XN%kC*5k5C**5k5555PNNLNNT4#LjX`T*"*+NkC1N
K55555Rrrer3%NNNP+55558T-H8kL1K*5jL6"5"51U5@5G-1%k5&NJNNNT5356Gd
P,T***+A55558r`$rd23%NNNP+55558T-R558M)Jq58UC%U%***c0+NS0j8dP&5C
1Q53T)Tda58T**1NT55555RrrDI3%NNNP+55558T****5p%U5BT+Bpe*48NNPG-8
NNN+55558T1Q6T+8NNNNTrp,d"****5NNNNP+55558T-1K1SZi58XT"4M45#55T*
1Q53T****5NkC1NT55555Rrr6p!55558T****5NNNNP,+2*mP***5NJNNNTG-R6*
+8NNNNT5G-R58T****6rre23%NNNP+55558T-NNNT55555P***"*5kC***5NNNJN
TG****5NNNNP2rpAd"****5NNNNP,*Nj8C55'55555&*JN8JNPG)T**)@+F*LR58
ZNNNNT55555Rre[3%NNNP+55558XH%-Q%4!X2)5A45YG)8T90PKDB+1(b0%NQ+3U
)1UMZ*q#85888P"56!3R3@V+5C1NT55555P****+IrpId"****5NNNNP+3RJ%SLJ
8NK!kX%K&B2Z8A"2815$bL[1bQ0N`85"1LLd&Te1UB!Q8PTA5553@U+G-R58T***
*5NNNNP2rd23%NNNP+55558XH&"62#JLN-A"4!JUC6!*,1ANP5E+3!'U55dP5G-R
3@V*dNNP+55558T****6r!2r4p!55558T****6%TNj6)T$%TfT&*U5@5G-R33ZNN
NNKC1Q6T+8NNNNT55555Rrp,d"****5NNNNP-6bQ+FmTLLN-5RDN8QT*C"1Q#G"D
ZNNNNT55555P****+8NNNNTrrf85X!!!!:
Another version. Thanks to Roman
Pushed it in a commit.
Maybe you preliminarily make clear the picture from printing/scans artifacts? Example: https://photo.stackexchange.com/questions/23445/what-is-the-best-way-to-remove-texture-from-a-scanned-textured-photo-paper
I was trying to remove scan (printing) artifacts, picture became better, but text becomes significant less readable.
Partial success. Changed one byte on DHT table. Picture can be opened now, but still looks corrupted.
I changed decoder a bit, now it saves the file before RLE decoding (before_rle.jpg). It seems RLE is not used by the encoder. And it can produce garbage on corrupted parts.
Courier is worst font for OCR ever. Look at this: Yes that symbols are almost the same. And there is a lot of "l" and "1" mixed in the second half of a file.
Playing around 1
/ l
, got little better results. Now produced JPEG can be opened without touching it's bytes
3
- TODO: Use https://github.com/google/knusperli for minimize JPEG blocking artefact or maybe try this deblocking filter: https://www.compression.ru/video/deblocking/smartdeblocking_en.html And try waifu2x (or another NN) for enhance resolution.
Both of these methods should be used AFTER we get the final result.
@lelenium
Both of these methods should be used AFTER we get the final result.
Of course.
Uploaded a second file - raw_files/lain_omake.gif.hqx
BinHex header checksum is valid. It's GIF image 150x226px black and while. Image is still broken.
Also this file contains resource fork.
Hi!
Thank you for your work.
I fixed OCR errors in the file lain_omake.gif.hqx and got correct lain_omake.gif. CRC is OK. I didn't fixed resource fork because I don't know its format.
Fixed hqx is here: lain_omake.gif.zip
This is so awesome! Thank you! Are you going to create pull request?
What kind of object is she holding in her lap? Any ideas?
I fixed OCR errors in the file lain_omake.gif.hqx and got correct lain_omake.gif. CRC is OK. I didn't fixed resource fork because I don't know its format.
@nick758, cool, I did not believe that soon would transfer the binary file from the paper to the file.
@GermanAizek It was semi-manual brute forcing :) I made utility which generates modified files with combinations of suspicious symbols. It receive number of changes and offset where to start. Default suspicious symbols is '"` and l1 sometimes I added ! in the first group. So, I generated about 100-200 files (about 5 changes in a file) at a time then decoded them and selected the better one visually. If result didn't become better I looked for mistakes in other symbols. And repeated this procedure until end.
@mutr
What kind of object is she holding in her lap? Any ideas?
Maybe it's a packet with a gun which is seen in the game in Dc1057: https://laingame.net/index.php?id=55 Also Lain with a gun in Lda230: https://laingame.net/index.php?id=418
innocent.jpg.hqx I've checked symbols which are duplicated in bigger font on the whole picture: https://i.warosu.org/data/lit/img/0052/57/1407621588546.jpg There were 3 mistakes but CRC is still wrong and there are no visual changes on the picture.
Pull request is created.
Thank you!
Hi guys! I made time-lapse of fixing errors in "lain_omake.gif.hqx". I don't know why I did it. But let it be here: https://www.youtube.com/watch?v=eqRgU7CtQPM
At first we need to convert the text on images to plain text. I tried some OCRs but text is too small and fuzzy. Maybe someone can do it using only own eyes and hands. Or even train neural network to recognize it. Sounds like a interesting challenge. #lain_artbook_code_challenge
The second stage is decoding. The file format is BinHex 4.0 It used in classic macs. It's is very easy format that includes Base64-like encoding and RLE compression. Nothing serious. Macutils can open it for example. We already tried to decode the first line and it looks amazing. The only problem is that the code does not contains the error correction mechanism, only checksum. Some symbols are too fuzzy and barely can be seen. There will be errors all over and we have to convert them by hand or by brute force algorithm.