Aeternus
Senior Members-
Posts
349 -
Joined
-
Last visited
Content Type
Profiles
Forums
Events
Everything posted by Aeternus
-
Uhh..... In alot of cases' date=' as I said, you can just use image.php?something=something, and send the correct Content-Type, the actual extension should be irrelevant. If you have trouble with extensions because some clients are checking for the extension to prevent this type of thing, as I said again, you can get around this and use urls like /something-something/image.jpg which can be rewritten at the server using mod_rewrite (if you are using apache) to use the same php script mentioned above. While you can simply look through the apache logs, he may want to do certain things (such and db work or sending mail himself and so on) as soon as they open the email, which that wouldn't really allow. It is simpler to look in the logs however, but using a mixture of tail and/or grep would probably be easier so that you don't retrieve lots of irrelevant access lines like people trying to get favicons and spiders looking for things (especially if you aren't the only one using this apache server). Also, you don't NEED to have any images at all as I mentioned, you especially don't need to have an image per email address. Heck you could have it link to http://somedomain.com/theemail@cheese.com and then grep for all 404's of a particular format/date range in the access log. If getting an actual image is important, you can either do as mentioned above (possibly generating random images) or despite what you said, you [b']can[/b] do image.jpg?email=x (although you'll have the same problem as mentioned above with possible blocking) and depending on the apache config, the query string will be logged in the access log and you can grab that out as well.
-
The easiest way would probably be to use the header function to set the Content-Type of the data being sent back to image/jpeg or image/png etc and then either reading an image from a file and just outputing the contents, or using some of the image functions to generate your own. Then within the script you can use whatever you want (mysql, pgsql, odbc functions, simple file operations etc) to log that access attempt. You probably don't even need that, as the image doesn't need to actually work for you to be able to log it, it only needs something to try to access it. To actually capture their email address, it would probably be a case of setting the images location to be something like http://address/image.php?email=$theiremail and then you can grab this in your script using $_GET['email'] although there may be other more dynamic ways of doing this. Some email clients might block image srcs with a non-simple extension, but you could get around this using mod_rewrite rules etc so that you could use directories and a different extension to link and pass arguments to a php script. If you plan on sending a script generated image for some reason, or if you just want some example code on actually sending images, you can look here - http://uk.php.net/image and I'll try to post a little more with some examples later when I get back from work.
-
As you've already suggested, putting an image or some form of scripting inside a (X)HTML based email will mean that alot of mail readers will attempt to access the image, which is on their servers they can log that attempt to access it (or if it's some form of scripting, that can simply call home). The scripting seems more likely as it claims to tell you how long the email has been open for and so on. As far as I know, this is really not guaranteed as alot of mail clients these days block images and/or scripting (you can then agree to view these images or run this scripting etc depending on the mail client), and the person is not guaranteed to even view the email in a mail client capable of displaying any of this. Heck, they don't even have to use a mail client, I could read my mail plain text right out of the my servers mail queue or my mail directory and aside from the information one can gather from the mail server / smtp protocol itself (ie that the user exists on that mail server etc) I honestly cannot see how any information would be getting back to the sender. With regard to how exactly they are doing this when you send it to $X.readnotify.com, that's pretty simple. That ending ensures it will be sent to their mailservers and then that can be stripped out of the destination and then the mail data/message can be altered to include the image/scripting/whatever and then the message can be sent on to the next relay in the chain. Whether or not they actually have a fully fledged mailserver acting there (they could for instance have a modded version, particular config options and/or upon delivery the mail is passed to a custom script (as happens with procmail etc)), or whether they simply have a script that acts as an smtp server (while not necessarily implementing all of the features of an smtp server) and does all that discussed above, I don't know.
-
Microsoft bug or a political conspirancy, hmm...
Aeternus replied to KLB's topic in Computer Science
http://digg.com/software/_this_app_can_break_Are_there_any_other_forbidden_strings_in_Notepad_ It was picked up a little while ago by quite a few news sites. -
Heh, it's ok, you should see what Klaynos ends up calling me sometimes.
-
http://en.wikipedia.org/wiki/Prosecutor's_fallacy seems to have some examples and such explaining why it doesn't work.
-
Why can't he be the random person? You are assuming that you already know the suspect is the culprit?? What I'm saying is that say they picked a person whose DNA matched but they weren't the culprit, as their suspect (ie they were that 1 out of 100 people but they were by some fluke suspected). That person's chance of matching was always 1 because they match. The chance that if you picked a completely random person up and their DNA matched is 1/100 but that doesn't imply that simply because the persons DNA matched that they aren't that 1/100.
-
But isn't the problem that a) the suspect could be "the random person" and some other guy could be the actual culprit and b) 1/100 means that out of 100 people 1 person would match (I'm assuming here, otherwise you could simply eliminate the problem by retesting) who wasn't guilty, however that one persons chance of matching will be 1, not 1/100, because they will always match, not 1/100 times, every time (ie both the random person and the culprit are equally likely to match). Maybe I'm misunderstanding, I'm tired.
-
http://www.jmarshall.com/tools/cgiproxy/ ...
-
We all know that Capn is using the cat's laptop
-
Or using the spider functionality of something else like wget.
-
Having recently bought a MacBook myself, I'm very happy with it. The battery life is as expected (roughly 5 hours depending on use), the supposed heat issues are nowhere near as bad as some have suggested, and in general it's a very nice laptop. I'd imagine you can get a similarly specced PC for a similar or slightly lower price but if you are considering the MacBook, I can't say you could go far wrong as long as you are using it as a Mac OSX laptop rather than a solely Windows one. While with Boot Camp etc, it will run Win XP etc, the keyboard layout and selection of keys isn't really ideal for use on Windows. You mention you are a student, have you looked into the educational discounts one can get on the Apple Store? You might be able to get it for alot less than $1100.
-
Your idea of keeping things up to date and only uploading and downloading changed versions sound pretty much like the features you get in most version control software (see cvs, svn etc).
-
Seconded... the frequency with which these threads pop up becomes annoying. Perhaps there should be a sticky thread saying "Wannabe Hackers Look Here" with a redirect to goatse?
-
While I'm pretty sure the compiler itself has always been free, the cut down version of the IDE Visual Studio was only free until Nov. However, recently, they have decided to make them free permaneantly (helps get young developers fixed on using Visual Studio and Microsoft Libraries). http://blogs.msdn.com/danielfe/archive/2006/04/19/579109.aspx
-
Look, these aren't hard.... they aren't complicated.... and they certainly don't prove anything about your skills in computing. There is a Hacking Challenges thread further down. PLEAASEE use that instead of spamming these stupid challenges in their own threads. With regard to what the password is, it is 1841055. As the index of 1 in the string is 17 + 1 = 18, the index of 2 is 3 + 1 = 4, the index of 3 is 9 + 1 = 10, the index of 4 is 4 + 1 = 5 and it adds an additional 5 at the end like so - 18 + 4 + 10 + 5 + 5, and as it is interpretting these as strings due to the use of characters from the indexOf call, they are added as strings and so are appended to the enigma string instead of being added like numbers producing the above password. You don't even need to do any of that however, as you can simply replace the redirect in the code with "alert(enigma)" and simply get it to tell you the password. Now PPPPLLLLEASEEE just use the hacking challenges thread, as these things in my opinion certainly don't deserve their own threads. Hacking Challenges Thread
-
http://docs.python.org/ref/shifting.html http://docs.python.org/ref/bitwise.html
-
It's encoded using UUEncoding and then contains the file Restricted.zip which is just a simple zip file. The problem is that copying straight from here can cause problems and so the decoding produces a corrupt zip, so one has to make sure everything has been copied correctly. After fiddling a bit -
-
It's pretty simple really you've done Simultaneous equations, you have 2 sets of values for d and v, so plug those in each time and solve for a and b like so - [math]120 = 40a + 1600b [/math] (eq a) [math]240 = 60a + 3600b [/math] (eq b) [math]180 = 60a + 2400b [/math] (eq c = eq b x 1.5 ) So (eq a) - (eq c) - [math]60 = 1200b [/math] [math]{60 \over 1200} = b = {1 \over 20 } [/math] ( Got b) [math]120 = 40a + 1600 \times {1 \over 20} [/math] [math]120 = 40a + 80 [/math] [math]120 - 80 = 40a [/math] [math]40 = 40a [/math] [math]a = 1 [/math]
-
Right, having never played with Turing machines before (despite having heard of them), I decided to give it a go having read up on the general concept. The idea seems simple enough, you have states and a state will transistion to a different state depending on the value at the head and so on, if a state can't transistion then the machine halts. One can define which direction the head moves at each transistion as well as the change of value that the head makes before moving. The head can move however far one likes in any direction where empty "cells" are usually defined by 0. I knocked together something using a Turing Machine Simulator I found to test it and so here is the code - 1,1,2,_,> 1,B,8,_,> 2,1,2,1,> 2,B,3,B,> 3,_,9,_,< 3,1,4,_,> 3,B,6,B,< 4,1,4,1,> 4,B,4,B,> 4,_,5,B,< 5,B,5,B,< 5,1,5,1,< 5,_,3,_,> 6,_,6,1,< 6,B,7,B,< 7,1,7,1,< 7,_,1,_,> 8,1,8,_,> 8,B,8,1,> 8,_,H,_,< 9,B,H,_,> Where it is in the format State A , Character , State B, New Character, Direction . Where direction "<" means move the head left, ">" means move the head right and where the state H is simply a state that has no transistions and is therefore the halt state. This is simply the format that the simulator I was using uses and where you have used "0" , it uses "_" and I couldn't be arsed to convert them all back after having debugged it in the applet. It's late here now so.... I might try and post this in a more readable format (ie using better named states, using 0 instead of _ and using named directions) tomorrow. Knowing my like there will be some stupid problem with it but it seems to work , although one could probably make a much better one (as I have no real experience with this sort of thing). Machine Simulator
-
do { //System.out.println("wtf is it doing here?"); if(solvePressed==true) { solve(); solvePressed=false; } drawButtons(BGraphic); paint(getGraphics()); }while(true); Umm.... if you set solvePressed to true inside solve()... then it will simply get set to false after it exits solve() and runs solvePressed=false; ... so how exactly are you expecting it to be set to true after that? What exactly are you trying to do? You are waiting for it to be set by the Solve button being pressed... then why not called solve() inside that actionlistener rather than going through the whole thing in a while loop?? All the GUI stuff should be in a different a thread anyways (automatically, you shouldn't have to do anything). If you are worried about having to reset all the buttons... then do that in solve or have a button / option for setting the board or something? Am I missing something?
-
Theres a very good reason you are getting the same error... it's because you are making the same mistake in the nineGrid class. You are not creating any box objects. You need to do the same thing for your boxes as you did for your nineGrids.
-
Could you show the code for nineGrid? And you are saying you have - try{ grids[i][p] = new nineGrid(); grids[i][p].initialize(30*i,30*p); }... ? Not that this won't be the problem (either way works) but just wondering why you have an initialise method seperate from the constructor, there are reasons one might do this but it seems like it would be easier in this case simply to initialise everything in the constructor.
-
Ok, this may be me being stupid, but where have you actually set the elements in the nineGrid array to some object? You are calling the initialise method on some element of the array but all you have are null values in there at the minute. OK, you have nineGrid[][] grids= new nineGrid[3][3]; at the top but all that does is initialise the array to a particular size etc. For instance if I were to do Integer[][] nums = new Integer[4][4], there wouldn't be any integer objects at each of the array elements, just null references (ie they reference to nothing). So you are trying to call the method initialise, but it needs to be called on an Object, hence why you get the NullPointerException. If you have some class nineGrid then you will need to set it up by setting the elements of the array to a new nineGrid object, preferably taking in the arguments that are being taken into initialise into the constructor instead like so - grids[i][p] = new nineGrid(30*i,30*p); P.S - Just as an aside, as far as I know, the standard is to begin all class names with an upper case letter, and all variables with a lower case to avoid confusion - http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html
-
If I remember rightly, it isn't just that they are bundling the software with the OS, it's more that with those softwares they have an unfair advantage in its interoperability and capabilities with regard to the OS. So they can tie IE and MediaPlayer etc into the OS more and offer more features because they have more access to the underlying roots of the system and have a better idea on how it works because of this. The EU made demands that Microsoft better document certain APIs and protocols etc to allow competition to interoperate with the system more easily and to remove the advantage that it has over its competitors in certain areas. There has been a growing concern that its dominance in certain areas, along with its proprietary formats will end up locking companies and even government sectors into its products (which is obviously a bad thing). Links - http://www.theregister.co.uk/2006/03/11/eu_ms_response/ While I agree that slamming a company for including software with it is rather off, this isn't the issue really and is more about Microsoft in general using its market dominance to try and lock the market in and prevent others from entering said markets.