Current wireless infrastructure is optimized to support downlink applications. This paper anticipates the emergence of applications where engineering focus shifts from downlink to uplink. The current paradigm of scheduling users on reserved uplink resources is not able to deal efficiently with unpredictable traffic patterns. As a result, 3GPP introduced the 2-step RACH as a mechanism to enable grant-free (random) initial access. The first of the two steps is preamble detection in a RACH slot, and in this paper we describe a low-complexity algorithm for simultaneous detection of multiple preambles in the presence of mobility and delay spread. We provide a pathway to standards adoption by choosing ZC sequences as preambles, as ZC sequences already appear in 5G standards. We construct preambles by using the discrete Zak transform to pass from a ZC sequence of length MN in the TD to a quasi-periodic MxN array in the DD domain. There are MN quasi-periodic Dirac pulses, each corresponding to a Zak-OTFS carrier waveform, and the ZC preamble is simply the corresponding sum of Zak-OTFS carrier waveforms. We detect multiple preambles in the presence of mobility and delay spread by sampling the received signal on the MxN period grid in the DD domain. We approach detection as a compressed sensing problem. We represent a preamble as a column of length MN in the DD domain and apply discrete shifts in delay and Doppler to produce a block with O(MN) columns in the compressed sensing matrix. The superposition of multiple preambles determines a block sparse sum of columns in the sensing matrix. The correlation properties of ZC sequences result in a highly structured compressed sensing matrix, making it possible to identify constituent preambles using OST, which has complexity O(M^3N^3). In this paper, we describe an algorithm with complexity that is O(M^2N^2) in the size of an individual column.