Catch-me if you can - TOR tricks for bots, shells and general hackingJan Seidl
The TOR network is widely known nowadays but there's plenty of gold in there that is not. This talk is about everything TOR: Popping shells, tunneling tools and commanding your bots over the world's most popular darknet.
This presentation was given on October 19th at the 11th H2HC (Hackers 2 Hackers Conference) 2014 at Sao Paulo, Brazil.
Catch-me if you can - TOR tricks for bots, shells and general hackingJan Seidl
The TOR network is widely known nowadays but there's plenty of gold in there that is not. This talk is about everything TOR: Popping shells, tunneling tools and commanding your bots over the world's most popular darknet.
This presentation was given on October 19th at the 11th H2HC (Hackers 2 Hackers Conference) 2014 at Sao Paulo, Brazil.
what is web ?
why database on the web?
website technologies like HTML,CSS,JavaScript,Server,Servlets,Ajax..
all contents ownership goes to respective owners :)
(Classroom Presentaion)
Java SE 8 has brought lambdas, default methods, type annotations, compact profiles, etc. As a result, the Java SE platform specification was changed to reflect new features.
The session shows how the new Java 8 features have been implemented in Excelsior JET JVM, written from scratch, very different from the Oracle HotSpot JVM, but compatible with the Java SE specification.
As a result, an attendee will refresh his/her memory regarding new Java 8 features, will learn how they affected the JVM specification, how the lambda expressions are translated into Java bytecode and how they can be optimized at the JVM level.
Arrays are complex variables that can hold multiple values of the same data type.
Array is a fixed type sequenced collection of elements of the same data type.
It is simply a grouping of like-type data.
Some examples where a concept of arrays can be used :-
1) List of employees in an organization.
2) Exam scores of a class of students.
3) Table of daily rainfall data.
16. A Drawback wwiitthh tthhee AArrrraayy--BBaasseedd
SSttaacckk IImmpplleemmeennttaattiioonn
The array implementation of a stack is simple and efficient.
This implementation has one negative aspect
it must assume a fixed upper bound, CAPACITY, on the ultimate size of the stack.
In Code Fragment 5.4, we chose the capacity value 1,000 more or less arbitrarily.
An application may actually need much less space than this,
which would waste memory.
An application may need more space than this,
which would cause our stack implementation to generate an exception as soon as a client
program tries to push its 1,001st object on the stack.
Thus, even with its simplicity and efficiency, the array-based stack implementation is
not necessarily ideal.
Fortunately, there is another implementation, which we discuss next,
that does not have a size limitation
and use space proportional to the actual number of elements stored in the stack.
Still, in cases where we have a good estimate on the number of items needing to go
in the stack,
the array-based implementation is hard to beat.
Stacks serve a vital role in a number of computing applications, so it is helpful to have a fast
stack ADT implementation such as the simple array-based implementation.
20. Code Fragment 5.7: Class NodeStack, which implements the Stack
interface using a singly linked list, whose nodes are objects of class Node from
Code Fragment 5.6.
44. Figure 5.4: Using array Q in a circular fashion:
(a) the "normal" configuration with f ≤ r; (b) the "wrapped around" configuration
(b) with r < f. The cells storing queue elements are highlighted.
46. Code Fragment 5.14: Implementation of a queue using a circular array.
The implementation uses the modulo operator to "wrap" indices around the end of the
array and it also includes two instance variables, f and r, which index the front of the
queue and first empty cell after the rear of the queue respectively.
48. TTaabbllee 55..22:: PPeerrffoorrmmaannccee ooff aa qquueeuuee rreeaalliizzeedd bbyy aann aarrrraayy
TThhee ssppaaccee uussaaggee iiss OO((NN)),,
wwhheerree NN iiss tthhee ssiizzee ooff tthhee
aarrrraayy,, ddeetteerrmmiinneedd aatt tthhee
ttiimmee tthhee qquueeuuee iiss ccrreeaatteedd..
NNoottee tthhaatt tthhee ssppaaccee
uussaaggee iiss iinnddeeppeennddeenntt
ffrroomm tthhee nnuummbbeerr nn << NN ooff
eelleemmeennttss tthhaatt aarree aaccttuuaallllyy
iinn tthhee qquueeuuee..
MMeetthhoodd TTiimmee
SSiizzee
iissEEmmppttyy
ffrroonntt
eennqquueeuuee
ddeeqquueeuuee
OO((11))
OO((11))
OO((11))
OO((11))
OO((11))
Problem is the capacity of the queue to be some fixed value. In a real
application, we may actually need more or less queue capacity than this, but if
we have a good capacity estimate, then the array-based implementation is quite
efficient.
50. CCooddee FFrraaggmmeenntt 55..1155:: MMeetthhooddss eennqquueeuuee aanndd ddeeqquueeuuee iinn tthhee
iimmpplleemmeennttaattiioonn ooff tthhee qquueeuuee AADDTT bbyy mmeeaannss ooff aa ssiinnggllyy lliinnkkeedd lliisstt,, uussiinngg
nnooddeess ffrroomm ccllaassss NNooddee ooff CCooddee FFrraaggmmeenntt 55..66..
Each of the methods of the singly linked list implementation of the queue ADT runs in
O(1) time. We also avoid the need to specify a maximum size for the queue, but this
benefit comes at the expense of increasing the amount of space used per element.
Still, the methods in the singly linked list queue implementation are more complicated
than we might like, for we must take extra care in how we deal with special cases
where the queue is empty before an enqueue or where the queue becomes empty
after a dequeue.
51. RRoouunndd RRoobbiinn SScchheedduulleerrss
AA ppooppuullaarr uussee ooff tthhee qquueeuuee ddaattaa ssttrruuccttuurree iiss ttoo iimmpplleemmeenntt
aa rroouunndd rroobbiinn sscchheedduulleerr,, wwhheerree
wwee iitteerraattee tthhrroouugghh aa ccoolllleeccttiioonn ooff eelleemmeennttss iinn aa cciirrccuullaarr ffaasshhiioonn
aanndd ""sseerrvviiccee"" eeaacchh eelleemmeenntt bbyy ppeerrffoorrmmiinngg aa ggiivveenn aaccttiioonn oonn iitt..
SSuucchh aa sscchheedduullee iiss uusseedd,,
ffoorr eexxaammppllee,, ttoo ffaaiirrllyy aallllooccaattee aa rreessoouurrccee tthhaatt mmuusstt bbee sshhaarreedd bbyy aa
ccoolllleeccttiioonn ooff cclliieennttss..
FFoorr iinnssttaannccee,, wwee ccaann uussee aa rroouunndd rroobbiinn sscchheedduulleerr ttoo aallllooccaattee aa sslliiccee
ooff CCPPUU ttiimmee ttoo vvaarriioouuss aapppplliiccaattiioonnss rruunnnniinngg ccoonnccuurrrreennttllyy oonn aa
ccoommppuutteerr..
WWee ccaann iimmpplleemmeenntt aa rroouunndd rroobbiinn sscchheedduulleerr uussiinngg aa
qquueeuuee,, QQ,, bbyy rreeppeeaatteeddllyy ppeerrffoorrmmiinngg tthhee ffoolllloowwiinngg sstteeppss
((sseeee FFiigguurree 55..55))::
11.. ee ←← QQ..ddeeqquueeuuee(())
22.. SSeerrvviiccee eelleemmeenntt ee
33.. QQ..eennqquueeuuee((ee))
52. Figure 5.5: The three iterative steps for using a queue to implement a round robin
scheduler.